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_Abstract_Group.H"
00043 #include "Teuchos_ParameterList.hpp"
00044 #include "LOCA_GlobalData.H"
00045 #include "LOCA_ErrorCheck.H"
00046
00047 LOCA::Abstract::Group::Group(
00048 const Teuchos::RCP<LOCA::GlobalData>& global_data) :
00049 globalData(global_data)
00050 {
00051 setDerivUtils(Teuchos::rcp(new LOCA::DerivUtils(globalData)));
00052 }
00053
00054 LOCA::Abstract::Group::Group(
00055 const Teuchos::RCP<LOCA::GlobalData>& global_data,
00056 const Teuchos::RCP<LOCA::DerivUtils>& deriv ) :
00057 globalData(global_data)
00058 {
00059 setDerivUtils(deriv);
00060 }
00061
00062 LOCA::Abstract::Group::Group(const LOCA::Abstract::Group& source,
00063 NOX::CopyType type) :
00064 globalData(source.globalData)
00065 {
00066
00067
00068 copy(source);
00069 }
00070
00071
00072 LOCA::Abstract::Group::~Group()
00073 {
00074 }
00075
00076 NOX::Abstract::Group::ReturnType
00077 LOCA::Abstract::Group::augmentJacobianForHomotopy(double a, double b)
00078 {
00079 return NOX::Abstract::Group::NotDefined;
00080 }
00081
00082 NOX::Abstract::Group::ReturnType
00083 LOCA::Abstract::Group::computeShiftedMatrix(double alpha, double beta)
00084 {
00085 globalData->locaErrorCheck->throwError(
00086 "LOCA::Abstract::Group::computeShiftedMatrix",
00087 "Not implemented for group");
00088 return NOX::Abstract::Group::NotDefined;
00089 }
00090
00091 NOX::Abstract::Group::ReturnType
00092 LOCA::Abstract::Group::applyShiftedMatrix(const NOX::Abstract::Vector& input,
00093 NOX::Abstract::Vector& result) const
00094 {
00095 globalData->locaErrorCheck->throwError(
00096 "LOCA::Abstract::Group::applyShiftedMatrix",
00097 "Not implemented for group");
00098 return NOX::Abstract::Group::NotDefined;
00099 }
00100
00101 NOX::Abstract::Group::ReturnType
00102 LOCA::Abstract::Group::applyShiftedMatrixMultiVector(
00103 const NOX::Abstract::MultiVector& input,
00104 NOX::Abstract::MultiVector& result) const
00105 {
00106 globalData->locaErrorCheck->throwError(
00107 "LOCA::Abstract::Group::applyShiftedMatrixMultiVector",
00108 "Not implemented for group");
00109 return NOX::Abstract::Group::NotDefined;
00110 }
00111
00112 NOX::Abstract::Group::ReturnType
00113 LOCA::Abstract::Group::applyShiftedMatrixInverseMultiVector(
00114 Teuchos::ParameterList& params,
00115 const NOX::Abstract::MultiVector& input,
00116 NOX::Abstract::MultiVector& result) const
00117 {
00118 globalData->locaErrorCheck->throwError(
00119 "LOCA::Abstract::Group::applyShiftedMatrixInverseMultiVector",
00120 "Not implemented for group");
00121 return NOX::Abstract::Group::NotDefined;
00122 }
00123
00124 bool
00125 LOCA::Abstract::Group::isComplex() const
00126 {
00127 return false;
00128 }
00129
00130 NOX::Abstract::Group::ReturnType
00131 LOCA::Abstract::Group::computeComplex(double frequency)
00132 {
00133 globalData->locaErrorCheck->throwError(
00134 "LOCA::Abstract::Group::computeComplex",
00135 "Method not defined for group");
00136 return NOX::Abstract::Group::NotDefined;
00137 }
00138
00139 NOX::Abstract::Group::ReturnType
00140 LOCA::Abstract::Group::applyComplex(const NOX::Abstract::Vector& input_real,
00141 const NOX::Abstract::Vector& input_imag,
00142 NOX::Abstract::Vector& result_real,
00143 NOX::Abstract::Vector& result_imag) const
00144 {
00145 globalData->locaErrorCheck->throwError("LOCA::Abstract::Group::applyComplex",
00146 "Method not defined for group");
00147 return NOX::Abstract::Group::NotDefined;
00148 }
00149
00150 NOX::Abstract::Group::ReturnType
00151 LOCA::Abstract::Group::applyComplexMultiVector(
00152 const NOX::Abstract::MultiVector& input_real,
00153 const NOX::Abstract::MultiVector& input_imag,
00154 NOX::Abstract::MultiVector& result_real,
00155 NOX::Abstract::MultiVector& result_imag) const
00156 {
00157 globalData->locaErrorCheck->throwError(
00158 "LOCA::Abstract::Group::applyComplexMultiVector",
00159 "Method not defined for group");
00160 return NOX::Abstract::Group::NotDefined;
00161 }
00162
00163 NOX::Abstract::Group::ReturnType
00164 LOCA::Abstract::Group::applyComplexInverseMultiVector(
00165 Teuchos::ParameterList& params,
00166 const NOX::Abstract::MultiVector& input_real,
00167 const NOX::Abstract::MultiVector& input_imag,
00168 NOX::Abstract::MultiVector& result_real,
00169 NOX::Abstract::MultiVector& result_imag) const
00170 {
00171 globalData->locaErrorCheck->throwError(
00172 "LOCA::Abstract::Group::applyComplexInverse",
00173 "Method not defined for group");
00174 return NOX::Abstract::Group::NotDefined;
00175 }
00176
00177 NOX::Abstract::Group::ReturnType
00178 LOCA::Abstract::Group::applyComplexTranspose(
00179 const NOX::Abstract::Vector& input_real,
00180 const NOX::Abstract::Vector& input_imag,
00181 NOX::Abstract::Vector& result_real,
00182 NOX::Abstract::Vector& result_imag) const
00183 {
00184 globalData->locaErrorCheck->throwError(
00185 "LOCA::Abstract::Group::applyComplexTranspose",
00186 "Method not defined for group");
00187 return NOX::Abstract::Group::NotDefined;
00188 }
00189
00190 NOX::Abstract::Group::ReturnType
00191 LOCA::Abstract::Group::applyComplexTransposeMultiVector(
00192 const NOX::Abstract::MultiVector& input_real,
00193 const NOX::Abstract::MultiVector& input_imag,
00194 NOX::Abstract::MultiVector& result_real,
00195 NOX::Abstract::MultiVector& result_imag) const
00196 {
00197 globalData->locaErrorCheck->throwError(
00198 "LOCA::Abstract::Group::applyComplexTransposeMultiVector",
00199 "Method not defined for group");
00200 return NOX::Abstract::Group::NotDefined;
00201 }
00202
00203 NOX::Abstract::Group::ReturnType
00204 LOCA::Abstract::Group::applyComplexTransposeInverseMultiVector(
00205 Teuchos::ParameterList& params,
00206 const NOX::Abstract::MultiVector& input_real,
00207 const NOX::Abstract::MultiVector& input_imag,
00208 NOX::Abstract::MultiVector& result_real,
00209 NOX::Abstract::MultiVector& result_imag) const
00210 {
00211 globalData->locaErrorCheck->throwError(
00212 "LOCA::Abstract::Group::applyComplexTransposeInverseMultiVector",
00213 "Method not defined for group");
00214 return NOX::Abstract::Group::NotDefined;
00215 }
00216
00217 void
00218 LOCA::Abstract::Group::copy(const NOX::Abstract::Group& src)
00219 {
00220 const LOCA::Abstract::Group& source =
00221 dynamic_cast<const LOCA::Abstract::Group&>(src);
00222
00223
00224 LOCA::MultiContinuation::FiniteDifferenceGroup::copy(src);
00225 globalData = source.globalData;
00226 }
00227
00228 void
00229 LOCA::Abstract::Group::setParamsMulti(const vector<int>& paramIDs,
00230 const NOX::Abstract::MultiVector::DenseMatrix& vals)
00231 {
00232 for (unsigned int i=0; i<paramIDs.size(); i++)
00233 setParam(paramIDs[i], vals(i,0));
00234 }
00235
00236 void
00237 LOCA::Abstract::Group::notifyCompletedStep()
00238 {
00239 }
00240
00241 NOX::Abstract::Group&
00242 LOCA::Abstract::Group::operator=(const NOX::Abstract::Group& source)
00243 {
00244
00245 copy(source);
00246 return *this;
00247 }