![]() |
|
#include <problem.h>
Public Types | |
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... | |
Public Member Functions | |
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 () |
Public Attributes | |
bool | Shut_up_in_newton_solve |
Static Public Attributes | |
static bool | Suppress_warning_about_actions_before_read_unstructured_meshes |
Protected Types | |
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 Protected Attributes | |
static ContinuationStorageScheme | Continuation_time_stepper |
Storage for the single static continuation timestorage object. More... | |
Private Member Functions | |
double | doubly_adaptive_unsteady_newton_solve_helper (const double &dt, const double &epsilon, const unsigned &max_adapt, const unsigned &suppress_resolve_after_spatial_adapt, const bool &first, const bool &shift=true) |
void | refine_uniformly_aux (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info, const bool &prune) |
void | p_refine_uniformly_aux (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info, const bool &prune) |
void | setup_base_mesh_info_after_pruning () |
virtual void | sparse_assemble_row_or_column_compressed_with_vectors_of_pairs (Vector< int * > &column_or_row_index, Vector< int * > &row_or_column_start, Vector< double * > &value, Vector< unsigned > &nnz, Vector< double * > &residual, bool compressed_row_flag) |
virtual void | sparse_assemble_row_or_column_compressed_with_two_vectors (Vector< int * > &column_or_row_index, Vector< int * > &row_or_column_start, Vector< double * > &value, Vector< unsigned > &nnz, Vector< double * > &residual, bool compressed_row_flag) |
virtual void | sparse_assemble_row_or_column_compressed_with_maps (Vector< int * > &column_or_row_index, Vector< int * > &row_or_column_start, Vector< double * > &value, Vector< unsigned > &nnz, Vector< double * > &residual, bool compressed_row_flag) |
virtual void | sparse_assemble_row_or_column_compressed_with_lists (Vector< int * > &column_or_row_index, Vector< int * > &row_or_column_start, Vector< double * > &value, Vector< unsigned > &nnz, Vector< double * > &residual, bool compressed_row_flag) |
virtual void | sparse_assemble_row_or_column_compressed_with_two_arrays (Vector< int * > &column_or_row_index, Vector< int * > &row_or_column_start, Vector< double * > &value, Vector< unsigned > &nnz, Vector< double * > &residual, bool compressed_row_flag) |
void | calculate_continuation_derivatives_helper (const DoubleVector &z) |
void | calculate_continuation_derivatives_fd_helper (double *const ¶meter_pt) |
void | bifurcation_adapt_helper (unsigned &n_refined, unsigned &n_unrefined, const unsigned &bifurcation_type, const bool &actually_adapt=true) |
void | bifurcation_adapt_doc_errors (const unsigned &bifurcation_type) |
void | globally_convergent_line_search (const Vector< double > &x_old, const double &half_residual_squared_old, DoubleVector &gradient, DoubleVector &newton_dir, double &half_residual_squared, const double &stpmax) |
Line search helper for globally convergent Newton method. More... | |
double | arc_length_step_solve_helper (double *const ¶meter_pt, const double &ds, const unsigned &max_adapt) |
Friends | |
class | FoldHandler |
class | PitchForkHandler |
class | HopfHandler |
template<unsigned NNODE_1D> | |
class | PeriodicOrbitAssemblyHandler |
class | BlockFoldLinearSolver |
class | BlockPitchForkLinearSolver |
class | AugmentedBlockFoldLinearSolver |
class | AugmentedBlockPitchForkLinearSolver |
class | BlockHopfLinearSolver |
////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// The Problem class
The main components of a Problem are:
Obviously, at this level in the code hierarchy, many things become very problem-dependent but when setting up a specific problem (as a class that inherits from Problem), the problem constructor will/should typically have a structure similar to this:
For time-dependent problems, we can then use
to generate an initial guess (for an impulsive start) and the problem can then be solved, e.g. using the steady or unsteady Newton solvers
or
typedef void(* oomph::Problem::SpatialErrorEstimatorFctPt) (Mesh *&mesh_pt, Vector< double > &elemental_error) |
Function pointer for spatial error estimator.
typedef void(* oomph::Problem::SpatialErrorEstimatorWithDocFctPt) (Mesh *&mesh_pt, Vector< double > &elemental_error, DocInfo &doc_info) |
Function pointer for spatial error estimator with doc.
|
protected |
Enumerated flags to determine which sparse assembly method is used.
Enumerator | |
---|---|
Perform_assembly_using_vectors_of_pairs | |
Perform_assembly_using_two_vectors | |
Perform_assembly_using_maps | |
Perform_assembly_using_lists | |
Perform_assembly_using_two_arrays |
Problem::Problem | ( | ) |
Constructor: Allocate space for one time stepper and set all pointers to NULL and set defaults for all parameters.
Setup terminate helper
References Assembly_handler_pt, oomph::MPI_Helpers::communicator_pt(), Communicator_pt, Default_assembly_handler_pt, Default_eigen_solver_pt, Default_linear_solver_pt, Dof_distribution_pt, Eigen_solver_pt, Linear_solver_pt, Mass_matrix_solver_for_explicit_timestepper_pt, oomph::MPI_Helpers::mpi_has_been_initialised(), oomph::TerminateHelper::setup(), Sub_mesh_pt, Time_stepper_pt, and Use_predictor_values_as_initial_guess.
|
delete |
Broken copy constructor.
|
virtual |
Virtual destructor to clean up memory.
Destructor to clean up memory.
References calibrate::c, oomph::TerminateHelper::clean_up_memory(), Communicator_pt, Copy_of_problem_pt, Default_assembly_handler_pt, Default_eigen_solver_pt, Default_linear_solver_pt, Dof_distribution_pt, oomph::Mesh::flush_element_and_node_storage(), Mesh_pt, Sub_mesh_pt, and Time_pt.
|
inlinevirtual |
Actions that are to be performed after a mesh adaptation.
Reimplemented in MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >, MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >, DrivenCavityProblem< ELEMENT, MESH >, RefineableDrivenCavityProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RingWithTRibProblem< ELASTICITY_ELEMENT >, AnnularDiskProblem< ELASTICITY_ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalCouetteProblem< ELEMENT >, UnstructuredSolidProblem< ELEMENT, MESH >, BlockCompressionProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, ElasticFishProblem< ELEMENT >, SimpleShearProblem< ELEMENT >, DiskShockWaveProblem< ELEMENT, TIMESTEPPER >, CollapsibleChannelProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, oomph::StreamfunctionProblem, PolarNSProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RayleighProblem< ELEMENT, TIMESTEPPER >, VorticityRecoveryProblem< ELEMENT >, DropInChannelProblem< ELEMENT >, BubbleInChannelProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, RisingBubbleProblem< ELEMENT >, FallingBlockProblem< ELEMENT >, TwoLayerInterfaceProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TurekNonFSIProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, SteadyTubeProblem< ELEMENT >, FpTestProblem, FpTestProblem, OscRingNStProblem< ELEMENT >, OscEllipseProblem< ELEMENT, TIMESTEPPER >, RefineableDrivenCavityProblem< ELEMENT >, UnstructuredImmersedEllipseProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, SteadyHelicalProblem< ELEMENT >, SteadyCurvedTubeProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, QuarterCircleDrivenCavityProblem2< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, ChannelWithLeafletProblem< ELEMENT >, RefineableRotatingCylinderProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, FluxPoissonMGProblem< ELEMENT, MESH >, FluxPoissonMGProblem< ELEMENT, MESH >, PMLHelmholtzMGProblem< ELEMENT >, PMLStructuredCubicHelmholtz< ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, RefineableSphereConvectionProblem< ELEMENT >, RefineableDDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, CantileverProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIRingProblem, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, UnstructuredSolidProblem< ELEMENT, MESH >, ScatteringProblem< ELEMENT >, MovingBlockProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineablePeriodicLoadProblem< ELEMENT >, UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, FSIRingProblem, FSIRingProblem, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, DeformableFishPoissonProblem< ELEMENT >, DeformableFishPoissonProblem< ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, ScatteringProblem< ELEMENT >, ScatteringProblem< ELEMENT >, HelmholtzPointSourceProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatMeltProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, VibratingShellProblem< ELEMENT >, AxisymmetricVibratingShellProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, ExtrudedMovingCylinderProblem< TWO_D_ELEMENT, THREE_D_ELEMENT >, MovingBlockProblem< ELEMENT >, RefineablePorousChannelProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, UnstructuredTorusProblem< ELEMENT >, UnstructuredTorusProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TorusProblem< ELEMENT >, RotatingCylinderProblem< ELEMENT, TIMESTEPPER >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, and MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >.
Referenced by adapt(), adapt_based_on_error_estimates(), p_adapt(), p_refine_selected_elements(), p_refine_uniformly(), p_refine_uniformly_aux(), p_unrefine_uniformly(), read(), refine_selected_elements(), refine_uniformly(), refine_uniformly_aux(), oomph::MGSolver< DIM >::setup_mg_hierarchy(), oomph::HelmholtzMGPreconditioner< DIM >::setup_mg_hierarchy(), and unrefine_uniformly().
|
inlineprotectedvirtual |
Actions that are to be performed after a change in the parameter that is being varied as part of the solution of a bifurcation detection problem. The default is to call actions_before_newton_solve(), actions_before_newton_convergence_check() and actions_after_newton_solve(). This could be amazingly inefficient in certain problems and should be overloaded in such cases. An example would be when a remesh is required in general, but the global parameter does not affect the mesh directly.
Reimplemented in RotatingProblem< ELEMENT >, RotatingProblem< ELEMENT >, and RefineablePorousChannelProblem< ELEMENT >.
References actions_after_newton_solve(), actions_before_newton_convergence_check(), and actions_before_newton_solve().
Referenced by oomph::FoldHandler::get_jacobian(), oomph::PitchForkHandler::get_jacobian(), oomph::HopfHandler::get_jacobian(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), and oomph::BlockHopfLinearSolver::solve_for_two_rhs().
|
inlineprotectedvirtual |
Actions that are to be performed when the global parameter addressed by parameter_pt has been changed in the function get_derivative_wrt_global_parameter() The default is to call actions_before_newton_solve(), actions_before_newton_convergence_check() and actions_after_newton_solve(). This could be amazingly inefficient in certain problems and should be overloaded in such cases. An example would be when a remesh is required in general, but the global parameter does not affect the mesh directly.
Reimplemented in AirwayReopeningProblem< ELEMENT >.
References actions_after_newton_solve(), actions_before_newton_convergence_check(), and actions_before_newton_solve().
Referenced by get_derivative_wrt_global_parameter().
|
inlineprotectedvirtual |
Actions that should be performed after each explicit time step.
Reimplemented from oomph::ExplicitTimeSteppableObject.
Reimplemented in oomph::MyProblem.
|
inlineprotectedvirtual |
Actions that should be performed after each implicit time step. This is needed when one wants to solve a steady problem before timestepping and needs to distinguish between the two cases
Reimplemented in UnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, oomph::MyProblem, OscEllipseProblem< ELEMENT, TIMESTEPPER >, RefineableUnsteadyHeatProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, UnsteadyHeatProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, and BaseStateProblem< BASE_ELEMENT >.
Referenced by adaptive_unsteady_newton_solve(), unsteady_newton_solve(), and oomph::SegregatableFSIProblem::unsteady_segregated_solve().
|
inlineprotectedvirtual |
Actions that should be performed after each implicit time step. This is needed if your actions_after_implicit_timestep() modify the solution in a way that affects the error estimate.
Referenced by adaptive_unsteady_newton_solve(), and unsteady_newton_solve().
|
inlineprotectedvirtual |
Any actions that are to be performed after a complete Newton solve, e.g. post processing. CAREFUL: This step should (and if the FD-based LinearSolver FD_LU is used, must) only update values that are pinned!
Reimplemented in OneDPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, oomph::WomersleyProblem< ELEMENT, DIM >, oomph::SolidICProblem, oomph::BiharmonicFluidProblem< DIM >, oomph::BiharmonicProblem< DIM >, oomph::BiharmonicProblem< 2 >, TestPoissonProblem< ELEMENT >, TestRefineablePoissonProblem< ELEMENT >, TestPoissonProblem< ELEMENT >, TFaceTestProblem< ELEMENT >, TriangleFaceTestProblem< ELEMENT >, QFaceTestProblem< ELEMENT >, QFaceTestProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, DrivenCavityProblem< ELEMENT, MESH >, RefineablePoissonProblem< ELEMENT >, ThreeDPoissonProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, YoungLaplaceProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, YoungLaplaceProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RingWithTRibProblem< ELASTICITY_ELEMENT >, AnnularDiskProblem< ELASTICITY_ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, SphericalSteadyRotationProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, UnstructuredSolidProblem< ELEMENT, MESH >, UnstructuredSolidProblem< ELEMENT, MESH >, BlockCompressionProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, ElasticFishProblem< ELEMENT >, SimpleShearProblem< ELEMENT >, SimpleShearProblem< ELEMENT >, DiskShockWaveProblem< ELEMENT, TIMESTEPPER >, CollapsibleChannelProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, DiskOscillationProblem< ELEMENT >, StaticDiskCompressionProblem< ELEMENT >, CompressedSquareProblem< ELEMENT >, CantileverProblem< ELEMENT >, CantileverProblem< ELEMENT >, PlateProblem< ELEMENT >, ShellProblem< ELEMENT >, ShellProblem< ELEMENT >, ShellProblem< ELEMENT >, ShellProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, ActivatorInhibitorProblem< ELEMENT >, RefineableTwoDPoissonProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, TwoMeshFluxPoissonProblem< ELEMENT >, FluxPoissonProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PRefineableOneDPoissonProblem< ELEMENT >, DemoPoissonProblem, RefineableOneDPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, SimpleRefineableFishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, PMLProblem< ELEMENT >, PMLProblem< ELEMENT >, PMLFourierDecomposedHelmholtzProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, PoissonProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RayleighProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, VorticityRecoveryProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, DropInChannelProblem< ELEMENT >, BubbleInChannelProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, RisingBubbleProblem< ELEMENT >, FallingBlockProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TwoLayerInterfaceProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TurekNonFSIProblem< ELEMENT >, FreeSurfaceRotationProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, SpikedChannelSpineFlowProblem< ELEMENT >, ChannelSpineFlowProblem< ELEMENT >, ChannelSpineFlowProblem< ELEMENT >, NavierStokesProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, FpTestProblem, FpTestProblem, RayleighTractionProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, OscEllipseProblem< ELEMENT, TIMESTEPPER >, RectangularDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, FreeSurfaceRotationProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, QuarterCircleDrivenCavityProblem2< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, ChannelWithLeafletProblem< ELEMENT >, BrethertonProblem< ELEMENT >, RefineableRotatingCylinderProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, UnitCubePoissonMGProblem< ELEMENT, MESH >, UnitCubePoissonMGProblem< ELEMENT, MESH >, FluxPoissonMGProblem< ELEMENT, MESH >, FluxPoissonMGProblem< ELEMENT, MESH >, PMLHelmholtzMGProblem< ELEMENT >, PMLStructuredCubicHelmholtz< ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, ThermalProblem< ELEMENT >, AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, DDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, MultiPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, CantileverProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIRingProblem, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, RefineableTwoDPoissonProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, HarmonicProblem< ELEMENT, EIGEN_SOLVER >, ShellProblem< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, RotatingProblem< ELEMENT >, UniformTranspiration< ELEMENT >, CantileverProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, ScatteringProblem< ELEMENT >, MovingBlockProblem< ELEMENT >, PoissonProblem< ELEMENT >, FlowPastBoxProblem< ELEMENT >, PoissonProblem< ELEMENT >, FlowPastBoxProblem< ELEMENT >, PoissonProblem< ELEMENT >, NavierStokesProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, MultiPoissonProblem< ELEMENT >, PeriodicLoadProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineablePeriodicLoadProblem< ELEMENT >, PeriodicLoadProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, FSIRingProblem, FSIRingProblem, SegregatedFSIDrivenCavityProblem< ELEMENT >, FSIDrivenCavityProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, PreconditionedFSICollapsibleChannelProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FreeBoundaryPoissonProblem< ELEMENT >, FreeBoundaryPoissonProblem< ELEMENT >, GeomObjectAsGeneralisedElementProblem, DeformableFishPoissonProblem< ELEMENT >, DeformableFishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, AirwayReopeningProblem< ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, HomogenisationProblem< ELEMENT >, HomogenisationProblem< ELEMENT >, ScatteringProblem< ELEMENT >, ScatteringProblem< ELEMENT >, HelmholtzPointSourceProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, StefanBoltzmannProblem< ELEMENT >, StefanBoltzmannProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatMeltProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, VibratingShellProblem< ELEMENT >, AxisymmetricVibratingShellProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, ExtrudedMovingCylinderProblem< TWO_D_ELEMENT, THREE_D_ELEMENT >, MovingBlockProblem< ELEMENT >, ContinuationProblem, OrrSommerfeldProblem< ELEMENT >, RotatingProblem< ELEMENT >, UniformTranspiration< ELEMENT >, ABCProblem< ELEMENT, TIMESTEPPERT >, PredPreyProblem< ELEMENT >, BratuProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, ElasticRingProblem< ELEMENT >, ElasticRingProblem< ELEMENT >, ElasticBeamProblem, ElasticRingProblem< ELEMENT >, ElasticRingProblem< ELEMENT >, AxiPoroProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RotatingCylinderProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RotatingProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, MeltSpinningProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >, AxisymFvKProblem< ELEMENT >, AxisymFvKProblem< ELEMENT >, RefineableAdvectionDiffusionPipeProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, AxisymFvKProblem< ELEMENT >, AxisymFvKProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, SUPGAdvectionDiffusionProblem< ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, SheetGlueProblem< ELEMENT >, SheetGlueProblem< ELEMENT >, and BendingCantileverProblem< ELEMENT >.
Referenced by actions_after_change_in_bifurcation_parameter(), actions_after_change_in_global_parameter(), oomph::MyProblem::actions_after_explicit_timestep(), adaptive_unsteady_newton_solve(), get_fd_jacobian(), newton_solve(), and newton_solve_continuation().
|
inlineprotectedvirtual |
Any actions that are to be performed after each individual Newton step. Most likely to be used for diagnostic purposes to doc the solution during a non-converging iteration, say.
Reimplemented in oomph::MyProblem, FpTestProblem, FpTestProblem, and TiltedCavityProblem< ELEMENT >.
Referenced by adaptive_unsteady_newton_solve(), newton_solve(), and newton_solve_continuation().
|
inlineprotectedvirtual |
Empty virtual function; provides hook to perform actions after the increase in the arclength parameter (during continuation)
Reimplemented in NavierStokesProblem< ELEMENT >.
Referenced by arc_length_step_solve_helper().
|
inlineprotectedvirtual |
Actions that are to be performed before reading in restart data for problems involving unstructured bulk meshes. Typically used to re-attach FaceElements, say, that were stripped out in actions_before_read_unstructured_meshes(). This function is virtual and (practically) empty but toggles a flag to indicate that it has been called. This is used to issue a warning, prompting the user to consider overloading it if the problem is found to contain unstructured bulk meshes during restarts.
References Empty_actions_after_read_unstructured_meshes_has_been_called.
Referenced by read().
|
inlinevirtual |
Actions that are to be performed before a mesh adaptation. These might include removing any additional elements, such as traction boundary elements before the adaptation.
Reimplemented in MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >, MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RingWithTRibProblem< ELASTICITY_ELEMENT >, AnnularDiskProblem< ELASTICITY_ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, UnstructuredSolidProblem< ELEMENT, MESH >, BlockCompressionProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, oomph::StreamfunctionProblem, PolarNSProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, VorticityRecoveryProblem< ELEMENT >, DropInChannelProblem< ELEMENT >, BubbleInChannelProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, TwoLayerInterfaceProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, OscEllipseProblem< ELEMENT, TIMESTEPPER >, UnstructuredImmersedEllipseProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, RefineableRotatingCylinderProblem< ELEMENT >, FluxPoissonMGProblem< ELEMENT, MESH >, FluxPoissonMGProblem< ELEMENT, MESH >, PMLHelmholtzMGProblem< ELEMENT >, PMLStructuredCubicHelmholtz< ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, ThermalProblem< ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableDDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, DDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, CantileverProblem< ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, CantileverProblem< ELEMENT >, UnstructuredSolidProblem< ELEMENT, MESH >, ScatteringProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineablePeriodicLoadProblem< ELEMENT >, UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, ScatteringProblem< ELEMENT >, ScatteringProblem< ELEMENT >, HelmholtzPointSourceProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatMeltProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, VibratingShellProblem< ELEMENT >, AxisymmetricVibratingShellProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, UnstructuredTorusProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RefineableAdvectionDiffusionPipeProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, and MortaringValidationProblem< ELEMENT, NON_MORTAR_ELEMENT >.
Referenced by adapt(), adapt_based_on_error_estimates(), p_adapt(), p_refine_selected_elements(), p_refine_uniformly(), p_refine_uniformly_aux(), p_unrefine_uniformly(), read(), refine_selected_elements(), refine_uniformly(), refine_uniformly_aux(), oomph::MGSolver< DIM >::setup_mg_hierarchy(), oomph::HelmholtzMGPreconditioner< DIM >::setup_mg_hierarchy(), and unrefine_uniformly().
|
inlineprotectedvirtual |
Actions that should be performed before each explicit time step.
Reimplemented from oomph::ExplicitTimeSteppableObject.
Reimplemented in oomph::MyProblem.
|
inlineprotectedvirtual |
Actions that should be performed before each implicit time step. This is needed when one wants to solve a steady problem before timestepping and needs to distinguish between the two cases
Reimplemented in oomph::WomersleyProblem< ELEMENT, DIM >, CollapsibleChannelProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RayleighProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, oomph::MyProblem, UnstructuredFluidProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TurekNonFSIProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RayleighTractionProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, OscRingNStProblem< ELEMENT >, OscEllipseProblem< ELEMENT, TIMESTEPPER >, UnstructuredImmersedEllipseProblem< ELEMENT >, InclinedPlaneProblem< ELEMENT, INTERFACE_ELEMENT >, CollapsibleChannelProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, ChannelWithLeafletProblem< ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, RefineableSphereConvectionProblem< ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableDDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, DDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIDrivenCavityProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, StefanBoltzmannProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, RefineablePorousChannelProblem< ELEMENT >, AxiPoroProblem< ELEMENT, TIMESTEPPER >, UnstructuredTorusProblem< ELEMENT >, UnstructuredTorusProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TorusProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >.
Referenced by adaptive_unsteady_newton_solve(), unsteady_newton_solve(), and oomph::SegregatableFSIProblem::unsteady_segregated_solve().
|
inlineprotectedvirtual |
Any actions that are to be performed before the residual is checked in the Newton method, e.g. update any boundary conditions that depend upon variables of the problem; update any ‘dependent’ variables; or perform an update of the nodal positions in SpineMeshes etc. CAREFUL: This step should (and if the FD-based LinearSolver FD_LU is used, must) only update values that are pinned!
Reimplemented in CollapsibleChannelProblem< ELEMENT >, PolarNSProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, FreeSurfaceRotationProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, ThreeDimBethertonProblem< ELEMENT >, CapProblem< ELEMENT >, CapProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, OscRingNStProblem< ELEMENT >, UnstructuredImmersedEllipseProblem< ELEMENT >, FreeSurfaceRotationProblem< ELEMENT >, BrethertonProblem< ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, PoissonProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIRingProblem, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RotatingProblem< ELEMENT >, ScatteringProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, FSIRingProblem, FSIRingProblem, SegregatedFSIDrivenCavityProblem< ELEMENT >, FSIDrivenCavityProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, SegregatedFSICollapsibleChannelProblem< ELEMENT >, SegregatedFSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, PreconditionedFSICollapsibleChannelProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FreeBoundaryPoissonProblem< ELEMENT >, FreeBoundaryPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, AirwayReopeningProblem< ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, ScatteringProblem< ELEMENT >, ScatteringProblem< ELEMENT >, HelmholtzPointSourceProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, VibratingShellProblem< ELEMENT >, AxisymmetricVibratingShellProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, RotatingProblem< ELEMENT >, ABCProblem< ELEMENT, TIMESTEPPERT >, PredPreyProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, CapProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, MeltSpinningProblem< ELEMENT >, and CapProblem< ELEMENT >.
Referenced by actions_after_change_in_bifurcation_parameter(), actions_after_change_in_global_parameter(), adaptive_unsteady_newton_solve(), oomph::PitchForkHandler::get_dresiduals_dparameter(), get_fd_jacobian(), get_hessian_vector_products(), oomph::FoldHandler::get_jacobian(), oomph::PitchForkHandler::get_jacobian(), newton_solve(), and newton_solve_continuation().
|
inlineprotectedvirtual |
Any actions that are to be performed before a complete Newton solve (e.g. adjust boundary conditions). CAREFUL: This step should (and if the FD-based LinearSolver FD_LU is used, must) only update values that are pinned!
Reimplemented in OneDPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, oomph::WomersleyProblem< ELEMENT, DIM >, oomph::NonLinearElasticitySmoothMesh< ELEMENT >, oomph::SolidICProblem, oomph::BiharmonicFluidProblem< DIM >, oomph::BiharmonicProblem< DIM >, oomph::BiharmonicProblem< 2 >, TestPoissonProblem< ELEMENT >, TestRefineablePoissonProblem< ELEMENT >, TestPoissonProblem< ELEMENT >, TFaceTestProblem< ELEMENT >, TriangleFaceTestProblem< ELEMENT >, QFaceTestProblem< ELEMENT >, QFaceTestProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, DrivenCavityProblem< ELEMENT, MESH >, RefineablePoissonProblem< ELEMENT >, ThreeDPoissonProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, YoungLaplaceProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, RefineableYoungLaplaceProblem< ELEMENT >, YoungLaplaceProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RingWithTRibProblem< ELASTICITY_ELEMENT >, AnnularDiskProblem< ELASTICITY_ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >, SphericalSteadyRotationProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, SphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, UnstructuredSolidProblem< ELEMENT, MESH >, UnstructuredSolidProblem< ELEMENT, MESH >, BlockCompressionProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, CantileverProblem< ELEMENT >, ElasticFishProblem< ELEMENT >, SimpleShearProblem< ELEMENT >, SimpleShearProblem< ELEMENT >, DiskShockWaveProblem< ELEMENT, TIMESTEPPER >, CollapsibleChannelProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, DiskOscillationProblem< ELEMENT >, StaticDiskCompressionProblem< ELEMENT >, CompressedSquareProblem< ELEMENT >, CantileverProblem< ELEMENT >, CantileverProblem< ELEMENT >, PlateProblem< ELEMENT >, ShellProblem< ELEMENT >, ShellProblem< ELEMENT >, ShellProblem< ELEMENT >, ShellProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, ActivatorInhibitorProblem< ELEMENT >, RefineableTwoDPoissonProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, TwoMeshFluxPoissonProblem< ELEMENT >, FluxPoissonProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PRefineableOneDPoissonProblem< ELEMENT >, DemoPoissonProblem, RefineableOneDPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, SimpleRefineableFishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, EighthSpherePoissonProblem< ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, ElasticAnnulusProblem< ELASTICITY_ELEMENT >, PMLProblem< ELEMENT >, PMLProblem< ELEMENT >, PMLFourierDecomposedHelmholtzProblem< ELEMENT >, RefineablePoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, PoissonProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RayleighProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, oomph::MyProblem, VorticityRecoveryProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, DropInChannelProblem< ELEMENT >, BubbleInChannelProblem< ELEMENT >, UnstructuredFluidProblem< ELEMENT >, RisingBubbleProblem< ELEMENT >, FallingBlockProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TwoLayerInterfaceProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TurekNonFSIProblem< ELEMENT >, FreeSurfaceRotationProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, SteadyTubeProblem< ELEMENT >, SpikedChannelSpineFlowProblem< ELEMENT >, ChannelSpineFlowProblem< ELEMENT >, ChannelSpineFlowProblem< ELEMENT >, NavierStokesProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, FpTestProblem, FpTestProblem, RayleighTractionProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, OscEllipseProblem< ELEMENT, TIMESTEPPER >, RectangularDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, TiltedCavityProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, FreeSurfaceRotationProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, SteadyHelicalProblem< ELEMENT >, SteadyCurvedTubeProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, QuarterCircleDrivenCavityProblem2< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, ChannelWithLeafletProblem< ELEMENT >, BrethertonProblem< ELEMENT >, RefineableRotatingCylinderProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, UnitCubePoissonMGProblem< ELEMENT, MESH >, UnitCubePoissonMGProblem< ELEMENT, MESH >, FluxPoissonMGProblem< ELEMENT, MESH >, FluxPoissonMGProblem< ELEMENT, MESH >, PMLHelmholtzMGProblem< ELEMENT >, PMLStructuredCubicHelmholtz< ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, ThermalProblem< ELEMENT >, AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, DDConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, FlowAroundHalfCylinderProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, MultiPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, CantileverProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIRingProblem, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >, ConvectionProblem< NST_ELEMENT, AD_ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RefineableTwoMeshFluxPoissonProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, EntryFlowProblem< ELEMENT >, CantileverProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, PrescribedBoundaryDisplacementProblem< ELEMENT >, RefineableTwoDPoissonProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, PRefineableDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, HarmonicProblem< ELEMENT, EIGEN_SOLVER >, ShellProblem< ELEMENT >, QuarterCircleDrivenCavityProblem< ELEMENT >, RotatingProblem< ELEMENT >, UniformTranspiration< ELEMENT >, CantileverProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, RefineableDrivenCavityProblem< ELEMENT >, ScatteringProblem< ELEMENT >, MovingBlockProblem< ELEMENT >, PoissonProblem< ELEMENT >, FlowPastBoxProblem< ELEMENT >, PoissonProblem< ELEMENT >, FlowPastBoxProblem< ELEMENT >, PoissonProblem< ELEMENT >, NavierStokesProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, UnstructuredPoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, TetmeshPoissonProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, MultiPoissonProblem< ELEMENT >, PeriodicLoadProblem< ELEMENT >, PoissonProblem< ELEMENT >, PoissonProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, RectangularDrivenCavityProblem< ELEMENT >, OneDPoissonProblem< ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineablePeriodicLoadProblem< ELEMENT >, PeriodicLoadProblem< ELEMENT >, TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, FSIRingProblem, FSIRingProblem, SegregatedFSIDrivenCavityProblem< ELEMENT >, FSIDrivenCavityProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSIChannelWithLeafletProblem< ELEMENT >, SegregatedFSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, PreconditionedFSICollapsibleChannelProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, FreeBoundaryPoissonProblem< ELEMENT >, FreeBoundaryPoissonProblem< ELEMENT >, GeomObjectAsGeneralisedElementProblem, DeformableFishPoissonProblem< ELEMENT >, DeformableFishPoissonProblem< ELEMENT >, RefineableFishPoissonProblem< ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, AirwayReopeningProblem< ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >, HomogenisationProblem< ELEMENT >, HomogenisationProblem< ELEMENT >, ScatteringProblem< ELEMENT >, ScatteringProblem< ELEMENT >, HelmholtzPointSourceProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, StefanBoltzmannProblem< ELEMENT >, StefanBoltzmannProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatMeltProblem< ELEMENT >, ContactProblem< ELEMENT >, ContactProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, VibratingShellProblem< ELEMENT >, AxisymmetricVibratingShellProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, FourierDecomposedHelmholtzProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, ExtrudedMovingCylinderProblem< TWO_D_ELEMENT, THREE_D_ELEMENT >, MovingBlockProblem< ELEMENT >, ContinuationProblem, OrrSommerfeldProblem< ELEMENT >, DarcyProblem< ELEMENT >, RotatingProblem< ELEMENT >, UniformTranspiration< ELEMENT >, ABCProblem< ELEMENT, TIMESTEPPERT >, PredPreyProblem< ELEMENT >, BratuProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, FlowAroundCylinderProblem< ELEMENT >, ElasticRingProblem< ELEMENT >, ElasticRingProblem< ELEMENT >, ElasticBeamProblem, ElasticRingProblem< ELEMENT >, ElasticRingProblem< ELEMENT >, AxiPoroProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RotatingCylinderProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RotatingProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, MeltSpinningProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >, AxisymFvKProblem< ELEMENT >, AxisymFvKProblem< ELEMENT >, RefineableAdvectionDiffusionPipeProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, UnstructuredFvKProblem< ELEMENT >, AxisymFvKProblem< ELEMENT >, AxisymFvKProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, SUPGAdvectionDiffusionProblem< ELEMENT >, TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, RefineableAdvectionDiffusionProblem< ELEMENT >, SheetGlueProblem< ELEMENT >, SheetGlueProblem< ELEMENT >, and BendingCantileverProblem< ELEMENT >.
Referenced by actions_after_change_in_bifurcation_parameter(), actions_after_change_in_global_parameter(), get_fd_jacobian(), newton_solve(), and newton_solve_continuation().
|
inlineprotectedvirtual |
Any actions that are to be performed before each individual Newton step. Most likely to be used for diagnostic purposes to doc the solution during a non-converging iteration, say.
Reimplemented in oomph::MyProblem, RectangularDrivenCavityProblem< ELEMENT >, SegregatedFSIDrivenCavityProblem< ELEMENT >, and SegregatedFSICollapsibleChannelProblem< ELEMENT >.
Referenced by newton_solve(), and newton_solve_continuation().
|
inlineprotectedvirtual |
Actions that are to be performed before reading in restart data for problems involving unstructured bulk meshes. If the problem contains such meshes we need to strip out any face elements that are attached to them because restart of unstructured meshes re-creates their elements and nodes from scratch, leading to dangling pointers from the face elements to the old elements and nodes. This function is virtual and (practically) empty but toggles a flag to indicate that it has been called. This is used to issue a warning, prompting the user to consider overloading it if the problem is found to contain unstructured bulk meshes during restarts.
References Empty_actions_before_read_unstructured_meshes_has_been_called.
Referenced by read().
void Problem::activate_bifurcation_tracking | ( | double *const & | parameter_pt, |
const DoubleVector & | eigenvector, | ||
const bool & | block_solve = true |
||
) |
Activate generic bifurcation tracking for a single (real) eigenvalue where the initial guess for the eigenvector can be specified.
Activate the generic bifurcation ///tracking system by changing the assembly handler and initialising it using the parameter addressed by parameter_pt.
References Assembly_handler_pt, AugmentedBlockFoldLinearSolver, FoldHandler, Linear_solver_pt, and reset_assembly_handler_to_default().
void Problem::activate_bifurcation_tracking | ( | double *const & | parameter_pt, |
const DoubleVector & | eigenvector, | ||
const DoubleVector & | normalisation, | ||
const bool & | block_solve = true |
||
) |
Activate generic bifurcation tracking for a single (real) eigenvalue where the initial guess for the eigenvector can be specified and the normalisation condition can also be specified.
Activate the generic bifurcation ///tracking system by changing the assembly handler and initialising it using the parameter addressed by parameter_pt.
References Assembly_handler_pt, AugmentedBlockFoldLinearSolver, FoldHandler, Linear_solver_pt, and reset_assembly_handler_to_default().
void Problem::activate_fold_tracking | ( | double *const & | parameter_pt, |
const bool & | block_solve = true |
||
) |
Turn on fold tracking using the augmented system specified in the FoldHandler class. After a call to this function subsequent calls of the standard solution methods will converge to a fold (limit) point at a particular value of the variable addressed by parameter_pt. The system may not converge if the initial guess is sufficiently poor or, alternatively, if finite differencing is used to calculate the jacobian matrix in the elements. If the boolean flag block_solver is true (the default) then a block factorisation is used to solve the augmented system which is both faster and uses less memory.
Activate the fold tracking system by changing the assembly handler and initialising it using the parameter addressed by parameter_pt.
References Assembly_handler_pt, AugmentedBlockFoldLinearSolver, FoldHandler, Linear_solver_pt, and reset_assembly_handler_to_default().
Referenced by bifurcation_adapt_helper().
void Problem::activate_hopf_tracking | ( | double *const & | parameter_pt, |
const bool & | block_solve = true |
||
) |
Turn on Hopf bifurcation tracking using the augmented system specified in the HopfHandler class. After a call to this function subsequent calls of the standard solution methods will converge to a Hopf bifuraction at a particular value of the variable addressed by parameter_pt. The system may not converge if the initial guess is sufficiently poor or, alternatively, if finite differencing is used to calculate the jacobian matrix in the elements.
Activate the hopf tracking system by changing the assembly handler and initialising it using the parameter addressed by parameter_pt.
References Assembly_handler_pt, BlockHopfLinearSolver, HopfHandler, Linear_solver_pt, and reset_assembly_handler_to_default().
Referenced by bifurcation_adapt_helper().
void Problem::activate_hopf_tracking | ( | double *const & | parameter_pt, |
const double & | omega, | ||
const DoubleVector & | null_real, | ||
const DoubleVector & | null_imag, | ||
const bool & | block_solve = true |
||
) |
Turn on Hopf bifurcation tracking using the augmented system specified in the HopfHandler class. After a call to this function subsequent calls of the standard solution methods will converge to a Hopf bifuraction at a particular value of the variable addressed by parameter_pt. The system may not converge if the initial guess is sufficiently poor or, alternatively, if finite differencing is used to calculate the jacobian matrix in the elements. This interface allows specification of an inital guess for the frequency and real and imaginary parts of the null vector, such as might be obtained from an eigensolve
Activate the hopf tracking system by changing the assembly handler and initialising it using the parameter addressed by parameter_pt and the frequency and null vectors specified.
References Assembly_handler_pt, BlockHopfLinearSolver, HopfHandler, Linear_solver_pt, Eigen::internal::omega(), and reset_assembly_handler_to_default().
void Problem::activate_pitchfork_tracking | ( | double *const & | parameter_pt, |
const DoubleVector & | symmetry_vector, | ||
const bool & | block_solve = true |
||
) |
Turn on pitchfork tracking using the augmented system specified in the PitchForkHandler class. After a call to this function subsequent calls of the standard solution methods will converge to a pitchfork bifurcation at a particular value of the variable addressed by parameter_pt. The symmetry that is to be broken must be specified by supplying a symmetry_vector(ndof). The easiest way to determine such a vector is to solve the associated eigenproblem \( Jx = \lambda M x\) and pass in the eigenvector. This is not always necessary however, if the symmetry is easy to construct. The system may not converge if the initial guess is sufficiently poor or, alternatively, if finite differencing is used to calculate the jacobian matrix in the elements. If the boolean flag block_solver is true (the default) then a block factorisation is used to solve the augmented system which is both faster and requires less memory.
Activate the pitchfork tracking system by changing the assembly handler and initialising it using the parameter addressed by parameter_pt and a symmetry vector. The boolean flag is used to specify whether a block solver is used, default is true.
References Assembly_handler_pt, assembly_handler_pt(), BlockPitchForkLinearSolver, Linear_solver_pt, PitchForkHandler, and reset_assembly_handler_to_default().
Referenced by bifurcation_adapt_helper().
|
inline |
Adapt problem: Perform mesh adaptation for (all) refineable (sub)mesh(es), based on their own error estimates and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. On return from this function, Problem can immediately be solved again. [Argument-free wrapper]
Referenced by UnsteadyHeatProblem< ELEMENT >::adapt(), arc_length_step_solve_helper(), doubly_adaptive_unsteady_newton_solve_helper(), newton_solve(), and unsteady_newton_solve().
Adapt problem: Perform mesh adaptation for (all) refineable (sub)mesh(es), based on their own error estimates and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. Return # of refined/unrefined elements. On return from this function, Problem can immediately be solved again.
References actions_after_adapt(), actions_before_adapt(), adapt_based_on_error_estimates(), Assembly_handler_pt, assign_eqn_numbers(), bifurcation_adapt_helper(), oomph::AssemblyHandler::bifurcation_type(), calibrate::c, Copy_of_problem_pt, oomph::Global_timings::Doc_comprehensive_timings, Dof_current, dof_current(), Dof_derivative, dof_derivative(), Dof_distribution_pt, MeshRefinement::error_estimator_pt, boost::multiprecision::fabs(), get_all_error_estimates(), i, m, make_copy(), mesh_pt(), n, oomph::Node::ndim(), ndof(), oomph::LinearAlgebraDistribution::nrow_local(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, rebuild_global_mesh(), oomph::TimingHelpers::timer(), Use_continuation_timestepper, and oomph::Node::x().
Referenced by main().
void Problem::adapt_based_on_error_estimates | ( | unsigned & | n_refined, |
unsigned & | n_unrefined, | ||
Vector< Vector< double >> & | elemental_error | ||
) |
Adapt problem: Perform mesh adaptation for (all) refineable (sub)mesh(es), based on the error estimates in elemental_error and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. Return # of refined/unrefined elements. On return from this function, Problem can immediately be solved again.
Perform mesh adaptation for (all) refineable (sub)mesh(es), based on the error estimates in elemental_error and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. Return # of refined/unrefined elements. On return from this function, Problem can immediately be solved again.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), oomph::oomph_info, and rebuild_global_mesh().
Referenced by adapt(), adapt_based_on_error_estimates(), and bifurcation_adapt_helper().
|
inline |
Adapt problem: Perform mesh adaptation for (all) refineable (sub)mesh(es), based on the error estimates in elemental_error and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. Return # of refined/unrefined elements. On return from this function, Problem can immediately be solved again. [Wrapper without n_refined and n_unrefined arguments]
References adapt_based_on_error_estimates().
double Problem::adaptive_unsteady_newton_solve | ( | const double & | dt_desired, |
const double & | epsilon | ||
) |
Attempt to advance timestep by dt_desired. If the solution fails the timestep will be halved until convergence is achieved, or the timestep falls below NewtonSolverParameters::Minimum_time_step. The error control parameter epsilon represents the (approximate) desired magnitude of the global error at each timestep. The routine returns a double that is the suggested next timestep and should be passed as dt_desired the next time the routine is called. This version always shifts the time values.
Attempt to take one timestep forward using dt_desired. The error control parameter, epsilon, is used to specify the desired approximate value of the global error norm per timestep. The routine returns the value an estimate of the next value of dt that should be taken.
References oomph::SarahBL::epsilon.
Referenced by doubly_adaptive_unsteady_newton_solve_helper().
double Problem::adaptive_unsteady_newton_solve | ( | const double & | dt_desired, |
const double & | epsilon, | ||
const bool & | shift_values | ||
) |
Attempt to advance timestep by dt_desired. If the solution fails the timestep will be halved until convergence is achieved, or the timestep falls below NewtonSolverParameters::Minimum_time_step. The error control parameter epsilon represents the (approximate) desired magnitude of the global error at each timestep. The routine returns a double that is the suggested next timestep and should be passed as dt_desired the next time the routine is called. Once again the boolean flag, shift_values, is used to control whether the time values are shifted.
Attempt to take one timestep forward using the dt_desired. This is the driver for a number of adaptive solvers. If the solution fails to converge at a given timestep, the routine will automatically halve the time step and try again, until the time step falls below the specified minimum value. The routine returns the value an estimate of the next value of dt that should be taken. Timestep is also rejected if the error estimate post-solve (computed by global_temporal_error_norm()) exceeds epsilon. This behaviour can be over-ruled by setting the protected boolean Problem::Keep_temporal_error_below_tolerance to false.
References abs(), actions_after_implicit_timestep(), actions_after_implicit_timestep_and_error_estimation(), actions_after_newton_solve(), actions_after_newton_step(), oomph::TimeStepper::actions_after_timestep(), actions_before_implicit_timestep(), actions_before_newton_convergence_check(), oomph::TimeStepper::actions_before_timestep(), calculate_predictions(), dof(), dof_distribution_pt(), oomph::Time::dt(), DTSF_max_increase, DTSF_min_decrease, e(), oomph::SarahBL::epsilon, calibrate::error, global_temporal_error_norm(), i, Keep_temporal_error_below_tolerance, max, Maximum_dt, Minimum_dt, Minimum_dt_but_still_proceed, newton_solve(), oomph::LinearAlgebraDistribution::nrow_local(), ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, Eigen::bfloat16_impl::pow(), oomph::TimeStepper::set_error_weights(), oomph::TimeStepper::set_predictor_weights(), oomph::TimeStepper::set_weights(), shift_time_values(), oomph::Global_string_for_annotation::string(), oomph::Time::time(), Time_adaptive_newton_crash_on_solve_fail, time_pt(), time_stepper_pt(), and Timestep_reduction_factor_after_nonconvergence.
void Problem::add_eigenvector_to_dofs | ( | const double & | epsilon, |
const DoubleVector & | eigenvector | ||
) |
Add the eigenvector passed to the function scaled by the constat epsilon to the dofs in the problem so that it can be output by the usual routines
Add the eigenvector passed to the function to the dofs with magnitude epsilon
References dof(), oomph::SarahBL::epsilon, n, ndof(), oomph::DistributableLinearAlgebraObject::nrow(), oomph::DistributableLinearAlgebraObject::nrow_local(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inline |
Add Data to the Problem's global data – the Problem will perform equation numbering etc. for such Data
References Global_data_pt, and global_data_pt().
Referenced by CapProblem< ELEMENT >::CapProblem(), ElasticRingProblem< ELEMENT >::ElasticRingProblem(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), PseudoSolidCapProblem< ELEMENT >::PseudoSolidCapProblem(), RefineableRotatingCylinderProblem< ELEMENT >::RefineableRotatingCylinderProblem(), and SolidFreeSurfaceRotationProblem< ELEMENT >::SolidFreeSurfaceRotationProblem().
Add a submesh to the problem and return its number, i, by which it can be accessed via mesh_pt(i).
References mesh_pt(), and Sub_mesh_pt.
Referenced by AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::AxisymFreeSurfaceNozzleAdvDiffRobinProblem(), oomph::BiharmonicProblem< DIM >::build_global_mesh_and_assign_eqn_numbers(), CapProblem< ELEMENT >::CapProblem(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::ConvectionProblem(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), FluxPoissonMGProblem< ELEMENT, MESH >::FluxPoissonMGProblem(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem(), FSIRingProblem::FSIRingProblem(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), HomogenisationProblem< ELEMENT >::HomogenisationProblem(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), MeltSpinningProblem< ELEMENT >::MeltSpinningProblem(), oomph::NonLinearElasticitySmoothMesh< ELEMENT >::operator()(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), PseudoSolidCapProblem< ELEMENT >::PseudoSolidCapProblem(), oomph::SegregatableFSIProblem::rebuild_monolithic_mesh(), RefineableFishPoissonProblem< ELEMENT >::RefineableFishPoissonProblem(), RefineableRotatingCylinderProblem< ELEMENT >::RefineableRotatingCylinderProblem(), RefineableTwoMeshFluxPoissonProblem< ELEMENT >::RefineableTwoMeshFluxPoissonProblem(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), SolidFreeSurfaceRotationProblem< ELEMENT >::SolidFreeSurfaceRotationProblem(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >::TwoMeshFluxAdvectionDiffusionProblem(), TwoMeshFluxPoissonProblem< ELEMENT >::TwoMeshFluxPoissonProblem(), UnsteadyHeatProblem< ELEMENT >::UnsteadyHeatProblem(), UnstructuredFvKProblem< ELEMENT >::UnstructuredFvKProblem(), UnstructuredSolidProblem< ELEMENT, MESH >::UnstructuredSolidProblem(), oomph::SegregatableFSIProblem::use_only_fluid_elements(), and oomph::SegregatableFSIProblem::use_only_solid_elements().
void Problem::add_time_stepper_pt | ( | TimeStepper *const & | time_stepper_pt | ) |
Add a timestepper to the problem. The function will automatically create or resize the Time object so that it contains the appropriate number of levels of storage.
References oomph::Time::ndt(), oomph::TimeStepper::ndt(), oomph::oomph_info, oomph::Time::resize(), Time_pt, oomph::TimeStepper::time_pt(), Time_stepper_pt, and time_stepper_pt().
Referenced by arc_length_step_solve(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::ConvectionProblem(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), ElasticRingProblem< ELEMENT >::ElasticRingProblem(), FlowAroundCylinderProblem< ELEMENT >::FlowAroundCylinderProblem(), FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem(), FSIRingProblem::FSIRingProblem(), HomogenisationProblem< ELEMENT >::HomogenisationProblem(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), LinearWaveProblem< ELEMENT, TIMESTEPPER >::LinearWaveProblem(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), RayleighProblem< ELEMENT, TIMESTEPPER >::RayleighProblem(), RefineableActivatorInhibitorProblem< ELEMENT >::RefineableActivatorInhibitorProblem(), RefineableRotatingCylinderProblem< ELEMENT >::RefineableRotatingCylinderProblem(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), TurekNonFSIProblem< ELEMENT >::TurekNonFSIProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), UnsteadyHeatProblem< ELEMENT >::UnsteadyHeatProblem(), and oomph::WomersleyProblem< ELEMENT, DIM >::WomersleyProblem().
|
virtual |
Add lambda x incremenet_dofs[l] to the l-th dof.
Function that adds the values to the dofs.
Reimplemented from oomph::ExplicitTimeSteppableObject.
double Problem::arc_length_step_solve | ( | Data *const & | data_pt, |
const unsigned & | data_index, | ||
const double & | ds, | ||
const unsigned & | max_adapt = 0 |
||
) |
Solve a steady problem using arc-length continuation, when the variable corresponding to the arc-length constraint equation is already stored in data used in the problem: data_pt is a pointer to the appropriate data object, data_index is the index of the value that will be traded for the constriant, ds is the desired arc_length and max_adapt is the maximum number of spatial adaptations (default zero, no adaptation). Note that the value must be pinned in order for this formulation to work
This function takes one step of length ds in pseudo-arclength.The argument data_pt is a pointer to the data that holds the parameter (global variable) that is being traded for arc-length. The exact value is located at the location given by data_index. The function returns the next desired arc-length according to criteria based upon the desired number of Newton Iterations per solve.
References add_time_stepper_pt(), arc_length_step_solve_helper(), Arc_length_step_taken, Continuation_time_stepper, i, oomph::Data::is_pinned(), ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, set_timestepper_for_all_data(), time_stepper_pt(), Use_continuation_timestepper, and oomph::Data::value_pt().
double Problem::arc_length_step_solve | ( | double *const & | parameter_pt, |
const double & | ds, | ||
const unsigned & | max_adapt = 0 |
||
) |
Solve a steady problem using arc-length continuation, when the parameter that becomes a variable corresponding to the arc-length constraint equation is an external double: parameter_pt is a pointer to that double, ds is the desired arc_length and max_adapt is the maximum number of spatial adaptations (default zero, no adaptation).
This function takes one step of length ds in pseudo-arclength.The argument parameter_pt is a pointer to the parameter (global variable) that is being traded for arc-length. The function returns the next desired arc-length according to criteria based upon the desired number of Newton Iterations per solve.
References add_time_stepper_pt(), arc_length_step_solve_helper(), Arc_length_step_taken, Continuation_time_stepper, does_pointer_correspond_to_problem_data(), i, ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, set_timestepper_for_all_data(), time_stepper_pt(), and Use_continuation_timestepper.
Referenced by ContinuationProblem::solve().
|
private |
Private helper function that actually contains the guts of the arc-length stepping, parameter_pt is a pointer to the parameter that is traded for the arc-length constraint, ds is the desired arc length and max_adapt is the maximum number of spatial adaptations. The pointer to the parameter may be changed if this is called from the Data-based interface
This function takes one step of length ds in pseudo-arclength.The argument parameter_pt is a pointer to the parameter (global variable) that is being traded for arc-length. The function returns the next desired arc-length according to criteria based upon the desired number of Newton Iterations per solve.
end of adaptation loop
References actions_after_parameter_increase(), adapt(), Arc_length_step_taken, Bifurcation_detection, Bisect_to_find_bifurcation, calculate_continuation_derivatives(), calculate_continuation_derivatives_fd(), communicator_pt(), Desired_newton_iterations_ds, Dof_current, dof_current(), Dof_derivative, dof_derivative(), Dof_distribution_pt, Dof_pt, Ds_current, calibrate::error, boost::multiprecision::fabs(), First_jacobian_sign_change, i, oomph::TimeStepper::is_steady(), oomph::TimeStepper::make_steady(), Minimum_ds, newton_solve_continuation(), oomph::LinearAlgebraDistribution::nrow_local(), ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, Parameter_current, Parameter_derivative, set_consistent_pinned_values_for_continuation(), Sign_of_jacobian, oomph::Global_string_for_annotation::string(), time_stepper_pt(), oomph::TimeStepper::undo_make_steady(), Use_continuation_timestepper, and Use_finite_differences_for_continuation_derivatives.
Referenced by arc_length_step_solve().
|
inline |
Function to determine whether the hessian products are calculated analytically
References Calculate_hessian_products_analytic.
Referenced by get_hessian_vector_products().
|
inline |
Return a pointer to the assembly handler object.
References Assembly_handler_pt.
Referenced by activate_pitchfork_tracking(), bifurcation_adapt_helper(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::FpPressureAdvectionDiffusionProblem(), get_hessian_vector_products(), get_inverse_mass_matrix_times_residuals(), get_jacobian(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), get_residuals(), print_elemental_jacobian(), oomph::HSL_MA42::reorder_elements(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::BlockPitchForkLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::BlockPitchForkLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::HSL_MA42::solve(), oomph::HSL_MA42::solve_for_one_dof(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), and sparse_assemble_row_or_column_compressed_with_vectors_of_pairs().
|
inline |
Return a pointer to the assembly handler object (const version)
References Assembly_handler_pt.
void Problem::assign_eigenvector_to_dofs | ( | DoubleVector & | eigenvector | ) |
Assign the eigenvector passed to the function to the dofs.
Assign the eigenvector passed to the function to the dofs in the problem so that it can be output by the usual routines.
References dof(), n, ndof(), oomph::DistributableLinearAlgebraObject::nrow(), oomph::DistributableLinearAlgebraObject::nrow_local(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Assign all equation numbers for problem: Deals with global data (= data that isn't attached to any elements) and then does the equation numbering for the elements. Virtual so it can be overloaded in MPI problems. Bool argument can be set to false to ignore assigning local equation numbers (found to be necessary in the parallel implementation of locate_zeta between multiple meshes).
Assign all equation numbers for problem: Deals with global data (= data that isn't attached to any elements) and then does the equation numbering for the elements. Bool argument can be set to false to ignore assigning local equation numbers (necessary in the parallel implementation of locate_zeta between multiple meshes).
References oomph::Mesh::assign_global_eqn_numbers(), oomph::Mesh::assign_local_eqn_numbers(), oomph::LinearAlgebraDistribution::build(), Communicator_pt, communicator_pt(), oomph::GeneralisedElement::complete_setup_of_dependencies(), oomph::Global_timings::Doc_comprehensive_timings, Dof_distribution_pt, Dof_pt, e(), oomph::Mesh::element_pt(), Global_data_pt, i, Mesh_pt, mesh_pt(), oomph::Mesh::nelement(), nglobal_data(), oomph::OomphCommunicator::nproc(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, Sparse_assemble_with_arrays_previous_allocation, Store_local_dof_pt_in_elements, Sub_mesh_pt, oomph::TimingHelpers::timer(), and tmp.
Referenced by adapt(), adapt_based_on_error_estimates(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::AxisymFreeSurfaceNozzleAdvDiffRobinProblem(), bifurcation_adapt_helper(), oomph::ODEProblem::build(), oomph::BiharmonicProblem< DIM >::build_global_mesh_and_assign_eqn_numbers(), CapProblem< ELEMENT >::CapProblem(), ContinuationProblem::ContinuationProblem(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::ConvectionProblem(), EighthSpherePoissonProblem< ELEMENT >::EighthSpherePoissonProblem(), ElasticBeamProblem::ElasticBeamProblem(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), ElasticRingProblem< ELEMENT >::ElasticRingProblem(), EntryFlowProblem< ELEMENT >::EntryFlowProblem(), ExtrudedMovingCylinderProblem< TWO_D_ELEMENT, THREE_D_ELEMENT >::ExtrudedMovingCylinderProblem(), FlowAroundCylinderProblem< ELEMENT >::FlowAroundCylinderProblem(), FluxPoissonMGProblem< ELEMENT, MESH >::FluxPoissonMGProblem(), FluxPoissonProblem< ELEMENT >::FluxPoissonProblem(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem(), FSIRingProblem::FSIRingProblem(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::get_pressure_advection_diffusion_jacobian(), HomogenisationProblem< ELEMENT >::HomogenisationProblem(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), LinearWaveProblem< ELEMENT, TIMESTEPPER >::LinearWaveProblem(), main(), MeltSpinningProblem< ELEMENT >::MeltSpinningProblem(), NavierStokesProblem< ELEMENT >::NavierStokesProblem(), OneDPoissonProblem< ELEMENT >::OneDPoissonProblem(), oomph::NonLinearElasticitySmoothMesh< ELEMENT >::operator()(), oomph::LinearElasticitySmoothMesh< LINEAR_ELASTICITY_ELEMENT >::operator()(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), OrrSommerfeldProblem< ELEMENT >::OrrSommerfeldProblem(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), PolarNSProblem< ELEMENT >::output_streamfunction(), p_adapt(), p_refine_selected_elements(), p_refine_uniformly(), p_refine_uniformly_aux(), p_unrefine_uniformly(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), PoissonProblem< ELEMENT >::PoissonProblem(), PRefineableOneDPoissonProblem< ELEMENT >::PRefineableOneDPoissonProblem(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), PseudoSolidCapProblem< ELEMENT >::PseudoSolidCapProblem(), QuarterCircleDrivenCavityProblem< ELEMENT >::QuarterCircleDrivenCavityProblem(), QuarterCircleDrivenCavityProblem2< ELEMENT >::QuarterCircleDrivenCavityProblem2(), RayleighProblem< ELEMENT, TIMESTEPPER >::RayleighProblem(), read(), refine_selected_elements(), refine_uniformly(), refine_uniformly_aux(), RefineableActivatorInhibitorProblem< ELEMENT >::RefineableActivatorInhibitorProblem(), RefineableAdvectionDiffusionProblem< ELEMENT >::RefineableAdvectionDiffusionProblem(), RefineableFishPoissonProblem< ELEMENT >::RefineableFishPoissonProblem(), RefineableOneDPoissonProblem< ELEMENT >::RefineableOneDPoissonProblem(), RefineablePoissonProblem< ELEMENT >::RefineablePoissonProblem(), RefineableRotatingCylinderProblem< ELEMENT >::RefineableRotatingCylinderProblem(), RefineableTwoDPoissonProblem< ELEMENT >::RefineableTwoDPoissonProblem(), RefineableTwoMeshFluxPoissonProblem< ELEMENT >::RefineableTwoMeshFluxPoissonProblem(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), RotatingProblem< ELEMENT >::RotatingProblem(), oomph::SegregatableFSIProblem::segregated_solve(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::SolidICProblem::set_newmark_initial_condition_directly(), oomph::SolidICProblem::set_static_initial_condition(), set_timestepper_for_all_data(), oomph::MGSolver< DIM >::setup_mg_hierarchy(), oomph::HelmholtzMGPreconditioner< DIM >::setup_mg_hierarchy(), oomph::SolidICProblem::setup_problem(), SimpleShearProblem< ELEMENT >::SimpleShearProblem(), SolidFreeSurfaceRotationProblem< ELEMENT >::SolidFreeSurfaceRotationProblem(), SphericalSteadyRotationProblem< ELEMENT >::SphericalSteadyRotationProblem(), SteadyCurvedTubeProblem< ELEMENT >::SteadyCurvedTubeProblem(), SteadyHelicalProblem< ELEMENT >::SteadyHelicalProblem(), SteadyTubeProblem< ELEMENT >::SteadyTubeProblem(), oomph::StreamfunctionProblem::StreamfunctionProblem(), SUPGAdvectionDiffusionProblem< ELEMENT >::SUPGAdvectionDiffusionProblem(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), ContactProblem< ELEMENT >::switch_to_force_control(), TestRefineablePoissonProblem< ELEMENT >::TestRefineablePoissonProblem(), ThreeDPoissonProblem< ELEMENT >::ThreeDPoissonProblem(), TurekNonFSIProblem< ELEMENT >::TurekNonFSIProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >::TwoMeshFluxAdvectionDiffusionProblem(), TwoMeshFluxPoissonProblem< ELEMENT >::TwoMeshFluxPoissonProblem(), UniformTranspiration< ELEMENT >::UniformTranspiration(), UnitCubePoissonMGProblem< ELEMENT, MESH >::UnitCubePoissonMGProblem(), unrefine_uniformly(), UnsteadyHeatProblem< ELEMENT >::UnsteadyHeatProblem(), UnstructuredFvKProblem< ELEMENT >::UnstructuredFvKProblem(), UnstructuredSolidProblem< ELEMENT, MESH >::UnstructuredSolidProblem(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::validate(), and oomph::WomersleyProblem< ELEMENT, DIM >::WomersleyProblem().
void Problem::assign_initial_values_impulsive | ( | ) |
Initialise data and nodal positions to simulate impulsive start from initial configuration/solution
Initialise the previous values of the variables for time stepping corresponding to an impulsive start. Previous history for all data is generated by the appropriate timesteppers. Previous nodal positions are simply copied backwards.
References oomph::Mesh::assign_initial_values_impulsive(), Global_data_pt, and Mesh_pt.
Referenced by assign_initial_values_impulsive(), oomph::SolidICProblem::set_static_initial_condition(), steady_newton_solve(), and oomph::SegregatableFSIProblem::steady_segregated_solve().
void Problem::assign_initial_values_impulsive | ( | const double & | dt | ) |
Initialise data and nodal positions to simulate an impulsive start and also set the initial and previous values of dt
Assign the values for an impulsive start and also set the initial values of the previous dts to both be dt
References assign_initial_values_impulsive(), and initialise_dt().
|
private |
A function that is used to document the errors used in the adaptive solution of bifurcation problems.
A function that is used to document the errors when adapting a bifurcation-tracking problem, which requires separate interpolation of the associated eigenfunction. The error measure is chosen to be a suitable combination of the errors in the base flow and the eigenfunction. The bifurcation type is passed as an argument
References bifurcation_adapt_helper().
Referenced by doc_errors().
|
private |
A function that is used to adapt a bifurcation-tracking problem, which requires separate interpolation of the associated eigenfunction. The error measure is chosen to be a suitable combination of the errors in the base flow and the eigenfunction
A function that is used to adapt a bifurcation-tracking problem, which requires separate interpolation of the associated eigenfunction. The error measure is chosen to be a suitable combination of the errors in the base flow and the eigenfunction. The bifurcation type is passed as an argument
References activate_fold_tracking(), activate_hopf_tracking(), activate_pitchfork_tracking(), adapt_based_on_error_estimates(), assembly_handler_pt(), assign_eqn_numbers(), bifurcation_parameter_pt(), calibrate::c, Copy_of_problem_pt, deactivate_bifurcation_tracking(), dof(), e(), get_all_error_estimates(), get_bifurcation_eigenfunction(), m, make_copy(), mesh_pt(), ndof(), Eigen::internal::omega(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, calibrate::sigma, and size.
Referenced by adapt(), bifurcation_adapt_doc_errors(), and p_adapt().
double * Problem::bifurcation_parameter_pt | ( | ) | const |
Return pointer to the parameter that is used in the bifurcation detection. If we are not tracking a bifurcation then an error will be thrown by the AssemblyHandler
References Assembly_handler_pt, and oomph::AssemblyHandler::bifurcation_parameter_pt().
Referenced by bifurcation_adapt_helper().
void Problem::build_global_mesh | ( | ) |
Build the global mesh by combining the all the submeshes. Note: The nodes boundary information refers to the boundary numbers within the submesh!
Build a single (global) mesh from a number of submeshes which are passed as a vector of pointers to the submeshes. The ordering is not necessarily optimal.
References Mesh_pt, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, rebuild_global_mesh(), oomph::Global_string_for_annotation::string(), and Sub_mesh_pt.
Referenced by AxisymFreeSurfaceNozzleAdvDiffRobinProblem< ELEMENT >::AxisymFreeSurfaceNozzleAdvDiffRobinProblem(), oomph::ODEProblem::build(), oomph::BiharmonicProblem< DIM >::build_global_mesh_and_assign_eqn_numbers(), CapProblem< ELEMENT >::CapProblem(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::ConvectionProblem(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), FluxPoissonMGProblem< ELEMENT, MESH >::FluxPoissonMGProblem(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem(), FSIRingProblem::FSIRingProblem(), HomogenisationProblem< ELEMENT >::HomogenisationProblem(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), MeltSpinningProblem< ELEMENT >::MeltSpinningProblem(), oomph::NonLinearElasticitySmoothMesh< ELEMENT >::operator()(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), PseudoSolidCapProblem< ELEMENT >::PseudoSolidCapProblem(), RefineableFishPoissonProblem< ELEMENT >::RefineableFishPoissonProblem(), RefineableRotatingCylinderProblem< ELEMENT >::RefineableRotatingCylinderProblem(), RefineableTwoMeshFluxPoissonProblem< ELEMENT >::RefineableTwoMeshFluxPoissonProblem(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), SolidFreeSurfaceRotationProblem< ELEMENT >::SolidFreeSurfaceRotationProblem(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoMeshFluxAdvectionDiffusionProblem< ELEMENT >::TwoMeshFluxAdvectionDiffusionProblem(), TwoMeshFluxPoissonProblem< ELEMENT >::TwoMeshFluxPoissonProblem(), UnsteadyHeatProblem< ELEMENT >::UnsteadyHeatProblem(), UnstructuredFvKProblem< ELEMENT >::UnstructuredFvKProblem(), and UnstructuredSolidProblem< ELEMENT, MESH >::UnstructuredSolidProblem().
|
protected |
A function to calculate the derivatives with respect to the arc-length required for continuation. The arguments is the solution of the linear system, Jz = dR/dparameter, that gives du/dparameter and the direction output from the newton_solve_continuation function. The derivatives are stored in the ContinuationParameters namespace.
References calculate_continuation_derivatives_helper(), Desired_proportion_of_arc_length, Parameter_derivative, Scale_arc_length, and Theta_squared.
|
protected |
A function to calculate the derivatives wrt the arc-length. This version of the function actually does a linear solve so that the derivatives are calculated "exactly" rather than using the values at the Newton step just before convergence. This is necessary in spatially adaptive problems, in which the number of degrees of freedom changes and so the appropriate derivatives must be calculated for the new variables. This function is called if no Newton steps were taken in the continuation routine ... i.e. the initial residuals were sufficiently small.
A function to calculate the derivatives wrt the arc-length. This version of the function actually does a linear solve so that the derivatives are calculated "exactly" rather than using the values at the Newton step just before convergence. This is only necessary in spatially adaptive problems, in which the number of degrees of freedom changes and so the appropriate derivatives must be calculated for the new variables.
References Communicator_pt, oomph::LinearSolver::disable_resolve(), oomph::LinearSolver::enable_resolve(), get_derivative_wrt_global_parameter(), oomph::LinearSolver::is_resolve_enabled(), Linear_solver_pt, ndof(), oomph::LinearSolver::resolve(), and oomph::LinearSolver::solve().
Referenced by arc_length_step_solve_helper().
|
protected |
A function to calculate the derivatives with respect to the arc-length required for continuation by finite differences, using the previous values of the solution. The derivatives are stored in the ContinuationParameters namespace.
A function to calculate the derivatives with respect to the arc-length required for continuation using finite differences.
References calculate_continuation_derivatives_fd_helper(), Desired_proportion_of_arc_length, Parameter_derivative, Scale_arc_length, and Theta_squared.
Referenced by arc_length_step_solve_helper().
|
private |
A function that performs the guts of the continuation derivative calculation in arc-length continuation problems using finite differences
A private helper function to calculate the derivatives with respect to the arc-length required for continuation using finite differences.
References oomph::LinearAlgebraDistribution::communicator_pt(), oomph::LinearAlgebraDistribution::distributed(), Dof_current, dof_derivative(), Dof_distribution_pt, Dof_pt, Ds_current, oomph::OomphCommunicator::nproc(), oomph::LinearAlgebraDistribution::nrow_local(), Parameter_current, Parameter_derivative, sqrt(), Theta_squared, and Z.
Referenced by calculate_continuation_derivatives_fd().
|
private |
A function that performs the guts of the continuation derivative calculation in arc length continuation problems.
A private helper function to calculate the derivatives with respect to the arc-length required for continuation. The arguments is the solution of the linear system, Jz = dR/dparameter, that gives du/dparameter and the direction output from the newton_solve_continuation function. The derivatives are stored in the ContinuationParameters namespace.
References oomph::LinearAlgebraDistribution::communicator_pt(), Continuation_direction, oomph::LinearAlgebraDistribution::distributed(), Dof_derivative, dof_derivative(), Dof_distribution_pt, oomph::DoubleVector::dot(), oomph::OomphCommunicator::nproc(), oomph::LinearAlgebraDistribution::nrow_local(), Parameter_derivative, oomph::DoubleVector::redistribute(), sqrt(), Theta_squared, Use_continuation_timestepper, and oomph::DoubleVector::values_pt().
Referenced by calculate_continuation_derivatives().
void Problem::calculate_predictions | ( | ) |
Calculate predictions.
Calculate the predictions of all variables in problem.
References abs(), oomph::Mesh::calculate_predictions(), distributed(), dof(), Dof_pt, oomph::Time::dt(), e(), oomph::TimeStepper::explicit_predictor_pt(), explicit_time_stepper_pt(), explicit_timestep(), get_dofs(), Global_data_pt, i, j, Mesh_pt, ndof(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, restore_dof_values(), set_dofs(), store_current_dof_values(), oomph::Global_string_for_annotation::string(), time(), time_pt(), Time_stepper_pt, time_stepper_pt(), oomph::StringConversion::to_string(), oomph::TimeStepper::update_predicted_time(), and use_predictor_values_as_initial_guess().
Referenced by adaptive_unsteady_newton_solve().
|
inline |
access function to the oomph-lib communicator
References Communicator_pt.
Referenced by oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), arc_length_step_solve_helper(), assign_eqn_numbers(), oomph::Multi_domain_functions::aux_setup_multi_domain_interaction(), doubly_adaptive_unsteady_newton_solve_helper(), dump(), oomph::FoldHandler::FoldHandler(), oomph::Multi_domain_functions::get_dim_helper(), oomph::FoldHandler::get_eigenfunction(), oomph::HopfHandler::get_eigenfunction(), get_hessian_vector_products(), get_inverse_mass_matrix_times_residuals(), get_jacobian(), get_residuals(), oomph::HopfHandler::HopfHandler(), newton_solve(), parallel_test(), oomph::PitchForkHandler::PitchForkHandler(), read(), oomph::BlockPitchForkLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), oomph::SolidICProblem::set_static_initial_condition(), setup_element_count_per_dof(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::BlockPitchForkLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::HSL_MA42::solve(), oomph::GS< MATRIX >::solve(), oomph::GS< CRDoubleMatrix >::solve(), oomph::DampedJacobi< MATRIX >::solve(), oomph::GMRES< MATRIX >::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::SuperLUSolver::solve(), oomph::MumpsSolver::solve(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), oomph::HelmholtzFGMRESMG< MATRIX >::solve(), oomph::FoldHandler::solve_augmented_block_system(), oomph::PitchForkHandler::solve_augmented_block_system(), oomph::FoldHandler::solve_block_system(), oomph::HopfHandler::solve_complex_system(), oomph::ARPACK::solve_eigenproblem(), oomph::LAPACK_QZ::solve_eigenproblem(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), oomph::FoldHandler::solve_full_system(), oomph::PitchForkHandler::solve_full_system(), oomph::HopfHandler::solve_full_system(), oomph::HopfHandler::solve_standard_system(), oomph::SuperLUSolver::solve_transpose(), unsteady_newton_solve(), oomph::FoldHandler::~FoldHandler(), and oomph::HopfHandler::~HopfHandler().
|
inline |
access function to the oomph-lib communicator, const version
References Communicator_pt.
void Problem::copy | ( | Problem * | orig_problem_pt | ) |
Copy Data values, nodal positions etc from specified problem. Note: This is not a copy constructor. We assume that the current and the "original" problem have both been created by calling the same problem constructor so that all Data objects, time steppers etc. in the two problems are completely independent. This function copies the nodal, internal and global values, and the time parameters from the original problem into "this" one. This functionality is required, e.g. for multigrid computations.
Copy Data values, nodal positions etc from specified problem. Note: This is not a copy constructor. We assume that the current and the "original" problem have both been created by calling the same problem constructor so that all Data objects, time steppers etc. in the two problems are completely independent. This function copies the nodal, internal and global values and the time parameters from the original problem into "this" one. This functionality is required, e.g. for multigrid computations.
References oomph::Data::copy(), oomph::Node::copy(), oomph::SolidNode::copy(), oomph::Time::dt(), e(), oomph::Mesh::element_pt(), Global_data_pt, global_data_pt(), i, oomph::GeneralisedElement::internal_data_pt(), m, mesh_pt(), oomph::Time::ndt(), oomph::Mesh::nelement(), nglobal_data(), oomph::GeneralisedElement::ninternal_data(), oomph::Mesh::nnode(), oomph::Mesh::node_pt(), nsub_mesh(), ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::Time::resize(), oomph::TimeStepper::set_weights(), oomph::Time::time(), time_pt(), and time_stepper_pt().
|
inline |
Deactivate all bifuraction tracking, by reseting the assembly handler to the default
References reset_assembly_handler_to_default().
Referenced by bifurcation_adapt_helper().
|
inlinevirtual |
Hook for debugging. Can be overloaded in driver code; argument allows identification of where we're coming from
References i, and oomph::oomph_info.
void Problem::delete_all_external_storage | ( | ) |
Wrapper function to delete external storage for each submesh of the problem
Delete any external storage for any submeshes NB this would ordinarily take place within the adaptation procedure for each submesh (See RefineableMesh::adapt_mesh(...)), but there are instances where the actions_before/after_adapt routines are used and no adaptive routines are called in between (e.g. when doc-ing errors at the end of an adaptive newton solver)
References oomph::Mesh::delete_all_external_storage(), mesh_pt(), and nsub_mesh().
void Problem::describe_dofs | ( | std::ostream & | out = *(oomph_info.stream_pt()) | ) | const |
Function to describe the dofs in terms of the global equation number, i.e. what type of value (nodal value of a Node; value in a Data object; value of internal Data in an element; etc) is the unknown with a certain global equation number. Output stream defaults to oomph_info.
References oomph::Mesh::describe_dofs(), oomph::Mesh::describe_local_dofs(), Global_data_pt, i, Mesh_pt, nglobal_data(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, out(), oomph::Global_string_for_annotation::string(), and Sub_mesh_pt.
|
inline |
Disable the use of a discontinuous-element formulation. Note that the methods will all still work even if the elements are discontinuous, we will just be assembling a larger system matrix than necessary.
References Discontinuous_element_formulation.
|
inline |
disable globally convergent Newton method
References Use_globally_convergent_newton_method.
|
inline |
Disable the output of information when in the newton solver.
References Shut_up_in_newton_solve.
Referenced by PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), and oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project().
|
inline |
Disable recycling of Jacobian in Newton iteration.
References Jacobian_has_been_computed, and Jacobian_reuse_is_enabled.
void Problem::disable_mass_matrix_reuse | ( | ) |
Turn off recyling of the mass matrix in explicit timestepping schemes
Turn off the recyling of the mass matrix in explicit time-stepping schemes
References oomph::DGElement::disable_mass_matrix_reuse(), Discontinuous_element_formulation, e(), oomph::Mesh::element_pt(), Mass_matrix_has_been_computed, Mass_matrix_reuse_is_enabled, mesh_pt(), and oomph::Mesh::nelement().
|
inline |
Insist that local dof pointers are NOT set up in each element when equation numbering takes place (the default)
References Store_local_dof_pt_in_elements.
|
inline |
If we have MPI return the "problem has been distributed" flag, otherwise it can't be distributed so return false.
Referenced by calculate_predictions(), get_dofs(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), oomph::PitchForkHandler::PitchForkHandler(), oomph::BlockPitchForkLinearSolver::resolve(), set_dofs(), and oomph::BlockPitchForkLinearSolver::solve().
|
inline |
Get max and min error for all elements in submeshes.
References oomph::DocInfo::disable_doc().
void Problem::doc_errors | ( | DocInfo & | doc_info | ) |
Get max and min error for all elements in submeshes.
References Assembly_handler_pt, bifurcation_adapt_doc_errors(), oomph::AssemblyHandler::bifurcation_type(), MeshRefinement::error_estimator_pt, boost::multiprecision::fabs(), oomph::DocInfo::is_doc_enabled(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
Return a boolean flag to indicate whether the pointer parameter_pt refers to values stored in a Data object that is contained within the problem
Function that returns a boolean flag to indicate whether the pointer parameter_pt refers to memory that is a value in a Data object used within the problem
References oomph::Mesh::does_pointer_correspond_to_mesh_data(), Global_data_pt, i, Mesh_pt, nsub_mesh(), and Sub_mesh_pt.
Referenced by arc_length_step_solve().
i-th dof in the problem
Referenced by oomph::IMRByBDF::actions_before_timestep(), adaptive_unsteady_newton_solve(), add_eigenvector_to_dofs(), assign_eigenvector_to_dofs(), bifurcation_adapt_helper(), calculate_predictions(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::get_dofs_for_element(), get_hessian_vector_products(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), restore_dof_values(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::set_dofs_for_element(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::set_previous_dofs_to_current_dofs(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), and store_current_dof_values().
Access function to the current value of the i-th (local) dof at the start of a continuation step
References Dof_current, Dof_current_offset, Dof_pt, i, and Use_continuation_timestepper.
Referenced by adapt(), arc_length_step_solve_helper(), and newton_solve_continuation().
Access function to the derivative of the i-th (local) dof with respect to the arc length, used in continuation
References Dof_derivative, Dof_derivative_offset, Dof_pt, i, and Use_continuation_timestepper.
Referenced by adapt(), arc_length_step_solve_helper(), calculate_continuation_derivatives_fd_helper(), calculate_continuation_derivatives_helper(), and newton_solve_continuation().
|
inline |
Return the pointer to the dof distribution (read-only)
References Dof_distribution_pt.
Referenced by adaptive_unsteady_newton_solve(), oomph::ProblemBasedShiftInvertOperator::ProblemBasedShiftInvertOperator(), and oomph::ANASAZI::solve_eigenproblem().
Pointer to i-th dof in the problem.
Referenced by oomph::AssemblyHandler::local_problem_dof(), and set_dofs().
|
inline |
Unsteady "doubly" adaptive Newton solve: Does temporal adaptation first, i.e. we try to do a timestep with an increment of dt, and adjusting dt until the solution on the given mesh satisfies the temporal error measure with tolerance epsilon. Following this, we do up to max_adapt spatial adaptions (without re-examining the temporal error). If first==true, the initial conditions are re-assigned after the mesh adaptations. Shifting of time can be suppressed by overwriting the default value of shift (true). [Shifting must be done if first_timestep==true because we're constantly re-assigning the initial conditions; if first_timestep==true and shift==false shifting is performed anyway and a warning is issued.
References doubly_adaptive_unsteady_newton_solve_helper(), and oomph::SarahBL::epsilon.
|
inline |
Unsteady "doubly" adaptive Newton solve: Does temporal adaptation first, i.e. we try to do a timestep with an increment of dt, and adjusting dt until the solution on the given mesh satisfies the temporal error measure with tolerance epsilon. Following this, we do up to max_adapt spatial adaptions (without re-examining the temporal error). If first==true, the initial conditions are re-assigned after the mesh adaptations. Shifting of time can be suppressed by overwriting the default value of shift (true). [Shifting must be done if first_timestep==true because we're constantly re-assigning the initial conditions; if first_timestep==true and shift==false shifting is performed anyway and a warning is issued. Pseudo-Boolean flag suppress_resolve_after_spatial_adapt [0: false; 1: true] does what it says.]
References doubly_adaptive_unsteady_newton_solve_helper(), and oomph::SarahBL::epsilon.
|
private |
Private helper function that actually performs the unsteady "doubly" adaptive Newton solve. See actual (non-helper) functions for description of parameters.
Private helper function to perform unsteady "doubly" adaptive Newton solve: Does temporal adaptation first, i.e. we try to do a timestep with an increment of dt, and adjusting dt until the solution on the given mesh satisfies the temporal error measure with tolerance epsilon. Following this, we do up to max_adapt spatial adaptions (without re-examining the temporal error). If first==true, the initial conditions are re-assigned after the mesh adaptations. Shifting of time can be suppressed by overwriting the default value of shift (true). [Shifting must be done if first_timestep==true because we're constantly re-assigning the initial conditions; if first_timestep==true and shift==false shifting is performed anyway and a warning is issued. Pseudo-Boolean flag suppress_resolve_after_spatial_adapt [0: false; 1: true] does what it says.]
References adapt(), adaptive_unsteady_newton_solve(), communicator_pt(), Default_set_initial_condition_called, oomph::Time::dt(), oomph::SarahBL::epsilon, oomph::oomph_info, set_initial_condition(), oomph::Time::time(), time_pt(), and unsteady_newton_solve().
Referenced by doubly_adaptive_unsteady_newton_solve().
|
inline |
Dump refinement pattern of all refineable meshes and all generic Problem data to file for restart.
References dump(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().
|
virtual |
Dump refinement pattern of all refineable meshes and all generic Problem data to file for restart.
Reimplemented in oomph::MyProblem, and AirwayReopeningProblem< ELEMENT >.
References communicator_pt(), oomph::Time::dt(), oomph::Mesh::dump(), e(), Global_data_pt, i, oomph::Mesh::is_mesh_distributed(), m, max, mesh_pt(), oomph::OomphCommunicator::my_rank(), n, oomph::Time::ndt(), nsub_mesh(), oomph::Time::time(), and time_pt().
Referenced by dump(), and oomph::MyProblem::dump().
|
inline |
Return a pointer to the eigen solver object.
References Eigen_solver_pt.
Referenced by FlowAroundCylinderProblem< ELEMENT >::FlowAroundCylinderProblem(), and OrrSommerfeldProblem< ELEMENT >::OrrSommerfeldProblem().
|
inline |
Return a pointer to the eigen solver object (const version)
References Eigen_solver_pt.
|
inline |
Indicate that the problem involves discontinuous elements This allows for a more efficiently assembly and inversion of the mass matrix
References Discontinuous_element_formulation.
|
inline |
enable globally convergent Newton method
References Use_globally_convergent_newton_method.
|
inline |
Enable the output of information when in the newton solver (Default)
References Shut_up_in_newton_solve.
|
inline |
Enable recycling of Jacobian in Newton iteration (if the linear solver allows it). Useful for linear problems with constant Jacobians or nonlinear problems where you're willing to risk the trade-off between faster solve times and degraded Newton convergence rate
References Jacobian_has_been_computed, and Jacobian_reuse_is_enabled.
void Problem::enable_mass_matrix_reuse | ( | ) |
Enable recycling of the mass matrix in explicit timestepping schemes. Useful for timestepping on fixed meshes when you want to avoid the linear solve phase.
References Discontinuous_element_formulation, e(), oomph::Mesh::element_pt(), oomph::DGElement::enable_mass_matrix_reuse(), Mass_matrix_has_been_computed, Mass_matrix_reuse_is_enabled, mesh_pt(), and oomph::Mesh::nelement().
|
inline |
Insist that local dof pointers are set up in each element when equation numbering takes place
References Store_local_dof_pt_in_elements.
|
inline |
Return a pointer to the explicit timestepper.
References Explicit_time_stepper_pt.
Referenced by calculate_predictions(), explicit_timestep(), and set_explicit_time_stepper_pt().
Take an explicit timestep of size dt.
Take an explicit timestep of size dt and optionally shift any stored values of the time history
References oomph::Time::dt(), explicit_time_stepper_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, shift_time_values(), time_pt(), and oomph::ExplicitTimeStepper::timestep().
Referenced by calculate_predictions().
|
inline |
Flush the Problem's global data – resizes container to zero. Data objects are not deleted!
References Global_data_pt.
Referenced by CapProblem< ELEMENT >::CapProblem().
|
inline |
Flush the problem's collection of sub-meshes. Must be followed by call to rebuild_global_mesh().
References Sub_mesh_pt.
Referenced by oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), oomph::SegregatableFSIProblem::rebuild_monolithic_mesh(), oomph::SegregatableFSIProblem::use_only_fluid_elements(), and oomph::SegregatableFSIProblem::use_only_solid_elements().
Return the error estimates computed by (all) refineable (sub)mesh(es) in the elemental_error structure, which consists of a vector of vectors of elemental errors, one vector for each (sub)mesh.
Return the error estimates computed by (all) refineable (sub)mesh(es) in the elemental_error structure, which consists of a vector of elemental errors for each (sub)mesh.
References Eigen::placeholders::end, MeshRefinement::error_estimator_pt, boost::multiprecision::fabs(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
Referenced by adapt(), and bifurcation_adapt_helper().
void Problem::get_bifurcation_eigenfunction | ( | Vector< DoubleVector > & | eigenfunction | ) |
Return the eigenfunction calculated as part of a bifurcation tracking process. If we are not tracking a bifurcation then an error will be thrown by the AssemblyHandler
References Assembly_handler_pt, and oomph::AssemblyHandler::get_eigenfunction().
Referenced by bifurcation_adapt_helper().
void Problem::get_derivative_wrt_global_parameter | ( | double *const & | parameter_pt, |
DoubleVector & | result | ||
) |
Get the derivative of the entire residuals vector wrt a global parameter, used in continuation problems
Get derivative of the residuals vector wrt a global parameter This is required in continuation problems
References actions_after_change_in_global_parameter(), Assembly_handler_pt, oomph::BlackBoxFDNewtonSolver::FD_step, get_residuals(), is_dparameter_calculated_analytically(), n, and oomph::DistributableLinearAlgebraObject::nrow_local().
Referenced by calculate_continuation_derivatives(), oomph::FoldHandler::FoldHandler(), oomph::HopfHandler::HopfHandler(), newton_solve_continuation(), and oomph::BlockPitchForkLinearSolver::solve().
|
virtual |
Return vector of the t'th history value of all dofs.
Get history values of dofs in a double vector.
Reimplemented from oomph::ExplicitTimeSteppableObject.
References oomph::DoubleVector::build(), distributed(), Dof_distribution_pt, oomph::Mesh::element_pt(), oomph::Data::eqn_number(), Global_data_pt, i, oomph::GeneralisedElement::internal_data_pt(), j, k, mesh_pt(), nglobal_data(), oomph::GeneralisedElement::ninternal_data(), oomph::Mesh::node_pt(), oomph::Data::nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, plotPSD::t, oomph::Data::value(), and oomph::Node::value().
|
virtual |
Return the vector of dofs, i.e. a vector containing the current values of all unknowns.
Get the vector of dofs, i.e. a vector containing the current values of all unknowns.
Reimplemented from oomph::ExplicitTimeSteppableObject.
References oomph::DoubleVector::build(), Dof_distribution_pt, Dof_pt, and ndof().
Referenced by oomph::IMRByBDF::actions_after_timestep(), oomph::IMRByBDF::actions_before_timestep(), and calculate_predictions().
|
virtual |
Get the time derivative of all values (using get_inverse_mass_matrix_times_residuals(..) with all time steppers set to steady) e.g. for use in explicit time steps. The approach used is slighty hacky, beware if you have a residual which is non-linear or implicit in the derivative or if you have overloaded get_jacobian(...).
Reimplemented from oomph::ExplicitTimeSteppableObject.
References f(), get_inverse_mass_matrix_times_residuals(), i, oomph::TimeStepper::is_steady(), oomph::TimeStepper::make_steady(), ntime_stepper(), time_stepper_pt(), and oomph::TimeStepper::undo_make_steady().
Referenced by oomph::TR::setup_initial_derivative().
|
virtual |
Get the matrices required by a eigensolver. If the shift parameter is non-zero the second matrix will be shifted
Get the matrices required to solve an eigenproblem WARNING: temporarily this method only works with non-distributed matrices
References Assembly_handler_pt, oomph::CRDoubleMatrix::build(), oomph::CRDoubleMatrix::build_without_copy(), Communicator_pt, oomph::LinearAlgebraDistribution::distributed(), oomph::DistributableLinearAlgebraObject::distribution_built(), oomph::DistributableLinearAlgebraObject::distribution_pt(), Dof_distribution_pt, ndof(), oomph::OomphCommunicator::nproc(), oomph::LinearAlgebraDistribution::nrow(), oomph::CRDoubleMatrix::nrow(), oomph::LinearAlgebraDistribution::nrow_local(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, p, oomph::CRDoubleMatrix::redistribute(), sparse_assemble_row_or_column_compressed(), and Eigen::value.
Referenced by oomph::ProblemBasedShiftInvertOperator::ProblemBasedShiftInvertOperator(), oomph::ARPACK::solve_eigenproblem(), and oomph::LAPACK_QZ::solve_eigenproblem().
void Problem::get_fd_jacobian | ( | DoubleVector & | residuals, |
DenseMatrix< double > & | jacobian | ||
) |
Get the full Jacobian by finite differencing.
Return the fully-assembled Jacobian and residuals, generated by finite differences
References actions_after_newton_solve(), actions_before_newton_convergence_check(), actions_before_newton_solve(), Dof_pt, oomph::BlackBoxFDNewtonSolver::FD_step, get_residuals(), ndof(), OOMPH_EXCEPTION_LOCATION, and oomph::DenseMatrix< T >::resize().
Referenced by oomph::FD_LU::solve().
void Problem::get_hessian_vector_products | ( | DoubleVectorWithHaloEntries const & | Y, |
Vector< DoubleVectorWithHaloEntries > const & | C, | ||
Vector< DoubleVectorWithHaloEntries > & | product | ||
) |
Return the product of the global hessian (derivative of Jacobian matrix with respect to all variables) with an eigenvector, Y, and any number of other specified vectors C (d(J_{ij})/d u_{k}) Y_{j} C_{k}. This function is used in assembling and solving the augmented systems associated with bifurcation tracking. The default implementation is to use finite differences at the global level.
Alice: My bifurcation tracking converges better with this FD_step as 1.0e-5. The default value remains at 1.0e-8.
References actions_before_newton_convergence_check(), are_hessian_products_calculated_analytically(), Assembly_handler_pt, assembly_handler_pt(), communicator_pt(), dof(), Dof_distribution_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), boost::multiprecision::fabs(), oomph::BlackBoxFDNewtonSolver::FD_step, FD_step_used_in_get_hessian_vector_products, oomph::AssemblyHandler::get_hessian_vector_products(), oomph::AssemblyHandler::get_jacobian(), global_dof_pt(), i, m, Mesh_pt, mesh_pt(), n, oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), oomph::LinearAlgebraDistribution::nrow_local(), product(), and Y.
Referenced by oomph::BlockPitchForkLinearSolver::resolve(), and oomph::BlockPitchForkLinearSolver::solve().
|
virtual |
Return the residual vector multiplied by the inverse mass matrix Virtual so that it can be overloaded for mpi problems
References assembly_handler_pt(), oomph::DoubleVector::build(), communicator_pt(), Default_assembly_handler_pt, Discontinuous_element_formulation, e(), oomph::Mesh::element_pt(), oomph::LinearSolver::enable_resolve(), oomph::GeneralisedElement::eqn_number(), oomph::DGElement::get_inverse_mass_matrix_times_residuals(), get_residuals(), i, Mass_matrix_has_been_computed, Mass_matrix_reuse_is_enabled, mass_matrix_solver_for_explicit_timestepper_pt(), mesh_pt(), oomph::GeneralisedElement::ndof(), ndof(), oomph::Mesh::nelement(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::LinearSolver::resolve(), Shut_up_in_newton_solve, and oomph::LinearSolver::solve().
Referenced by get_dvaluesdt().
|
virtual |
Return the fully-assembled Jacobian and residuals for the problem. Interface for the case when the Jacobian is in column-compressed storage format. This is virtual so, if we feel like it (e.g. for testing iterative solvers with specific test matrices), we can bypass the default assembly procedure for the Jacobian and the residual vector.
Return the fully-assembled Jacobian and residuals for the problem, in the case when the jacobian matrix is in column-compressed storage format.
References oomph::DoubleVector::build(), oomph::CCMatrix< T >::build_without_copy(), oomph::DoubleVector::built(), oomph::LinearAlgebraDistribution::communicator_pt(), Communicator_pt, communicator_pt(), oomph::LinearAlgebraDistribution::distributed(), oomph::DistributableLinearAlgebraObject::distribution_pt(), ndof(), oomph::LinearAlgebraDistribution::nrow(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, res, oomph::DoubleVector::set_external_values(), sparse_assemble_row_or_column_compressed(), and Eigen::value.
|
virtual |
Return the fully-assembled Jacobian and residuals for the problem. Interface for the case when the Jacobian is in row-compressed storage format. This is virtual so, if we feel like it (e.g. for testing iterative solvers with specific test matrices), we can bypass the default assembly procedure for the Jacobian and the residual vector.
Return the fully-assembled Jacobian and residuals for the problem, in the case where the Jacobian matrix is in a distributable row compressed storage format.
References oomph::DoubleVector::build(), oomph::CRDoubleMatrix::build(), oomph::CRDoubleMatrix::build_without_copy(), oomph::DoubleVector::built(), Communicator_pt, oomph::LinearAlgebraDistribution::distributed(), oomph::DistributableLinearAlgebraObject::distribution_built(), oomph::DistributableLinearAlgebraObject::distribution_pt(), Dof_distribution_pt, ndof(), oomph::OomphCommunicator::nproc(), oomph::LinearAlgebraDistribution::nrow(), oomph::LinearAlgebraDistribution::nrow_local(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, p, oomph::DoubleVector::redistribute(), oomph::CRDoubleMatrix::redistribute(), res, oomph::DoubleVector::set_external_values(), sparse_assemble_row_or_column_compressed(), and Eigen::value.
|
virtual |
Return the fully-assembled Jacobian and residuals for the problem Interface for the case when the Jacobian matrix is dense. This is virtual so, if we feel like it (e.g. for testing iterative solvers with specific test matrices, we can bypass the default assembly procedure for the Jacobian and the residual vector.
Get the fully assembled residual vector and Jacobian matrix in dense storage. The DoubleVector residuals returned will be non-distributed. If on calling this method the DoubleVector residuals is setup then it must be non-distributed and of the correct length. The matrix type DenseDoubleMatrix is not distributable and therefore the residual vector is also assumed to be non distributable.
References Assembly_handler_pt, assembly_handler_pt(), oomph::DoubleVector::build(), oomph::DoubleVector::built(), oomph::LinearAlgebraDistribution::communicator_pt(), Communicator_pt, oomph::LinearAlgebraDistribution::distributed(), oomph::DistributableLinearAlgebraObject::distribution_pt(), e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), oomph::AssemblyHandler::get_jacobian(), oomph::DoubleVector::initialise(), oomph::DenseMatrix< T >::initialise(), Mesh_pt, ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), oomph::LinearAlgebraDistribution::nrow(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::DenseMatrix< T >::resize().
Referenced by oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::get_pressure_advection_diffusion_jacobian(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), main(), oomph::CG< MATRIX >::solve(), oomph::BiCGStab< MATRIX >::solve(), oomph::GS< MATRIX >::solve(), oomph::GS< CRDoubleMatrix >::solve(), oomph::DampedJacobi< MATRIX >::solve(), oomph::GMRES< MATRIX >::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::DenseLU::solve(), oomph::SuperLUSolver::solve(), oomph::MumpsSolver::solve(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), oomph::HelmholtzFGMRESMG< MATRIX >::solve(), oomph::HypreSolver::solve(), oomph::TrilinosAztecOOSolver::solve(), and oomph::SuperLUSolver::solve_transpose().
|
inlinevirtual |
Dummy virtual function that must be overloaded by the problem to specify which matrices should be summed to give the final Jacobian.
References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
virtual |
Get the total residuals Vector for the problem.
Return the fully-assembled residuals Vector for the problem: Virtual so it can be overloaded in for mpi problems
References Assembly_handler_pt, assembly_handler_pt(), oomph::DoubleVector::build(), oomph::DoubleVector::built(), Communicator_pt, communicator_pt(), oomph::DistributableLinearAlgebraObject::distribution_pt(), Dof_distribution_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), oomph::AssemblyHandler::get_residuals(), Mesh_pt, ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), oomph::OomphCommunicator::nproc(), oomph::LinearAlgebraDistribution::nrow(), oomph::LinearAlgebraDistribution::nrow_local(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, p, res, oomph::DoubleVector::set_external_values(), and Eigen::value.
Referenced by get_derivative_wrt_global_parameter(), get_fd_jacobian(), get_inverse_mass_matrix_times_residuals(), globally_convergent_line_search(), newton_solve(), newton_solve_continuation(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::plot_residual_landscape(), oomph::SegregatableFSIProblem::segregated_solve(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::BlockHopfLinearSolver::solve(), and oomph::BlockHopfLinearSolver::solve_for_two_rhs().
Return a pointer to the the i-th global data object.
References Global_data_pt, and i.
Referenced by oomph::IMRByBDF::actions_after_timestep(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), add_global_data(), CapProblem< ELEMENT >::CapProblem(), and copy().
Return a pointer to the dof, indexed by global equation number which may be haloed or stored locally. If it is haloed, a local copy must have been requested on this processor in the Halo_scheme_pt.
References oomph::DoubleVectorHaloScheme::distribution_pt(), oomph::LinearAlgebraDistribution::first_row(), i, oomph::DoubleVectorHaloScheme::local_index(), oomph::LinearAlgebraDistribution::nrow_local(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Referenced by get_hessian_vector_products(), oomph::PitchForkHandler::get_jacobian(), and oomph::PitchForkHandler::get_residuals().
|
inlineprotectedvirtual |
Function to calculate a global error norm, used in adaptive timestepping to control the change in timestep. Individual errors for each data object can be obtained via the data timestepper's temporal_error_in_value or temporal_error_in_position functions and should be combined to construct a global norm. For example, in fluids problems a suitable norm is usually the weighted sum of the errors in the velocities; for moving mesh problems is it usually better to use the weighted sum of the errors in position.
Reimplemented in UnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, oomph::ODEProblem, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RefineableUnsteadyHeatProblem< ELEMENT >, ContactProblem< ELEMENT >, UnsteadyHeatMeltProblem< ELEMENT >, SolarRadiationProblem< ELEMENT >, MeltContactProblem< ELEMENT >, VibratingShellProblem< ELEMENT >, and AxisymmetricVibratingShellProblem< ELEMENT >.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().
Referenced by adaptive_unsteady_newton_solve().
|
private |
Line search helper for globally convergent Newton method.
Helper function for the globally convergent Newton solver.
References Dof_pt, boost::multiprecision::fabs(), get_residuals(), i, lambda, max, ndof(), OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, sqrt(), and Eigen::test.
Referenced by newton_solve().
void Problem::initialise_dt | ( | const double & | dt | ) |
Set all timesteps to the same value, dt, and assign weights for all timesteppers in the problem
Set all timesteps to the same value, dt, and assign weights for all timesteppers in the problem.
References i, oomph::Time::initialise_dt(), ntime_stepper(), oomph::TimeStepper::set_error_weights(), oomph::TimeStepper::set_weights(), Time_pt, and time_stepper_pt().
Referenced by assign_initial_values_impulsive(), FSIRingProblem::dynamic_run(), main(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), and read().
Set the value of the timesteps to be equal to the values passed in a vector and assign weights for all timesteppers in the problem
References i, oomph::Time::initialise_dt(), ntime_stepper(), oomph::TimeStepper::set_error_weights(), oomph::TimeStepper::set_weights(), Time_pt, and time_stepper_pt().
Function to determine whether the parameter derivatives are calculated analytically
References Calculate_dparameter_analytic.
Referenced by get_derivative_wrt_global_parameter().
|
inline |
Is recycling of Jacobian in Newton iteration enabled?
References Jacobian_reuse_is_enabled.
|
inline |
Return a pointer to the linear solver object.
References Linear_solver_pt.
Referenced by oomph::FoldHandler::FoldHandler(), FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem(), oomph::HopfHandler::HopfHandler(), parallel_test(), PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >::PerturbedStateProblem(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::ANASAZI::solve_eigenproblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), oomph::FoldHandler::~FoldHandler(), oomph::HopfHandler::~HopfHandler(), and oomph::PitchForkHandler::~PitchForkHandler().
|
inline |
Return a pointer to the linear solver object (const version)
References Linear_solver_pt.
|
virtual |
Make and return a pointer to the copy of the problem. A virtual function that must be filled in by the user is they wish to perform adaptive refinement in bifurcation tracking or in multigrid problems. ALH: WILL NOT BE NECESSARY IN BIFURCATION TRACKING IN LONG RUN...
Reimplemented in ABCProblem< ELEMENT, TIMESTEPPERT >, RefineablePorousChannelProblem< ELEMENT >, and FlowAroundCylinderProblem< ELEMENT >.
References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Referenced by adapt(), and bifurcation_adapt_helper().
|
inline |
Return whether the mass matrix is being reused.
References Mass_matrix_reuse_is_enabled.
|
inline |
Return a pointer to the linear solver object used for explicit time stepping.
References Mass_matrix_solver_for_explicit_timestepper_pt.
Referenced by get_inverse_mass_matrix_times_residuals().
|
inline |
Return a pointer to the linear solver object used for explicit time stepping (const version).
References Mass_matrix_solver_for_explicit_timestepper_pt.
|
inline |
Access function to max Newton iterations before giving up.
References Max_newton_iterations.
|
inline |
Access function to max residuals in Newton iterations before giving up.
References Max_residuals.
|
inline |
Access function to max timestep in adaptive timestepping.
References Maximum_dt.
|
inline |
Return a pointer to the global mesh.
References Mesh_pt.
Referenced by oomph::IMRByBDF::actions_after_timestep(), oomph::RefineableTetgenMesh< ELEMENT >::adapt(), oomph::RefineableGmshTetMesh< ELEMENT >::adapt(), adapt(), adapt_based_on_error_estimates(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), add_sub_mesh(), assign_eqn_numbers(), oomph::SolidICProblem::backup_original_state(), bifurcation_adapt_helper(), BoussinesqPreconditioner::BoussinesqPreconditioner(), AdvectionProblem::compute_error(), TwoDDGProblem< ELEMENT >::compute_error(), ContinuationProblem::ContinuationProblem(), ContProblem< ELEMENT >::ContProblem(), copy(), delete_all_external_storage(), DGProblem< ELEMENT >::DGProblem(), disable_mass_matrix_reuse(), doc_errors(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::doc_solution(), dump(), oomph::ODEProblem::element_pt(), enable_mass_matrix_reuse(), oomph::ODEProblem::exact_solution(), oomph::SegregatableFSIProblem::extrapolate_solid_data(), FluxPoissonProblem< ELEMENT >::FluxPoissonProblem(), oomph::FoldHandler::FoldHandler(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::FpPressureAdvectionDiffusionProblem(), get_all_error_estimates(), get_dofs(), get_hessian_vector_products(), get_inverse_mass_matrix_times_residuals(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), oomph::FoldHandler::get_residuals(), oomph::HopfHandler::get_residuals(), oomph::ODEProblem::global_temporal_error_norm(), oomph::HopfHandler::HopfHandler(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), FlowAroundCylinderProblem< ELEMENT >::mesh_pt(), RefineablePorousChannelProblem< ELEMENT >::mesh_pt(), TwoDDGProblem< ELEMENT >::mesh_pt(), RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >::mesh_pt(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::mesh_pt(), ThermalProblem< ELEMENT >::mesh_pt(), oomph::StreamfunctionProblem::mesh_pt(), TestPoissonProblem< ELEMENT >::mesh_pt(), TestRefineablePoissonProblem< ELEMENT >::mesh_pt(), oomph::ODEProblem::my_set_initial_condition(), OneDPoissonProblem< ELEMENT >::OneDPoissonProblem(), oomph::LinearElasticitySmoothMesh< LINEAR_ELASTICITY_ELEMENT >::operator()(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::orbit_output(), OrrSommerfeldProblem< ELEMENT >::OrrSommerfeldProblem(), p_adapt(), p_refine_selected_elements(), p_refine_uniformly(), p_refine_uniformly_aux(), p_unrefine_uniformly(), oomph::METIS::partition_mesh(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_all(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::pin_all_non_pressure_dofs(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_dofs_of_coordinate(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_dofs_of_field(), oomph::PitchForkHandler::PitchForkHandler(), print_connectivity_matrix(), print_elemental_jacobian(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), QFaceTestProblem< ELEMENT >::QFaceTestProblem(), QuarterCircleDrivenCavityProblem< ELEMENT >::QuarterCircleDrivenCavityProblem(), QuarterCircleDrivenCavityProblem2< ELEMENT >::QuarterCircleDrivenCavityProblem2(), read(), refine_selected_elements(), refine_uniformly(), refine_uniformly_aux(), RefineablePorousChannelProblem< ELEMENT >::RefineablePorousChannelProblem(), oomph::HSL_MA42::reorder_elements(), oomph::SolidICProblem::reset_original_state(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::reset_pin_status(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::restore_positions(), self_test(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::set_coordinate_for_projection(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::set_current_field_for_projection(), set_dofs(), AdvectionProblem::set_initial_conditions(), EulerProblem::set_initial_conditions(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::set_lagrangian_coordinate_for_projection(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::SolidICProblem::set_newmark_initial_condition_directly(), oomph::SolidICProblem::set_static_initial_condition(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::set_time_level_for_projection(), setup_element_count_per_dof(), oomph::SolidICProblem::setup_problem(), oomph::SegregatableFSIProblem::setup_segregated_solver(), oomph::SolidICProblem::SolidICProblem(), oomph::ODEProblem::solution(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::HSL_MA42::solve(), oomph::MGSolver< DIM >::solve(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), oomph::HelmholtzFGMRESMG< MATRIX >::solve(), oomph::HSL_MA42::solve_for_one_dof(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), sparse_assemble_row_or_column_compressed_with_vectors_of_pairs(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::store_positions(), oomph::StreamfunctionProblem::StreamfunctionProblem(), TFaceTestProblem< ELEMENT >::TFaceTestProblem(), ThermalProblem< ELEMENT >::ThermalProblem(), TriangleFaceTestProblem< ELEMENT >::TriangleFaceTestProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoDDGProblem< ELEMENT >::TwoDDGProblem(), oomph::METIS::uniform_partition_mesh(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::unpin_all(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::unpin_dofs_of_coordinate(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::unpin_dofs_of_field(), unrefine_uniformly(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::validate(), oomph::WomersleyProblem< ELEMENT, DIM >::WomersleyProblem(), AdvectionProblem::~AdvectionProblem(), EulerProblem::~EulerProblem(), RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >::~RefineableConvectionProblem(), and TwoDDGProblem< ELEMENT >::~TwoDDGProblem().
|
inline |
Return a pointer to the i-th submesh. If there are no submeshes, the 0-th submesh is the global mesh itself.
References Mesh_pt, and Sub_mesh_pt.
|
inline |
Access function to min timestep in adaptive timestepping.
References Minimum_dt.
|
inline |
Return the number of dofs.
References Dof_distribution_pt, and oomph::LinearAlgebraDistribution::nrow().
Referenced by oomph::IMRByBDF::actions_after_timestep(), oomph::IMRByBDF::actions_before_timestep(), adapt(), add_eigenvector_to_dofs(), add_to_dofs(), assign_eigenvector_to_dofs(), bifurcation_adapt_helper(), oomph::ODEProblem::build(), calculate_continuation_derivatives(), calculate_predictions(), oomph::FoldHandler::FoldHandler(), get_dofs(), get_eigenproblem_matrices(), get_fd_jacobian(), get_inverse_mass_matrix_times_residuals(), get_jacobian(), get_residuals(), globally_convergent_line_search(), oomph::HopfHandler::HopfHandler(), newton_solve(), parallel_test(), oomph::PitchForkHandler::PitchForkHandler(), oomph::MGPreconditioner< DIM >::preconditioner_solve(), oomph::HSL_MA42::reorder_elements(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::AugmentedBlockPitchForkLinearSolver::resolve(), restore_dof_values(), set_dofs(), oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::HSL_MA42::solve(), oomph::GS< MATRIX >::solve(), oomph::GS< CRDoubleMatrix >::solve(), oomph::DampedJacobi< MATRIX >::solve(), oomph::GMRES< MATRIX >::solve(), oomph::AugmentedProblemGMRES::solve(), oomph::DenseLU::solve(), oomph::FD_LU::solve(), oomph::SuperLUSolver::solve(), oomph::MumpsSolver::solve(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), oomph::HelmholtzFGMRESMG< MATRIX >::solve(), oomph::ARPACK::solve_eigenproblem(), oomph::LAPACK_QZ::solve_eigenproblem(), oomph::HSL_MA42::solve_for_one_dof(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), oomph::SuperLUSolver::solve_transpose(), sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), sparse_assemble_row_or_column_compressed_with_vectors_of_pairs(), and store_current_dof_values().
void Problem::newton_solve | ( | ) |
Use Newton method to solve the problem.
General Newton solver. Requires only a convergence tolerance. The linear solver takes a pointer to the problem (which defines the Jacobian J and the residual Vector r) and returns the solution x of the system
\[ {\bf J} {\bf x} = - \bf{r} \]
.
References actions_after_newton_solve(), actions_after_newton_step(), actions_before_newton_convergence_check(), actions_before_newton_solve(), actions_before_newton_step(), Always_take_one_newton_step, oomph::DoubleVector::clear(), oomph::TimingHelpers::convert_secs_to_formatted_string(), Dof_distribution_pt, Dof_pt, oomph::LinearSolver::enable_computation_of_gradient(), oomph::LinearSolver::enable_resolve(), oomph::LinearSolver::get_gradient(), get_residuals(), globally_convergent_line_search(), i, Jacobian_has_been_computed, Jacobian_reuse_is_enabled, Linear_solver_pt, oomph::DoubleVector::max(), max, Max_newton_iterations, Max_res, Max_residuals, oomph::MPI_Helpers::mpi_has_been_initialised(), ndof(), Newton_solver_tolerance, Nnewton_iter_taken, oomph::LinearAlgebraDistribution::nrow_local(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, Problem_is_nonlinear, oomph::DoubleVector::redistribute(), Relaxation_factor, oomph::LinearSolver::reset_gradient(), oomph::LinearSolver::resolve(), Shut_up_in_newton_solve, oomph::LinearSolver::solve(), sqrt(), oomph::TimingHelpers::timer(), Use_globally_convergent_newton_method, and oomph::DoubleVector::values_pt().
Referenced by adaptive_unsteady_newton_solve(), main(), newton_solve(), oomph::NonLinearElasticitySmoothMesh< ELEMENT >::operator()(), oomph::LinearElasticitySmoothMesh< LINEAR_ELASTICITY_ELEMENT >::operator()(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), PolarNSProblem< ELEMENT >::output_streamfunction(), parallel_test(), ElasticBeamProblem::parameter_study(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), oomph::SegregatableFSIProblem::segregated_solve(), oomph::SolidICProblem::set_newmark_initial_condition_consistently(), oomph::SolidICProblem::set_newmark_initial_condition_directly(), oomph::SolidICProblem::set_static_initial_condition(), steady_newton_solve(), unsteady_newton_solve(), and oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::validate().
void Problem::newton_solve | ( | unsigned const & | max_adapt | ) |
Adaptive Newton solve: up to max_adapt adaptations of all refineable submeshes are performed to achieve the the error targets specified in the refineable submeshes.
Adaptive Newton solver. The linear solver takes a pointer to the problem (which defines the Jacobian J and the residual Vector r) and returns the solution x of the system
\[ {\bf J} {\bf x} = - \bf{r} \]
. Performs at most max_adapt adaptations on all meshes.
References adapt(), communicator_pt(), calibrate::error, Max_newton_iterations, Max_residuals, newton_solve(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
Perform a basic arc-length continuation step using Newton's method. Returns number of Newton steps taken.
Perform a basic continuation step using Newton's method. The governing parameter of the problem is passed as a pointer to the routine. The number of Newton steps taken is returned
Referenced by arc_length_step_solve_helper().
|
protected |
This function performs a basic continuation step using the Newton method. The number of Newton steps taken is returned, to be used in any external step-size control routines. The governing parameter of the problem is passed as a pointer to the routine, as is a vector in which to store the derivatives wrt the parameter, if required.
This function performs a basic continuation step using the Newton method. The number of Newton steps taken is returned, to be used in any external step-size control routines. The governing parameter of the problem is passed as a pointer to the routine, as is the sign of the Jacobian and a Vector in which to store the derivatives wrt the parameter, if required.
References actions_after_newton_solve(), actions_after_newton_step(), actions_before_newton_convergence_check(), actions_before_newton_solve(), actions_before_newton_step(), Always_take_one_newton_step, oomph::DoubleVector::clear(), oomph::LinearAlgebraDistribution::communicator_pt(), oomph::LinearSolver::disable_resolve(), oomph::LinearAlgebraDistribution::distributed(), dof_current(), dof_derivative(), Dof_distribution_pt, Dof_pt, Ds_current, oomph::LinearSolver::enable_resolve(), boost::multiprecision::fabs(), get_derivative_wrt_global_parameter(), get_residuals(), oomph::LinearSolver::is_resolve_enabled(), Linear_solver_pt, Max_newton_iterations, Max_residuals, Newton_solver_tolerance, oomph::OomphCommunicator::nproc(), oomph::LinearAlgebraDistribution::nrow_local(), oomph::oomph_info, Parameter_current, Parameter_derivative, oomph::DoubleVector::redistribute(), oomph::LinearSolver::resolve(), Shut_up_in_newton_solve, oomph::LinearSolver::solve(), Theta_squared, oomph::DoubleVector::values_pt(), and y.
|
inline |
Access function to tolererance of the Newton solver, i.e. the maximum value of the residuals that will be accepted.
References Newton_solver_tolerance.
|
inline |
Return the number of global data values.
References Global_data_pt.
Referenced by oomph::IMRByBDF::actions_after_timestep(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), assign_eqn_numbers(), copy(), describe_dofs(), get_dofs(), set_dofs(), and set_pinned_values_to_zero().
|
inline |
Return number of submeshes.
References Sub_mesh_pt.
Referenced by adapt(), adapt_based_on_error_estimates(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), assign_eqn_numbers(), copy(), delete_all_external_storage(), describe_dofs(), doc_errors(), does_pointer_correspond_to_problem_data(), dump(), get_all_error_estimates(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), p_adapt(), p_refine_selected_elements(), p_refine_uniformly(), p_refine_uniformly_and_prune(), p_refine_uniformly_aux(), p_unrefine_uniformly(), oomph::METIS::partition_mesh(), read(), refine_selected_elements(), refine_uniformly(), refine_uniformly_and_prune(), refine_uniformly_aux(), self_test(), set_consistent_pinned_values_for_continuation(), set_timestepper_for_all_data(), oomph::SegregatableFSIProblem::setup_segregated_solver(), and unrefine_uniformly().
|
inline |
Return the number of time steppers.
References Time_stepper_pt.
Referenced by oomph::IMRByBDF::actions_before_timestep(), adaptive_unsteady_newton_solve(), arc_length_step_solve(), arc_length_step_solve_helper(), copy(), get_dvaluesdt(), initialise_dt(), solve_eigenproblem(), steady_newton_solve(), oomph::SegregatableFSIProblem::steady_segregated_solve(), unsteady_newton_solve(), and oomph::SegregatableFSIProblem::unsteady_segregated_solve().
|
delete |
Broken assignment operator.
|
inline |
p-adapt problem: Perform mesh adaptation for (all) refineable (sub)mesh(es), based on their own error estimates and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. On return from this function, Problem can immediately be solved again. [Argument-free wrapper]
p-adapt problem: Perform mesh adaptation for (all) refineable (sub)mesh(es), based on their own error estimates and the target errors specified in the mesh(es). Following mesh adaptation, update global mesh, and re-assign equation numbers. Return # of refined/unrefined elements. On return from this function, Problem can immediately be solved again.
References actions_after_adapt(), actions_before_adapt(), Assembly_handler_pt, assign_eqn_numbers(), bifurcation_adapt_helper(), oomph::AssemblyHandler::bifurcation_type(), oomph::Global_timings::Doc_comprehensive_timings, MeshRefinement::error_estimator_pt, boost::multiprecision::fabs(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, rebuild_global_mesh(), and oomph::TimingHelpers::timer().
Referenced by main().
void Problem::p_refine_selected_elements | ( | const unsigned & | i_mesh, |
const Vector< PRefineableElement * > & | elements_to_be_refined_pt | ||
) |
p-refine specified submesh by refining the elements identified by their pointers, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
void Problem::p_refine_selected_elements | ( | const unsigned & | i_mesh, |
const Vector< unsigned > & | elements_to_be_refined | ||
) |
p-refine specified submesh by refining the elements identified by their numbers relative to the submesh, then rebuild the problem.
p-refine specified submesh by refining the elements identified by their numbers relative to the specified mesh, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
void Problem::p_refine_selected_elements | ( | const Vector< PRefineableElement * > & | elements_to_be_refined_pt | ) |
p-refine (one and only!) mesh by refining the elements identified by their pointers, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
p-refine (one and only!) mesh by refining the elements identified by their numbers relative to the problems' only mesh, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
void Problem::p_refine_selected_elements | ( | const Vector< Vector< PRefineableElement * >> & | elements_to_be_refined_pt | ) |
p-refine all submeshes by refining the elements identified by their pointers within each submesh in a Vector of Vectors, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
void Problem::p_refine_selected_elements | ( | const Vector< Vector< unsigned >> & | elements_to_be_refined | ) |
p-refine all submeshes by refining the elements identified by their numbers relative to each submesh in a Vector of Vectors, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
|
inline |
p-refine (all) p-refineable (sub)mesh(es) uniformly and rebuild problem
References oomph::DocInfo::disable_doc().
Referenced by p_refine_uniformly().
|
inline |
Do uniform p-refinement for submesh i_mesh without documentation.
References oomph::DocInfo::disable_doc(), and p_refine_uniformly().
Do uniform p-refinement for submesh i_mesh with documentation.
p-refine submesh i_mesh uniformly and rebuild problem; doc refinement process.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
p-refine p-refineable sub-meshes, each as many times as specified in the vector and rebuild problem
References oomph::DocInfo::disable_doc(), and p_refine_uniformly_aux().
Referenced by main().
|
inline |
p-refine p-refineable sub-meshes, each as many times as specified in the vector and rebuild problem; doc refinement process
References p_refine_uniformly_aux().
|
inline |
p-refine (all) p-refineable (sub)mesh(es) uniformly and rebuild problem; doc refinement process.
References max, nsub_mesh(), and p_refine_uniformly().
|
inline |
p-refine p-refineable sub-meshes, each as many times as specified in the vector and rebuild problem. Prune after refinements
References oomph::DocInfo::disable_doc(), OOMPH_EXCEPTION_LOCATION, and p_refine_uniformly_aux().
Referenced by p_refine_uniformly_and_prune().
|
inline |
p-refine p-refineable sub-meshes, each as many times as specified in the vector and rebuild problem; doc refinement process
References OOMPH_EXCEPTION_LOCATION, and p_refine_uniformly_aux().
|
inline |
p-refine (all) p-refineable (sub)mesh(es) uniformly and rebuild problem; doc refinement process.
References max, nsub_mesh(), OOMPH_EXCEPTION_LOCATION, and p_refine_uniformly_and_prune().
|
private |
Helper function to do compund p-refinement of (all) p-refineable (sub)mesh(es) uniformly as many times as specified in vector and rebuild problem; doc refinement process. Set boolean argument to true if you want to prune immediately after refining the meshes individually.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), oomph::Global_timings::Doc_comprehensive_timings, i, mesh_pt(), nsub_mesh(), OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, rebuild_global_mesh(), and oomph::TimingHelpers::timer().
Referenced by p_refine_uniformly(), and p_refine_uniformly_and_prune().
Do uniform p-unrefinement for submesh i_mesh without documentation.
p-unrefine submesh i_mesh uniformly and rebuild problem; doc refinement process.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
void Problem::p_unrefine_uniformly | ( | DocInfo & | doc_info | ) |
p-unrefine (all) p-refineable (sub)mesh(es) uniformly and rebuild problem.
p-unrefine (all) p-refineable (sub)mesh(es) uniformly and rebuild problem; doc refinement process.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
|
inline |
Access function to Problem_is_nonlinear.
References Problem_is_nonlinear.
|
inlinevirtual |
Read refinement pattern of all refineable meshes and refine them accordingly, then read all Data and nodal position info from file for restart.
Reimplemented in oomph::MyProblem, and AirwayReopeningProblem< ELEMENT >.
References read().
|
virtual |
Read refinement pattern of all refineable meshes and refine them accordingly, then read all Data and nodal position info from file for restart. Return flag to indicate if the restart was from steady or unsteady solution
Read refinement pattern of all refineable meshes and refine them accordingly, then read all Data and nodal position info from file for restart. Return flag to indicate if the restart was from steady or unsteady solution.
References actions_after_adapt(), actions_after_read_unstructured_meshes(), actions_before_adapt(), actions_before_read_unstructured_meshes(), assign_eqn_numbers(), oomph::FaceElement::bulk_element_pt(), Communicator_pt, communicator_pt(), oomph::DocInfo::disable_doc(), e(), oomph::Mesh::element_pt(), Empty_actions_after_read_unstructured_meshes_has_been_called, Empty_actions_before_read_unstructured_meshes_has_been_called, oomph::TreeBasedRefineableMeshBase::get_refinement_levels(), Global_data_pt, i, initialise_dt(), oomph::Mesh::is_mesh_distributed(), m, max, mesh_pt(), oomph::OomphCommunicator::my_rank(), oomph::Mesh::nelement(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::Mesh::read(), rebuild_global_mesh(), refine_uniformly(), oomph::Time::resize(), oomph::Global_string_for_annotation::string(), Suppress_warning_about_actions_before_read_unstructured_meshes, time(), oomph::Time::time(), time_pt(), and tmp.
Referenced by oomph::MyProblem::read(), and read().
void Problem::rebuild_global_mesh | ( | ) |
If one of the submeshes has changed (e.g. by mesh adaptation) we need to update the global mesh. Note: The nodes boundary information refers to the boundary numbers within the submesh!
If one of the submeshes has changed (e.g. by mesh adaptation) we need to update the global mesh. Note: The nodes boundary information refers to the boundary numbers within the submesh! N.B. This is essentially the same function as the Mesh constructor that assembles a single global mesh from submeshes
References oomph::Mesh::merge_meshes(), Mesh_pt, and Sub_mesh_pt.
Referenced by ContactProblem< ELEMENT >::actions_after_adapt(), ContactProblem< ELEMENT >::actions_before_adapt(), adapt(), adapt_based_on_error_estimates(), build_global_mesh(), main(), p_adapt(), p_refine_selected_elements(), p_refine_uniformly(), p_refine_uniformly_aux(), p_unrefine_uniformly(), read(), oomph::SegregatableFSIProblem::rebuild_monolithic_mesh(), refine_selected_elements(), refine_uniformly(), refine_uniformly_aux(), unrefine_uniformly(), oomph::SegregatableFSIProblem::use_only_fluid_elements(), and oomph::SegregatableFSIProblem::use_only_solid_elements().
void Problem::refine_selected_elements | ( | const unsigned & | i_mesh, |
const Vector< RefineableElement * > & | elements_to_be_refined_pt | ||
) |
Refine specified submesh by splitting the elements identified by their pointers, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
void Problem::refine_selected_elements | ( | const unsigned & | i_mesh, |
const Vector< unsigned > & | elements_to_be_refined | ||
) |
Refine specified submesh by splitting the elements identified by their numbers relative to the submesh, then rebuild the problem.
Refine specified submesh by splitting the elements identified by their numbers relative to the specified mesh, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
void Problem::refine_selected_elements | ( | const Vector< RefineableElement * > & | elements_to_be_refined_pt | ) |
Refine (one and only!) mesh by splitting the elements identified by their pointers, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
Refine (one and only!) mesh by splitting the elements identified by their numbers relative to the problems' only mesh, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::oomph_info.
void Problem::refine_selected_elements | ( | const Vector< Vector< RefineableElement * >> & | elements_to_be_refined_pt | ) |
Refine all submeshes by splitting the elements identified by their pointers within each submesh in a Vector of Vectors, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), oomph::oomph_info, and rebuild_global_mesh().
void Problem::refine_selected_elements | ( | const Vector< Vector< unsigned >> & | elements_to_be_refined | ) |
Refine all submeshes by splitting the elements identified by their numbers relative to each submesh in a Vector of Vectors, then rebuild the problem.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), oomph::oomph_info, and rebuild_global_mesh().
|
inline |
Refine (all) refineable (sub)mesh(es) uniformly and rebuild problem
References oomph::DocInfo::disable_doc().
Referenced by FSIRingProblem::dynamic_run(), QuarterCircleDrivenCavityProblem< ELEMENT >::QuarterCircleDrivenCavityProblem(), QuarterCircleDrivenCavityProblem2< ELEMENT >::QuarterCircleDrivenCavityProblem2(), read(), UnsteadyHeatProblem< ELEMENT >::refine_uniformly(), and refine_uniformly().
|
inline |
Do uniform refinement for submesh i_mesh without documentation.
References oomph::DocInfo::disable_doc(), and refine_uniformly().
Do uniform refinement for submesh i_mesh with documentation.
Refine submesh i_mesh uniformly and rebuild problem; doc refinement process.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
Refine refineable sub-meshes, each as many times as specified in the vector and rebuild problem
References oomph::DocInfo::disable_doc(), and refine_uniformly_aux().
Referenced by main(), and parallel_test().
|
inline |
Refine refineable sub-meshes, each as many times as specified in the vector and rebuild problem; doc refinement process
References refine_uniformly_aux().
|
inline |
Refine (all) refineable (sub)mesh(es) uniformly and rebuild problem; doc refinement process.
References max, nsub_mesh(), and refine_uniformly().
|
inline |
Refine refineable sub-meshes, each as many times as specified in the vector and rebuild problem. Prune after refinements
References oomph::DocInfo::disable_doc(), and refine_uniformly_aux().
Referenced by refine_uniformly_and_prune().
|
inline |
Refine refineable sub-meshes, each as many times as specified in the vector and rebuild problem; doc refinement process
References refine_uniformly_aux().
|
inline |
Refine (all) refineable (sub)mesh(es) uniformly and rebuild problem; doc refinement process.
References max, nsub_mesh(), and refine_uniformly_and_prune().
|
private |
Helper function to do compund refinement of (all) refineable (sub)mesh(es) uniformly as many times as specified in vector and rebuild problem; doc refinement process. Set boolean argument to true if you want to prune immediately after refining the meshes individually.
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), oomph::Global_timings::Doc_comprehensive_timings, i, mesh_pt(), nsub_mesh(), OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, rebuild_global_mesh(), and oomph::TimingHelpers::timer().
Referenced by refine_uniformly(), and refine_uniformly_and_prune().
|
inline |
Reset the "internal" arc-length continuation parameters, so as to allow continuation in another parameter. N.B. The parameters that are reset are the "minimum" that are required, others should perhaps be reset, depending upon the application.
References Arc_length_step_taken, Continuation_direction, Dof_derivative, First_jacobian_sign_change, Parameter_derivative, Sign_of_jacobian, and Theta_squared.
void Problem::reset_assembly_handler_to_default | ( | ) |
Reset the system to the standard non-augemented state.
Reset the assembly handler to default.
References Assembly_handler_pt, and Default_assembly_handler_pt.
Referenced by activate_bifurcation_tracking(), activate_fold_tracking(), activate_hopf_tracking(), activate_pitchfork_tracking(), and deactivate_bifurcation_tracking().
void Problem::restore_dof_values | ( | ) |
Restore the stored values of the degrees of freedom.
Restore the saved dofs.
References dof(), Dof_distribution_pt, Dof_pt, n, ndof(), oomph::LinearAlgebraDistribution::nrow_local(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and Saved_dof_pt.
Referenced by calculate_predictions().
unsigned Problem::self_test | ( | ) |
Self-test: Check meshes and global data. Return 0 for OK.
References oomph::DocInfo::disable_doc(), Global_data_pt, mesh_pt(), nsub_mesh(), and oomph::oomph_info.
Referenced by oomph::BiharmonicProblem< DIM >::actions_before_newton_solve(), oomph::BiharmonicFluidProblem< DIM >::actions_before_newton_solve(), and main().
|
inline |
Function to turn on analytic calculation of the parameter derivatives in continuation and bifurcation detection problems
References Calculate_dparameter_analytic.
|
inline |
Function to turn on analytic calculation of the parameter derivatives in continuation and bifurcation detection problems
References Calculate_hessian_products_analytic.
|
protected |
Private helper function that is used to set the appropriate pinned values for continuation.
Private helper function that is used to set the appropriate pinned values for continuation. If the data is pinned, the its current value is always the same as the original value and the derivative is always zero. If these are not set properly then interpolation and projection in spatial adaptivity will not give the best answers.
References Continuation_time_stepper, Global_data_pt, i, Mesh_pt, nsub_mesh(), oomph::ContinuationStorageScheme::set_consistent_pinned_values(), oomph::Mesh::set_consistent_pinned_values_for_continuation(), and Sub_mesh_pt.
Referenced by arc_length_step_solve_helper().
|
virtual |
Set the values of the dofs.
Function that sets the values of the dofs in the object.
Reimplemented from oomph::ExplicitTimeSteppableObject.
References Dof_pt, ndof(), oomph::DistributableLinearAlgebraObject::nrow(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
Referenced by calculate_predictions(), and oomph::TR::setup_initial_derivative().
void Problem::set_dofs | ( | const unsigned & | t, |
DoubleVector & | dofs | ||
) |
Set the history values of the dofs.
Set history values of dofs.
References distributed(), oomph::Mesh::element_pt(), oomph::Data::eqn_number(), Global_data_pt, i, oomph::GeneralisedElement::internal_data_pt(), j, k, mesh_pt(), nglobal_data(), oomph::GeneralisedElement::ninternal_data(), oomph::Mesh::node_pt(), oomph::Data::nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Data::set_value(), and plotPSD::t.
Set history values of dofs from the type of vector stored in problem::Dof_pt.
References distributed(), dof_pt(), oomph::Mesh::element_pt(), oomph::Data::eqn_number(), Global_data_pt, i, oomph::GeneralisedElement::internal_data_pt(), j, mesh_pt(), nglobal_data(), oomph::GeneralisedElement::ninternal_data(), oomph::Mesh::node_pt(), oomph::Data::nvalue(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Data::set_value(), and plotPSD::t.
void Problem::set_explicit_time_stepper_pt | ( | ExplicitTimeStepper *const & | explicit_time_stepper_pt | ) |
Set the explicit timestepper for the problem. The function will automatically create or resize the Time object so that it contains the appropriate number of levels of storage
Set the explicit time stepper for the problem and also ensure that a time object has been created.
References Explicit_time_stepper_pt, explicit_time_stepper_pt(), oomph::oomph_info, and Time_pt.
|
inlineprotectedvirtual |
Set initial condition (incl previous timesteps). We need to establish this interface because I.C. needs to be reset when problem is adapted during the first timestep.
Reimplemented in CollapsibleChannelProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, RefineableSphericalSpinUpProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, RefineableActivatorInhibitorProblem< ELEMENT >, RefineableOneDAdvectionDiffusionReactionProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, RayleighProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TwoLayerInterfaceProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, RayleighTractionProblem< ELEMENT, TIMESTEPPER >, RayleighProblem< ELEMENT, TIMESTEPPER >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, OscEllipseProblem< ELEMENT, TIMESTEPPER >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, CollapsibleChannelProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, FSIRingProblem, FSICollapsibleChannelProblem< ELEMENT >, RefineableUnsteadyHeatProblem< ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, LinearWaveProblem< ELEMENT, TIMESTEPPER >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >, OscRingNStProblem< ELEMENT >, OscRingNStProblem< ELEMENT >, FSIRingProblem, FSIRingProblem, FSIDrivenCavityProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, FSICollapsibleChannelProblem< ELEMENT >, UnsteadyHeatProblem< ELEMENT >, AxiPoroProblem< ELEMENT, TIMESTEPPER >, UnstructuredTorusProblem< ELEMENT >, UnstructuredTorusProblem< ELEMENT >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, TorusProblem< ELEMENT >, RotatingCylinderProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, InterfaceProblem< ELEMENT, TIMESTEPPER >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, PerturbedStateProblem< BASE_ELEMENT, PERTURBED_ELEMENT >, BaseStateProblem< BASE_ELEMENT >, and RefineableAdvectionDiffusionPipeProblem< ELEMENT >.
References Default_set_initial_condition_called, and OOMPH_EXCEPTION_LOCATION.
Referenced by doubly_adaptive_unsteady_newton_solve_helper(), and unsteady_newton_solve().
void Problem::set_pinned_values_to_zero | ( | ) |
Set all pinned values to zero. Used to set boundary conditions to be homogeneous in the copy of the problem used in adaptive bifurcation tracking (ALH: TEMPORARY HACK, WILL BE FIXED)
References e(), oomph::Mesh::element_pt(), Global_data_pt, i, oomph::GeneralisedElement::internal_data_pt(), oomph::Data::is_pinned(), j, k, m, Mesh_pt, n, oomph::Node::ndim(), oomph::Mesh::nelement(), nglobal_data(), oomph::GeneralisedElement::ninternal_data(), oomph::Mesh::nnode(), oomph::Mesh::node_pt(), oomph::Node::nposition_type(), oomph::Data::nvalue(), oomph::SolidNode::position_is_pinned(), oomph::Data::set_value(), Sub_mesh_pt, and oomph::Node::x_gen().
unsigned long Problem::set_timestepper_for_all_data | ( | TimeStepper *const & | time_stepper_pt, |
const bool & | preserve_existing_data = false |
||
) |
Set all problem data to have the same timestepper (timestepper_pt) Return the new number of dofs in the problem
Set all problem data to have the same timestepper (timestepper_pt). This is mainly used in continuation and bifurcation detection problems in which case the total number of unknowns may change and the changes to the underlying memory layout means that the Dof_pt must be reallocated. Thus, the function calls assign_eqn_numbers() and returns the number of new equation numbers.
References assign_eqn_numbers(), Global_data_pt, i, Mesh_pt, nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Mesh::set_mesh_level_time_stepper(), oomph::Mesh::set_nodal_and_elemental_time_stepper(), Sub_mesh_pt, and time_stepper_pt().
Referenced by arc_length_step_solve().
|
private |
Helper function to re-setup the Base_mesh enumeration (used during load balancing) after pruning
|
protected |
Function that populates the Element_counter_per_dof vector with the number of elements that contribute to each dof. For example, with linear elements in 1D each dof contains contributions from two elements apart from those on the boundary. Returns the total number of elements in the problem
Setup the count vector that records how many elements contribute to each degree of freedom. Returns the total number of elements in the problem
References Assembly_handler_pt, oomph::DoubleVector::build(), oomph::DoubleVectorWithHaloEntries::build_halo_scheme(), communicator_pt(), Dof_distribution_pt, e(), Element_count_per_dof, oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), oomph::DoubleVectorWithHaloEntries::global_value(), mesh_pt(), n, oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), and oomph::DoubleVectorWithHaloEntries::sum_all_halo_and_haloed_values().
|
virtual |
Shift all values along to prepare for next timestep.
Shift all time-dependent data along for next timestep.
References Global_data_pt, Mesh_pt, oomph::Time::shift_dt(), oomph::Mesh::shift_time_values(), and Time_pt.
Referenced by adaptive_unsteady_newton_solve(), explicit_timestep(), unsteady_newton_solve(), and oomph::SegregatableFSIProblem::unsteady_segregated_solve().
|
inline |
Access function for the sign of the global jacobian matrix. This will be set by the linear solver, if possible (direct solver). If not alternative methods must be used to detect bifurcations (solving the associated eigenproblem).
References Sign_of_jacobian.
Referenced by oomph::AugmentedBlockFoldLinearSolver::solve(), oomph::BlockPitchForkLinearSolver::solve(), oomph::AugmentedBlockPitchForkLinearSolver::solve(), oomph::BlockHopfLinearSolver::solve(), oomph::HSL_MA42::solve(), oomph::DenseLU::solve(), oomph::FD_LU::solve(), oomph::SuperLUSolver::solve(), oomph::HSL_MA42::solve_for_one_dof(), oomph::BlockHopfLinearSolver::solve_for_two_rhs(), and oomph::SuperLUSolver::solve_transpose().
|
inline |
Solve an eigenproblem as assembled by EigenElements, but only return the eigenvalues, not the eigenvectors. The boolean flag (default true) is used to specify whether the weighted mass-matrix terms from the timestepping scheme should be included in the jacobian.
References solve_eigenproblem().
void Problem::solve_eigenproblem | ( | const unsigned & | n_eval, |
Vector< std::complex< double >> & | eigenvalue, | ||
Vector< DoubleVector > & | eigenvector, | ||
const bool & | steady = true |
||
) |
Solve the eigenproblem.
Get derivative of an element in the problem wrt a global parameter, used in continuation problems Solve an eigenproblem as assembled by EigenElements calculate n_eval eigenvalues and return the corresponding eigenvectors. The boolean flag (default true) specifies whether the steady jacobian should be assembled. If the flag is false then the weighted mass-matrix terms from the timestepper will be included in the jacobian — this is almost certainly never wanted.
Get derivative of an element in the problem wrt a global parameter, to be used in continuation problems
References Eigen_solver_pt, i, oomph::TimeStepper::is_steady(), oomph::TimeStepper::make_steady(), ntime_stepper(), oomph::EigenSolver::solve_eigenproblem(), time_stepper_pt(), and oomph::TimeStepper::undo_make_steady().
Referenced by solve_eigenproblem().
|
protectedvirtual |
Protected helper function that is used to assemble the Jacobian matrix in the case when the storage is row or column compressed. The boolean Flag indicates if we want compressed row format (true) or compressed column.
This is a (private) helper function that is used to assemble system matrices in compressed row or column format and compute residual vectors. The default action is to assemble the jacobian matrix and residuals for the Newton method. The action can be overloaded at an elemental level by changing the default behaviour of the function Element::get_all_vectors_and_matrices(). column_or_row_index: Column [or row] index of given entry row_or_column_start: Index of first entry for given row [or column] value : Vector of nonzero entries residuals : Residual vector compressed_row_flag: Bool flag to indicate if storage format is compressed row [if false interpretation of arguments is as stated in square brackets]. We provide four different assembly methods, each with different memory requirements/execution speeds. The method is set by the public flag Problem::Sparse_assembly_method.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Perform_assembly_using_lists, Perform_assembly_using_maps, Perform_assembly_using_two_arrays, Perform_assembly_using_two_vectors, Perform_assembly_using_vectors_of_pairs, sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), sparse_assemble_row_or_column_compressed_with_vectors_of_pairs(), Sparse_assembly_method, and Eigen::value.
Referenced by get_eigenproblem_matrices(), and get_jacobian().
|
privatevirtual |
Private helper function that is used to assemble the Jacobian matrix in the case when the storage is row or column compressed. The boolean Flag indicates if we want compressed row format (true) or compressed column. This version uses lists
This is a (private) helper function that is used to assemble system matrices in compressed row or column format and compute residual vectors using lists The default action is to assemble the jacobian matrix and residuals for the Newton method. The action can be overloaded at an elemental level by chaging the default behaviour of the function Element::get_all_vectors_and_matrices(). column_or_row_index: Column [or row] index of given entry row_or_column_start: Index of first entry for given row [or column] value : Vector of nonzero entries residuals : Residual vector compressed_row_flag: Bool flag to indicate if storage format is compressed row [if false interpretation of arguments is as stated in square brackets].
References Assembly_handler_pt, assembly_handler_pt(), Communicator_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), boost::multiprecision::fabs(), oomph::AssemblyHandler::get_all_vectors_and_matrices(), i, j, m, mesh_pt(), oomph::OomphCommunicator::my_rank(), ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), Numerical_zero_for_sparse_assembly, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::pause(), Pause_at_end_of_sparse_assembly, oomph::TimingHelpers::timer(), v, and Eigen::value.
Referenced by sparse_assemble_row_or_column_compressed().
|
privatevirtual |
Private helper function that is used to assemble the Jacobian matrix in the case when the storage is row or column compressed. The boolean Flag indicates if we want compressed row format (true) or compressed column. This version uses maps
This is a (private) helper function that is used to assemble system matrices in compressed row or column format and compute residual vectors, using maps The default action is to assemble the jacobian matrix and residuals for the Newton method. The action can be overloaded at an elemental level by chaging the default behaviour of the function Element::get_all_vectors_and_matrices(). column_or_row_index: Column [or row] index of given entry row_or_column_start: Index of first entry for given row [or column] value : Vector of nonzero entries residuals : Residual vector compressed_row_flag: Bool flag to indicate if storage format is compressed row [if false interpretation of arguments is as stated in square brackets].
References Assembly_handler_pt, assembly_handler_pt(), Communicator_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), boost::multiprecision::fabs(), oomph::AssemblyHandler::get_all_vectors_and_matrices(), i, j, m, mesh_pt(), oomph::OomphCommunicator::my_rank(), ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), Numerical_zero_for_sparse_assembly, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::pause(), Pause_at_end_of_sparse_assembly, oomph::TimingHelpers::timer(), v, and Eigen::value.
Referenced by sparse_assemble_row_or_column_compressed().
|
privatevirtual |
Private helper function that is used to assemble the Jacobian matrix in the case when the storage is row or column compressed. The boolean Flag indicates if we want compressed row format (true) or compressed column. This version uses lists
This is a (private) helper function that is used to assemble system matrices in compressed row or column format and compute residual vectors using two vectors. The default action is to assemble the jacobian matrix and residuals for the Newton method. The action can be overloaded at an elemental level by chaging the default behaviour of the function Element::get_all_vectors_and_matrices(). column_or_row_index: Column [or row] index of given entry row_or_column_start: Index of first entry for given row [or column] value : Vector of nonzero entries residuals : Residual vector compressed_row_flag: Bool flag to indicate if storage format is compressed row [if false interpretation of arguments is as stated in square brackets].
References Assembly_handler_pt, assembly_handler_pt(), calibrate::c, Communicator_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), boost::multiprecision::fabs(), oomph::AssemblyHandler::get_all_vectors_and_matrices(), i, j, k, m, mesh_pt(), oomph::OomphCommunicator::my_rank(), ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), Numerical_zero_for_sparse_assembly, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, p, oomph::pause(), Pause_at_end_of_sparse_assembly, size, Sparse_assemble_with_arrays_allocation_increment, Sparse_assemble_with_arrays_initial_allocation, Sparse_assemble_with_arrays_previous_allocation, oomph::TimingHelpers::timer(), v, and Eigen::value.
Referenced by sparse_assemble_row_or_column_compressed().
|
privatevirtual |
Private helper function that is used to assemble the Jacobian matrix in the case when the storage is row or column compressed. The boolean Flag indicates if we want compressed row format (true) or compressed column. This version uses two vectors.
This is a (private) helper function that is used to assemble system matrices in compressed row or column format and compute residual vectors using two vectors. The default action is to assemble the jacobian matrix and residuals for the Newton method. The action can be overloaded at an elemental level by chaging the default behaviour of the function Element::get_all_vectors_and_matrices(). column_or_row_index: Column [or row] index of given entry row_or_column_start: Index of first entry for given row [or column] value : Vector of nonzero entries residuals : Residual vector compressed_row_flag: Bool flag to indicate if storage format is compressed row [if false interpretation of arguments is as stated in square brackets].
References Assembly_handler_pt, assembly_handler_pt(), Communicator_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), boost::multiprecision::fabs(), oomph::AssemblyHandler::get_all_vectors_and_matrices(), i, j, k, m, mesh_pt(), oomph::OomphCommunicator::my_rank(), ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), Numerical_zero_for_sparse_assembly, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, p, oomph::pause(), Pause_at_end_of_sparse_assembly, size, oomph::TimingHelpers::timer(), v, and Eigen::value.
Referenced by sparse_assemble_row_or_column_compressed().
|
privatevirtual |
Private helper function that is used to assemble the Jacobian matrix in the case when the storage is row or column compressed. The boolean Flag indicates if we want compressed row format (true) or compressed column. This version uses vectors of pairs.
This is a (private) helper function that is used to assemble system matrices in compressed row or column format and compute residual vectors using vectors of pairs The default action is to assemble the jacobian matrix and residuals for the Newton method. The action can be overloaded at an elemental level by chaging the default behaviour of the function Element::get_all_vectors_and_matrices(). column_or_row_index: Column [or row] index of given entry row_or_column_start: Index of first entry for given row [or column] value : Vector of nonzero entries residuals : Residual vector compressed_row_flag: Bool flag to indicate if storage format is compressed row [if false interpretation of arguments is as stated in square brackets].
References Assembly_handler_pt, assembly_handler_pt(), Communicator_pt, e(), oomph::Mesh::element_pt(), oomph::AssemblyHandler::eqn_number(), boost::multiprecision::fabs(), oomph::AssemblyHandler::get_all_vectors_and_matrices(), i, j, k, m, mesh_pt(), oomph::OomphCommunicator::my_rank(), ndof(), oomph::AssemblyHandler::ndof(), oomph::Mesh::nelement(), Numerical_zero_for_sparse_assembly, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, p, oomph::pause(), Pause_at_end_of_sparse_assembly, size, oomph::TimingHelpers::timer(), v, and Eigen::value.
Referenced by sparse_assemble_row_or_column_compressed().
void Problem::steady_newton_solve | ( | unsigned const & | max_adapt = 0 | ) |
Solve a steady problem using adaptive Newton's method, but in the context of an overall unstady problem, perhaps to determine an initial condition. This is achieved by setting the weights in the timesteppers to be zero which has the effect of rendering them steady timesteppers. The optional argument max_adapt specifies the max. number of adaptations of all refineable submeshes are performed to achieve the the error targets specified in the refineable submeshes.
Solve a steady problem, in the context of an overall unsteady problem. This is achieved by setting the weights in the timesteppers to be zero which has the effect of rendering them steady timesteppers The optional argument max_adapt specifies the max. number of adaptations of all refineable submeshes are performed to achieve the the error targets specified in the refineable submeshes.
References assign_initial_values_impulsive(), calibrate::error, i, oomph::TimeStepper::is_steady(), oomph::TimeStepper::make_steady(), Max_newton_iterations, Max_residuals, newton_solve(), ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, time_stepper_pt(), and oomph::TimeStepper::undo_make_steady().
void Problem::store_current_dof_values | ( | ) |
Store the current values of the degrees of freedom.
Stored the current values of the dofs.
References dof(), Dof_distribution_pt, Dof_pt, i, n, ndof(), oomph::LinearAlgebraDistribution::nrow_local(), and Saved_dof_pt.
Referenced by calculate_predictions().
|
virtual |
Virtual function that is used to symmetrise the problem so that the current solution exactly satisfies any symmetries within the system. Used when adpativly solving pitchfork detection problems when small asymmetries in the coarse solution can be magnified leading to very inaccurate answers on the fine mesh. This is always problem-specific and must be filled in by the user The default issues a warning
Reimplemented in RefineablePorousChannelProblem< ELEMENT >.
References OOMPH_EXCEPTION_LOCATION.
|
virtual |
Return the current value of continuous time.
Return the current value of continuous time. If not Time object has been assigned, then throw an error
Reimplemented from oomph::ExplicitTimeSteppableObject.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Time::time(), and Time_pt.
Referenced by oomph::WomersleyProblem< ELEMENT, DIM >::actions_before_implicit_timestep(), calculate_predictions(), FSIRingProblem::dynamic_run(), oomph::ODEProblem::exact_solution(), oomph::ODEProblem::get_error_norm(), oomph::ODEProblem::my_set_initial_condition(), read(), oomph::SolidICProblem::set_static_initial_condition(), oomph::SegregatableFSIProblem::t_spent_on_actual_solve(), and oomph::ODEProblem::write_additional_trace_data().
double Problem::time | ( | ) | const |
Return the current value of continuous time (const version)
Return the current value of continuous time. If not Time object has been assigned, then throw an error. Const version.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Time::time(), and Time_pt.
|
inline |
Access function for Time_adaptive_newton_crash_on_solve_fail.
References Time_adaptive_newton_crash_on_solve_fail.
|
inline |
Return a pointer to the global time object.
References Time_pt.
Referenced by oomph::IMRByBDF::actions_after_timestep(), oomph::WomersleyProblem< ELEMENT, DIM >::actions_before_implicit_timestep(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), adaptive_unsteady_newton_solve(), calculate_predictions(), copy(), doubly_adaptive_unsteady_newton_solve_helper(), dump(), FSIRingProblem::dynamic_run(), explicit_timestep(), FlowAroundCylinderProblem< ELEMENT >::FlowAroundCylinderProblem(), oomph::ODEProblem::get_error_norm(), oomph::ODEProblem::my_set_initial_condition(), read(), TurekNonFSIProblem< ELEMENT >::TurekNonFSIProblem(), unsteady_newton_solve(), oomph::SegregatableFSIProblem::unsteady_segregated_solve(), and oomph::ODEProblem::write_additional_trace_data().
|
inlinevirtual |
Return a pointer to the global time object (const version).
Reimplemented from oomph::ExplicitTimeSteppableObject.
References Time_pt.
|
inline |
Access function for the pointer to the first (presumably only) timestepper
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and Time_stepper_pt.
Referenced by adaptive_unsteady_newton_solve(), add_time_stepper_pt(), arc_length_step_solve(), arc_length_step_solve_helper(), calculate_predictions(), ConvectionProblem< NST_ELEMENT, AD_ELEMENT >::ConvectionProblem(), copy(), ElasticInterfaceProblem< ELEMENT, TIMESTEPPER >::ElasticInterfaceProblem(), FlowAroundCylinderProblem< ELEMENT >::FlowAroundCylinderProblem(), get_dvaluesdt(), HomogenisationProblem< ELEMENT >::HomogenisationProblem(), initialise_dt(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), LinearWaveProblem< ELEMENT, TIMESTEPPER >::LinearWaveProblem(), oomph::ODEProblem::my_set_initial_condition(), OscRingNStProblem< ELEMENT >::OscRingNStProblem(), RayleighProblem< ELEMENT, TIMESTEPPER >::RayleighProblem(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), set_timestepper_for_all_data(), solve_eigenproblem(), steady_newton_solve(), oomph::SegregatableFSIProblem::steady_segregated_solve(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), TurekNonFSIProblem< ELEMENT >::TurekNonFSIProblem(), unsteady_newton_solve(), oomph::SegregatableFSIProblem::unsteady_segregated_solve(), UnsteadyHeatProblem< ELEMENT >::UnsteadyHeatProblem(), and oomph::WomersleyProblem< ELEMENT, DIM >::WomersleyProblem().
|
inline |
Access function for the pointer to the first (presumably only) timestepper
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and Time_stepper_pt.
|
inline |
Return a pointer to the i-th timestepper.
References i, and Time_stepper_pt.
unsigned Problem::unrefine_uniformly | ( | ) |
Refine (all) refineable (sub)mesh(es) uniformly and rebuild problem. Return 0 for success, 1 for failure (if unrefinement has reached the coarsest permitted level)
Unrefine (all) refineable (sub)mesh(es) uniformly and rebuild problem. Return 0 for success, 1 for failure (if unrefinement has reached the coarsest permitted level)
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), oomph::oomph_info, and rebuild_global_mesh().
Referenced by parallel_test().
Do uniform refinement for submesh i_mesh without documentation. Return 0 for success, 1 for failure (if unrefinement has reached the coarsest permitted level)
Unrefine submesh i_mesh uniformly and rebuild problem. Return 0 for success, 1 for failure (if unrefinement has reached the coarsest permitted level)
References actions_after_adapt(), actions_before_adapt(), assign_eqn_numbers(), mesh_pt(), nsub_mesh(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and rebuild_global_mesh().
|
inline |
Function to turn off analytic calculation of the parameter derivatives in continuation and bifurcation detection problems
References Calculate_dparameter_analytic.
|
inline |
Function to turn off analytic calculation of the parameter derivatives in continuation and bifurcation detection problems
References Calculate_hessian_products_analytic.
void Problem::unsteady_newton_solve | ( | const double & | dt | ) |
Advance time by dt and solve by Newton's method. This version always shifts time values
Do one timestep of size dt using Newton's method with the specified tolerance and linear solver defined as member data of the Problem class. This will be the most commonly used version of unsteady_newton_solve, in which the time values are always shifted This does not include any kind of adaptativity. If the solution fails to converge the program will end.
Referenced by doubly_adaptive_unsteady_newton_solve_helper(), FSIRingProblem::dynamic_run(), and unsteady_newton_solve().
Advance time by dt and solve the system, using Newton's method. The boolean flag is used to control whether the time values should be shifted. If it is true the current data values will be shifted (copied to the locations where there are stored as previous timesteps) before solution.
Do one timestep forward of size dt using Newton's method with the specified tolerance and linear solver defined via member data of the Problem class. The boolean flag shift_values is used to control whether the time values should be shifted or not.
References actions_after_implicit_timestep(), actions_after_implicit_timestep_and_error_estimation(), oomph::TimeStepper::actions_after_timestep(), actions_before_implicit_timestep(), oomph::TimeStepper::actions_before_timestep(), oomph::Time::dt(), calibrate::error, i, Max_newton_iterations, Max_residuals, newton_solve(), ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, oomph::TimeStepper::set_weights(), shift_time_values(), oomph::Time::time(), time_pt(), and time_stepper_pt().
void Problem::unsteady_newton_solve | ( | const double & | dt, |
const unsigned & | max_adapt, | ||
const bool & | first_timestep, | ||
const bool & | shift = true |
||
) |
Unsteady adaptive Newton solve: up to max_adapt adaptations of all refineable submeshes are performed to achieve the the error targets specified in the refineable submeshes. If first==true, the initial conditions are re-assigned after the mesh adaptations. Shifting of time can be suppressed by overwriting the default value of shift (true). [Shifting must be done if first_timestep==true because we're constantly re-assigning the initial conditions; if first_timestep==true and shift==false shifting is performed anyway and a warning is issued.
Do one timestep, dt, forward using Newton's method with specified tolerance and linear solver specified via member data. Keep adapting on all meshes to criteria specified in these meshes (up to max_adapt adaptations are performed). If first_timestep==true, re-set initial conditions after mesh adaptation. Shifting of time can be suppressed by overwriting the default value of shift (true). [Shifting must be done if first_timestep==true because we're constantly re-assigning the initial conditions; if first_timestep==true and shift==false shifting is performed anyway and a warning is issued.
References adapt(), communicator_pt(), Default_set_initial_condition_called, oomph::oomph_info, set_initial_condition(), oomph::Time::time(), time_pt(), and unsteady_newton_solve().
|
inline |
References Use_predictor_values_as_initial_guess.
Referenced by oomph::IMRByBDF::actions_before_timestep(), and calculate_predictions().
|
friend |
Referenced by activate_bifurcation_tracking(), and activate_fold_tracking().
|
friend |
|
friend |
|
friend |
Referenced by activate_hopf_tracking().
|
friend |
Referenced by activate_pitchfork_tracking().
|
friend |
Referenced by activate_bifurcation_tracking(), and activate_fold_tracking().
|
friend |
Referenced by activate_hopf_tracking().
|
friend |
|
friend |
Referenced by activate_pitchfork_tracking().
|
protected |
Boolean to indicate whether a Newton step should be taken even if the initial residuals are below the required tolerance
Referenced by newton_solve(), and newton_solve_continuation().
|
protected |
Boolean to indicate whether an arc-length step has been taken.
Referenced by arc_length_step_solve(), arc_length_step_solve_helper(), and reset_arc_length_parameters().
|
private |
Referenced by activate_bifurcation_tracking(), activate_fold_tracking(), activate_hopf_tracking(), activate_pitchfork_tracking(), adapt(), assembly_handler_pt(), bifurcation_parameter_pt(), doc_errors(), get_bifurcation_eigenfunction(), get_derivative_wrt_global_parameter(), get_eigenproblem_matrices(), get_hessian_vector_products(), get_jacobian(), get_residuals(), p_adapt(), Problem(), reset_assembly_handler_to_default(), setup_element_count_per_dof(), sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), and sparse_assemble_row_or_column_compressed_with_vectors_of_pairs().
|
protected |
Boolean to control bifurcation detection via determinant of Jacobian.
Referenced by arc_length_step_solve_helper().
|
protected |
Boolean to control wheter bisection is used to located bifurcation.
Referenced by arc_length_step_solve_helper().
Map used to determine whether the derivatives with respect to a parameter should be finite differenced. The default is that finite differences should be used
Referenced by is_dparameter_calculated_analytically(), set_analytic_dparameter(), and unset_analytic_dparameter().
|
protected |
Map used to determine whether the hessian products should be computed using finite differences. The default is that finite differences will be used
Referenced by are_hessian_products_calculated_analytically(), set_analytic_hessian_products(), and unset_analytic_hessian_products().
|
protected |
The communicator for this problem.
Referenced by assign_eqn_numbers(), calculate_continuation_derivatives(), communicator_pt(), get_eigenproblem_matrices(), get_jacobian(), get_residuals(), Problem(), read(), oomph::SolidICProblem::set_static_initial_condition(), sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), sparse_assemble_row_or_column_compressed_with_vectors_of_pairs(), and ~Problem().
|
protected |
The direction of the change in parameter that will ensure that a branch is followed in one direction only
Referenced by calculate_continuation_derivatives_helper(), and reset_arc_length_parameters().
|
staticprotected |
Storage for the single static continuation timestorage object.
The continuation timestepper object.
Referenced by arc_length_step_solve(), and set_consistent_pinned_values_for_continuation().
Vector of pointers to copies of the problem used in adaptive bifurcation tracking problems (ALH: TEMPORARY HACK, WILL BE FIXED)
Referenced by adapt(), bifurcation_adapt_helper(), and ~Problem().
|
private |
Pointer to the default assembly handler.
Referenced by get_inverse_mass_matrix_times_residuals(), Problem(), reset_assembly_handler_to_default(), and ~Problem().
|
private |
Pointer to the default eigensolver.
Referenced by Problem(), and ~Problem().
|
private |
Pointer to the default linear solver.
Referenced by Problem(), and ~Problem().
|
private |
Has default set_initial_condition function been called? Default: false
Referenced by doubly_adaptive_unsteady_newton_solve_helper(), set_initial_condition(), and unsteady_newton_solve().
|
protected |
The desired number of Newton Steps to reach convergence at each step along the arc
Referenced by arc_length_step_solve_helper().
|
protected |
Proportion of the arc-length to taken by the parameter.
Referenced by calculate_continuation_derivatives(), and calculate_continuation_derivatives_fd().
|
protected |
Is the problem a discontinuous one, i.e. can the elemental contributions be treated independently. Default: false
Referenced by disable_discontinuous_formulation(), disable_mass_matrix_reuse(), enable_discontinuous_formulation(), enable_mass_matrix_reuse(), and get_inverse_mass_matrix_times_residuals().
|
protected |
Protected boolean flag to provide comprehensive timimings during problem distribution. Initialised to false.
Storage for the present values of the variables.
Referenced by adapt(), arc_length_step_solve_helper(), calculate_continuation_derivatives_fd_helper(), and dof_current().
|
protected |
Storage for the offset for the current values of dofs from the original dofs (default is 2, but this will be differnet when continuing bifurcations and periodic orbits)
Referenced by dof_current().
Storage for the derivative of the problem variables wrt arc-length.
Referenced by adapt(), arc_length_step_solve_helper(), calculate_continuation_derivatives_helper(), dof_derivative(), and reset_arc_length_parameters().
|
protected |
Storage for the offset for the continuation derivatives from the original dofs (default is 1, but this will be differnet when continuing bifurcations and periodic orbits)
Referenced by dof_derivative().
|
protected |
The distribution of the DOFs in this problem. This object is created in the Problem constructor and setup when assign_eqn_numbers(...) is called. If this problem is distributed then this distribution will match the distribution of the equation numbers. If this problem is not distributed then this distribution will be uniform over all processors.
Referenced by adapt(), oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), arc_length_step_solve_helper(), assign_eqn_numbers(), calculate_continuation_derivatives_fd_helper(), calculate_continuation_derivatives_helper(), dof_distribution_pt(), oomph::FoldHandler::FoldHandler(), get_dofs(), get_eigenproblem_matrices(), get_hessian_vector_products(), get_jacobian(), get_residuals(), oomph::HopfHandler::HopfHandler(), ndof(), newton_solve(), newton_solve_continuation(), oomph::PitchForkHandler::PitchForkHandler(), Problem(), restore_dof_values(), setup_element_count_per_dof(), oomph::FoldHandler::solve_augmented_block_system(), oomph::PitchForkHandler::solve_augmented_block_system(), oomph::FoldHandler::solve_block_system(), oomph::PitchForkHandler::solve_block_system(), oomph::HopfHandler::solve_complex_system(), oomph::FoldHandler::solve_full_system(), oomph::PitchForkHandler::solve_full_system(), oomph::HopfHandler::solve_full_system(), oomph::HopfHandler::solve_standard_system(), store_current_dof_values(), oomph::FoldHandler::~FoldHandler(), oomph::HopfHandler::~HopfHandler(), oomph::PitchForkHandler::~PitchForkHandler(), and ~Problem().
Vector of pointers to dofs.
Referenced by oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), add_to_dofs(), arc_length_step_solve_helper(), assign_eqn_numbers(), calculate_continuation_derivatives_fd_helper(), calculate_predictions(), dof(), dof_current(), dof_derivative(), dof_pt(), oomph::FoldHandler::FoldHandler(), get_dofs(), get_fd_jacobian(), oomph::FoldHandler::get_jacobian(), oomph::HopfHandler::get_jacobian(), globally_convergent_line_search(), oomph::HopfHandler::HopfHandler(), newton_solve(), newton_solve_continuation(), oomph::PitchForkHandler::PitchForkHandler(), restore_dof_values(), set_dofs(), oomph::FoldHandler::solve_augmented_block_system(), oomph::PitchForkHandler::solve_augmented_block_system(), oomph::FoldHandler::solve_block_system(), oomph::PitchForkHandler::solve_block_system(), oomph::HopfHandler::solve_complex_system(), oomph::FoldHandler::solve_full_system(), oomph::PitchForkHandler::solve_full_system(), oomph::HopfHandler::solve_full_system(), oomph::HopfHandler::solve_standard_system(), store_current_dof_values(), oomph::FoldHandler::~FoldHandler(), oomph::HopfHandler::~HopfHandler(), and oomph::PitchForkHandler::~PitchForkHandler().
|
protected |
Storage for the current step value.
Referenced by arc_length_step_solve_helper(), calculate_continuation_derivatives_fd_helper(), and newton_solve_continuation().
|
protected |
Maximum possible increase of dt between time-steps in adaptive schemes
Referenced by adaptive_unsteady_newton_solve().
|
protected |
Minimum allowed decrease of dt between time-steps in adaptive schemes. Lower scaling values will reject the time-step (and retry with a smaller dt).
Referenced by adaptive_unsteady_newton_solve().
|
private |
Pointer to the eigen solver for the problem.
Referenced by eigen_solver_pt(), Problem(), and solve_eigenproblem().
|
protected |
Counter that records how many elements contribute to each dof. Used to determine the (discrete) arc-length automatically. It really should be an integer, but is a double so that the distribution information can be used for distributed problems
Referenced by setup_element_count_per_dof().
|
private |
Boolean to indicate that empty actions_after_read_unstructured_meshes() function has been called.
Referenced by actions_after_read_unstructured_meshes(), and read().
|
private |
Boolean to indicate that empty actions_before_read_unstructured_meshes() function has been called.
Referenced by actions_before_read_unstructured_meshes(), and read().
|
private |
Pointer to a single explicit timestepper.
Referenced by explicit_time_stepper_pt(), and set_explicit_time_stepper_pt().
|
protected |
Referenced by get_hessian_vector_products().
|
protected |
Boolean to indicate whether a sign change has occured in the Jacobian.
Referenced by arc_length_step_solve_helper(), and reset_arc_length_parameters().
Vector of global data: "Nobody" (i.e. none of the elements etc.) is "in charge" of this Data so it would be overlooked when it comes to equation-numbering, timestepping etc. Including (pointers) to such Data in here, puts the Problem itself "in charge" of these tasks.
Referenced by add_global_data(), assign_eqn_numbers(), assign_initial_values_impulsive(), calculate_predictions(), copy(), describe_dofs(), does_pointer_correspond_to_problem_data(), dump(), flush_global_data(), get_dofs(), global_data_pt(), nglobal_data(), read(), self_test(), set_consistent_pinned_values_for_continuation(), set_dofs(), set_pinned_values_to_zero(), set_timestepper_for_all_data(), and shift_time_values().
|
protected |
Has a Jacobian been computed (and can therefore be re-used if required)? Default: false
Referenced by disable_jacobian_reuse(), enable_jacobian_reuse(), and newton_solve().
|
protected |
Is re-use of Jacobian in Newton iteration enabled? Default: false.
Referenced by disable_jacobian_reuse(), enable_jacobian_reuse(), jacobian_reuse_is_enabled(), and newton_solve().
|
protected |
Boolean to decide if a timestep is to be rejected if the error estimate post-solve (computed by global_temporal_error_norm()) exceeds the tolerance required in the call to adaptive_unsteady_newton_solve(...). Defaults to true.
Referenced by adaptive_unsteady_newton_solve(), and SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem().
|
private |
Pointer to the linear solver for the problem.
Referenced by activate_bifurcation_tracking(), activate_fold_tracking(), activate_hopf_tracking(), activate_pitchfork_tracking(), calculate_continuation_derivatives(), linear_solver_pt(), newton_solve(), newton_solve_continuation(), and Problem().
|
protected |
Has the mass matrix been computed (and can therefore be reused) Default: false
Referenced by disable_mass_matrix_reuse(), enable_mass_matrix_reuse(), and get_inverse_mass_matrix_times_residuals().
|
protected |
Is re-use of the mass matrix in explicit timestepping enabled Default:false
Referenced by disable_mass_matrix_reuse(), enable_mass_matrix_reuse(), get_inverse_mass_matrix_times_residuals(), and mass_matrix_reuse_is_enabled().
|
private |
Pointer to the linear solver used for explicit time steps (this is likely to be different to the linear solver for newton solves because explicit time steps only involve inverting a mass matrix. This can be done very efficiently by, e.g. CG with a diagonal predconditioner).
Referenced by mass_matrix_solver_for_explicit_timestepper_pt(), and Problem().
|
protected |
Maximum number of Newton iterations.
Referenced by max_newton_iterations(), newton_solve(), newton_solve_continuation(), RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >::RefineableConvectionProblem(), RefineableDDConvectionProblem< NST_ELEMENT, AD_ELEMENT >::RefineableDDConvectionProblem(), steady_newton_solve(), RefineableConvectionProblem< NST_ELEMENT, AD_ELEMENT >::switch_to_iterative_linear_solver(), TurekNonFSIProblem< ELEMENT >::TurekNonFSIProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), and unsteady_newton_solve().
Maximum residuals at start and after each newton iteration.
Referenced by newton_solve().
|
protected |
Maximum desired residual: if the maximum residual exceeds this value, the program will exit
Referenced by FlowAroundCylinderProblem< ELEMENT >::FlowAroundCylinderProblem(), max_residuals(), MovingBlockProblem< ELEMENT >::MovingBlockProblem(), newton_solve(), newton_solve_continuation(), steady_newton_solve(), SteadyHelicalProblem< ELEMENT >::SteadyHelicalProblem(), TurekNonFSIProblem< ELEMENT >::TurekNonFSIProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), and unsteady_newton_solve().
|
protected |
Maximum desired dt.
Referenced by adaptive_unsteady_newton_solve(), and maximum_dt().
|
private |
The mesh pointer.
Referenced by assign_eqn_numbers(), assign_initial_values_impulsive(), build_global_mesh(), calculate_predictions(), describe_dofs(), does_pointer_correspond_to_problem_data(), get_hessian_vector_products(), get_jacobian(), get_residuals(), mesh_pt(), rebuild_global_mesh(), set_consistent_pinned_values_for_continuation(), set_pinned_values_to_zero(), set_timestepper_for_all_data(), shift_time_values(), and ~Problem().
|
protected |
Minimum desired value of arc-length.
Referenced by arc_length_step_solve_helper(), and OrrSommerfeldProblem< ELEMENT >::OrrSommerfeldProblem().
|
protected |
Minimum desired dt: if dt falls below this value, exit.
Referenced by adaptive_unsteady_newton_solve(), and minimum_dt().
|
protected |
If Minimum_dt_but_still_proceed positive, then dt will not be reduced below this value during adaptive timestepping and the computation will continue with this value, accepting the larger errors that this will incur). Note: This option is disabled by default as this value is initialised to -1.0.
Referenced by adaptive_unsteady_newton_solve().
|
protected |
The Tolerance below which the Newton Method is deemed to have converged
Referenced by oomph::SegregatableFSIProblem::assess_convergence_based_on_absolute_solid_change(), oomph::SegregatableFSIProblem::assess_convergence_based_on_max_global_residual(), oomph::SegregatableFSIProblem::assess_convergence_based_on_relative_solid_change(), FreeSurfaceRotationProblem< ELEMENT >::FreeSurfaceRotationProblem(), newton_solve(), newton_solve_continuation(), newton_solver_tolerance(), and oomph::SegregatableFSIProblem::SegregatableFSIProblem().
|
protected |
Actual number of Newton iterations taken during the most recent iteration
Referenced by newton_solve().
|
protected |
A tolerance used to determine whether the entry in a sparse matrix is zero. If it is then storage need not be allocated.
Referenced by sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), and sparse_assemble_row_or_column_compressed_with_vectors_of_pairs().
|
protected |
Storage for the present value of the global parameter.
Referenced by arc_length_step_solve_helper(), calculate_continuation_derivatives_fd_helper(), and newton_solve_continuation().
|
protected |
Storage for the derivative of the global parameter wrt arc-length.
Referenced by arc_length_step_solve_helper(), calculate_continuation_derivatives(), calculate_continuation_derivatives_fd(), calculate_continuation_derivatives_fd_helper(), calculate_continuation_derivatives_helper(), newton_solve_continuation(), and reset_arc_length_parameters().
|
protected |
Protected boolean flag to halt program execution during sparse assemble process to assess peak memory usage. Initialised to false (obviously!)
Referenced by sparse_assemble_row_or_column_compressed_with_lists(), sparse_assemble_row_or_column_compressed_with_maps(), sparse_assemble_row_or_column_compressed_with_two_arrays(), sparse_assemble_row_or_column_compressed_with_two_vectors(), and sparse_assemble_row_or_column_compressed_with_vectors_of_pairs().
|
protected |
Boolean flag indicating if we're dealing with a linear or nonlinear Problem – if set to false the Newton solver will not check the residual before or after the linear solve. Set to true by default; can be over-written in specific Problem class.
Referenced by AxiPoroProblem< ELEMENT, TIMESTEPPER >::AxiPoroProblem(), BiharmonicTestProblem1::BiharmonicTestProblem1(), BiharmonicTestProblem2::BiharmonicTestProblem2(), newton_solve(), problem_is_nonlinear(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::ProjectionProblem(), and oomph::WomersleyProblem< ELEMENT, DIM >::WomersleyProblem().
|
protected |
Relaxation fator for Newton method (only a fractional Newton correction is applied if this is less than 1; default 1).
Referenced by newton_solve().
Pointer to vector for backup of dofs.
Referenced by restore_dof_values(), and store_current_dof_values().
|
protected |
Boolean to control whether arc-length should be scaled.
Referenced by calculate_continuation_derivatives(), and calculate_continuation_derivatives_fd().
bool oomph::Problem::Shut_up_in_newton_solve |
Boolean to indicate if all output is suppressed in Problem::newton_solve(). Defaults to false.
Referenced by disable_info_in_newton_solve(), enable_info_in_newton_solve(), get_inverse_mass_matrix_times_residuals(), newton_solve(), newton_solve_continuation(), and oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project().
|
protected |
Storage for the sign of the global Jacobian.
Referenced by arc_length_step_solve_helper(), reset_arc_length_parameters(), and sign_of_jacobian().
|
protected |
the number of elements to add to a matrix row when the initial allocation is exceeded within the sparse_assemble_with_two_arrays(...) method.
Referenced by sparse_assemble_row_or_column_compressed_with_two_arrays().
|
protected |
the number of elements to initially allocate for a matrix row within the sparse_assembly_with_two_arrays(...) method (if a matrix of this size has not been assembled already). If a matrix of this size has been assembled then the number of elements in each row in that matrix is used as the initial allocation
Referenced by sparse_assemble_row_or_column_compressed_with_two_arrays().
the number of elements in each row of a compressed matrix in the previous matrix assembly.
Referenced by assign_eqn_numbers(), oomph::FoldHandler::FoldHandler(), oomph::HopfHandler::HopfHandler(), oomph::PitchForkHandler::PitchForkHandler(), oomph::FoldHandler::solve_augmented_block_system(), oomph::PitchForkHandler::solve_augmented_block_system(), oomph::FoldHandler::solve_block_system(), oomph::PitchForkHandler::solve_block_system(), oomph::HopfHandler::solve_complex_system(), oomph::FoldHandler::solve_full_system(), oomph::PitchForkHandler::solve_full_system(), oomph::HopfHandler::solve_full_system(), oomph::HopfHandler::solve_standard_system(), sparse_assemble_row_or_column_compressed_with_two_arrays(), oomph::FoldHandler::~FoldHandler(), oomph::HopfHandler::~HopfHandler(), and oomph::PitchForkHandler::~PitchForkHandler().
|
protected |
Flag to determine which sparse assembly method to use By default we use assembly by vectors of pairs.
Referenced by sparse_assemble_row_or_column_compressed().
|
private |
Boolean to indicate whether local dof pointers should be stored in the elements
Referenced by assign_eqn_numbers(), disable_store_local_dof_pt_in_elements(), and enable_store_local_dof_pt_in_elements().
Vector of pointers to submeshes.
Referenced by add_sub_mesh(), assign_eqn_numbers(), build_global_mesh(), describe_dofs(), does_pointer_correspond_to_problem_data(), flush_sub_meshes(), mesh_pt(), nsub_mesh(), Problem(), rebuild_global_mesh(), set_consistent_pinned_values_for_continuation(), set_pinned_values_to_zero(), set_timestepper_for_all_data(), and ~Problem().
|
static |
Flag to allow suppression of warning messages re reading in unstructured meshes during restart.
Instantiation of public flag to allow suppression of warning messages re reading in unstructured meshes during restart.
Referenced by read().
|
protected |
Value of the scaling parameter required so that the parameter occupies the desired proportion of the arc length. NOTE: If you wish to change this then make sure to set the value of Scale_arc_length to false to ensure the value of this isn't overwritten during the arc-length process. Instead of changing this variable, it's better to actually update the Desired_proportion_of_arc_length value.
Referenced by calculate_continuation_derivatives(), calculate_continuation_derivatives_fd(), calculate_continuation_derivatives_fd_helper(), calculate_continuation_derivatives_helper(), newton_solve_continuation(), and reset_arc_length_parameters().
|
protected |
Bool to specify what to do if a Newton solve fails within a time adaptive solve. Default (false) is to half the step and try again. If true then crash instead.
Referenced by adaptive_unsteady_newton_solve(), and time_adaptive_newton_crash_on_solve_fail().
|
private |
Pointer to global time for the problem.
Referenced by add_time_stepper_pt(), initialise_dt(), set_explicit_time_stepper_pt(), shift_time_values(), time(), time_pt(), and ~Problem().
|
private |
The Vector of time steppers (there could be many different ones in multiphysics problems)
Referenced by add_time_stepper_pt(), calculate_predictions(), ntime_stepper(), Problem(), and time_stepper_pt().
|
protected |
What it says: If temporally adaptive Newton solver fails to to converge, reduce timestep by this factor and try again; defaults to 1/2; can be over-written by user in derived problem.
Referenced by adaptive_unsteady_newton_solve().
|
protected |
Boolean to control original or new storage of dof stuff.
Referenced by adapt(), arc_length_step_solve(), arc_length_step_solve_helper(), calculate_continuation_derivatives_helper(), dof_current(), and dof_derivative().
|
protected |
Boolean to specify which scheme to use to calculate the continuation derivatievs
Referenced by arc_length_step_solve_helper().
|
private |
Use the globally convergent newton method.
Referenced by disable_globally_convergent_newton_method(), enable_globally_convergent_newton_method(), and newton_solve().
|
private |
Use values from the time stepper predictor as an initial guess.
Referenced by Problem(), and use_predictor_values_as_initial_guess().