LOCA::Bifurcation::HopfBord::AbstractGroup Class Reference

Interface to underlying groups for Hopf point calculations. More...

#include <LOCA_Bifurcation_HopfBord_AbstractGroup.H>

Inheritance diagram for LOCA::Bifurcation::HopfBord::AbstractGroup:

[legend]
Collaboration diagram for LOCA::Bifurcation::HopfBord::AbstractGroup:
[legend]
List of all members.

Public Member Functions

 AbstractGroup ()
 Default constructor.
virtual ~AbstractGroup ()
 Destructor.
Pure virtual methods
These methods must be defined by any concrete implementation

virtual AbstractGroupoperator= (const AbstractGroup &source)=0
 Assignment operator.
virtual NOX::Abstract::Group::ReturnType applyComplexInverse (NOX::Parameter::List &params, const NOX::Abstract::Vector &input_real, const NOX::Abstract::Vector &input_imag, double frequency, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag) const =0
 Solve $(J+i\omega B)(y+iz) = a+ib$.
virtual NOX::Abstract::Group::ReturnType computeDCeDp (const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, const int param_id, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag)=0
 Computes the derivative $\frac{\partial (J+i\omega B)(y+iz)}{\partial p}$ where $p$ is the parameter indexed by param_id.
virtual NOX::Abstract::Group::ReturnType computeDCeDp (const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, const int param_id, const NOX::Abstract::Vector &Ce_real, const NOX::Abstract::Vector &Ce_imag, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag)=0
 Computes the derivative $\frac{\partial (J+i\omega B)(y+iz)}{\partial p}$ where $p$ is the parameter indexed by param_id. The arguments Ce_real and Ce_imag hold the real and imaginary components of $(J+i\omega B)(y+iz)$.
virtual NOX::Abstract::Group::ReturnType computeDCeDxa (const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, const NOX::Abstract::Vector &aVector, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag)=0
 Computes the directional derivative $\frac{\partial (J+i\omega B)(y+iz)}{\partial x} a$ for the given direction $a$.
virtual NOX::Abstract::Group::ReturnType computeDCeDxa (const NOX::Abstract::Vector &yVector, const NOX::Abstract::Vector &zVector, double w, const NOX::Abstract::Vector &aVector, const NOX::Abstract::Vector &Ce_real, const NOX::Abstract::Vector &Ce_imag, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag)=0
 Computes the directional derivative $\frac{\partial (J+i\omega B)(y+iz)}{\partial x} a$ for the given direction $a$. The arguments Ce_real and Ce_imag hold the real and imaginary components of $(J+i\omega B)(y+iz)$.
Virtual methods with default implementations
These methods should be overloaded in a concrete implementation if more appropriate/efficient approaches are available.

virtual NOX::Abstract::Group::ReturnType applyComplex (const NOX::Abstract::Vector &input_real, const NOX::Abstract::Vector &input_imag, double frequency, NOX::Abstract::Vector &result_real, NOX::Abstract::Vector &result_imag) const
 Compute $(J+i\omega B)(y+iz)$.
virtual NOX::Abstract::Group::ReturnType applyComplexInverseMulti (NOX::Parameter::List &params, const NOX::Abstract::Vector *const *inputs_real, const NOX::Abstract::Vector *const *inputs_imag, double frequency, NOX::Abstract::Vector **results_real, NOX::Abstract::Vector **results_imag, int nVecs) const
 Solve Complex system for multiple RHS.

Detailed Description

Interface to underlying groups for Hopf point calculations.

This abstract class provides the required interface for underlying groups to locate Hopf bifurcations using the bordering algorithms (see LOCA::Bifurcation::HopfBord::ExtendedGroup for a description of the governing equations and bordering algorithms).

This class is derived from the LOCA::Bifurcation::TPBord::AbstractGroup and LOCA::TimeDependent::AbstractGroup and declares several pure virtual methods for applying, solving, and computing derivatives of the complex matrix $J+i\omega B$ where $J$ is the Jacobian matrix, $B$ is the mass matrix, and $\omega$ is a (real) scalar.

The last virtual method, applyComplexInverseMulti() for solving systems with multiple right-hand-sides, has a default implementation to serially call applyComplexInverse() for each right-hand-side. This should be overloaded for problems where a block-complex solver is available.


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::Bifurcation::HopfBord::AbstractGroup::applyComplex const NOX::Abstract::Vector input_real,
const NOX::Abstract::Vector input_imag,
double  frequency,
NOX::Abstract::Vector result_real,
NOX::Abstract::Vector result_imag
const [virtual]
 

Compute $(J+i\omega B)(y+iz)$.

The default implementation computes the complex product using the Jacobian and Mass matrix apply methods.

virtual NOX::Abstract::Group::ReturnType LOCA::Bifurcation::HopfBord::AbstractGroup::applyComplexInverse NOX::Parameter::List params,
const NOX::Abstract::Vector input_real,
const NOX::Abstract::Vector input_imag,
double  frequency,
NOX::Abstract::Vector result_real,
NOX::Abstract::Vector result_imag
const [pure virtual]
 

Solve $(J+i\omega B)(y+iz) = a+ib$.

The argument frequency stores $\omega$.

Implemented in LOCA::Abstract::Group, and LOCA::LAPACK::Group.

NOX::Abstract::Group::ReturnType LOCA::Bifurcation::HopfBord::AbstractGroup::applyComplexInverseMulti NOX::Parameter::List params,
const NOX::Abstract::Vector *const *  inputs_real,
const NOX::Abstract::Vector *const *  inputs_imag,
double  frequency,
NOX::Abstract::Vector **  results_real,
NOX::Abstract::Vector **  results_imag,
int  nVecs
const [virtual]
 

Solve Complex system for multiple RHS.

The default implementation here is to call applyComplexInverse() for each right-hand-side. This method should be overloaded if a block-complex solver is available.

Reimplemented in LOCA::LAPACK::Group.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:42:22 2008 for NOX by doxygen 1.3.9.1