COPASI API  4.40.278
CEigen Class Reference

#include <CEigen.h>

Inheritance diagram for CEigen:
[legend]

Public Member Functions

void calcEigenValues (const CMatrix< C_FLOAT64 > &matrix)
 
 CEigen (const CEigen &src, const CDataContainer *pParent)
 
 CEigen (const std::string &name="NoName", const CDataContainer *pParent=NO_PARENT)
 
void cleanup ()
 
const C_FLOAT64getHierarchy () const
 
const CVector< C_FLOAT64 > & getI () const
 
const C_FLOAT64getMaximagpart () const
 
const C_FLOAT64getMaxrealpart () const
 
const size_t & getNcplxconj () const
 
const size_t & getNimag () const
 
const size_t & getNnegreal () const
 
const size_t & getNposreal () const
 
const size_t & getNreal () const
 
const size_t & getNzero () const
 
const CVector< C_FLOAT64 > & getR () const
 
const C_FLOAT64getStiffness () const
 
void initialize ()
 
virtual void print (std::ostream *ostream) const
 
void stabilityAnalysis (const C_FLOAT64 &resolution)
 
virtual ~CEigen ()
 
- Public Member Functions inherited from CDataContainer
virtual bool add (CDataObject *pObject, const bool &adopt=true)
 
virtual bool appendDeletedDependentData (CUndoData &undoData) const
 
virtual bool applyData (const CData &data, CUndoData::CChangeSet &changes) override
 
 CDataContainer (const CDataContainer &src, const CDataContainer *pParent)
 
 CDataContainer (const std::string &name, const CDataContainer *pParent=NO_PARENT, const std::string &type="CN", const CFlags< Flag > &flag=CFlags< Flag >::None)
 
virtual void createUndoData (CUndoData &undoData, const CUndoData::Type &type, const CData &oldData=CData(), const CCore::Framework &framework=CCore::Framework::ParticleNumbers) const override
 
virtual std::string getChildObjectUnits (const CDataObject *pObject) const
 
void getDescendants (CDataObject::DataObjectSet &descendants, const bool &recursive=false) const
 
virtual size_t getIndex (const CDataObject *pObject) const
 
virtual const CObjectInterfacegetObject (const CCommonName &cn) const override
 
virtual objectMapgetObjects ()
 
virtual const objectMapgetObjects () const
 
virtual const std::string getUnits () const override
 
virtual const CDataObjectgetValueObject () const override
 
virtual CUndoObjectInterfaceinsert (const CData &data) override
 
void objectRenamed (CDataObject *pObject, const std::string &oldName)
 
virtual bool remove (CDataObject *pObject)
 
virtual CData toData () const override
 
virtual ~CDataContainer ()
 
- Public Member Functions inherited from CDataObject
void addIssue (const CIssue &issue)
 
void addReference (const CDataContainer *pReference)
 
virtual void calculateValue () override
 
 CDataObject (const CDataObject &src, const CDataContainer *pParent=NULL)
 
virtual void destruct () override
 
virtual CCommonName getCN () const override
 
virtual const CDataObjectgetDataObject () const override
 
virtual const std::string & getKey () const
 
CDataContainergetObjectAncestor (const std::string &type) const
 
CDataModelgetObjectDataModel () const
 
virtual std::string getObjectDisplayName () const override
 
const CObjectInterfacegetObjectFromCN (const CCommonName &cn) const
 
const std::string & getObjectName () const
 
CDataContainergetObjectParent () const
 
const std::string & getObjectType () const
 
virtual const CObjectInterface::ObjectSetgetPrerequisites () const override
 
virtual const CValiditygetValidity () const override
 
virtual void * getValuePointer () const override
 
bool hasFlag (const Flag &flag) const
 
virtual bool isPrerequisiteForContext (const CObjectInterface *pObject, const CCore::SimulationContextFlag &context, const CObjectInterface::ObjectSet &changedObjects) const override
 
bool prerequisitsContains (const DataObjectSet &objects) const
 
void removeIssue (const CIssue &issue)
 
void removeReference (const CDataContainer *pReference)
 
bool setObjectName (const std::string &name)
 
virtual bool setObjectParent (const CDataContainer *pParent)
 
void validityChanged (const CValidity &changedValidity) override
 
void validityRemoved (const CValidity &changedValidity)
 
