fei_FiniteElementData.hpp

00001 #ifndef _fei_FiniteElementData_hpp_
00002 #define _fei_FiniteElementData_hpp_
00003 
00004 #include <fei_Lookup.hpp>
00005 
00033 class FiniteElementData {
00034  public:
00035 
00036   virtual ~FiniteElementData() {};
00037 
00043   virtual int parameters(int numParams, char** params) = 0;
00044 
00045 
00053   virtual int setLookup(Lookup& lookup) = 0;
00054 
00055 
00071   virtual int describeStructure(int numElemBlocks,
00072                                 const int* numElemsPerBlock,
00073                                 const int* numNodesPerElem,
00074                                 const int* elemMatrixSizePerBlock,
00075                                 int totalNumNodes,
00076                                 int numSharedNodes,
00077                                 int numMultCRs) = 0;
00078 
00091    virtual int setConnectivity(int elemBlockID,
00092                                int elemID,
00093                                int numNodes,
00094                                const int* nodeNumbers,
00095                                const int* numDofPerNode,
00096                                const int* dof_ids) = 0;
00097 
00109    virtual int setElemMatrix(int elemBlockID,
00110                              int elemID,
00111                              int numNodes,
00112                              const int* nodeNumbers,
00113                              const int* numDofPerNode,
00114                              const int* dof_ids,
00115                              const double *const * coefs) = 0;
00116 
00127    virtual int setElemVector(int elemBlockID,
00128                              int elemID,
00129                              int numNodes,
00130                              const int* nodeNumbers,
00131                              const int* numDofPerNode,
00132                              const int* dof_ids,
00133                              const double* coefs) = 0;
00134 
00141    virtual int setDirichletBCs(int numBCs,
00142                                const int* nodeNumbers,
00143                                const int* dof_ids,
00144                                const double* values) = 0;
00145 
00157    virtual int sumIntoMatrix(int numRowNodes,
00158                              const int* rowNodeNumbers,
00159                              const int* row_dof_ids,
00160                              const int* numColNodesPerRow,
00161                              const int* colNodeNumbers,
00162                              const int* col_dof_ids,
00163                              const double* coefs) = 0;
00164 
00165    virtual int sumIntoRHSVector(int numNodes,
00166                              const int* nodeNumbers,
00167                              const int* dof_ids,
00168                              const double* coefs) = 0;
00169 
00170    virtual int putIntoRHSVector(int numNodes,
00171                              const int* nodeNumbers,
00172                              const int* dof_ids,
00173                              const double* coefs) = 0;
00174 
00181    virtual int loadComplete() = 0;
00182 
00183 
00193    virtual int launchSolver(int& solveStatus, int& iterations) = 0;
00194 
00200    virtual int reset() = 0;
00201 
00205    virtual int deleteConstraints() = 0;
00206 
00212    virtual int getSolnEntry(int nodeNumber,
00213                             int dof_id,
00214                             double& value) = 0;
00215 
00218    virtual int getMultiplierSoln(int CRID, double& lagrangeMultiplier) = 0;
00219 
00231    virtual int putNodalFieldData(int fieldID,
00232                                  int fieldSize,
00233                                  int numNodes,
00234                                  const int* nodeNumbers,
00235                                  const double* coefs) = 0;
00236 
00239    virtual int setMultiplierCR(int CRID,
00240                                int numNodes,
00241                                const int* nodeNumbers,
00242                                const int* dof_ids,
00243                                const double* coefWeights,
00244                                double rhsValue) = 0;
00245 
00248    virtual int setPenaltyCR(int CRID,
00249                             int numNodes,
00250                             const int* nodeNumbers,
00251                             const int* dof_ids,
00252                             const double* coefWeights,
00253                             double penaltyValue,
00254                             double rhsValue) = 0;
00255 };
00256 
00257 #endif
00258 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends
Generated on Wed Apr 13 10:08:23 2011 for FEI by  doxygen 1.6.3