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 #ifndef _Isorropia_Operator_hpp_
00031 #define _Isorropia_Operator_hpp_
00032
00033 #include <Isorropia_ConfigDefs.hpp>
00034 #include <Teuchos_ParameterList.hpp>
00035
00036 namespace Isorropia {
00037
00048 class Operator {
00049 public:
00050
00052 virtual ~Operator() {}
00053
00061 virtual void setParameters(const Teuchos::ParameterList& paramlist) = 0;
00062
00075 virtual void compute(bool forceRecomputing=false) = 0;
00076
00077
00079
00084 virtual bool alreadyComputed() const = 0;
00085
00086
00098 virtual int numProperties() const = 0;
00099
00106 virtual int numLocalProperties() const = 0;
00107
00108
00116 virtual const int& operator[](int myElem) const = 0;
00117
00118
00125 virtual int numElemsWithProperty(int property) const = 0;
00126
00127
00143 virtual void elemsWithProperty(int property,
00144 int* elementList,
00145 int len) const = 0;
00146
00147
00161 virtual int extractPropertiesView(int& size,
00162 const int*& array) const = 0;
00163
00164
00179 virtual int extractPropertiesCopy(int len,
00180 int& size,
00181 int* array) const = 0;
00182
00184
00185 };
00186
00187 }
00188
00189 #endif
00190