virtual ~CDataObject ()
 
- Public Member Functions inherited from CObjectInterface
 CObjectInterface ()
 
 CObjectInterface (const CObjectInterface &src)
 
virtual ~CObjectInterface ()
 
- Public Member Functions inherited from CUndoObjectInterface
 CUndoObjectInterface ()
 
 CUndoObjectInterface (const CUndoObjectInterface &src)
 
bool generateUuid ()
 
const xg::Guid & getUuid () const
 
bool setUuid (const std::string &uuid)
 
bool setUuid (const xg::Guid &uuid)
 
virtual void updateIndex (const size_t &index, const CUndoObjectInterface *pUndoObject)
 
virtual ~CUndoObjectInterface ()
 

Private Member Functions

void initObjects ()
 

Private Attributes

CMatrix< C_FLOAT64mA
 
C_FLOAT64 mBifurcationIndicator_Fold
 
C_FLOAT64 mBifurcationIndicator_Fold_BDT
 
C_FLOAT64 mBifurcationIndicator_Hopf
 
C_FLOAT64 mBifurcationIndicator_Hopf_BDT
 
C_FLOAT64 mFreqOfMaxComplex
 
C_FLOAT64 mHierarchy
 
CVector< C_FLOAT64mI
 
C_FLOAT64 mImagOfMaxComplex
 
C_INT mInfo
 
char mJobvs
 
C_INT mLDA
 
C_INT mLdvs
 
C_INT mLWork
 
C_FLOAT64 mMaximagpart
 
C_FLOAT64 mMaxRealOfComplex
 
C_FLOAT64 mMaxrealpart
 
C_INT mN
 
size_t mNcplxconj
 
size_t mNimag
 
size_t mNnegreal
 
size_t mNposreal
 
size_t mNreal
 
size_t mNzero
 
C_FLOAT64 mOscillationIndicator
 
C_FLOAT64 mOscillationIndicator_EV
 
C_LOGICALmpBWork
 
C_INT32mpSelect
 
C_FLOAT64mpVS
 
CVector< C_FLOAT64mR
 
C_FLOAT64 mResolution
 
C_INT mSdim
 
char mSort
 
C_FLOAT64 mStiffness
 
CVector< C_FLOAT64mWork
 

Friends

std::ostream & operator<< (std::ostream &os, const CEigen &A)
 

Additional Inherited Members

- Public Types inherited from CDataContainer
typedef CDataObjectMap objectMap
 
- Public Types inherited from CDataObject
typedef std::set< const CDataObject * > DataObjectSet
 
enum  Flag {
  Container , Vector , Matrix , NameVector ,
  Reference , ValueBool , ValueInt , ValueInt64 ,
  ValueDbl , NonUniqueName , StaticString , ValueString ,
  Separator , DisplayName , ModelEntity , Array ,
  DataModel , Root , Gui , __SIZE
}
 
- Public Types inherited from CObjectInterface
typedef std::vector< const CDataContainer * > ContainerList
 
typedef std::set< const CObjectInterface * > ObjectSet
 
- Static Public Member Functions inherited from CDataContainer
static CDataContainerfromData (const CData &data, CUndoObjectInterface *pParent)
 
- Static Public Member Functions inherited from CDataObject
static CDataObjectfromData (const CData &data, CUndoObjectInterface *pParent)
 
static void sanitizeObjectName (std::string &name)
 
- Static Public Member Functions inherited from CObjectInterface
static const CDataObjectDataObject (const CObjectInterface *pInterface)
 
static CObjectInterfaceGetObjectFromCN (const ContainerList &listOfContainer, const CCommonName &objName)
 
- Static Public Member Functions inherited from CUndoObjectInterface
template<class CType >
static CType * fromData (const CData &, CUndoObjectInterface *)
 
- Static Public Attributes inherited from CDataContainer
static const CObjectInterface::ContainerList EmptyList
 
- Protected Member Functions inherited from CDataContainer
template<class CType >
CDataMatrixReference< CType > * addMatrixReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None)
 
template<class CType >
CDataObjectReference< CType > * addObjectReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None)
 
template<class CType >
CDataVectorReference< CType > * addVectorReference (const std::string &name, CType &reference, const CFlags< Flag > &flag=CFlags< Flag >::None)
 
 CDataContainer (const CDataContainer &src)
 
