fei_FiniteElementData.hpp

00001 #ifndef _fei_FiniteElementData_hpp_
00002 #define _fei_FiniteElementData_hpp_
00003 
00004 #include <fei_Lookup.hpp>
00005 
00039 class FiniteElementData {
00040  public:
00041 
00042   virtual ~FiniteElementData() {};
00043 
00049   virtual int parameters(int numParams, char** params) = 0;
00050 
00051 
00059   virtual int setLookup(Lookup& lookup) = 0;
00060 
00061 
00077   virtual int describeStructure(int numElemBlocks,
00078                                 const int* numElemsPerBlock,
00079                                 const int* numNodesPerElem,
00080                                 const int* elemMatrixSizePerBlock,
00081                                 int totalNumNodes,
00082                                 int numSharedNodes,
00083                                 int numMultCRs) = 0;
00084 
00093    virtual int setConnectivity(int elemBlockID,
00094                                int elemID,
00095                                int numNodes,
00096                                const int* nodeNumbers,
00097                                const int* numDofPerNode) = 0;
00098 
00109    virtual int setElemMatrix(int elemBlockID,
00110                              int elemID,
00111                              int numNodes,
00112                              const int* nodeNumbers,
00113                              const int* dofPerNode,
00114                              const double *const * coefs) = 0;
00115 
00125    virtual int setElemVector(int elemBlockID,
00126                              int elemID,
00127                              int numNodes,
00128                              const int* nodeNumbers,
00129                              const int* dofPerNode,
00130                              const double* coefs) = 0;
00131 
00132    virtual int setDirichletBCs(int numBCs,
00133                                const int* nodeNumbers,
00134                                const int* dofOffsets,
00135                                const double* values) = 0;
00136 
00137    virtual int sumIntoMatrix(int numRowNodes,
00138                              const int* rowNodeNumbers,
00139                              const int* rowDofOffsets,
00140                              const int* numColNodesPerRow,
00141                              const int* colNodeNumbers,
00142                              const int* colDofOffsets,
00143                              const double* coefs) = 0;
00144 
00145    virtual int sumIntoRHSVector(int numNodes,
00146                              const int* nodeNumbers,
00147                              const int* dofOffsets,
00148                              const double* coefs) = 0;
00149 
00150    virtual int putIntoRHSVector(int numNodes,
00151                              const int* nodeNumbers,
00152                              const int* dofOffsets,
00153                              const double* coefs) = 0;
00154 
00161    virtual int loadComplete() = 0;
00162 
00163 
00173    virtual int launchSolver(int& solveStatus, int& iterations) = 0;
00174 
00180    virtual int reset() = 0;
00181 
00185    virtual int deleteConstraints() = 0;
00186 
00187    virtual int getSolnEntry(int nodeNumber,
00188                             int dofOffset,
00189                             double& value) = 0;
00190 
00193    virtual int getMultiplierSoln(int CRID, double& lagrangeMultiplier) = 0;
00194 
00206    virtual int putNodalFieldData(int fieldID,
00207                                  int fieldSize,
00208                                  int numNodes,
00209                                  const int* nodeNumbers,
00210                                  const double* coefs) = 0;
00211 
00212    virtual int setMultiplierCR(int CRID,
00213                                int numNodes,
00214                                const int* nodeNumbers,
00215                                const int* dofOffsets,
00216                                const double* coefWeights,
00217                                double rhsValue) = 0;
00218 
00219    virtual int setPenaltyCR(int CRID,
00220                             int numNodes,
00221                             const int* nodeNumbers,
00222                             const int* dofOffsets,
00223                             const double* coefWeights,
00224                             double penaltyValue,
00225                             double rhsValue) = 0;
00226 };
00227 
00228 #endif
00229 

Generated on Tue Jul 13 09:27:45 2010 for FEI by  doxygen 1.4.7