action functions
|
Please note that the library has not been "officially" released. While we continue to work on the documentation, these web pages are likely to contain broken links and documents in draft form. Please send an email to if you wish to be informed of the library's "official" release. |
#include <assembly_handler.h>
Inheritance diagram for oomph::FoldHandler:

, and a solution is
, where
are the unknowns in the problem. A limit point is formally specified by the augmented system of size
In the above
is the usual Jacobian matrix,
, and
is a constant vector that is chosen to ensure that the null vector,
, is not trivial.
Definition at line 285 of file assembly_handler.h.
Public Member Functions | |
| FoldHandler (Problem *const &problem_pt, double *const ¶meter_pt) | |
| Constructor: initialise the fold handler, by setting initial guesses for Y, Phi and calculating count. If the system changes, a new fold handler must be constructed. | |
| ~FoldHandler () | |
| Destructor return the problem to its original (non-augmented) state. | |
| unsigned | ndof (GeneralisedElement *const &elem_pt) |
| The number of unknowns is 2n+1. | |
| unsigned long | eqn_number (GeneralisedElement *const &elem_pt, const unsigned &ieqn_local) |
| Get the global equation number of the local unknown. | |
| void | get_residuals (GeneralisedElement *const &elem_pt, Vector< double > &residuals) |
| Formulate the augmented system. | |
| void | get_jacobian (GeneralisedElement *const &elem_pt, Vector< double > &residuals, DenseMatrix< double > &jacobian) |
| Calculate the elemental Jacobian matrix "d equation / d variable". | |
| int | bifurcation_type () const |
| Indicate that we are tracking a fold bifurcation by returning 1. | |
| double * | bifurcation_parameter_pt () const |
| Return a pointer to the bifurcation parameter in bifurcation tracking problems. | |
| void | get_eigenfunction (Vector< DoubleVector > &eigenfunction) |
| Return the eigenfunction(s) associated with the bifurcation that has been detected in bifurcation tracking problems. | |
| void | solve_augmented_block_system () |
| Set to solve the augmented-by-one block system. | |
| void | solve_block_system () |
| Set to solve the block system. | |
| void | solve_full_system () |
| Set to Solve non-block system. | |
Private Types | |
| Full_augmented | |
| Block_J | |
| Block_augmented_J | |
| enum | { Full_augmented, Block_J, Block_augmented_J } |
Private Attributes | |
| unsigned | Solve_which_system |
| Integer flag to indicate which system should be assembled. There are three possibilities. The full augmented system (0), the non-augmented jacobian system (1), a system in which the jacobian is augmented by 1 row and column to ensure that it is non-singular (2). See the enum above. | |
| Problem * | Problem_pt |
| Pointer to the problem. | |
| unsigned | Ndof |
| Store the number of degrees of freedom in the non-augmented problem. | |
| Vector< double > | Phi |
| A constant vector used to ensure that the null vector is not trivial. | |
| Vector< double > | Y |
| Storage for the null vector. | |
| Vector< int > | Count |
| A vector that is used to determine how many elements contribute to a particular equation. It is used to ensure that the global system is correctly formulated. | |
| double * | Parameter_pt |
| Storage for the pointer to the parameter. | |
Friends | |
| class | AugmentedBlockFoldLinearSolver |
anonymous enum [private] |
A little private enum to determine whether we are solving the block system or not
Definition at line 291 of file assembly_handler.h.
| oomph::FoldHandler::FoldHandler | ( | Problem *const & | problem_pt, | |
| double *const & | parameter_pt | |||
| ) |
Constructor: initialise the fold handler, by setting initial guesses for Y, Phi and calculating count. If the system changes, a new fold handler must be constructed.
Constructor: Initialise the fold handler, by setting initial guesses for Y, Phi and calculating Count. If the system changes, a new handler must be constructed.
Definition at line 719 of file assembly_handler.cc.
References oomph::Problem::communicator_pt(), Count, oomph::LinearSolver::disable_resolve(), oomph::Problem::Dof_distribution_pt, oomph::Problem::Dof_pt, oomph::Mesh::element_pt(), oomph::LinearSolver::enable_resolve(), oomph::Problem::get_derivative_wrt_global_parameter(), oomph::Problem::linear_solver_pt(), oomph::Problem::mesh_pt(), oomph::GeneralisedElement::ndof(), oomph::Problem::ndof(), Ndof, oomph::Mesh::nelement(), Phi, Problem_pt, oomph::LinearAlgebraDistribution::rebuild(), oomph::LinearSolver::resolve(), oomph::LinearSolver::resolve_is_enabled(), oomph::LinearSolver::solve(), and Y.
| oomph::FoldHandler::~FoldHandler | ( | ) |
Destructor return the problem to its original (non-augmented) state.
Definition at line 1174 of file assembly_handler.cc.
References oomph::Problem::communicator_pt(), oomph::Problem::Dof_distribution_pt, oomph::Problem::Dof_pt, oomph::AugmentedBlockFoldLinearSolver::linear_solver_pt(), oomph::Problem::linear_solver_pt(), Ndof, Problem_pt, and oomph::LinearAlgebraDistribution::rebuild().
| double* oomph::FoldHandler::bifurcation_parameter_pt | ( | ) | const [inline, virtual] |
Return a pointer to the bifurcation parameter in bifurcation tracking problems.
Reimplemented from oomph::AssemblyHandler.
Definition at line 356 of file assembly_handler.h.
References Parameter_pt.
| int oomph::FoldHandler::bifurcation_type | ( | ) | const [inline, virtual] |
Indicate that we are tracking a fold bifurcation by returning 1.
Reimplemented from oomph::AssemblyHandler.
Definition at line 352 of file assembly_handler.h.
| unsigned long oomph::FoldHandler::eqn_number | ( | GeneralisedElement *const & | elem_pt, | |
| const unsigned & | ieqn_local | |||
| ) | [virtual] |
Get the global equation number of the local unknown.
Return the global equation number associated with local equation number ieqn_local. We choose to number the unknowns according to the augmented system.
Reimplemented from oomph::AssemblyHandler.
Definition at line 853 of file assembly_handler.cc.
References oomph::GeneralisedElement::eqn_number(), Ndof, and oomph::GeneralisedElement::ndof().
Referenced by get_jacobian(), oomph::AugmentedBlockFoldLinearSolver::resolve(), and oomph::AugmentedBlockFoldLinearSolver::solve().
| void oomph::FoldHandler::get_eigenfunction | ( | Vector< DoubleVector > & | eigenfunction | ) | [virtual] |
Return the eigenfunction(s) associated with the bifurcation that has been detected in bifurcation tracking problems.
Return the eigenfunction(s) associated with the bifurcation that has been detected in bifurcation tracking problems
Reimplemented from oomph::AssemblyHandler.
Definition at line 1155 of file assembly_handler.cc.
References oomph::Problem::communicator_pt(), Ndof, Problem_pt, and Y.
| void oomph::FoldHandler::get_jacobian | ( | GeneralisedElement *const & | elem_pt, | |
| Vector< double > & | residuals, | |||
| DenseMatrix< double > & | jacobian | |||
| ) | [virtual] |
Calculate the elemental Jacobian matrix "d equation / d variable".
Calculate the elemental Jacobian matrix "d equation / d variable" for the augmented system
Reimplemented from oomph::AssemblyHandler.
Definition at line 956 of file assembly_handler.cc.
References oomph::Problem::actions_after_change_in_bifurcation_parameter(), Block_augmented_J, Block_J, Count, oomph::Problem::Dof_pt, eqn_number(), oomph::GeneralisedElement::eqn_number(), oomph::BlackBoxFDNewtonSolver::FD_step, Full_augmented, oomph::GeneralisedElement::get_jacobian(), get_residuals(), Ndof, oomph::GeneralisedElement::ndof(), ndof(), OOMPH_EXCEPTION_LOCATION, Phi, Problem_pt, Solve_which_system, and Y.
Referenced by oomph::AugmentedBlockFoldLinearSolver::resolve(), and oomph::AugmentedBlockFoldLinearSolver::solve().
| void oomph::FoldHandler::get_residuals | ( | GeneralisedElement *const & | elem_pt, | |
| Vector< double > & | residuals | |||
| ) | [virtual] |
Formulate the augmented system.
Reimplemented from oomph::AssemblyHandler.
Definition at line 885 of file assembly_handler.cc.
References Block_augmented_J, Block_J, Count, oomph::GeneralisedElement::eqn_number(), Full_augmented, oomph::GeneralisedElement::get_jacobian(), oomph::GeneralisedElement::get_residuals(), oomph::Problem::mesh_pt(), oomph::GeneralisedElement::ndof(), oomph::Mesh::nelement(), OOMPH_EXCEPTION_LOCATION, Phi, Problem_pt, Solve_which_system, and Y.
Referenced by get_jacobian().
| unsigned oomph::FoldHandler::ndof | ( | GeneralisedElement *const & | elem_pt | ) | [virtual] |
The number of unknowns is 2n+1.
Reimplemented from oomph::AssemblyHandler.
Definition at line 820 of file assembly_handler.cc.
References Block_augmented_J, Block_J, Full_augmented, oomph::GeneralisedElement::ndof(), OOMPH_EXCEPTION_LOCATION, and Solve_which_system.
Referenced by get_jacobian(), oomph::AugmentedBlockFoldLinearSolver::resolve(), and oomph::AugmentedBlockFoldLinearSolver::solve().
| void oomph::FoldHandler::solve_augmented_block_system | ( | ) |
Set to solve the augmented-by-one block system.
Definition at line 1199 of file assembly_handler.cc.
References Block_augmented_J, Block_J, oomph::Problem::communicator_pt(), oomph::Problem::Dof_distribution_pt, oomph::Problem::Dof_pt, Ndof, Parameter_pt, Problem_pt, oomph::LinearAlgebraDistribution::rebuild(), and Solve_which_system.
Referenced by oomph::AugmentedBlockFoldLinearSolver::resolve(), and oomph::AugmentedBlockFoldLinearSolver::solve().
| void oomph::FoldHandler::solve_block_system | ( | ) |
Set to solve the block system.
Set to solve the block system. The boolean flag specifies whether the block decomposition should use exactly the same jacobian
Definition at line 1227 of file assembly_handler.cc.
References Block_J, oomph::Problem::communicator_pt(), oomph::Problem::Dof_distribution_pt, oomph::Problem::Dof_pt, Ndof, Problem_pt, oomph::LinearAlgebraDistribution::rebuild(), and Solve_which_system.
| void oomph::FoldHandler::solve_full_system | ( | ) |
Set to Solve non-block system.
Definition at line 1245 of file assembly_handler.cc.
References Block_J, oomph::Problem::communicator_pt(), oomph::Problem::Dof_distribution_pt, oomph::Problem::Dof_pt, Full_augmented, Ndof, Parameter_pt, Problem_pt, oomph::LinearAlgebraDistribution::rebuild(), Solve_which_system, and Y.
Referenced by oomph::AugmentedBlockFoldLinearSolver::resolve(), and oomph::AugmentedBlockFoldLinearSolver::solve().
friend class AugmentedBlockFoldLinearSolver [friend] |
Definition at line 287 of file assembly_handler.h.
Vector<int> oomph::FoldHandler::Count [private] |
A vector that is used to determine how many elements contribute to a particular equation. It is used to ensure that the global system is correctly formulated.
Definition at line 317 of file assembly_handler.h.
Referenced by FoldHandler(), get_jacobian(), and get_residuals().
unsigned oomph::FoldHandler::Ndof [private] |
Store the number of degrees of freedom in the non-augmented problem.
Definition at line 305 of file assembly_handler.h.
Referenced by eqn_number(), FoldHandler(), get_eigenfunction(), get_jacobian(), solve_augmented_block_system(), solve_block_system(), solve_full_system(), and ~FoldHandler().
double* oomph::FoldHandler::Parameter_pt [private] |
Storage for the pointer to the parameter.
Definition at line 320 of file assembly_handler.h.
Referenced by bifurcation_parameter_pt(), solve_augmented_block_system(), and solve_full_system().
Vector<double> oomph::FoldHandler::Phi [private] |
A constant vector used to ensure that the null vector is not trivial.
Definition at line 309 of file assembly_handler.h.
Referenced by FoldHandler(), get_jacobian(), and get_residuals().
Problem* oomph::FoldHandler::Problem_pt [private] |
Pointer to the problem.
Definition at line 301 of file assembly_handler.h.
Referenced by FoldHandler(), get_eigenfunction(), get_jacobian(), get_residuals(), solve_augmented_block_system(), solve_block_system(), solve_full_system(), and ~FoldHandler().
unsigned oomph::FoldHandler::Solve_which_system [private] |
Integer flag to indicate which system should be assembled. There are three possibilities. The full augmented system (0), the non-augmented jacobian system (1), a system in which the jacobian is augmented by 1 row and column to ensure that it is non-singular (2). See the enum above.
Definition at line 298 of file assembly_handler.h.
Referenced by get_jacobian(), get_residuals(), ndof(), solve_augmented_block_system(), solve_block_system(), and solve_full_system().
Vector<double> oomph::FoldHandler::Y [private] |
Storage for the null vector.
Definition at line 312 of file assembly_handler.h.
Referenced by FoldHandler(), get_eigenfunction(), get_jacobian(), get_residuals(), oomph::AugmentedBlockFoldLinearSolver::resolve(), oomph::AugmentedBlockFoldLinearSolver::solve(), and solve_full_system().
1.4.7