void initObjects ()
 
- Protected Member Functions inherited from CDataObject
 CDataObject ()
 
 CDataObject (const std::string &name, const CDataContainer *pParent=static_cast< CDataContainer * >((void *) 0), const std::string &type="CN", const CFlags< Flag > &flag=CFlags< Flag >::None)
 
- Protected Attributes inherited from CDataContainer
objectMap mObjects
 
- Protected Attributes inherited from CDataObject
ObjectSet mPrerequisits
 
std::set< CDataContainer * > mReferences
 
- Protected Attributes inherited from CObjectInterface
CValidity mValidity
 

Detailed Description

File name: CEigen.h

Programmer: Yongqun He Contact email: yohe@.nosp@m.vt.e.nosp@m.du Purpose: This is the .h file for the class CEigen. It is to calculate eigenvalues and eigenvectors of a matrix. It mainly uses the dgees_() subroutine of CLAPACK

Constructor & Destructor Documentation

◆ CEigen() [1/2]

CEigen::CEigen ( const std::string &  name = "NoName",
const CDataContainer pParent = NO_PARENT 
)

Default constructor

Parameters
conststd::string & name (default: "NoName")
constCDataContainer * pParent (default: NULL)

File name: CEigen.cpp

Programmer: Yongqun He Contact email: yohe@.nosp@m.vt.e.nosp@m.du Purpose: This is the .cpp file for the class CEigen. It is to calculate eigenvalues and eigenvectors of a matrix. Default constructor

References CONSTRUCTOR_TRACE, and initObjects().

◆ CEigen() [2/2]

CEigen::CEigen ( const CEigen src,
const CDataContainer pParent 
)

Copy constructor

Parameters
constCMetab & src
constCDataContainer * pParent (default: NULL)

References CONSTRUCTOR_TRACE, and initObjects().

◆ ~CEigen()

CEigen::~CEigen ( )
virtual

Destructor

Deconstructor

References cleanup(), and DESTRUCTOR_TRACE.

Member Function Documentation

◆ calcEigenValues()

◆ cleanup()

void CEigen::cleanup ( )

cleanup()

Referenced by initialize(), and ~CEigen().

◆ getHierarchy()

const C_FLOAT64 & CEigen::getHierarchy ( ) const

Get the eigenvalue hierarchy

References mHierarchy.

◆ getI()

const CVector< C_FLOAT64 > & CEigen::getI ( ) const

References mI.

Referenced by CSteadyStateTask::process().

◆ getMaximagpart()

const C_FLOAT64 & CEigen::getMaximagpart ( ) const

Get the max eigenvalue imaginary part

References mMaximagpart.

◆ getMaxrealpart()

const C_FLOAT64 & CEigen::getMaxrealpart ( ) const

Get the max eigenvalue real part

return the matrix Set the Matrix

References mMaxrealpart.

◆ getNcplxconj()

const size_t & CEigen::getNcplxconj ( ) const

References mNcplxconj.

◆ getNimag()

const size_t & CEigen::getNimag ( ) const

Return the number of imaginary eigenvalue numbers

References mNimag.

Referenced by CLNATask::process().

◆ getNnegreal()

const size_t & CEigen::getNnegreal ( ) const

Return the number of eigenvalues with negative real part

References mNnegreal.

◆ getNposreal()

const size_t & CEigen::getNposreal ( ) const

Return the number of eigenvalues with positive real part

References mNposreal.

Referenced by CLNATask::process().

◆ getNreal()

const size_t & CEigen::getNreal ( ) const

Return number of real eigenvalues WeiSun 3/28/02

References mNreal.

◆ getNzero()

const size_t & CEigen::getNzero ( ) const

Get the number of zero eigenvalues

References mNzero.

Referenced by CLNATask::process().

◆ getR()

const CVector< C_FLOAT64 > & CEigen::getR ( ) const

References mR.

Referenced by CSteadyStateTask::process().

◆ getStiffness()

const C_FLOAT64 & CEigen::getStiffness ( ) const

Get the eigenvalue stiffness

References mStiffness.

◆ initialize()

void CEigen::initialize ( )

initialize variables for eigenvalue calculations

References cleanup(), mI, mLDA, mN, mNcplxconj, mNimag, mNnegreal, mNposreal, mNreal, mNzero, mR, and CVector< CType >::resize().

