9 #ifndef _fei_FEI_Impl_hpp_
10 #define _fei_FEI_Impl_hpp_
58 const char *
const* paramStrings);
68 const int *fieldSizes,
70 const int *fieldTypes=NULL);
74 int numNodesPerElement,
75 const int* numFieldsPerNode,
76 const int*
const* nodalFieldIDs,
77 int numElemDofFieldsPerElement,
78 const int* elemDOFFieldIDs,
79 int interleaveStrategy);
87 int offsetIntoSlaveField,
90 const int* masterFieldIDs,
91 const double* weights,
98 const int* numProcsPerNode,
99 const int *
const *sharingProcIDs);
103 const int *CRFieldIDs,
108 const int *CRFieldIDs,
129 const int* offsetsIntoField,
130 const double* prescribedValues);
135 const double *
const *alpha,
136 const double *
const *beta,
137 const double *
const *gamma);
142 const double*
const* elemStiffness,
143 const double* elemLoad,
149 const double*
const* elemStiffness,
155 const double* elemLoad);
160 const int* CRFieldIDs,
161 const double* CRWeights,
167 const int* CRFieldIDs,
168 const double* CRWeights,
178 const double* coefficients);
186 const double* coefficients);
190 const double* scalars);
194 const double* scalars);
197 bool globalAssemble=
true);
206 int solve(
int& status);
213 int version(
const char*& versionString);
219 double& solnReturnTime);
245 int& numElemDOFPerElement,
257 double *multipliers);
274 const double *estimates);
281 const double *estimates);
288 const double *estimates);
293 const double* multEstimates);
431 const double* nodeData);
440 const double* rhsEntries,
451 std::vector<fei::SharedPtr<LibraryWrapper> >
wrapper_;
457 std::vector<fei::SharedPtr<fei::Factory> >
factory_;
463 std::vector<fei::SharedPtr<fei::Vector> >
b_;
464 std::vector<fei::SharedPtr<fei::Matrix> >
A_;
int setSolveType(int solveType)
int getNumLocalNodes(int &numNodes)
int putNodalFieldData(int fieldID, int numNodes, const GlobalID *nodeIDs, const double *nodeData)
int sumIntoRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *coefficients)
int getNumCRMultipliers(int &numMultCRs)
std::vector< double > rhsScalars_
int iterations(int &itersTaken) const
int version(const char *&versionString)
int fillNodeset(int blockID) const
std::vector< fei::SharedPtr< fei::Vector > > b_
int setIDLists(int numMatrices, const int *matrixIDs, int numRHSs, const int *rhsIDs)
fei::SharedPtr< fei::MatrixGraph > matGraph_
fei::SharedPtr< fei::LinearSystem > getLinearSystem()
int getBlockElemSolution(GlobalID elemBlockID, int numElems, const GlobalID *elemIDs, int &numElemDOFPerElement, double *results)
int getParameters(int &numParams, char **¶mStrings)
int initCRPen(int numCRNodes, const GlobalID *CRNodeIDs, const int *CRFieldIDs, int &CRID)
fei::SharedPtr< fei::Vector > x_
int aggregateSystem_LinSysCore()
std::vector< int > iwork_
int initFields(int numFields, const int *fieldSizes, const int *fieldIDs, const int *fieldTypes=NULL)
int getFieldSize(int fieldID, int &numScalars)
int getNumSolnParams(GlobalID nodeID, int &numSolnParams) const
int getBlockNodeIDList(GlobalID elemBlockID, int numNodes, GlobalID *nodeIDs)
fei::SharedPtr< fei::VectorSpace > rowSpace_
int putBlockFieldNodeSolution(GlobalID elemBlockID, int fieldID, int numNodes, const GlobalID *nodeIDs, const double *estimates)
int setCurrentMatrix(int matrixID)
int getCRMultipliers(int numCRs, const int *CRIDs, double *multipliers)
int cumulative_cpu_times(double &initTime, double &loadTime, double &solveTime, double &solnReturnTime)
int setCurrentRHS(int rhsID)
int putBlockNodeSolution(GlobalID elemBlockID, int numNodes, const GlobalID *nodeIDs, const int *offsets, const double *estimates)
bool any_blocks_have_elem_dof_
int parameters(int numParams, const char *const *paramStrings)
int resetSystem(double s=0.0)
int loadComplete(bool applyBCs=true, bool globalAssemble=true)
int getBlockNodeSolution(GlobalID elemBlockID, int numNodes, const GlobalID *nodeIDs, int *offsets, double *results)
int getEqnNumbers(GlobalID ID, int idType, int fieldID, int &numEqns, int *eqnNumbers)
int getNodalSolution(int numNodes, const GlobalID *nodeIDs, int *offsets, double *results)
int initElemBlock(GlobalID elemBlockID, int numElements, int numNodesPerElement, const int *numFieldsPerNode, const int *const *nodalFieldIDs, int numElemDofFieldsPerElement, const int *elemDOFFieldIDs, int interleaveStrategy)
std::vector< int > rhsIDs_
int putCRMultipliers(int numMultCRs, const int *CRIDs, const double *multEstimates)
int getCRMultIDList(int numMultCRs, int *multIDs)
int getNumNodesPerElement(GlobalID blockID, int &nodesPerElem) const
int sumInElem(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *const *elemStiffness, const double *elemLoad, int elemFormat)
int initSharedNodes(int numSharedNodes, const GlobalID *sharedNodeIDs, const int *numProcsPerNode, const int *const *sharingProcIDs)
std::vector< fei::SharedPtr< LibraryWrapper > > wrapper_
int index_current_rhs_row_
int getNumBlockElemDOF(GlobalID blockID, int &DOFPerElem) const
int sumInElemMatrix(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *const *elemStiffness, int elemFormat)
int putBlockElemSolution(GlobalID elemBlockID, int numElems, const GlobalID *elemIDs, int dofPerElem, const double *estimates)
void basic_initializations()
int resetInitialGuess(double s=0.0)
int resetRHSVector(double s=0.0)
int setMatScalars(int numScalars, const int *IDs, const double *scalars)
int initSlaveVariable(GlobalID slaveNodeID, int slaveFieldID, int offsetIntoSlaveField, int numMasterNodes, const GlobalID *masterNodeIDs, const int *masterFieldIDs, const double *weights, double rhsValue)
int getNumElemBlocks(int &numElemBlocks) const
fei::SharedPtr< fei::LinearSystem > linSys_
int getNumBlockActNodes(GlobalID blockID, int &numNodes) const
int residualNorm(int whichNorm, int numFields, int *fieldIDs, double *norms)
std::map< int, int > block_dof_per_elem_
std::vector< fei::SharedPtr< fei::Matrix > > A_
int inputRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *rhsEntries, bool sumInto)
int putIntoRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *coefficients)
std::vector< int > matrixIDs_
std::vector< double > matScalars_
int resetMatrix(double s=0.0)
std::vector< fei::SharedPtr< fei::Factory > > factory_
int loadCRPen(int CRPenID, int numCRNodes, const GlobalID *CRNodeIDs, const int *CRFieldIDs, const double *CRWeights, double CRValue, double penValue)
int getNumBlockActEqns(GlobalID blockID, int &numEqns) const
int initCRMult(int numCRNodes, const GlobalID *CRNodeIDs, const int *CRFieldIDs, int &CRID)
int loadCRMult(int CRMultID, int numCRNodes, const GlobalID *CRNodeIDs, const int *CRFieldIDs, const double *CRWeights, double CRValue)
int getNumEqnsPerElement(GlobalID blockID, int &numEqns) const
int getNumBlockElements(GlobalID blockID, int &numElems) const
int initElem(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn)
int getBlockFieldNodeSolution(GlobalID elemBlockID, int fieldID, int numNodes, const GlobalID *nodeIDs, double *results)
int loadNodeBCs(int numNodes, const GlobalID *nodeIDs, int fieldID, const int *offsetsIntoField, const double *prescribedValues)
int setRHSScalars(int numScalars, const int *IDs, const double *scalars)
int getLocalNodeIDList(int &numNodes, GlobalID *nodeIDs, int lenNodeIDs)
int loadElemBCs(int numElems, const GlobalID *elemIDs, int fieldID, const double *const *alpha, const double *const *beta, const double *const *gamma)
int getBlockElemIDList(GlobalID elemBlockID, int numElems, GlobalID *elemIDs)
int getNodalFieldSolution(int fieldID, int numNodes, const GlobalID *nodeIDs, double *results)
bool aggregateSystemFormed_
bool initPhaseIsComplete_
int sumInElemRHS(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *elemLoad)
FEI_Impl(fei::SharedPtr< LibraryWrapper > wrapper, MPI_Comm comm, int masterRank=0)