/usr/include/trilinos/fei_ConnectivityBlock.hpp is in libtrilinos-dev 10.4.0.dfsg-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | /*--------------------------------------------------------------------*/
/* Copyright 2005 Sandia Corporation. */
/* Under the terms of Contract DE-AC04-94AL85000, there is a */
/* non-exclusive license for use of this work by or on behalf */
/* of the U.S. Government. Export of this program may require */
/* a license from the United States Government. */
/*--------------------------------------------------------------------*/
#ifndef _fei_ConnectivityBlock_hpp_
#define _fei_ConnectivityBlock_hpp_
#include <fei_macros.hpp>
#include <map>
#include <vector>
namespace fei {
class Pattern;
/**
class to hold attributes of a connectivity-block (for example,
an element-block). This class can handle
connectivities for any kind of mesh-objects, not just elements,
though elements are of course the most common.
*/
class ConnectivityBlock {
public:
/** constructor */
ConnectivityBlock(int blockID,
fei::Pattern* pattern,
int numConnectivities);
/** constructor */
ConnectivityBlock(int blockID,
fei::Pattern* rowpattern, fei::Pattern* colpattern,
int numConnectivities);
/** constructor */
ConnectivityBlock(int numRowIDs,
const int* rowIDs,
const int* rowOffsets,
bool offsets_are_lengths = false);
/** constructor */
ConnectivityBlock(int fieldID,
int numRowIDs,
const int* rowIDs,
const int* rowOffsets,
bool offsets_are_lengths = false);
/** destructor */
virtual ~ConnectivityBlock();
/** get block-identifier */
int getBlockID() const { return(blockID_); }
/** get pattern that defines the layout of dofs in the
row-dimension for block's contributions */
const fei::Pattern* getRowPattern() const { return(pattern_); }
/** get pattern that defines the layout of dofs in the
row-dimension for block's contributions */
fei::Pattern* getRowPattern() { return(pattern_); }
/** get pattern that defines the layout of dofs in the
column-dimension for block's contributions. probably null
if this block is made up of symmetric contributions. */
const fei::Pattern* getColPattern() const { return(colPattern_); }
/** get pattern that defines the layout of dofs in the
column-dimension for block's contributions. probably null
if this block is made up of symmetric contributions. */
fei::Pattern* getColPattern() { return(colPattern_); }
/** get map of connectivity-ids with associated offsets
*/
const std::map<int,int>& getConnectivityIDs() const { return( connIDsOffsetMap_ ); }
/** get map of connectivity-ids with associated offsets
*/
std::map<int,int>& getConnectivityIDs() { return( connIDsOffsetMap_ ); }
/** get vector of connectivity-offsets. Only available if this
object was constructed using constructor 3 or 4. Power users only.
*/
std::vector<int>& getConnectivityOffsets()
{ return(connectivityOffsets_); }
/** get array of row-connectivities */
std::vector<Record<int>*>& getRowConnectivities()
{ return(connectivities_); }
/** get array of column-connectivities */
std::vector<Record<int>*>& getColConnectivities()
{ return(colConnectivities_); }
/** get row-connectivity for a specified ID */
const Record<int>*const* getRowConnectivity(int ID) const;
/** get column-connectivity for a specified ID */
const Record<int>*const* getColConnectivity(int ID) const;
/** get row-connectivity for a specified ID */
Record<int>** getRowConnectivity(int ID);
/** get column-connectivity for a specified ID */
Record<int>** getColConnectivity(int ID);
/** query whether block is symmetric */
bool isSymmetric() const { return( isSymmetric_ ); }
/** implementation detail for power-users */
void setIsDiagonal(bool flag) { isDiagonal_ = flag; }
/** implementation detail for power-users */
bool isDiagonal() const { return( isDiagonal_ ); }
/** query whether block has a field-id */
bool haveFieldID()
{ return( haveFieldID_ ); }
/** return block's field-id */
int fieldID()
{ return( fieldID_ ); }
private:
int blockID_;
fei::Pattern* pattern_;
fei::Pattern* colPattern_;
bool isSymmetric_;
bool isDiagonal_;
std::map<int,int> connIDsOffsetMap_;
std::vector<int> connectivityOffsets_;
int numRecordsPerConnectivity_;
std::vector<Record<int>*> connectivities_;
int numRecordsPerColConnectivity_;
std::vector<Record<int>*> colConnectivities_;
int fieldID_;
bool haveFieldID_;
};//class ConnectivityBlock
} //namespace fei
#endif // _fei_ConnectivityBlock_hpp_
|