Referenced by calcEigenValues().

◆ initObjects()

◆ print()

void CEigen::print ( std::ostream *  ostream) const
virtual

This is the output method for any object. The default implementation provided with CDataObject uses the ostream operator<< of the object to print the object.To overide this default behaviour one needs to reimplement the virtual print function.

Parameters
std::ostream* ostream

Reimplemented from CDataObject.

◆ stabilityAnalysis()

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const CEigen A 
)
friend

Member Data Documentation

◆ mA

CMatrix< C_FLOAT64 > CEigen::mA
private

#5: (input/output) The double precision array, dimension (LDA,N) On entry, the N-by-N matrix A On exit, A has been overwritten by its real Schur form T Use a pointer variable here instead of array since we don't know the dimension yet.

Referenced by calcEigenValues().

◆ mBifurcationIndicator_Fold

C_FLOAT64 CEigen::mBifurcationIndicator_Fold
private

A bifurcation test function, it is 0 for a Fold-type bifurcation.

Referenced by initObjects(), and stabilityAnalysis().

◆ mBifurcationIndicator_Fold_BDT

C_FLOAT64 CEigen::mBifurcationIndicator_Fold_BDT
private

A bifurcation test function, defined according to the "Bifurcation Discovery Tool", Chickarmane et al 2005

Referenced by initObjects(), and stabilityAnalysis().

◆ mBifurcationIndicator_Hopf

C_FLOAT64 CEigen::mBifurcationIndicator_Hopf
private

A bifurcation test function, it is 0 for a Hopf-bifurcation. Definition according to Kuznetsov. This is only a necessary, not a sufficient condition for a H.-bifurcation

Referenced by initObjects(), and stabilityAnalysis().

◆ mBifurcationIndicator_Hopf_BDT

C_FLOAT64 CEigen::mBifurcationIndicator_Hopf_BDT
private

A bifurcation test function, defined according to the "Bifurcation Discovery Tool", Chickarmane et al 2005

Referenced by initObjects(), and stabilityAnalysis().

◆ mFreqOfMaxComplex

C_FLOAT64 CEigen::mFreqOfMaxComplex
private

frequency of complex with largest real part

Referenced by initObjects(), and stabilityAnalysis().

◆ mHierarchy

C_FLOAT64 CEigen::mHierarchy
private

the hierary of the eigenvalues

Referenced by getHierarchy(), initObjects(), and stabilityAnalysis().

◆ mI

CVector< C_FLOAT64 > CEigen::mI
private

#9: array with dimension (mN)

Referenced by calcEigenValues(), getI(), initialize(), initObjects(), and stabilityAnalysis().

◆ mImagOfMaxComplex

C_FLOAT64 CEigen::mImagOfMaxComplex
private

imaginary part of complex with largest real part

Referenced by initObjects(), and stabilityAnalysis().

◆ mInfo

C_INT CEigen::mInfo
private

#15: (output) an integer =0: successful exit <0: if mInfo=-i, the ith argument had an illegal value >0: if mInfo=i, and i is <=N: the QR algorithm failed to compute all the eigenvalues; =N+1: the eigenvalues could not be reordered because some eigenvalues were too close to separate (ill-conditioned) =N+2: after reordering, roundoff changed values of some complex eigenvalues so that leading eigenvalues in the Schur form no longer satisfy mSelect=.True. This could caused by underflow due to scaling

Referenced by calcEigenValues().

◆ mJobvs

char CEigen::mJobvs
private

#1: (input) characer*1 = 'N': Schur vectors are not computed = 'V': Schur vectors are computed

Referenced by calcEigenValues().

◆ mLDA

C_INT CEigen::mLDA
private

#6: (input) The leading dimension of the array A. LDA >= max(1,N)

Referenced by calcEigenValues(), and initialize().

◆ mLdvs

C_INT CEigen::mLdvs
private

#11: an integer, the leading dimension of the array VS. mLdvs >= 1; if mJobvs='V', mLdvs >= N.

Referenced by calcEigenValues().

◆ mLWork

C_INT CEigen::mLWork
private

#13: (input) Dimension of array Work, its value >= max(1,3*mN). For good performance, it must generally be larger

Referenced by calcEigenValues().

◆ mMaximagpart

C_FLOAT64 CEigen::mMaximagpart
private

