FEI Package Browser (Single Doxygen Collection)  Version of the Day
SNL_FEI_Structure.hpp
Go to the documentation of this file.
1 #ifndef _SNL_FEI_Structure_hpp_
2 #define _SNL_FEI_Structure_hpp_
3 
4 /*--------------------------------------------------------------------*/
5 /* Copyright 2005 Sandia Corporation. */
6 /* Under the terms of Contract DE-AC04-94AL85000, there is a */
7 /* non-exclusive license for use of this work by or on behalf */
8 /* of the U.S. Government. Export of this program may require */
9 /* a license from the United States Government. */
10 /*--------------------------------------------------------------------*/
11 
12 #include <fei_fwd.hpp>
13 #include <fei_defs.h>
14 #include <fei_constants.hpp>
15 #include "fei_TemplateUtils.hpp"
17 #include <fei_EqnBuffer.hpp>
18 #include <fei_FieldDofMap.hpp>
19 #include <fei_CSRMat.hpp>
20 #include <fei_CSVec.hpp>
21 
22 #include <fei_NodeCommMgr.hpp>
23 #include <fei_NodeDatabase.hpp>
24 #include <fei_NodeDescriptor.hpp>
25 
26 #include <fei_Lookup.hpp>
27 
43 class SNL_FEI_Structure : public Lookup {
44  public:
54 
56  virtual ~SNL_FEI_Structure();
57 
73  int parameters(int numParams, const char*const* paramStrings);
74 
75  int initFields(int numFields, const int* fieldSizes, const int* fieldIDs,
76  const int* fieldTypes = NULL);
77 
78  int initElemBlock(GlobalID elemBlockID,
79  int numElements,
80  int numNodesPerElement,
81  const int* numFieldsPerNode,
82  const int* const* nodalFieldIDs,
83  int numElemDofFieldsPerElement,
84  const int* elemDofFieldIDs,
85  int interleaveStrategy);
86 
87  int initElem(GlobalID elemBlockID,
88  GlobalID elemID,
89  const GlobalID* elemConn);
90 
91  int initSlaveVariable(GlobalID slaveNodeID,
92  int slaveFieldID,
93  int offsetIntoSlaveField,
94  int numMasterNodes,
95  const GlobalID* masterNodeIDs,
96  const int* masterFieldIDs,
97  const double* weights,
98  double rhsValue);
99 
100  int deleteMultCRs();
101 
102  int initSharedNodes(int numSharedNodes,
103  const GlobalID *sharedNodeIDs,
104  const int* numProcsPerNode,
105  const int *const *sharingProcIDs);
106 
107  // constraint relation initialization
108  //- lagrange multiplier formulation
109  int initCRMult(int numCRNodes,
110  const GlobalID* CRNodes,
111  const int *CRFields,
112  int& CRID);
113 
114  // - penalty function formulation
115  int initCRPen(int numCRNodes,
116  const GlobalID* CRNodes,
117  const int *CRFields,
118  int& CRID);
119 
120  int initComplete(bool generateGraph = true);
121 
122  const std::vector<int>& getFieldIDs() const
123  { return fieldIDs_; }
124 
126  const int* getFieldIDsPtr()
127  {
128  int len = fieldDatabase_->size();
129  workarray_.resize(len*2);
130  fei::copyToArrays<std::map<int,int> >(*fieldDatabase_, len,
131  &workarray_[0],
132  &workarray_[0]+len);
133  return( &workarray_[0] );
134  }
135 
137  const int* getFieldSizesPtr()
138  {
139  int len = fieldDatabase_->size();
140  workarray_.resize(len*2);
141  fei::copyToArrays<std::map<int,int> >(*fieldDatabase_, len,
142  &workarray_[0],
143  &workarray_[0]+len);
144  return( &workarray_[0]+len );
145  }
146 
148  int getNumFields() { return( fieldDatabase_->size() ); };
149 
151  int getFieldSize(int fieldID)
152  {
153  std::map<int,int>::const_iterator
154  f_iter = fieldDatabase_->find(fieldID);
155 
156  return(f_iter != fieldDatabase_->end() ? (*f_iter).second : -1);
157  }
158 
160  { return fieldDofMap_; }
161 
163  bool isInLocalElement(int nodeNumber);
164 
165  const int* getNumFieldsPerNode(GlobalID blockID);
166 
167  const int* const* getFieldIDsTable(GlobalID blockID);
168 
173  int getEqnNumber(int nodeNumber, int fieldID);
174 
181  int getOwnerProcForEqn(int eqn);
182 
183 
185  //now the element-block functions
186 
187  int getNumElemBlocks() {return(blockIDs_.size());};
188  const GlobalID* getElemBlockIDs() {return(&blockIDs_[0]);};
189 
190  void getElemBlockInfo(GlobalID blockID,
191  int& interleaveStrategy, int& lumpingStrategy,
192  int& numElemDOF, int& numElements,
193  int& numNodesPerElem, int& numEqnsPerElem);
194 
195  int addBlock(GlobalID blockID);
196 
197  int getBlockDescriptor(GlobalID blockID, BlockDescriptor*& block);
198 
202  int getBlockDescriptor_index(int index, BlockDescriptor*& block);
203 
205  int getIndexOfBlock(GlobalID blockID) const;
207  int getBlockID(unsigned index) const
208  {
209  if (index < blockIDs_.size()) return blockIDs_[index];
210  return -1;
211  }
212 
213  int allocateBlockConnectivity(GlobalID blockID);
215 
217 
218  void getScatterIndices_ID(GlobalID blockID, GlobalID elemID,
219  int interleaveStrategy,
220  int* scatterIndices);
221 
222  void getScatterIndices_index(int blockIndex, int elemIndex,
223  int interleaveStrategy,
224  int* scatterIndices);
225 
226  int getBlkScatterIndices_index(int blockIndex,
227  int elemIndex,
228  int* scatterIndices);
229 
230  void getScatterIndices_ID(GlobalID blockID, GlobalID elemID,
231  int interleaveStrategy,
232  int* scatterIndices,
233  int* blkScatterIndices,
234  int* blkSizes);
235 
236  void getScatterIndices_index(int blockIndex, int elemIndex,
237  int interleaveStrategy,
238  int* scatterIndices,
239  int* blkScatterIndices,
240  int* blkSizes);
241 
242 
244  //now the shared-node lookup functions from the Lookup interface.
245 
247 
248  const int* getSharedNodeNumbers() {
249  return(&(nodeCommMgr_->getSharedNodeNumbers())[0]);
250  };
251 
252  const int* getSharedNodeProcs(int nodeNumber) {
253  int index = nodeCommMgr_->getSharedNodeIndex_num(nodeNumber);
254  if (index < 0) return(NULL);
255  return(&(nodeCommMgr_->getSharedNodeProcs(index))[0]);
256  };
257 
258  int getNumSharingProcs(int nodeNumber) {
259  int index = nodeCommMgr_->getSharedNodeIndex_num(nodeNumber);
260  if (index < 0) return(-1);
261  return(nodeCommMgr_->getSharedNodeProcs(index).size());
262  };
263 
264  int getNumSubdomains(int nodeNumber) {
265  const NodeDescriptor* node = NULL;
266  int err = nodeDatabase_->getNodeWithNumber(nodeNumber, node);
267  if (err != 0) return(-1);
268  GlobalID nodeID = node->getGlobalNodeID();
269  return(nodeCommMgr_->getSharedNodeNumSubdomains(nodeID));
270  }
271 
272  int* getSubdomainList(int nodeNumber) {
273  const NodeDescriptor* node = NULL;
274  int err = nodeDatabase_->getNodeWithNumber(nodeNumber, node);
275  if (err != 0) return(NULL);
276  GlobalID nodeID = node->getGlobalNodeID();
277  return(&(*(nodeCommMgr_->getSharedNodeSubdomainList(nodeID)))[0]);
278 
279  }
280 
281  int translateToReducedNodeNumber(int nodeNumber, int proc);
282 
284 
286  int getAssociatedNodeNumber(int eqnNumber)
287  {
288  int eqn = translateFromReducedEqn(eqnNumber);
289  int nodeNumber = nodeDatabase_->getAssociatedNodeNumber(eqn);
290  int reducedNodeNumber = -1;
291  if (nodeNumber >= 0) {
292  reducedNodeNumber = translateToReducedNodeNumber(nodeNumber, localProc_);
293  }
294  return( reducedNodeNumber );
295  }
296 
298  int getAssociatedFieldID(int eqnNumber)
299  {
300  int eqn = translateFromReducedEqn(eqnNumber);
301  return( nodeDatabase_->getAssociatedFieldID(eqn) );
302  }
303 
304 
306  //now the point-eqn to block-eqn queries...
307 
308  bool isExactlyBlkEqn(int ptEqn) {
309  return(blkEqnMapper_->isExactlyBlkEqn(ptEqn));
310  };
311 
312  int ptEqnToBlkEqn(int ptEqn) {
313  return(blkEqnMapper_->eqnToBlkEqn(ptEqn));
314  };
315 
316  int getOffsetIntoBlkEqn(int blkEqn, int ptEqn) {
317  return(blkEqnMapper_->getBlkEqnOffset(blkEqn, ptEqn));
318  };
319 
320  int getBlkEqnSize(int blkEqn) {
321  return(blkEqnMapper_->getBlkEqnSize(blkEqn));
322  }
324 
325 
326  int getNumActiveNodes() {return(nodeDatabase_->getNodeIDs().size());}
327 
329 
330  std::map<GlobalID,int>& getActiveNodeIDList()
331  { return( nodeDatabase_->getNodeIDs() ); }
332 
333  std::vector<int>& getGlobalNodeOffsets() {return(globalNodeOffsets_);}
334  std::vector<int>& getGlobalEqnOffsets() {return(globalEqnOffsets_);}
335  std::vector<int>& getGlobalBlkEqnOffsets() {return(globalBlkEqnOffsets_);}
336 
339 
340  void initializeEqnCommMgr();
341 
342  void getEqnInfo(int& numGlobalEqns, int& numLocalEqns,
343  int& localStartRow, int& localEndRow);
344 
345  int getEqnNumbers(GlobalID ID, int idType, int fieldID,
346  int& numEqns, int* eqnNumbers);
347 
348  int getEqnNumbers(int numIDs, const GlobalID* IDs,
349  int idType, int fieldID,
350  int& numEqns, int* eqnNumbers);
351 
352  void getEqnBlkInfo(int& numGlobalEqnBlks, int& numLocalEqnBlks,
353  int& localBlkOffset);
354 
356 
357  void destroyMatIndices();
358 
359  int getNumMultConstRecords() {return(multCRs_.size());};
360 
361  std::map<GlobalID,snl_fei::Constraint<GlobalID>*>&
363  {return(multCRs_);};
364 
366  {
367  std::map<int,snl_fei::Constraint<GlobalID>*>::iterator
368  cr_iter = multCRs_.find(CRID);
369  int returncode = -1;
370  if (cr_iter != multCRs_.end()) {
371  multCR = (*cr_iter).second;
372  returncode = 0;
373  }
374 
375  return( returncode );
376  }
377 
378  int getNumPenConstRecords() {return(penCRs_.size());}
379  std::map<GlobalID,snl_fei::Constraint<GlobalID>*>&
381  { return(penCRs_); }
382 
384  {
385  std::map<int,snl_fei::Constraint<GlobalID>*>::iterator
386  cr_iter = penCRs_.find(CRID);
387  int returncode = -1;
388  if (cr_iter != penCRs_.end()) {
389  penCR = (*cr_iter).second;
390  returncode = 0;
391  }
392 
393  return( returncode );
394  }
395 
396  void addSlaveVariable(SlaveVariable* svar) {slaveVars_->push_back(svar);}
397 
398  int calculateSlaveEqns(MPI_Comm comm);
399 
401 
403 
404  int numSlaveEquations() { return(numSlvs_); }
405 
408  bool isSlaveEqn(int eqn);
409 
418  bool translateToReducedEqn(int eqn, int& reducedEqn);
419 
424  int translateToReducedEqns(EqnCommMgr& eqnCommMgr);
425 
430  int translateToReducedEqns(EqnBuffer& eqnBuf);
431 
436  int translateToReducedEqns(ProcEqns& procEqns);
437 
443 
449  int translateFromReducedEqn(int reducedEqn);
450 
457  int getMasterEqnNumbers(int slaveEqn, std::vector<int>*& masterEqns);
458 
465  int getMasterEqnCoefs(int slaveEqn, std::vector<double>*& masterCoefs);
466 
474  int getMasterEqnRHS(int slaveEqn, double& rhsValue);
475 
476  int getNumGlobalEqns() { return( numGlobalEqns_ ); }
477  int getNumLocalEqns() { return( numLocalEqns_ ); }
478  int getFirstLocalEqn() { return( localStartRow_ ); }
479  int getLastLocalEqn() { return( localEndRow_ ); }
480 
482  int getLastReducedEqn() { return( reducedEndRow_ ); }
483 
488 
490 
491  int getMatrixRowLengths(std::vector<int>& rowLengths);
492  int getMatrixStructure(int** colIndices, std::vector<int>& rowLengths);
493 
494  int getMatrixStructure(int** ptColIndices, std::vector<int>& ptRowLengths,
495  int** blkColIndices, int* blkIndices_1D,
496  std::vector<int>& blkRowLengths,
497  std::vector<int>& numPtRowsPerBlkRow);
498 
499  static int gatherSlaveEqns(MPI_Comm comm,
500  EqnCommMgr* eqnCommMgr,
501  EqnBuffer* slaveEqns);
502 
503  static int removeCouplings(EqnBuffer& eqnbuf, int& levelsOfCoupling);
504 
505  int calcTotalNumElemDOF();
506  int calcNumMultCREqns();
507 
508  MPI_Comm getCommunicator() const { return( comm_ ); }
509 
510 #ifdef FEI_HAVE_IOSFWD
511  int setDbgOut(std::ostream& ostr, const char* path, const char* feiName);
512 #else
513  int setDbgOut(ostream& ostr, const char* path, const char* feiName);
514 #endif
515 
516  private:
517 
526 
527  int writeEqn2NodeMap();
528 
529  int getElemNodeDescriptors(int blockIndex, int elemIndex,
530  NodeDescriptor** nodes);
531 
532  int getNodeIndices_simple(NodeDescriptor** nodes, int numNodes,
533  int fieldID,
534  int* scatterIndices, int& offset);
535 
536  int getNodeIndices_simple(NodeDescriptor** nodes, int numNodes,
537  int fieldID,
538  int* scatterIndices, int& offset,
539  int* blkScatterIndices,
540  int* blkSizes, int& blkOffset);
541 
542  int getNodeMajorIndices(NodeDescriptor** nodes, int numNodes,
543  int** fieldIDs, int* fieldsPerNode,
544  int* scatterIndices, int& offset);
545 
546  int getNodeBlkIndices(NodeDescriptor** nodes, int numNodes,
547  int* scatterIndices, int& offset);
548 
549  int getNodeMajorIndices(NodeDescriptor** nodes, int numNodes,
550  int** fieldIDs, int* fieldsPerNode,
551  int* scatterIndices, int& offset,
552  int* blkScatterIndices,
553  int* blkSizes, int& blkOffset);
554 
555  int getNodeMajorIndices(NodeDescriptor** nodes, int numNodes,
556  std::vector<int>* fieldIDs,
557  std::vector<int>& fieldsPerNode,
558  std::vector<int>& scatterIndices);
559 
560  int getFieldMajorIndices(NodeDescriptor** nodes, int numNodes,
561  int** fieldIDs, int* fieldsPerNode,
562  int* scatterIndices, int& offset);
563 
564  int getFieldMajorIndices(NodeDescriptor** nodes, int numNodes,
565  std::vector<int>* fieldIDs,
566  std::vector<int>& fieldsPerNode,
567  std::vector<int>& scatterIndices);
568 
569  void calcGlobalEqnInfo(int numLocallyOwnedNodes,
570  int numLocalEqns,
571  int numLocalEqnBlks);
572 
573  int finalizeActiveNodes();
574  int finalizeNodeCommMgr();
575  bool activeNodesInitialized();
576 
577  int formMatrixStructure();
578 
580  int initMultCRStructure();
581  int initPenCRStructure();
582  int createMatrixPosition(int row, int col, const char* callingFunction);
583  int createMatrixPositions(int row, int numCols, int* cols,
584  const char* callingFunction);
586 
587  int createSymmEqnStructure(std::vector<int>& scatterIndices);
588  int createBlkSymmEqnStructure(std::vector<int>& scatterIndices);
589 
590  int storeElementScatterIndices(std::vector<int>& scatterIndices);
591  int storeElementScatterIndices_noSlaves(std::vector<int>& scatterIndices);
592  int storeElementScatterBlkIndices_noSlaves(std::vector<int>& scatterIndices);
593 
594  void storeLocalNodeIndices(NodeDescriptor& iNode, int iField,
595  NodeDescriptor& jNode, int jField);
596  void storeNodalColumnIndices(int eqn, NodeDescriptor& node,
597  int fieldID);
598  void storeNodalRowIndices(NodeDescriptor& node, int fieldID, int eqn);
599  void storeNodalSendIndex(NodeDescriptor& node, int fieldID, int col);
600  void storeNodalSendIndices(NodeDescriptor& iNode, int iField,
601  NodeDescriptor& jNode, int jField);
602 
604 
605  bool nodalEqnsAllSlaves(const NodeDescriptor* node, std::vector<int>& slaveEqns);
606 
608 
610 
611  void destroyBlockRoster();
612 
613 #ifdef FEI_HAVE_IOSFWD
614  std::ostream& dbgOut() { return( *dbgOStreamPtr_ ); }
615 #else
616  ostream& dbgOut() { return( *dbgOStreamPtr_ ); }
617 #endif
618 
619  void addCR(int CRID,
621  std::map<GlobalID,snl_fei::Constraint<GlobalID>* >& crDB);
622 
623  int setNodalEqnInfo();
624  void setElemDOFEqnInfo();
625  int setMultCREqnInfo();
626 
629 
631 
633 
634  std::vector<int> fieldIDs_;
635  std::vector<int> fieldSizes_;
636  std::map<int,int>* fieldDatabase_;
638  std::vector<int> workarray_;
639 
640  std::vector<GlobalID> blockIDs_;
641  std::vector<BlockDescriptor*> blocks_;
642  std::vector<ConnectivityTable*> connTables_;
643 
645 
647 
648  std::vector<int> globalNodeOffsets_;
649  std::vector<int> globalEqnOffsets_;
650  std::vector<int> globalBlkEqnOffsets_;
651 
652  std::vector<SlaveVariable*>* slaveVars_;
654  std::vector<int>* slvEqnNumbers_;
657  std::vector<int> globalNumNodesVanished_;
658  std::vector<int> localVanishedNodeNumbers_;
659 
663 
668 
672 
677  std::vector<int> rSlave_, cSlave_;
678  std::vector<NodeDescriptor*> work_nodePtrs_;
679 
682 
684 
692 
695 
698 
699  std::vector<int> workSpace_;
700 
702 
703  std::map<GlobalID, snl_fei::Constraint<GlobalID>* > multCRs_;
704 
705  std::map<GlobalID, snl_fei::Constraint<GlobalID>* > penCRs_;
706 
708 
709  std::string name_;
710 
713  std::string dbgPath_;
714 #ifdef FEI_HAVE_IOSFWD
715  std::ostream* dbgOStreamPtr_;
716 #else
717  ostream* dbgOStreamPtr_;
718 #endif
720 };
721 
722 #endif
723 
fei_NodeDescriptor.hpp
SNL_FEI_Structure::blockIDs_
std::vector< GlobalID > blockIDs_
Definition: SNL_FEI_Structure.hpp:640
SNL_FEI_Structure::calcTotalNumElemDOF
int calcTotalNumElemDOF()
Definition: SNL_FEI_Structure.cpp:2549
SNL_FEI_Structure::globalBlkEqnOffsets_
std::vector< int > globalBlkEqnOffsets_
Definition: SNL_FEI_Structure.hpp:650
SNL_FEI_Structure::getFieldSizesPtr
const int * getFieldSizesPtr()
Definition: SNL_FEI_Structure.hpp:137
SNL_FEI_Structure::getBlockConnectivity
ConnectivityTable & getBlockConnectivity(GlobalID blockID)
Definition: SNL_FEI_Structure.cpp:2896
SNL_FEI_Structure::getFirstLocalEqn
int getFirstLocalEqn()
Definition: SNL_FEI_Structure.hpp:478
SNL_FEI_Structure::reducedEqnCounter_
int reducedEqnCounter_
Definition: SNL_FEI_Structure.hpp:676
SNL_FEI_Structure::formMatrixStructure
int formMatrixStructure()
Definition: SNL_FEI_Structure.cpp:1081
NodeDescriptor::getGlobalNodeID
GlobalID getGlobalNodeID() const
Definition: fei_NodeDescriptor.hpp:49
SNL_FEI_Structure::getNumActiveNodes
int getNumActiveNodes()
Definition: SNL_FEI_Structure.hpp:326
SNL_FEI_Structure::initCRMult
int initCRMult(int numCRNodes, const GlobalID *CRNodes, const int *CRFields, int &CRID)
Definition: SNL_FEI_Structure.cpp:730
SNL_FEI_Structure::getIndexOfBlock
int getIndexOfBlock(GlobalID blockID) const
Definition: SNL_FEI_Structure.cpp:2847
SNL_FEI_Structure::initPenCRStructure
int initPenCRStructure()
Definition: SNL_FEI_Structure.cpp:1450
SNL_FEI_Structure::getMasterEqnCoefs
int getMasterEqnCoefs(int slaveEqn, std::vector< double > *&masterCoefs)
Definition: SNL_FEI_Structure.cpp:3724
fei_FieldDofMap.hpp
SNL_FEI_Structure::getFieldIDsTable
const int *const * getFieldIDsTable(GlobalID blockID)
Definition: SNL_FEI_Structure.cpp:287
SNL_FEI_Structure::getMasterEqnRHS
int getMasterEqnRHS(int slaveEqn, double &rhsValue)
Definition: SNL_FEI_Structure.cpp:3747
SNL_FEI_Structure::getNumLocalEqns
int getNumLocalEqns()
Definition: SNL_FEI_Structure.hpp:477
SNL_FEI_Structure::localVanishedNodeNumbers_
std::vector< int > localVanishedNodeNumbers_
Definition: SNL_FEI_Structure.hpp:658
SNL_FEI_Structure::getEqnInfo
void getEqnInfo(int &numGlobalEqns, int &numLocalEqns, int &localStartRow, int &localEndRow)
Definition: SNL_FEI_Structure.cpp:3207
SNL_FEI_Structure::getFirstReducedEqn
int getFirstReducedEqn()
Definition: SNL_FEI_Structure.hpp:481
SlaveVariable
Definition: fei_SlaveVariable.hpp:16
SNL_FEI_Structure::assembleReducedStructure
int assembleReducedStructure()
Definition: SNL_FEI_Structure.cpp:2043
SNL_FEI_Structure::gatherSlaveEqns
static int gatherSlaveEqns(MPI_Comm comm, EqnCommMgr *eqnCommMgr, EqnBuffer *slaveEqns)
SNL_FEI_Structure::ptEqnToBlkEqn
int ptEqnToBlkEqn(int ptEqn)
Definition: SNL_FEI_Structure.hpp:312
SNL_FEI_Structure::activeNodesInitialized
bool activeNodesInitialized()
fei_Lookup.hpp
SNL_FEI_Structure::getNumLocalEqnBlks
int getNumLocalEqnBlks()
Definition: SNL_FEI_Structure.hpp:485
SNL_FEI_Structure::csrKid
fei::CSRMat csrKid
Definition: SNL_FEI_Structure.hpp:675
SNL_FEI_Structure::getOffsetIntoBlkEqn
int getOffsetIntoBlkEqn(int blkEqn, int ptEqn)
Definition: SNL_FEI_Structure.hpp:316
fei::FillableMat
Definition: fei_FillableMat.hpp:20
SNL_FEI_Structure::penCRs_
std::map< GlobalID, snl_fei::Constraint< GlobalID > * > penCRs_
Definition: SNL_FEI_Structure.hpp:705
NodeCommMgr::getSharedNodeSubdomainList
std::vector< int > * getSharedNodeSubdomainList(GlobalID nodeID)
Definition: fei_NodeCommMgr.cpp:91
SNL_FEI_Structure::slvCommMgr_
EqnCommMgr * slvCommMgr_
Definition: SNL_FEI_Structure.hpp:662
SNL_FEI_Structure::addBlock
int addBlock(GlobalID blockID)
Definition: SNL_FEI_Structure.cpp:2805
SNL_FEI_Structure::slaveMatrix_
fei::FillableMat * slaveMatrix_
Definition: SNL_FEI_Structure.hpp:656
SNL_FEI_Structure::highestSlv_
int highestSlv_
Definition: SNL_FEI_Structure.hpp:655
SNL_FEI_Structure::csrKdd
fei::CSRMat csrKdd
Definition: SNL_FEI_Structure.hpp:675
SNL_FEI_Structure::createBlkSymmEqnStructure
int createBlkSymmEqnStructure(std::vector< int > &scatterIndices)
Definition: SNL_FEI_Structure.cpp:1814
SNL_FEI_Structure::blocks_
std::vector< BlockDescriptor * > blocks_
Definition: SNL_FEI_Structure.hpp:641
SNL_FEI_Structure::cSlave_
std::vector< int > cSlave_
Definition: SNL_FEI_Structure.hpp:677
SNL_FEI_Structure::getGlobalEqnOffsets
std::vector< int > & getGlobalEqnOffsets()
Definition: SNL_FEI_Structure.hpp:334
SNL_FEI_Structure::getNumSharingProcs
int getNumSharingProcs(int nodeNumber)
Definition: SNL_FEI_Structure.hpp:258
ConnectivityTable
Definition: fei_ConnectivityTable.hpp:22
SNL_FEI_Structure::fieldSizes_
std::vector< int > fieldSizes_
Definition: SNL_FEI_Structure.hpp:635
fei_CSVec.hpp
SNL_FEI_Structure::debugOutput_
bool debugOutput_
Definition: SNL_FEI_Structure.hpp:712
SNL_FEI_Structure::getSlaveDependencies
fei::FillableMat * getSlaveDependencies()
Definition: SNL_FEI_Structure.hpp:400
SNL_FEI_Structure::reducedStartRow_
int reducedStartRow_
Definition: SNL_FEI_Structure.hpp:673
NodeCommMgr::getSharedNodeProcs
std::vector< int > & getSharedNodeProcs(int index)
Definition: fei_NodeCommMgr.hpp:68
SNL_FEI_Structure::getFieldDofMap
fei::FieldDofMap< int > & getFieldDofMap()
Definition: SNL_FEI_Structure.hpp:159
SNL_FEI_Structure::initSharedNodes
int initSharedNodes(int numSharedNodes, const GlobalID *sharedNodeIDs, const int *numProcsPerNode, const int *const *sharingProcIDs)
Definition: SNL_FEI_Structure.cpp:668
snl_fei::PointBlockMap
Definition: snl_fei_PointBlockMap.hpp:23
fei_fwd.hpp
SNL_FEI_Structure::storeElementScatterIndices
int storeElementScatterIndices(std::vector< int > &scatterIndices)
Definition: SNL_FEI_Structure.cpp:1928
SNL_FEI_Structure::localEndRow_
int localEndRow_
Definition: SNL_FEI_Structure.hpp:667
SNL_FEI_Structure::numGlobalEqnBlks_
int numGlobalEqnBlks_
Definition: SNL_FEI_Structure.hpp:686
SNL_FEI_Structure::getSharedNodeNumbers
const int * getSharedNodeNumbers()
Definition: SNL_FEI_Structure.hpp:248
SNL_FEI_Structure::firstLocalNodeNumber_
int firstLocalNodeNumber_
Definition: SNL_FEI_Structure.hpp:693
SNL_FEI_Structure::nodeCommMgr_
NodeCommMgr * nodeCommMgr_
Definition: SNL_FEI_Structure.hpp:660
SNL_FEI_Structure::setDbgOutCalled_
bool setDbgOutCalled_
Definition: SNL_FEI_Structure.hpp:719
SNL_FEI_Structure::getBlkEqnMapper
snl_fei::PointBlockMap & getBlkEqnMapper()
Definition: SNL_FEI_Structure.hpp:355
SNL_FEI_Structure::numLocalMultCRs_
int numLocalMultCRs_
Definition: SNL_FEI_Structure.hpp:671
SNL_FEI_Structure::parameters
int parameters(int numParams, const char *const *paramStrings)
Definition: SNL_FEI_Structure.cpp:147
SNL_FEI_Structure::destroyMatIndices
void destroyMatIndices()
Definition: SNL_FEI_Structure.cpp:263
SNL_FEI_Structure::numProcs_
int numProcs_
Definition: SNL_FEI_Structure.hpp:632
SNL_FEI_Structure::numGlobalEqns_
int numGlobalEqns_
Definition: SNL_FEI_Structure.hpp:664
SNL_FEI_Structure::SNL_FEI_Structure
SNL_FEI_Structure(MPI_Comm comm)
Definition: SNL_FEI_Structure.cpp:49
SNL_FEI_Structure::name_
std::string name_
Definition: SNL_FEI_Structure.hpp:709
SNL_FEI_Structure::getNumFields
int getNumFields()
Definition: SNL_FEI_Structure.hpp:148
NodeDatabase::getNodeWithNumber
int getNodeWithNumber(int nodeNumber, const NodeDescriptor *&node) const
Definition: fei_NodeDatabase.cpp:81
snl_fei_PointBlockMap.hpp
SNL_FEI_Structure::Kdi_
fei::FillableMat * Kdi_
Definition: SNL_FEI_Structure.hpp:674
SNL_FEI_Structure::finalizeNodeCommMgr
int finalizeNodeCommMgr()
Definition: SNL_FEI_Structure.cpp:3049
SNL_FEI_Structure::initComplete
int initComplete(bool generateGraph=true)
Definition: SNL_FEI_Structure.cpp:845
SNL_FEI_Structure::setElemDOFEqnInfo
void setElemDOFEqnInfo()
Definition: SNL_FEI_Structure.cpp:2768
SNL_FEI_Structure::destroyBlockRoster
void destroyBlockRoster()
Definition: SNL_FEI_Structure.cpp:247
SNL_FEI_Structure::getNumGlobalEqns
int getNumGlobalEqns()
Definition: SNL_FEI_Structure.hpp:476
SNL_FEI_Structure::dbgPath_
std::string dbgPath_
Definition: SNL_FEI_Structure.hpp:713
SNL_FEI_Structure::getFieldIDsPtr
const int * getFieldIDsPtr()
Definition: SNL_FEI_Structure.hpp:126
SNL_FEI_Structure::dbgOStreamPtr_
std::ostream * dbgOStreamPtr_
Definition: SNL_FEI_Structure.hpp:715
SNL_FEI_Structure::masterProc_
int masterProc_
Definition: SNL_FEI_Structure.hpp:632
SNL_FEI_Structure::globalNumNodesVanished_
std::vector< int > globalNumNodesVanished_
Definition: SNL_FEI_Structure.hpp:657
SNL_FEI_Structure::work_nodePtrs_
std::vector< NodeDescriptor * > work_nodePtrs_
Definition: SNL_FEI_Structure.hpp:678
SNL_FEI_Structure::findNodeDescriptor
NodeDescriptor & findNodeDescriptor(GlobalID nodeID)
Definition: SNL_FEI_Structure.cpp:1351
EqnCommMgr
Definition: fei_EqnCommMgr.hpp:104
SNL_FEI_Structure::getScatterIndices_index
void getScatterIndices_index(int blockIndex, int elemIndex, int interleaveStrategy, int *scatterIndices)
Definition: SNL_FEI_Structure.cpp:3852
fei_CSRMat.hpp
fei_TemplateUtils.hpp
SNL_FEI_Structure::finalizeActiveNodes
int finalizeActiveNodes()
Definition: SNL_FEI_Structure.cpp:2910
SNL_FEI_Structure::initElemBlockStructure
int initElemBlockStructure()
Definition: SNL_FEI_Structure.cpp:1150
SNL_FEI_Structure::storeNodalRowIndices
void storeNodalRowIndices(NodeDescriptor &node, int fieldID, int eqn)
Definition: SNL_FEI_Structure.cpp:1668
SNL_FEI_Structure::getNumLocalReducedEqnBlks
int getNumLocalReducedEqnBlks()
Definition: SNL_FEI_Structure.hpp:486
SNL_FEI_Structure::getLastLocalEqn
int getLastLocalEqn()
Definition: SNL_FEI_Structure.hpp:479
SNL_FEI_Structure::numLocalReducedRows_
int numLocalReducedRows_
Definition: SNL_FEI_Structure.hpp:673
SNL_FEI_Structure::getNumGlobalEqnBlks
int getNumGlobalEqnBlks()
Definition: SNL_FEI_Structure.hpp:484
SNL_FEI_Structure::comm_
MPI_Comm comm_
Definition: SNL_FEI_Structure.hpp:630
SNL_FEI_Structure::slaveEqns_
EqnBuffer * slaveEqns_
Definition: SNL_FEI_Structure.hpp:653
SNL_FEI_Structure::workarray_
std::vector< int > workarray_
Definition: SNL_FEI_Structure.hpp:638
SNL_FEI_Structure::getNumSubdomains
int getNumSubdomains(int nodeNumber)
Definition: SNL_FEI_Structure.hpp:264
SNL_FEI_Structure::localProc_
int localProc_
Definition: SNL_FEI_Structure.hpp:632
SNL_FEI_Structure::isExactlyBlkEqn
bool isExactlyBlkEqn(int ptEqn)
Definition: SNL_FEI_Structure.hpp:308
SNL_FEI_Structure::blkEqnMapper_
snl_fei::PointBlockMap * blkEqnMapper_
Definition: SNL_FEI_Structure.hpp:701
SNL_FEI_Structure::fieldDatabase_
std::map< int, int > * fieldDatabase_
Definition: SNL_FEI_Structure.hpp:636
SNL_FEI_Structure::structureFinalized_
bool structureFinalized_
Definition: SNL_FEI_Structure.hpp:680
SNL_FEI_Structure::getEqnCommMgr
EqnCommMgr & getEqnCommMgr()
Definition: SNL_FEI_Structure.hpp:338
SNL_FEI_Structure::getGlobalNodeOffsets
std::vector< int > & getGlobalNodeOffsets()
Definition: SNL_FEI_Structure.hpp:333
BlockDescriptor
Definition: fei_BlockDescriptor.hpp:67
SNL_FEI_Structure::generateGraph_
bool generateGraph_
Definition: SNL_FEI_Structure.hpp:681
SNL_FEI_Structure::numLocalElemDOF_
int numLocalElemDOF_
Definition: SNL_FEI_Structure.hpp:670
SNL_FEI_Structure::getBlkEqnSize
int getBlkEqnSize(int blkEqn)
Definition: SNL_FEI_Structure.hpp:320
snl_fei::Constraint
Definition: snl_fei_Constraint.hpp:23
SNL_FEI_Structure::translateToReducedEqn
bool translateToReducedEqn(int eqn, int &reducedEqn)
Definition: SNL_FEI_Structure.cpp:3657
SNL_FEI_Structure::isSlaveEqn
bool isSlaveEqn(int eqn)
Definition: SNL_FEI_Structure.cpp:3644
SNL_FEI_Structure
Definition: SNL_FEI_Structure.hpp:43
fei_NodeCommMgr.hpp
SNL_FEI_Structure::translateToReducedEqns
int translateToReducedEqns(EqnCommMgr &eqnCommMgr)
Definition: SNL_FEI_Structure.cpp:2096
SNL_FEI_Structure::checkSharedNodes_
bool checkSharedNodes_
Definition: SNL_FEI_Structure.hpp:707
SNL_FEI_Structure::getNumElemBlocks
int getNumElemBlocks()
Definition: SNL_FEI_Structure.hpp:187
SNL_FEI_Structure::initSlaveVariable
int initSlaveVariable(GlobalID slaveNodeID, int slaveFieldID, int offsetIntoSlaveField, int numMasterNodes, const GlobalID *masterNodeIDs, const int *masterFieldIDs, const double *weights, double rhsValue)
Definition: SNL_FEI_Structure.cpp:589
SNL_FEI_Structure::getElemNodeDescriptors
int getElemNodeDescriptors(int blockIndex, int elemIndex, NodeDescriptor **nodes)
Definition: SNL_FEI_Structure.cpp:3976
NodeDatabase::getNodeIDs
std::map< GlobalID, int > & getNodeIDs()
Definition: fei_NodeDatabase.hpp:83
SNL_FEI_Structure::lowestSlv_
int lowestSlv_
Definition: SNL_FEI_Structure.hpp:655
SNL_FEI_Structure::getLastReducedEqn
int getLastReducedEqn()
Definition: SNL_FEI_Structure.hpp:482
SNL_FEI_Structure::initCRPen
int initCRPen(int numCRNodes, const GlobalID *CRNodes, const int *CRFields, int &CRID)
Definition: SNL_FEI_Structure.cpp:775
SNL_FEI_Structure::storeLocalNodeIndices
void storeLocalNodeIndices(NodeDescriptor &iNode, int iField, NodeDescriptor &jNode, int jField)
Definition: SNL_FEI_Structure.cpp:1592
SNL_FEI_Structure::getEqnBlkInfo
void getEqnBlkInfo(int &numGlobalEqnBlks, int &numLocalEqnBlks, int &localBlkOffset)
Definition: SNL_FEI_Structure.cpp:3307
SNL_FEI_Structure::nodeDatabase_
NodeDatabase * nodeDatabase_
Definition: SNL_FEI_Structure.hpp:644
NodeDatabase::getAssociatedNodeNumber
int getAssociatedNodeNumber(int eqnNumber)
Definition: fei_NodeDatabase.cpp:344
NodeCommMgr::getSharedNodeIndex_num
int getSharedNodeIndex_num(int nodeNumber)
Definition: fei_NodeCommMgr.cpp:505
NodeDatabase::getAssociatedFieldID
int getAssociatedFieldID(int eqnNumber)
Definition: fei_NodeDatabase.cpp:380
SNL_FEI_Structure::initFields
int initFields(int numFields, const int *fieldSizes, const int *fieldIDs, const int *fieldTypes=NULL)
Definition: SNL_FEI_Structure.cpp:361
SNL_FEI_Structure::numLocalEqnBlks_
int numLocalEqnBlks_
Definition: SNL_FEI_Structure.hpp:687
SNL_FEI_Structure::~SNL_FEI_Structure
virtual ~SNL_FEI_Structure()
Definition: SNL_FEI_Structure.cpp:191
EqnBuffer
Definition: fei_EqnBuffer.hpp:21
SNL_FEI_Structure::getMatrixStructure
int getMatrixStructure(int **colIndices, std::vector< int > &rowLengths)
Definition: SNL_FEI_Structure.cpp:1213
SNL_FEI_Structure::createSymmEqnStructure
int createSymmEqnStructure(std::vector< int > &scatterIndices)
Definition: SNL_FEI_Structure.cpp:1699
SNL_FEI_Structure::getMasterEqnNumbers
int getMasterEqnNumbers(int slaveEqn, std::vector< int > *&masterEqns)
Definition: SNL_FEI_Structure.cpp:3701
NodeCommMgr
Definition: fei_NodeCommMgr.hpp:37
SNL_FEI_Structure::getNumPenConstRecords
int getNumPenConstRecords()
Definition: SNL_FEI_Structure.hpp:378
SNL_FEI_Structure::setMultCREqnInfo
int setMultCREqnInfo()
Definition: SNL_FEI_Structure.cpp:2460
SNL_FEI_Structure::setDbgOut
int setDbgOut(std::ostream &ostr, const char *path, const char *feiName)
Definition: SNL_FEI_Structure.cpp:227
SNL_FEI_Structure::eqnCommMgr_
EqnCommMgr * eqnCommMgr_
Definition: SNL_FEI_Structure.hpp:661
SNL_FEI_Structure::numSlaveEquations
int numSlaveEquations()
Definition: SNL_FEI_Structure.hpp:404
SNL_FEI_Structure::getBlockDescriptor_index
int getBlockDescriptor_index(int index, BlockDescriptor *&block)
Definition: SNL_FEI_Structure.cpp:2854
SNL_FEI_Structure::sysBlkMatIndices_
fei::ctg_set< int > * sysBlkMatIndices_
Definition: SNL_FEI_Structure.hpp:696
SNL_FEI_Structure::getNodeMajorIndices
int getNodeMajorIndices(NodeDescriptor **nodes, int numNodes, int **fieldIDs, int *fieldsPerNode, int *scatterIndices, int &offset)
Definition: SNL_FEI_Structure.cpp:4055
SNL_FEI_Structure::writeEqn2NodeMap
int writeEqn2NodeMap()
Definition: SNL_FEI_Structure.cpp:2489
snl_fei::PointBlockMap::getBlkEqnOffset
int getBlkEqnOffset(int blkEqn, int ptEqn)
Definition: snl_fei_PointBlockMap.cpp:198
SNL_FEI_Structure::globalNodeOffsets_
std::vector< int > globalNodeOffsets_
Definition: SNL_FEI_Structure.hpp:648
fei_NodeDatabase.hpp
SNL_FEI_Structure::slaveVars_
std::vector< SlaveVariable * > * slaveVars_
Definition: SNL_FEI_Structure.hpp:652
SNL_FEI_Structure::storeElementScatterBlkIndices_noSlaves
int storeElementScatterBlkIndices_noSlaves(std::vector< int > &scatterIndices)
Definition: SNL_FEI_Structure.cpp:2005
fei::FieldDofMap< int >
SNL_FEI_Structure::getMatrixRowLengths
int getMatrixRowLengths(std::vector< int > &rowLengths)
Definition: SNL_FEI_Structure.cpp:1200
SNL_FEI_Structure::getBlockDescriptor
int getBlockDescriptor(GlobalID blockID, BlockDescriptor *&block)
Definition: SNL_FEI_Structure.cpp:2830
SNL_FEI_Structure::outputLevel_
int outputLevel_
Definition: SNL_FEI_Structure.hpp:711
ProcEqns
Definition: fei_ProcEqns.hpp:27
SNL_FEI_Structure::deleteMultCRs
int deleteMultCRs()
Definition: SNL_FEI_Structure.cpp:657
SNL_FEI_Structure::getAssociatedNodeNumber
int getAssociatedNodeNumber(int eqnNumber)
Definition: SNL_FEI_Structure.hpp:286
SNL_FEI_Structure::fieldIDs_
std::vector< int > fieldIDs_
Definition: SNL_FEI_Structure.hpp:634
SNL_FEI_Structure::storeNodalSendIndices
void storeNodalSendIndices(NodeDescriptor &iNode, int iField, NodeDescriptor &jNode, int jField)
Definition: SNL_FEI_Structure.cpp:1559
SNL_FEI_Structure::numLocalReducedEqnBlks_
int numLocalReducedEqnBlks_
Definition: SNL_FEI_Structure.hpp:688
GlobalID
int GlobalID
Definition: fei_defs.h:60
SNL_FEI_Structure::getBlockID
int getBlockID(unsigned index) const
Definition: SNL_FEI_Structure.hpp:207
SNL_FEI_Structure::getNumMultConstRecords
int getNumMultConstRecords()
Definition: SNL_FEI_Structure.hpp:359
SNL_FEI_Structure::isInLocalElement
bool isInLocalElement(int nodeNumber)
Definition: SNL_FEI_Structure.cpp:811
SNL_FEI_Structure::getNodeCommMgr
NodeCommMgr & getNodeCommMgr()
Definition: SNL_FEI_Structure.hpp:337
SNL_FEI_Structure::getElemBlockIDs
const GlobalID * getElemBlockIDs()
Definition: SNL_FEI_Structure.hpp:188
snl_fei::PointBlockMap::isExactlyBlkEqn
bool isExactlyBlkEqn(int ptEqn)
Definition: snl_fei_PointBlockMap.cpp:210
SNL_FEI_Structure::storeNodalSendIndex
void storeNodalSendIndex(NodeDescriptor &node, int fieldID, int col)
Definition: SNL_FEI_Structure.cpp:1530
SNL_FEI_Structure::reducedEndRow_
int reducedEndRow_
Definition: SNL_FEI_Structure.hpp:673
SNL_FEI_Structure::Kdd_
fei::FillableMat * Kdd_
Definition: SNL_FEI_Structure.hpp:674
SNL_FEI_Structure::getNumSharedNodes
int getNumSharedNodes()
Definition: SNL_FEI_Structure.hpp:246
NodeDescriptor
Definition: fei_NodeDescriptor.hpp:36
SNL_FEI_Structure::Kid_
fei::FillableMat * Kid_
Definition: SNL_FEI_Structure.hpp:674
SNL_FEI_Structure::getScatterIndices_ID
void getScatterIndices_ID(GlobalID blockID, GlobalID elemID, int interleaveStrategy, int *scatterIndices)
Definition: SNL_FEI_Structure.cpp:3767
SNL_FEI_Structure::getNodeIndices_simple
int getNodeIndices_simple(NodeDescriptor **nodes, int numNodes, int fieldID, int *scatterIndices, int &offset)
Definition: SNL_FEI_Structure.cpp:4004
SNL_FEI_Structure::getOwnerProcForEqn
int getOwnerProcForEqn(int eqn)
Definition: SNL_FEI_Structure.cpp:347
NodeCommMgr::getSharedNodeNumSubdomains
int getSharedNodeNumSubdomains(GlobalID nodeID)
Definition: fei_NodeCommMgr.cpp:76
SNL_FEI_Structure::getSubdomainList
int * getSubdomainList(int nodeNumber)
Definition: SNL_FEI_Structure.hpp:272
SNL_FEI_Structure::fieldDofMap_
fei::FieldDofMap< int > fieldDofMap_
Definition: SNL_FEI_Structure.hpp:637
SNL_FEI_Structure::findNode
NodeDescriptor * findNode(GlobalID nodeID)
Definition: SNL_FEI_Structure.cpp:1369
SNL_FEI_Structure::getNodeBlkIndices
int getNodeBlkIndices(NodeDescriptor **nodes, int numNodes, int *scatterIndices, int &offset)
Definition: SNL_FEI_Structure.cpp:4106
SNL_FEI_Structure::createMatrixPosition
int createMatrixPosition(int row, int col, const char *callingFunction)
Definition: SNL_FEI_Structure.cpp:2211
SNL_FEI_Structure::blockMatrix_
bool blockMatrix_
Definition: SNL_FEI_Structure.hpp:685
SNL_FEI_Structure::multCRs_
std::map< GlobalID, snl_fei::Constraint< GlobalID > * > multCRs_
Definition: SNL_FEI_Structure.hpp:703
SNL_FEI_Structure::connTables_
std::vector< ConnectivityTable * > connTables_
Definition: SNL_FEI_Structure.hpp:642
SNL_FEI_Structure::initializeBlkEqnMapper
int initializeBlkEqnMapper()
Definition: SNL_FEI_Structure.cpp:2291
SNL_FEI_Structure::dbgOut
std::ostream & dbgOut()
Definition: SNL_FEI_Structure.hpp:614
fei_constants.hpp
SNL_FEI_Structure::addSlaveVariable
void addSlaveVariable(SlaveVariable *svar)
Definition: SNL_FEI_Structure.hpp:396
SNL_FEI_Structure::initializeEqnCommMgr
void initializeEqnCommMgr()
Definition: SNL_FEI_Structure.cpp:3141
SNL_FEI_Structure::numLocalEqns_
int numLocalEqns_
Definition: SNL_FEI_Structure.hpp:665
SNL_FEI_Structure::getNodeDatabase
NodeDatabase & getNodeDatabase()
Definition: SNL_FEI_Structure.hpp:328
SNL_FEI_Structure::translateToReducedNodeNumber
int translateToReducedNodeNumber(int nodeNumber, int proc)
Definition: SNL_FEI_Structure.cpp:3291
SNL_FEI_Structure::getAssociatedFieldID
int getAssociatedFieldID(int eqnNumber)
Definition: SNL_FEI_Structure.hpp:298
SNL_FEI_Structure::getNumFieldsPerNode
const int * getNumFieldsPerNode(GlobalID blockID)
Definition: SNL_FEI_Structure.cpp:277
snl_fei::PointBlockMap::eqnToBlkEqn
int eqnToBlkEqn(int eqn) const
Definition: snl_fei_PointBlockMap.cpp:121
SNL_FEI_Structure::addCR
void addCR(int CRID, snl_fei::Constraint< GlobalID > *&cr, std::map< GlobalID, snl_fei::Constraint< GlobalID > * > &crDB)
Definition: SNL_FEI_Structure.cpp:4357
SNL_FEI_Structure::setNodalEqnInfo
int setNodalEqnInfo()
Definition: SNL_FEI_Structure.cpp:2721
SNL_FEI_Structure::sysMatIndices_
fei::ctg_set< int > * sysMatIndices_
Definition: SNL_FEI_Structure.hpp:683
SNL_FEI_Structure::allocateBlockConnectivity
int allocateBlockConnectivity(GlobalID blockID)
Definition: SNL_FEI_Structure.cpp:2865
fei_defs.h
SNL_FEI_Structure::getCommunicator
MPI_Comm getCommunicator() const
Definition: SNL_FEI_Structure.hpp:508
SNL_FEI_Structure::localReducedBlkOffset_
int localReducedBlkOffset_
Definition: SNL_FEI_Structure.hpp:690
SNL_FEI_Structure::tmpMat1_
fei::CSRMat tmpMat1_
Definition: SNL_FEI_Structure.hpp:675
SNL_FEI_Structure::getElemBlockInfo
void getElemBlockInfo(GlobalID blockID, int &interleaveStrategy, int &lumpingStrategy, int &numElemDOF, int &numElements, int &numNodesPerElem, int &numEqnsPerElem)
Definition: SNL_FEI_Structure.cpp:297
MPI_Comm
#define MPI_Comm
Definition: fei_mpi.h:56
SNL_FEI_Structure::globalMaxBlkSize_
int globalMaxBlkSize_
Definition: SNL_FEI_Structure.hpp:691
fei::ctg_set< int >
SNL_FEI_Structure::nodalEqnsAllSlaves
bool nodalEqnsAllSlaves(const NodeDescriptor *node, std::vector< int > &slaveEqns)
Definition: SNL_FEI_Structure.cpp:1329
SNL_FEI_Structure::numLocalNodalEqns_
int numLocalNodalEqns_
Definition: SNL_FEI_Structure.hpp:669
SNL_FEI_Structure::calculateSlaveEqns
int calculateSlaveEqns(MPI_Comm comm)
Definition: SNL_FEI_Structure.cpp:3317
SNL_FEI_Structure::getMultConstRecords
std::map< GlobalID, snl_fei::Constraint< GlobalID > * > & getMultConstRecords()
Definition: SNL_FEI_Structure.hpp:362
SNL_FEI_Structure::calcGlobalEqnInfo
void calcGlobalEqnInfo(int numLocallyOwnedNodes, int numLocalEqns, int numLocalEqnBlks)
Definition: SNL_FEI_Structure.cpp:2580
SNL_FEI_Structure::workSpace_
std::vector< int > workSpace_
Definition: SNL_FEI_Structure.hpp:699
SNL_FEI_Structure::numGlobalNodes_
int numGlobalNodes_
Definition: SNL_FEI_Structure.hpp:694
SNL_FEI_Structure::translateFromReducedEqn
int translateFromReducedEqn(int reducedEqn)
Definition: SNL_FEI_Structure.cpp:3680
SNL_FEI_Structure::localStartRow_
int localStartRow_
Definition: SNL_FEI_Structure.hpp:666
SNL_FEI_Structure::csrD
fei::CSRMat csrD
Definition: SNL_FEI_Structure.hpp:675
SNL_FEI_Structure::destroyConnectivityTables
void destroyConnectivityTables()
Definition: SNL_FEI_Structure.cpp:254
SNL_FEI_Structure::initMultCRStructure
int initMultCRStructure()
Definition: SNL_FEI_Structure.cpp:1377
SNL_FEI_Structure::getSharedNodeProcs
const int * getSharedNodeProcs(int nodeNumber)
Definition: SNL_FEI_Structure.hpp:252
SNL_FEI_Structure::calcNumMultCREqns
int calcNumMultCREqns()
Definition: SNL_FEI_Structure.cpp:2569
SNL_FEI_Structure::tmpMat2_
fei::CSRMat tmpMat2_
Definition: SNL_FEI_Structure.hpp:675
SNL_FEI_Structure::activeNodesInitialized_
bool activeNodesInitialized_
Definition: SNL_FEI_Structure.hpp:646
SNL_FEI_Structure::csrKdi
fei::CSRMat csrKdi
Definition: SNL_FEI_Structure.hpp:675
SNL_FEI_Structure::getEqnNumber
int getEqnNumber(int nodeNumber, int fieldID)
Definition: SNL_FEI_Structure.cpp:322
SNL_FEI_Structure::matIndicesDestroyed_
bool matIndicesDestroyed_
Definition: SNL_FEI_Structure.hpp:697
SNL_FEI_Structure::reducedRHSCounter_
int reducedRHSCounter_
Definition: SNL_FEI_Structure.hpp:676
SNL_FEI_Structure::initElemBlock
int initElemBlock(GlobalID elemBlockID, int numElements, int numNodesPerElement, const int *numFieldsPerNode, const int *const *nodalFieldIDs, int numElemDofFieldsPerElement, const int *elemDofFieldIDs, int interleaveStrategy)
Definition: SNL_FEI_Structure.cpp:409
SNL_FEI_Structure::rSlave_
std::vector< int > rSlave_
Definition: SNL_FEI_Structure.hpp:677
SNL_FEI_Structure::getBlkScatterIndices_index
int getBlkScatterIndices_index(int blockIndex, int elemIndex, int *scatterIndices)
Definition: SNL_FEI_Structure.cpp:3832
SNL_FEI_Structure::getActiveNodeIDList
std::map< GlobalID, int > & getActiveNodeIDList()
Definition: SNL_FEI_Structure.hpp:330
SNL_FEI_Structure::initElem
int initElem(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn)
Definition: SNL_FEI_Structure.cpp:517
Lookup
Definition: fei_Lookup.hpp:40
SNL_FEI_Structure::getNumLocalReducedEqns
int getNumLocalReducedEqns()
Definition: SNL_FEI_Structure.hpp:489
SNL_FEI_Structure::globalEqnOffsets_
std::vector< int > globalEqnOffsets_
Definition: SNL_FEI_Structure.hpp:649
SNL_FEI_Structure::getEqnNumbers
int getEqnNumbers(GlobalID ID, int idType, int fieldID, int &numEqns, int *eqnNumbers)
Definition: SNL_FEI_Structure.cpp:3217
snl_fei::PointBlockMap::getBlkEqnSize
int getBlkEqnSize(int blkEqn)
Definition: snl_fei_PointBlockMap.cpp:106
SNL_FEI_Structure::numSlvs_
int numSlvs_
Definition: SNL_FEI_Structure.hpp:655
SNL_FEI_Structure::slvEqnNumbers_
std::vector< int > * slvEqnNumbers_
Definition: SNL_FEI_Structure.hpp:654
SNL_FEI_Structure::getFieldMajorIndices
int getFieldMajorIndices(NodeDescriptor **nodes, int numNodes, int **fieldIDs, int *fieldsPerNode, int *scatterIndices, int &offset)
Definition: SNL_FEI_Structure.cpp:4234
SNL_FEI_Structure::createMatrixPositions
int createMatrixPositions(int row, int numCols, int *cols, const char *callingFunction)
Definition: SNL_FEI_Structure.cpp:2250
NodeDatabase
Definition: fei_NodeDatabase.hpp:66
SNL_FEI_Structure::getFieldSize
int getFieldSize(int fieldID)
Definition: SNL_FEI_Structure.hpp:151
fei::CSRMat
Definition: fei_CSRMat.hpp:21
SNL_FEI_Structure::operator=
SNL_FEI_Structure & operator=(const SNL_FEI_Structure &src)
SNL_FEI_Structure::setNumNodesAndEqnsPerBlock
int setNumNodesAndEqnsPerBlock()
Definition: SNL_FEI_Structure.cpp:3083
SNL_FEI_Structure::removeCouplings
static int removeCouplings(EqnBuffer &eqnbuf, int &levelsOfCoupling)
Definition: SNL_FEI_Structure.cpp:3530
SNL_FEI_Structure::getFieldIDs
const std::vector< int > & getFieldIDs() const
Definition: SNL_FEI_Structure.hpp:122
NodeCommMgr::getNumSharedNodes
size_t getNumSharedNodes()
Definition: fei_NodeCommMgr.hpp:44
SNL_FEI_Structure::localBlkOffset_
int localBlkOffset_
Definition: SNL_FEI_Structure.hpp:689
NodeCommMgr::getSharedNodeNumbers
std::vector< int > & getSharedNodeNumbers()
Definition: fei_NodeCommMgr.hpp:47
SNL_FEI_Structure::getGlobalBlkEqnOffsets
std::vector< int > & getGlobalBlkEqnOffsets()
Definition: SNL_FEI_Structure.hpp:335
SNL_FEI_Structure::getMultConstRecord
int getMultConstRecord(int CRID, snl_fei::Constraint< GlobalID > *&multCR)
Definition: SNL_FEI_Structure.hpp:365
SNL_FEI_Structure::translateMatToReducedEqns
int translateMatToReducedEqns(fei::CSRMat &mat)
Definition: SNL_FEI_Structure.cpp:2149
SNL_FEI_Structure::getGlobalMaxBlkSize
int getGlobalMaxBlkSize()
Definition: SNL_FEI_Structure.hpp:487
SNL_FEI_Structure::getPenConstRecords
std::map< GlobalID, snl_fei::Constraint< GlobalID > * > & getPenConstRecords()
Definition: SNL_FEI_Structure.hpp:380
SNL_FEI_Structure::storeNodalColumnIndices
void storeNodalColumnIndices(int eqn, NodeDescriptor &node, int fieldID)
Definition: SNL_FEI_Structure.cpp:1632
SNL_FEI_Structure::getSlaveEqns
EqnBuffer * getSlaveEqns()
Definition: SNL_FEI_Structure.hpp:402
SNL_FEI_Structure::storeElementScatterIndices_noSlaves
int storeElementScatterIndices_noSlaves(std::vector< int > &scatterIndices)
Definition: SNL_FEI_Structure.cpp:1967
fei_EqnBuffer.hpp
SNL_FEI_Structure::getPenConstRecord
int getPenConstRecord(int CRID, snl_fei::Constraint< GlobalID > *&penCR)
Definition: SNL_FEI_Structure.hpp:383