1 #ifndef _FEI_Implementation_hpp_
2 #define _FEI_Implementation_hpp_
80 int parameters(
int numParams,
const char *
const* paramStrings);
100 const int* matrixIDs,
129 const int *fieldSizes,
131 const int *fieldTypes = NULL);
156 int numNodesPerElement,
157 const int* numFieldsPerNode,
158 const int*
const* nodalFieldIDs,
159 int numElemDofFieldsPerElement,
160 const int* elemDOFFieldIDs,
161 int interleaveStrategy);
224 int offsetIntoSlaveField,
227 const int* masterFieldIDs,
228 const double* weights,
240 const int* numProcsPerNode,
241 const int *
const *sharingProcIDs);
322 const int* offsetsIntoField,
323 const double* prescribedValues);
339 const double *
const *alpha,
340 const double *
const *beta,
341 const double *
const *gamma);
361 const double*
const* elemStiffness,
362 const double* elemLoad,
382 const double*
const* elemStiffness,
396 const double* elemLoad);
411 const double* CRWeights,
428 const double* CRWeights,
437 const double* rhsEntries);
444 const double* rhsEntries);
450 const double* coefficients);
458 const double* scalars);
463 const double* scalars);
468 bool globalAssemble=
true);
477 int solve(
int& status);
492 int version(
const char*& versionString);
498 double& solnReturnTime);
526 int& numElemDOFPerElement,
538 double *multipliers);
556 const double *estimates);
563 const double *estimates);
570 const double *estimates);
575 const double* multEstimates);
713 const double* nodeData);
733 void debugOut(
const char* msg,
int whichFEI);
750 std::vector<fei::SharedPtr<LinearSystemCore> >
lscArray_;
795 #ifdef FEI_HAVE_IOSFWD
801 #ifdef FEI_HAVE_IOSFWD
void messageAbort(const char *msg)
int getBlockNodeSolution(GlobalID elemBlockID, int numNodes, const GlobalID *nodeIDs, int *offsets, double *results)
int resetSystem(double s=0.0)
int putBlockFieldNodeSolution(GlobalID elemBlockID, int fieldID, int numNodes, const GlobalID *nodeIDs, const double *estimates)
int getParameters(int &numParams, char **¶mStrings)
int setRHSScalars(int numScalars, const int *IDs, const double *scalars)
virtual ~FEI_Implementation()
void debugOut(const char *msg)
int getNodalFieldSolution(int fieldID, int numNodes, const GlobalID *nodeIDs, double *results)
int putBlockNodeSolution(GlobalID elemBlockID, int numNodes, const GlobalID *nodeIDs, const int *offsets, const double *estimates)
int allocateInternalFEIs()
int sumInElem(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *const *elemStiffness, const double *elemLoad, int elemFormat)
int loadElemBCs(int numElems, const GlobalID *elemIDs, int fieldID, const double *const *alpha, const double *const *beta, const double *const *gamma)
FEI_Implementation(fei::SharedPtr< LibraryWrapper > libWrapper, MPI_Comm comm, int masterRank=0)
int loadNodeBCs(int numNodes, const GlobalID *nodeIDs, int fieldID, const int *offsetsIntoField, const double *prescribedValues)
std::ostream * dbgOStreamPtr_
int getNodalSolution(int numNodes, const GlobalID *nodeIDs, int *offsets, double *results)
const SNL_FEI_Structure & getProblemStructure() const
int initSlaveVariable(GlobalID slaveNodeID, int slaveFieldID, int offsetIntoSlaveField, int numMasterNodes, const GlobalID *masterNodeIDs, const int *masterFieldIDs, const double *weights, double rhsValue)
int iterations(int &itersTaken) const
int setIDLists(int numMatrices, const int *matrixIDs, int numRHSs, const int *rhsIDs)
int getBlockFieldNodeSolution(GlobalID elemBlockID, int fieldID, int numNodes, const GlobalID *nodeIDs, double *results)
bool aggregateSystemFormed_
std::vector< int > numRHSIDs_
int getNumElemBlocks(int &numElemBlocks) const
int index_current_rhs_row_
int sumInElemMatrix(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *const *elemStiffness, int elemFormat)
int initCRPen(int numCRNodes, const GlobalID *CRNodes, const int *CRFields, int &CRID)
int version(const char *&versionString)
int initCRMult(int numCRNodes, const GlobalID *CRNodes, const int *CRFields, int &CRID)
int getEqnNumbers(GlobalID ID, int idType, int fieldID, int &numEqns, int *eqnNumbers)
int resetInitialGuess(double s=0.0)
int sumInElemRHS(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *elemLoad)
int sumIntoRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *rhsEntries)
int initElemBlock(GlobalID elemBlockID, int numElements, int numNodesPerElement, const int *numFieldsPerNode, const int *const *nodalFieldIDs, int numElemDofFieldsPerElement, const int *elemDOFFieldIDs, int interleaveStrategy)
int setSolveType(int solveType)
int getNumBlockActEqns(GlobalID blockID, int &numEqns) const
int loadComplete(bool applyBCs=true, bool globalAssemble=true)
int getBlockNodeIDList(GlobalID elemBlockID, int numNodes, GlobalID *nodeIDs)
int getBlockElemSolution(GlobalID elemBlockID, int numElems, const GlobalID *elemIDs, int &numElemDOFPerElement, double *results)
int initElem(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn)
int getCRMultIDList(int numMultCRs, int *multIDs)
std::vector< double * > rhsScalars_
void needParametersAbort(const char *name)
int setCurrentRHS(int rhsID)
std::vector< fei::SharedPtr< LinearSystemCore > > lscArray_
std::vector< int > matrixIDs_
bool initPhaseIsComplete_
int getNumEqnsPerElement(GlobalID blockID, int &numEqns) const
SNL_FEI_Structure * problemStructure_
int getBlockElemIDList(GlobalID elemBlockID, int numElems, GlobalID *elemIDs)
int cumulative_cpu_times(double &initTime, double &loadTime, double &solveTime, double &solnReturnTime)
int putBlockElemSolution(GlobalID elemBlockID, int numElems, const GlobalID *elemIDs, int dofPerElem, const double *estimates)
int putNodalFieldData(int fieldID, int numNodes, const GlobalID *nodeIDs, const double *nodeData)
int parameters(int numParams, const char *const *paramStrings)
int sumIntoMatrixDiagonal(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *coefficients)
int index_current_filter_
int initFields(int numFields, const int *fieldSizes, const int *fieldIDs, const int *fieldTypes=NULL)
std::vector< double > matScalars_
void setDebugOutput(const char *path, const char *name)
SNL_FEI_Structure & getProblemStructure()
fei::SharedPtr< LibraryWrapper > wrapper_
int getNumCRMultipliers(int &numMultCRs)
int getNumNodesPerElement(GlobalID blockID, int &nodesPerElem) const
fei::SharedPtr< LinearSystemCore > linSysCore_
int putIntoRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *rhsEntries)
int loadCRPen(int CRID, int numCRNodes, const GlobalID *CRNodes, const int *CRFields, const double *CRWeights, double CRValue, double penValue)
int getCRMultipliers(int numCRs, const int *CRIDs, double *multipliers)
int getNumBlockElements(GlobalID blockID, int &numElems) const
bool internalFEIsAllocated_
int resetMatrix(double s=0.0)
int initSharedNodes(int numSharedNodes, const GlobalID *sharedNodeIDs, const int *numProcsPerNode, const int *const *sharingProcIDs)
int getNumSolnParams(GlobalID nodeID, int &numSolnParams) const
int getNumLocalNodes(int &numNodes)
int loadCRMult(int CRID, int numCRNodes, const GlobalID *CRNodes, const int *CRFields, const double *CRWeights, double CRValue)
void badParametersAbort(const char *name)
int getLocalNodeIDList(int &numNodes, GlobalID *nodeIDs, int lenNodeIDs)
int putCRMultipliers(int numMultCRs, const int *CRIDs, const double *multEstimates)
int setMatScalars(int numScalars, const int *IDs, const double *scalars)
FEI_Implementation & operator=(const FEI_Implementation &src)
std::ofstream * dbgFStreamPtr_
int resetRHSVector(double s=0.0)
int getFieldSize(int fieldID, int &numScalars)
int residualNorm(int whichNorm, int numFields, int *fieldIDs, double *norms)
int getNumBlockElemDOF(GlobalID blockID, int &DOFPerElem) const
std::vector< int * > rhsIDs_
int getNumBlockActNodes(GlobalID blockID, int &numNodes) const
void notAllocatedAbort(const char *name)
int setCurrentMatrix(int matID)