the imaginary part of the maximum eigenvalue

Referenced by getMaximagpart(), initObjects(), and stabilityAnalysis().

◆ mMaxRealOfComplex

C_FLOAT64 CEigen::mMaxRealOfComplex
private

largest real part of a complex eigenvalue. If there is no complex eigenvalue it will be the smallest ev.

Referenced by initObjects(), and stabilityAnalysis().

◆ mMaxrealpart

C_FLOAT64 CEigen::mMaxrealpart
private

the real part of the maximum eigenvalue

Referenced by getMaxrealpart(), initObjects(), and stabilityAnalysis().

◆ mN

C_INT CEigen::mN
private

#4: (input) The order of the matrix A

Referenced by calcEigenValues(), initialize(), and stabilityAnalysis().

◆ mNcplxconj

size_t CEigen::mNcplxconj
private

◆ mNimag

size_t CEigen::mNimag
private

the number of imaginary eigenvalue numbers

Referenced by getNimag(), initialize(), initObjects(), and stabilityAnalysis().

◆ mNnegreal

size_t CEigen::mNnegreal
private

the number of eigenvalues with negative real part

Referenced by getNnegreal(), initialize(), initObjects(), and stabilityAnalysis().

◆ mNposreal

size_t CEigen::mNposreal
private

the number of eigenvalues with positive real part

Referenced by getNposreal(), initialize(), initObjects(), and stabilityAnalysis().

◆ mNreal

size_t CEigen::mNreal
private

the number of real eigenvalues

Referenced by getNreal(), initialize(), initObjects(), and stabilityAnalysis().

◆ mNzero

size_t CEigen::mNzero
private

the number of eigenvalues with value of zero

Referenced by getNzero(), initialize(), initObjects(), and stabilityAnalysis().

◆ mOscillationIndicator

C_FLOAT64 CEigen::mOscillationIndicator
private

An index that is supposed to indicate the presence of oscillations

Referenced by initObjects(), and stabilityAnalysis().

◆ mOscillationIndicator_EV

C_FLOAT64 CEigen::mOscillationIndicator_EV
private

A heuristical index that is supposed to indicate the presence of oscillations, based on Eigenvalues

Referenced by initObjects(), and stabilityAnalysis().

◆ mpBWork

C_LOGICAL* CEigen::mpBWork
private

#14: (workspace) Logical array, dimension (N) Not referenced if mSort = 'N'

Referenced by calcEigenValues().

◆ mpSelect

C_INT32* CEigen::mpSelect
private

#3: (input) Logical function of two double precision arguments It must be declared external = 'S': Select is used to select eigenvalues to sort to the top left of the Schur form = 'N': Eigenvalues are ordered Select is not refereced.

◆ mpVS

C_FLOAT64* CEigen::mpVS
private

#10: (output) array with dimension (mLdvs, mN) If mJobvs='V', mVS contains the orthogoanl matrix Z of Schur vectors If mJobvs='N', mVS is not referenced

Referenced by calcEigenValues().

◆ mR

CVector< C_FLOAT64 > CEigen::mR
private

#8: array with dimension (mN)

Referenced by calcEigenValues(), getR(), initialize(), initObjects(), and stabilityAnalysis().

◆ mResolution

C_FLOAT64 CEigen::mResolution
private

The resolution of needed for the stability analysis

Referenced by initObjects(), and stabilityAnalysis().

◆ mSdim

C_INT CEigen::mSdim
private

#7: (output) an integer if Sort = 'N', its value is 0 if Sort = 'S', its value = number of eigenvalues (after sorting) for which mSelect is true.

Referenced by calcEigenValues().

◆ mSort

char CEigen::mSort
private

#2: (input) characer*1 = 'N': Eigenvalues are not ordered = 'S': Eigenvalues are ordered

Referenced by calcEigenValues().

◆ mStiffness

C_FLOAT64 CEigen::mStiffness
private

the stiffness of eigenvalues

Referenced by getStiffness(), initObjects(), and stabilityAnalysis().

◆ mWork

CVector< C_FLOAT64 > CEigen::mWork
private

#12: (workspace/output) double precision array, dimension (mLWork) On exit, if mInfo=0; mWork(1) contains the optimal mLWork

Referenced by calcEigenValues().


The documentation for this class was generated from the following files: