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 #include "LOCA_Hopf_MooreSpence_ExtendedMultiVector.H"
00043 #include "LOCA_Hopf_MooreSpence_ExtendedVector.H"
00044
00045 LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(
00046 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00047 const NOX::Abstract::Vector& cloneVec,
00048 int nColumns) :
00049 LOCA::Extended::MultiVector(global_data, nColumns, 3, 2)
00050 {
00051 Teuchos::RCP<NOX::Abstract::MultiVector> mv1 =
00052 cloneVec.createMultiVector(nColumns, NOX::ShapeCopy);
00053 Teuchos::RCP<NOX::Abstract::MultiVector> mv2 =
00054 cloneVec.createMultiVector(nColumns, NOX::ShapeCopy);
00055 Teuchos::RCP<NOX::Abstract::MultiVector> mv3 =
00056 cloneVec.createMultiVector(nColumns, NOX::ShapeCopy);
00057 LOCA::Extended::MultiVector::setMultiVectorPtr(0, mv1);
00058 LOCA::Extended::MultiVector::setMultiVectorPtr(1, mv2);
00059 LOCA::Extended::MultiVector::setMultiVectorPtr(2, mv3);
00060 }
00061
00062 LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(
00063 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00064 const NOX::Abstract::MultiVector& xVec,
00065 const NOX::Abstract::MultiVector& realEigenVec,
00066 const NOX::Abstract::MultiVector& imagEigenVec,
00067 const NOX::Abstract::MultiVector::DenseMatrix& freqs,
00068 const NOX::Abstract::MultiVector::DenseMatrix& bifParams) :
00069 LOCA::Extended::MultiVector(global_data, xVec.numVectors(), 3, 2)
00070 {
00071 LOCA::Extended::MultiVector::setMultiVectorPtr(0, xVec.clone(NOX::DeepCopy));
00072 LOCA::Extended::MultiVector::setMultiVectorPtr(1, realEigenVec.clone(NOX::DeepCopy));
00073 LOCA::Extended::MultiVector::setMultiVectorPtr(2, imagEigenVec.clone(NOX::DeepCopy));
00074 LOCA::Extended::MultiVector::getScalarRows(1,0)->assign(freqs);
00075 LOCA::Extended::MultiVector::getScalarRows(1,1)->assign(bifParams);
00076 }
00077
00078 LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(
00079 const LOCA::Hopf::MooreSpence::ExtendedMultiVector& source,
00080 NOX::CopyType type) :
00081 LOCA::Extended::MultiVector(source, type)
00082 {
00083 }
00084
00085 LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(
00086 const LOCA::Hopf::MooreSpence::ExtendedMultiVector& source,
00087 int nColumns) :
00088 LOCA::Extended::MultiVector(source, nColumns)
00089 {
00090 }
00091
00092 LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(
00093 const LOCA::Hopf::MooreSpence::ExtendedMultiVector& source,
00094 const vector<int>& index, bool view) :
00095 LOCA::Extended::MultiVector(source, index, view)
00096 {
00097 }
00098
00099 LOCA::Hopf::MooreSpence::ExtendedMultiVector::~ExtendedMultiVector()
00100 {
00101 }
00102
00103 LOCA::Extended::MultiVector&
00104 LOCA::Hopf::MooreSpence::ExtendedMultiVector::operator=(
00105 const LOCA::Extended::MultiVector& y)
00106 {
00107 operator=(dynamic_cast<const LOCA::Hopf::MooreSpence::ExtendedMultiVector&>(y));
00108 return *this;
00109 }
00110
00111 NOX::Abstract::MultiVector&
00112 LOCA::Hopf::MooreSpence::ExtendedMultiVector::operator=(
00113 const NOX::Abstract::MultiVector& y)
00114 {
00115 operator=(dynamic_cast<const LOCA::Hopf::MooreSpence::ExtendedMultiVector&>(y));
00116 return *this;
00117 }
00118
00119 LOCA::Hopf::MooreSpence::ExtendedMultiVector&
00120 LOCA::Hopf::MooreSpence::ExtendedMultiVector::operator=(const
00121 LOCA::Hopf::MooreSpence::ExtendedMultiVector& y)
00122 {
00123 LOCA::Extended::MultiVector::operator=(y);
00124 return *this;
00125 }
00126
00127 Teuchos::RCP<NOX::Abstract::MultiVector>
00128 LOCA::Hopf::MooreSpence::ExtendedMultiVector::clone(NOX::CopyType type) const
00129 {
00130 return
00131 Teuchos::rcp(new LOCA::Hopf::MooreSpence::ExtendedMultiVector(*this, type));
00132 }
00133
00134 Teuchos::RCP<NOX::Abstract::MultiVector>
00135 LOCA::Hopf::MooreSpence::ExtendedMultiVector::clone(int numvecs) const
00136 {
00137 return
00138 Teuchos::rcp(new LOCA::Hopf::MooreSpence::ExtendedMultiVector(*this, numvecs));
00139 }
00140
00141 Teuchos::RCP<NOX::Abstract::MultiVector>
00142 LOCA::Hopf::MooreSpence::ExtendedMultiVector::subCopy(
00143 const vector<int>& index) const
00144 {
00145 return
00146 Teuchos::rcp(new LOCA::Hopf::MooreSpence::ExtendedMultiVector(*this, index, false));
00147 }
00148
00149 Teuchos::RCP<NOX::Abstract::MultiVector>
00150 LOCA::Hopf::MooreSpence::ExtendedMultiVector::subView(
00151 const vector<int>& index) const
00152 {
00153 return
00154 Teuchos::rcp(new LOCA::Hopf::MooreSpence::ExtendedMultiVector(*this, index, true));
00155 }
00156
00157 Teuchos::RCP<const NOX::Abstract::MultiVector>
00158 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getXMultiVec() const
00159 {
00160 return LOCA::Extended::MultiVector::getMultiVector(0);
00161 }
00162
00163 Teuchos::RCP<NOX::Abstract::MultiVector>
00164 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getXMultiVec()
00165 {
00166 return LOCA::Extended::MultiVector::getMultiVector(0);
00167 }
00168
00169 Teuchos::RCP<const NOX::Abstract::MultiVector>
00170 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getRealEigenMultiVec() const
00171 {
00172 return LOCA::Extended::MultiVector::getMultiVector(1);
00173 }
00174
00175 Teuchos::RCP<NOX::Abstract::MultiVector>
00176 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getRealEigenMultiVec()
00177 {
00178 return LOCA::Extended::MultiVector::getMultiVector(1);
00179 }
00180
00181 Teuchos::RCP<const NOX::Abstract::MultiVector>
00182 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getImagEigenMultiVec() const
00183 {
00184 return LOCA::Extended::MultiVector::getMultiVector(2);
00185 }
00186
00187 Teuchos::RCP<NOX::Abstract::MultiVector>
00188 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getImagEigenMultiVec()
00189 {
00190 return LOCA::Extended::MultiVector::getMultiVector(2);
00191 }
00192
00193 Teuchos::RCP<const NOX::Abstract::MultiVector::DenseMatrix>
00194 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getFrequencies() const
00195 {
00196 return LOCA::Extended::MultiVector::getScalarRows(1, 0);
00197 }
00198
00199 Teuchos::RCP<NOX::Abstract::MultiVector::DenseMatrix>
00200 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getFrequencies()
00201 {
00202 return LOCA::Extended::MultiVector::getScalarRows(1, 0);
00203 }
00204
00205 Teuchos::RCP<const NOX::Abstract::MultiVector::DenseMatrix>
00206 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getBifParams() const
00207 {
00208 return LOCA::Extended::MultiVector::getScalarRows(1, 1);
00209 }
00210
00211 Teuchos::RCP<NOX::Abstract::MultiVector::DenseMatrix>
00212 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getBifParams()
00213 {
00214 return LOCA::Extended::MultiVector::getScalarRows(1, 1);
00215 }
00216
00217 LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(
00218 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00219 int nColumns) :
00220 LOCA::Extended::MultiVector(global_data, nColumns, 3, 2)
00221 {
00222 }
00223
00224 Teuchos::RCP<LOCA::Extended::Vector>
00225 LOCA::Hopf::MooreSpence::ExtendedMultiVector::generateVector(
00226 int nVecs,
00227 int nScalarRows) const
00228 {
00229 return
00230 Teuchos::rcp(new LOCA::Hopf::MooreSpence::ExtendedVector(globalData));
00231 }
00232
00233 Teuchos::RCP<LOCA::Hopf::MooreSpence::ExtendedVector>
00234 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getColumn(int i)
00235 {
00236 return Teuchos::rcp_dynamic_cast<LOCA::Hopf::MooreSpence::ExtendedVector>(getVector(i),true);
00237 }
00238
00239 Teuchos::RCP<const LOCA::Hopf::MooreSpence::ExtendedVector>
00240 LOCA::Hopf::MooreSpence::ExtendedMultiVector::getColumn(int i) const
00241 {
00242 return Teuchos::rcp_dynamic_cast<const LOCA::Hopf::MooreSpence::ExtendedVector>(getVector(i),true);
00243 }