00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef LOCA_HOPF_MOORESPENCE_ABSTRACTGROUP_H
00043 #define LOCA_HOPF_MOORESPENCE_ABSTRACTGROUP_H
00044
00045 #include "LOCA_TurningPoint_MooreSpence_AbstractGroup.H"
00046 #include "LOCA_TimeDependent_AbstractGroup.H"
00047
00048 namespace LOCA {
00049
00053 namespace Hopf {
00054
00059 namespace MooreSpence {
00060
00080 class AbstractGroup :
00081 public virtual LOCA::TurningPoint::MooreSpence::AbstractGroup,
00082 public virtual LOCA::TimeDependent::AbstractGroup {
00083
00084 public:
00085
00087 AbstractGroup() {}
00088
00090 virtual ~AbstractGroup() {}
00091
00097
00099 virtual bool isComplex() const = 0;
00100
00102
00105 virtual NOX::Abstract::Group::ReturnType
00106 computeComplex(double frequency) = 0;
00107
00109 virtual NOX::Abstract::Group::ReturnType
00110 applyComplex(const NOX::Abstract::Vector& input_real,
00111 const NOX::Abstract::Vector& input_imag,
00112 NOX::Abstract::Vector& result_real,
00113 NOX::Abstract::Vector& result_imag) const = 0;
00114
00116 virtual NOX::Abstract::Group::ReturnType
00117 applyComplexMultiVector(
00118 const NOX::Abstract::MultiVector& input_real,
00119 const NOX::Abstract::MultiVector& input_imag,
00120 NOX::Abstract::MultiVector& result_real,
00121 NOX::Abstract::MultiVector& result_imag) const = 0;
00122
00124 virtual NOX::Abstract::Group::ReturnType
00125 applyComplexInverseMultiVector(
00126 Teuchos::ParameterList& params,
00127 const NOX::Abstract::MultiVector& input_real,
00128 const NOX::Abstract::MultiVector& input_imag,
00129 NOX::Abstract::MultiVector& result_real,
00130 NOX::Abstract::MultiVector& result_imag) const = 0;
00131
00137 virtual NOX::Abstract::Group::ReturnType
00138 computeDCeDp(const vector<int>& paramIDs,
00139 const NOX::Abstract::Vector& yVector,
00140 const NOX::Abstract::Vector& zVector,
00141 double w,
00142 NOX::Abstract::MultiVector& result_real,
00143 NOX::Abstract::MultiVector& result_imag,
00144 bool isValid) = 0;
00145
00151 virtual NOX::Abstract::Group::ReturnType
00152 computeDCeDxa(const NOX::Abstract::Vector& yVector,
00153 const NOX::Abstract::Vector& zVector,
00154 double w,
00155 const NOX::Abstract::MultiVector& aVector,
00156 NOX::Abstract::MultiVector& result_real,
00157 NOX::Abstract::MultiVector& result_imag) = 0;
00158
00166 virtual NOX::Abstract::Group::ReturnType
00167 computeDCeDxa(const NOX::Abstract::Vector& yVector,
00168 const NOX::Abstract::Vector& zVector,
00169 double w,
00170 const NOX::Abstract::MultiVector& aVector,
00171 const NOX::Abstract::Vector& Ce_real,
00172 const NOX::Abstract::Vector& Ce_imag,
00173 NOX::Abstract::MultiVector& result_real,
00174 NOX::Abstract::MultiVector& result_imag) = 0;
00175
00177
00179 using NOX::Abstract::Group::operator=;
00180
00181 };
00182 }
00183 }
00184 }
00185
00186 #endif