Go to the documentation of this file.
18 #ifndef __DUDLEY_DOMAIN_H__
19 #define __DUDLEY_DOMAIN_H__
49 #include <dudley/Dudley.h>
50 #include <dudley/ElementFile.h>
51 #include <dudley/NodeFile.h>
52 #include <dudley/Util.h>
54 #include <escript/AbstractContinuousDomain.h>
55 #include <escript/FunctionSpace.h>
56 #include <escript/FunctionSpaceFactory.h>
59 #include <paso/SystemMatrixPattern.h>
61 #ifdef ESYS_HAVE_TRILINOS
62 #include <trilinoswrap/types.h>
71 typedef std::map<std::string, int>
TagMap;
104 const std::string& filename,
bool optimize);
115 const std::string& filename,
int numDim,
130 double l1,
bool optimize,
147 double l0,
double l1,
double l2,
252 void write(
const std::string& fileName)
const;
265 void dump(
const std::string& fileName)
const;
414 virtual std::pair<int,dim_t>
getDataShape(
int functionSpaceCode)
const;
429 virtual void setTagMap(
const std::string& name,
int tag);
436 virtual int getTag(
const std::string& name)
const;
465 int functionSpaceType_target)
const;
486 int functionSpaceType_target)
const;
514 virtual void setToIntegrals(std::vector<escript::DataTypes::real_t>& integrals,
516 virtual void setToIntegrals(std::vector<escript::DataTypes::cplx_t>& integrals,
539 bool symmetry)
const;
607 int column_blocksize,
627 #ifdef ESYS_HAVE_BOOST_NUMPY
628 boost::python::numpy::ndarray getNumpyX()
const;
630 boost::python::numpy::ndarray getConnectivityInfo()
const;
654 virtual void setTags(
int functionSpaceType,
int newTag,
670 virtual bool canTag(
int functionSpaceCode)
const;
681 const boost::python::tuple& filter)
const;
684 const std::vector<index_t>& nodeDistribution);
690 template<
typename Scalar>
694 #ifdef ESYS_HAVE_PASO
699 #ifdef ESYS_HAVE_TRILINOS
700 esys_trilinos::const_TrilinosGraph_ptr getTrilinosGraph()
const {
702 return m_nodes->getTrilinosGraph();
718 #ifdef ESYS_HAVE_PASO
730 const std::string& defaultType,
bool full)
const;
733 const std::string& defaultType)
const;
749 #ifdef ESYS_HAVE_PASO
759 #endif // __DUDLEY_DOMAIN_H__
index_t * globalDegreesOfFreedom
Definition: dudley/src/NodeFile.h:156
Definition: DudleyDomain.h:112
ElementFile * getFaceElements() const
returns a pointer to this domain's face element file
Definition: DudleyDomain.h:236
void setToIntegralsWorker(std::vector< Scalar > &integrals, const escript::Data &arg) const
Definition: DudleyDomain.cpp:1309
SolverOptions
Definition: SolverOptions.h:92
int MPI_Status
Definition: EsysMPI.h:44
Definition: SolverOptions.h:170
bool isComplex() const
True if components of this data are stored as complex.
Definition: Data.cpp:1164
virtual void MPIBarrier() const
If compiled for MPI then execute an MPI_Barrier, else do nothing.
Definition: DudleyDomain.cpp:99
escript::Data getSize() const
Returns the sample size (e.g. the diameter of elements, radius of particles).
Definition: FunctionSpace.cpp:294
int * Tag
Tag[i] is the tag of element i.
Definition: dudley/src/ElementFile.h:133
escript::JMPI m_mpiInfo
MPI information.
Definition: DudleyDomain.h:772
void updateTagList()
regenerates list of tags in use for node file and element files
Definition: DudleyDomain.cpp:2162
void printElementInfo(const ElementFile *e, const std::string &title, const std::string &defaultType, bool full) const
Definition: dudley/src/Mesh_write.cpp:50
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:76
#define REGISTER_ESCRIPT_EXCEPTION_TRANSLATORS
Definition: ExceptionTranslators.h:25
Definition: DudleyDomain.h:110
void Assemble_LumpedSystem(const NodeFile *nodes, const ElementFile *elements, escript::Data &lumpedMat, const escript::Data &D, bool useHRZ)
Definition: dudley/src/Assemble_LumpedSystem.cpp:38
virtual void interpolateAcross(escript::Data &target, const escript::Data &source) const
interpolates data given on source onto target where source and target are given on different domains.
Definition: DudleyDomain.cpp:1286
virtual std::pair< int, dim_t > getDataShape(int functionSpaceCode) const
Return the number of data points per sample, and the number of samples as a pair.
Definition: DudleyDomain.cpp:886
escript::Distribution_ptr nodesDistribution
MPI distribution of nodes.
Definition: dudley/src/NodeFile.h:163
Definition: DudleyException.h:37
int numDim
number of spatial dimensions
Definition: dudley/src/NodeFile.h:145
void createColoring(dim_t numNodes, const index_t *degreeOfFreedom)
Definition: ElementFile_createColoring.cpp:37
void Assemble_getNormal(const NodeFile *nodes, const ElementFile *elements, escript::Data &normals)
calculates the normal vector at quadrature points on face elements
Definition: dudley/src/Assemble_getNormal.cpp:38
virtual int getNumberOfTagsInUse(int functionSpaceCode) const
returns the number of tags in use and a pointer to an array with the number of tags in use
Definition: DudleyDomain.cpp:1989
this class holds a (distributed) stiffness matrix
Definition: SystemMatrix.h:60
void resolveNodeIds()
Definition: Mesh_resolveNodeIds.cpp:35
virtual bool onMasterProcessor() const
returns true if on MPI processor 0, else false
Definition: DudleyDomain.h:278
Definition: dudley/src/NodeFile.h:38
Definition: SolverOptions.h:125
void createNodeMappings(const IndexVector &dofDistribution, const IndexVector &nodeDistribution)
Definition: NodeFile_createMappings.cpp:236
void setCoordinates(const escript::Data &newX)
Definition: dudley/src/NodeFile.cpp:184
std::string m_name
domain description
Definition: DudleyDomain.h:774
virtual void addPDEToRHS(escript::Data &rhs, const escript::Data &X, const escript::Data &Y, const escript::Data &y, const escript::Data &y_contact, const escript::Data &y_dirac) const
adds a PDE onto the stiffness matrix mat and a rhs
Definition: DudleyDomain.cpp:991
void write(const std::string &fileName) const
writes the current mesh to a file with the given name in the fly file format.
Definition: dudley/src/Mesh_write.cpp:83
static escript::Domain_ptr load(const std::string &filename)
recovers domain from a dump file
Definition: dudley/src/DomainFactory.cpp:365
const index_t * borrowTargetDegreesOfFreedom() const
returns the mapping from local degrees of freedom to a target
Definition: dudley/src/NodeFile.h:233
SolverOptions getPackage() const
Definition: SolverOptions.cpp:471
FunctionSpace continuousFunction(const AbstractDomain &domain)
Create function space objects.
Definition: FunctionSpaceFactory.cpp:43
index_t * Nodes
Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element.
Definition: dudley/src/ElementFile.h:145
void setElements(ElementFile *elements)
replaces the element file by elements
Definition: DudleyDomain.cpp:106
An exception class for features which are not (yet) implemented.
Definition: EsysException.h:91
virtual int getContinuousFunctionCode() const
Return a continuous FunctionSpace code.
Definition: DudleyDomain.cpp:809
ElementFile * getElements() const
returns a pointer to this domain's element file
Definition: DudleyDomain.h:224
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:53
SystemMatrix_ptr borrowMassMatrix() const
Definition: Transport.h:69
ElementFile * m_elements
the table of the elements
Definition: DudleyDomain.h:778
SolverOptions getSolverMethod() const
Definition: SolverOptions.cpp:408
void randomFillArray(long seed, double *array, size_t n)
Definition: Random.cpp:74
Definition: DudleyDomain.h:111
virtual void setToX(escript::Data &arg) const
copies the location of data points into arg. The domain of arg has to match this. has to be implement...
Definition: DudleyDomain.cpp:1248
dim_t getNumNodes() const
returns the number of FEM nodes (on this rank)
Definition: dudley/src/NodeFile.h:203
int StatusType
Definition: AbstractDomain.h:65
dim_t createDenseDOFLabeling()
Definition: NodeFile_createDenseLabelings.cpp:34
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition: SystemMatrixPattern.h:52
void dump(const std::string &fileName) const
dumps the mesh to a file with the given name.
Definition: DudleyDomain.cpp:464
DudleyDomain(const std::string &name, int numDim, escript::JMPI jmpi)
Constructor for DudleyDomain.
Definition: DudleyDomain.cpp:68
Domain_ptr readGmsh(const string &fileName, int numDim, int, int, bool optimize)
reads a gmsh mesh file
Definition: dudley/src/DomainFactory.cpp:680
virtual int getMPIRank() const
returns the number MPI rank of this processor
Definition: DudleyDomain.h:266
void writeElementInfo(std::ostream &stream, const ElementFile *e, const std::string &defaultType) const
Definition: dudley/src/Mesh_write.cpp:32
virtual bool probeInterpolationOnDomain(int functionSpaceType_source, int functionSpaceType_target) const
True if interpolation is possible from source to target.
Definition: DudleyDomain.cpp:1640
int * Owner
Owner[i] contains the rank that owns element i.
Definition: dudley/src/ElementFile.h:136
boost::shared_ptr< AbstractDomain > Domain_ptr
Definition: AbstractDomain.h:53
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:56
void createMappings(const std::vector< index_t > &dofDistribution, const std::vector< index_t > &nodeDistribution)
Definition: DudleyDomain.cpp:124
virtual StatusType getStatus() const
Returns a status indicator of the domain. The status identifier should be unique over the live time i...
Definition: DudleyDomain.cpp:2061
void updateTagList()
Definition: dudley/src/NodeFile.h:238
void setTags(int newTag, const escript::Data &mask)
set tags to newTag where mask > 0
Definition: dudley/src/NodeFile.cpp:213
virtual std::string functionSpaceTypeAsString(int functionSpaceType) const
Return a description for the given function space type code.
Definition: DudleyDomain.cpp:773
Definition: SolverOptions.h:145
void Assemble_NodeCoordinates(const NodeFile *nodes, escript::Data &x)
copies node coordinates into expanded Data object x
Definition: dudley/src/Assemble_NodeCoordinates.cpp:39
void markNodes(std::vector< short > &mask, index_t offset) const
Definition: dudley/src/ElementFile.cpp:240
index_t getLastNode() const
Definition: dudley/src/NodeFile.h:188
bool isComplex() const
Definition: SolverOptions.cpp:637
virtual int getReducedFunctionOnContactZeroCode() const
Return a FunctionOnContactZero code with reduced integration order.
Definition: DudleyDomain.cpp:844
Definition: FunctionSpace.h:47
virtual bool operator==(const escript::AbstractDomain &other) const
comparison operators
Definition: DudleyDomain.cpp:1715
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:462
int status
Definition: dudley/src/NodeFile.h:176
SystemMatrixType
Definition: DudleyDomain.h:109
virtual int getDiracDeltaFunctionsCode() const
Return a DiracDeltaFunctions code.
Definition: DudleyDomain.cpp:869
const_Domain_ptr getDomain() const
Returns the function space domain.
Definition: FunctionSpace.cpp:102
#define MPI_INT
Definition: EsysMPI.h:45
static escript::Domain_ptr read(escript::JMPI mpiInfo, const std::string &filename, bool optimize)
reads a mesh from a fly file. For MPI parallel runs fans out the mesh to multiple processes.
Definition: dudley/src/Mesh_read.cpp:149
bool initialize(const std::string &simFile, const std::string &comment)
Definition: VisItControl.cpp:203
virtual void setToSize(escript::Data &out) const
copies the size of samples into out. The actual function space to be considered is defined by out....
Definition: DudleyDomain.cpp:1391
ElementFile * m_points
the table of points (treated as elements of dimension 0)
Definition: DudleyDomain.h:782
Domain_ptr rectangle_driver(const bp::list &args)
Definition: dudley/src/DomainFactory.cpp:753
void IndexList_insertElements(IndexList *index_list, const ElementFile *elements, const index_t *map)
Definition: dudley/src/IndexList.cpp:48
virtual void interpolateOnDomain(escript::Data &target, const escript::Data &source) const
interpolates data given on source onto target where source and target have to be given on the same do...
Definition: DudleyDomain.cpp:1057
escript::Data getNormal() const
Returns the surface normal field.
Definition: FunctionSpace.cpp:285
dim_t getNumDegreesOfFreedomTargets() const
returns the number of degrees of freedom targets (own and shared)
Definition: dudley/src/NodeFile.h:213
virtual int getFunctionCode() const
Return a function FunctionSpace code.
Definition: DudleyDomain.cpp:819
A suite of factory methods for creating 2D and 3D dudley domains.
Definition: dudley/src/Assemble.h:32
static FunctionSpaceNamesMapType m_functionSpaceTypeNames
Definition: DudleyDomain.h:790
virtual escript::Data getSize() const
returns the element size
Definition: DudleyDomain.cpp:1858
void Assemble_getSize(const NodeFile *nodes, const ElementFile *elements, escript::Data &size)
Definition: dudley/src/Assemble_getSize.cpp:37
Data represents a collection of datapoints.
Definition: Data.h:63
boost::shared_ptr< TransportProblem > TransportProblem_ptr
Definition: Transport.h:31
static escript::Domain_ptr create3D(dim_t NE0, dim_t NE1, dim_t NE2, double l0, double l1, double l2, bool optimize, escript::JMPI jmpi)
Creates a 3-dimensional rectangular domain.
Definition: Mesh_tet4.cpp:27
virtual int getFunctionOnContactOneCode() const
Return a FunctionOnContactOne code.
Definition: DudleyDomain.cpp:849
double l2(dim_t n, const double *x, escript::JMPI mpiinfo)
returns the global L2 norm of x
Definition: PasoUtil.cpp:527
SystemMatrix_ptr borrowTransportMatrix() const
Definition: Transport.h:64
ASM_ptr getPtr()
Returns smart pointer which is managing this object. If one does not exist yet it creates one.
Definition: AbstractSystemMatrix.cpp:54
ElementFile * getPoints() const
returns a pointer to this domain's point (nodal) element file
Definition: DudleyDomain.h:248
escript::Data getX() const
Returns the spatial locations of the data points.
Definition: FunctionSpace.cpp:228
index_t dim_t
Definition: DataTypes.h:90
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:68
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:125
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:71
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:173
Base class for escript system matrices.
Definition: AbstractSystemMatrix.h:55
Definition: dudley/src/ElementFile.h:64
std::vector< int > tagsInUse
vector of tags which are actually used
Definition: dudley/src/NodeFile.h:151
virtual void addPDEToSystem(escript::AbstractSystemMatrix &mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y, const escript::Data &d, const escript::Data &y, const escript::Data &d_contact, const escript::Data &y_contact, const escript::Data &d_dirac, const escript::Data &y_dirac) const
adds a PDE onto the stiffness matrix mat and a rhs
Definition: DudleyDomain.cpp:944
void optimizeDOFDistribution(IndexVector &distribution)
Definition: dudley/src/Mesh_optimizeDOFDistribution.cpp:76
std::map< std::string, int > TagMap
Definition: DudleyDomain.h:107
virtual escript::Data randomFill(const escript::DataTypes::ShapeType &shape, const escript::FunctionSpace &what, long seed, const boost::python::tuple &filter) const
Fills the data object with filtered random values.
Definition: DudleyDomain.cpp:2086
static escript::Domain_ptr create2D(dim_t NE0, dim_t NE1, double l0, double l1, bool optimize, escript::JMPI jmpi)
Creates a 2-dimensional rectangular domain.
Definition: Mesh_tri3.cpp:25
NodeFile * m_nodes
the table of the nodes
Definition: DudleyDomain.h:776
index_t * Id
Definition: dudley/src/ElementFile.h:130
virtual int getReducedContinuousFunctionCode() const
Return a continuous on reduced order nodes FunctionSpace code.
Definition: DudleyDomain.cpp:814
void markNodes(std::vector< short > &mask, index_t offset) const
Definition: DudleyDomain.cpp:150
void optimizeDOFLabeling(const IndexVector &distribution)
optimizes the labeling of the DOFs on each processor
Definition: Mesh_optimizeDOFLabeling.cpp:38
escript::ASM_ptr newSystemMatrix(int row_blocksize, const escript::FunctionSpace &row_functionspace, int column_blocksize, const escript::FunctionSpace &column_functionspace, int type) const
creates a stiffness matrix and initializes it with zeros
Definition: DudleyDomain.cpp:1456
virtual void setToIntegrals(std::vector< escript::DataTypes::real_t > &integrals, const escript::Data &arg) const
copies the integrals of the function defined by arg into integrals. arg has to be defined on this.
virtual int getReducedSolutionCode() const
Return a ReducedSolution code.
Definition: DudleyDomain.cpp:864
dim_t createDenseNodeLabeling(IndexVector &nodeDistribution, const IndexVector &dofDistribution)
TagMap m_tagMap
the tag map mapping names to tag keys
Definition: DudleyDomain.h:784
void Print_Mesh_Info(bool full=false) const
Definition: dudley/src/Mesh_write.cpp:139
bool isEmpty() const
Definition: Data.cpp:1136
virtual int getFunctionOnBoundaryCode() const
Return a function on boundary FunctionSpace code.
Definition: DudleyDomain.cpp:829
NodeFile * getNodes() const
returns a pointer to this domain's node file
Definition: DudleyDomain.h:212
std::map< int, std::string > FunctionSpaceNamesMapType
Definition: DudleyDomain.h:424
int getTagFromSampleNo(int functionSpaceType, index_t sampleNo) const
Return the tag key for the given sample number.
Definition: DudleyDomain.cpp:1897
virtual bool isCellOriented(int functionSpaceCode) const
returns true if data on this domain and a function space of type functionSpaceCode has to considered ...
Definition: DudleyDomain.cpp:1536
virtual int getTag(const std::string &name) const
Return the tag key for tag name.
Definition: DudleyDomain.cpp:1960
virtual const int * borrowListOfTagsInUse(int functionSpaceCode) const
Definition: DudleyDomain.cpp:2011
escript::ATP_ptr newTransportProblem(int blocksize, const escript::FunctionSpace &functionspace, int type) const
creates a TransportProblem
Definition: DudleyDomain.cpp:1509
void optimizeOrdering()
reorders the elements so that they are stored close to the nodes
Definition: dudley/src/ElementFile.cpp:176
virtual bool canTag(int functionSpaceCode) const
Checks if this domain allows tags for the specified functionSpace code.
Definition: DudleyDomain.cpp:2046
Definition: SolverOptions.h:142
Definition: Transport.h:35
virtual int getReducedFunctionCode() const
Return a function with reduced integration order FunctionSpace code.
Definition: DudleyDomain.cpp:824
void updateTagList()
Definition: dudley/src/ElementFile.h:187
static int getTypeId(int solver, int preconditioner, int package, bool symmetry, const escript::JMPI &mpi_info)
Definition: Transport.h:94
virtual int getTransportTypeId(int solver, int preconditioner, int package, bool symmetry) const
return the identifier of the transport problem type to be used when a particular solver,...
Definition: DudleyDomain.cpp:1792
void Assemble_integrate(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, std::vector< Scalar > &integrals)
integrates data on quadrature points
Definition: dudley/src/Assemble_integrate.cpp:41
index_t getFirstNode() const
Definition: dudley/src/NodeFile.h:183
dim_t getGlobalNumNodes() const
Definition: dudley/src/NodeFile.h:193
bool isSymmetric() const
Definition: SolverOptions.cpp:647
virtual void setToNormal(escript::Data &out) const
copies the surface normals at data points into out. The actual function space to be considered is def...
Definition: DudleyDomain.cpp:1267
virtual std::string showTagNames() const
Returns all tag names in a single string sperated by commas.
Definition: DudleyDomain.cpp:1976
Domain_ptr brick_driver(const bp::list &args)
Definition: dudley/src/DomainFactory.cpp:711
virtual bool ownSample(int fsCode, index_t id) const
Definition: DudleyDomain.cpp:1432
SolverOptions getPreconditioner() const
Definition: SolverOptions.cpp:352
bool isDirectSolver(const SolverOptions &method)
returns true if the passed solver method refers to a direct solver type
Definition: SolverOptions.h:155
virtual int getApproximationOrder(int functionSpaceCode) const
returns the approximation order used for a function space functionSpaceCode
Definition: DudleyDomain.cpp:2066
virtual int getMPISize() const
returns the number of processors used for this domain
Definition: DudleyDomain.h:260
virtual bool probeInterpolationAcross(int functionSpaceType_source, const escript::AbstractDomain &targetDomain, int functionSpaceType_target) const
determines whether interpolation from source to target is possible.
Definition: DudleyDomain.cpp:1709
void relabelNodes(const index_t *newNode, index_t offset)
Definition: dudley/src/ElementFile.cpp:250
int numLocalDim
dimension of the element e.g. 2 for a line in 2D or 3D
Definition: dudley/src/ElementFile.h:162
void RuntimeErrorTranslator(const EsysException &e)
Function which translates an EsysException into a python RuntimeError.
Definition: ExceptionTranslators.cpp:49
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:85
escript::Distribution_ptr dofDistribution
MPI distribution of degrees of freedom.
Definition: dudley/src/NodeFile.h:166
static escript::Domain_ptr readGmsh(escript::JMPI mpiInfo, const std::string &filename, int numDim, bool optimize)
reads a gmsh mesh file.
Definition: dudley/src/Mesh_readGmsh.cpp:28
void createColoring(const index_t *dofMap)
tries to reduce the number of colours for all element files
Definition: DudleyDomain.cpp:2146
virtual void setTagMap(const std::string &name, int tag)
sets a map from a clear tag name to a tag key
Definition: DudleyDomain.cpp:1955
virtual escript::JMPI getMPI() const
returns a reference to the MPI information wrapper for this domain
Definition: DudleyDomain.h:254
virtual void setNewX(const escript::Data &arg)
assigns new location to the domain
Definition: DudleyDomain.cpp:1419
void relabelElementNodes(const index_t *newNode, index_t offset)
Definition: DudleyDomain.cpp:157
Domain_ptr readMesh(const string &fileName, int, int, bool optimize)
reads a mesh from a fly file. For MPI parallel runs fans out the mesh to multiple processes.
Definition: dudley/src/DomainFactory.cpp:673
virtual dim_t getNumDataPointsGlobal() const
Return the number of data points summed across all MPI processes.
Definition: DudleyDomain.cpp:877
void setFunctionSpaceTypeNames()
Build the table of function space type names.
Definition: DudleyDomain.cpp:791
void setPoints(ElementFile *elements)
replaces the point element file by elements
Definition: DudleyDomain.cpp:118
virtual void addPDEToTransportProblem(escript::AbstractTransportProblem &tp, escript::Data &source, const escript::Data &M, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y, const escript::Data &d, const escript::Data &y, const escript::Data &d_contact, const escript::Data &y_contact, const escript::Data &d_dirac, const escript::Data &y_dirac) const
adds a PDE onto a transport problem
Definition: DudleyDomain.cpp:1014
virtual void addPDEToLumpedSystem(escript::Data &mat, const escript::Data &D, const escript::Data &d, const escript::Data &d_dirac, bool useHRZ) const
adds a PDE onto the lumped stiffness matrix matrix
Definition: DudleyDomain.cpp:977
Definition: SolverOptions.h:107
virtual int getSolutionCode() const
Return a Solution code.
Definition: DudleyDomain.cpp:859
virtual int getSystemMatrixTypeId(const boost::python::object &options) const
return the identifier of the matrix type to be used for the global stiffness matrix when a particular...
Definition: DudleyDomain.cpp:1732
int getTypeCode() const
Returns the function space type code.
Definition: FunctionSpace.cpp:94
MPI_Comm getMPIComm() const
get the communicator for this domain. Returns an integer on non-MPI builds Routine must be implemente...
Definition: DudleyDomain.h:280
void distributeByRankOfDOF(const IndexVector &distribution)
Definition: Mesh_distributeByRankOfDOF.cpp:38
DudleyDomain implements the AbstractContinuousDomain interface for the Dudley library.
Definition: DudleyDomain.h:121
FunctionSpace function(const AbstractDomain &domain)
Return a function FunctionSpace.
Definition: FunctionSpaceFactory.cpp:55
Data Vector(double value, const FunctionSpace &what, bool expanded)
Return a Data object containing vector data-points. ie: rank 1 data-points.
Definition: DataFactory.cpp:138
index_t * Id
Id[i] is the unique ID number of FEM node i.
Definition: dudley/src/NodeFile.h:147
virtual bool operator!=(const escript::AbstractDomain &other) const
Return true if given domains are not equal.
Definition: DudleyDomain.cpp:1727
void optimizeElementOrdering()
redistributes elements to minimize communication during assemblage
Definition: DudleyDomain.cpp:2154
static dim_t M
Definition: SparseMatrix_saveHB.cpp:50
virtual int getFunctionOnContactZeroCode() const
Return a FunctionOnContactZero code.
Definition: DudleyDomain.cpp:839
int * Tag
Tag[i] is the tag of node i.
Definition: dudley/src/NodeFile.h:149
virtual std::string getDescription() const
Return a description for this domain.
Definition: DudleyDomain.cpp:768
FunctionSpace functionOnBoundary(const AbstractDomain &domain)
Return a function on boundary FunctionSpace.
Definition: FunctionSpaceFactory.cpp:67
virtual bool supportsContactElements() const
Definition: DudleyDomain.h:713
void prepare(bool optimize)
prepares the mesh for further use
Definition: DudleyDomain.cpp:2100
int MPI_Comm
Definition: EsysMPI.h:41
index_t * Color
Definition: dudley/src/ElementFile.h:150
void setFaceElements(ElementFile *elements)
replaces the face element file by elements
Definition: DudleyDomain.cpp:112
Definition: DudleyDomain.h:113
virtual bool isValidTagName(const std::string &name) const
Returns true if name is a defined tag name.
Definition: DudleyDomain.cpp:1971
Base class for all escript domains.
Definition: AbstractDomain.h:62
virtual int getDim() const
Returns the spatial dimension of the domain.
Definition: DudleyDomain.h:429
void Assemble_PDE(const NodeFile *nodes, const ElementFile *elements, escript::ASM_ptr S, escript::Data &F, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: dudley/src/Assemble_PDE.cpp:122
static int getSystemMatrixTypeId(int solver, int preconditioner, int package, bool symmetry, const escript::JMPI &mpi_info)
Definition: SystemMatrix.cpp:545
virtual int getReducedFunctionOnBoundaryCode() const
Return a function on boundary with reduced integration order FunctionSpace code.
Definition: DudleyDomain.cpp:834
virtual void setToGradient(escript::Data &grad, const escript::Data &arg) const
copies the gradient of arg into grad. The actual function space to be considered for the gradient is ...
Definition: DudleyDomain.cpp:1344
Definition: escriptcore/src/IndexList.h:28
virtual bool isValidFunctionSpaceType(int functionSpaceType) const
Returns true if the given integer is a valid function space type for this domain.
Definition: DudleyDomain.cpp:784
const index_t * borrowGlobalNodesIndex() const
Definition: dudley/src/NodeFile.h:198
DataTypes::RealVectorType & getExpandedVectorReference(DataTypes::real_t dummy=0)
Ensures that the Data is expanded and returns its underlying vector Does not check for exclusive writ...
Definition: Data.cpp:5845
bool commonFunctionSpace(const std::vector< int > &fs, int &resultcode) const
given a vector of FunctionSpace typecodes, pass back a code which then can all be interpolated to.
Definition: DudleyDomain.cpp:1556
Definition: SolverOptions.h:116
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:45
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:79
void setTags(int newTag, const escript::Data &mask)
sets element tags to newTag where mask > 0
Definition: dudley/src/ElementFile.cpp:205
void expand()
Whatever the current Data type make this into a DataExpanded.
Definition: Data.cpp:1184
index_t * degreesOfFreedomId
Definition: dudley/src/NodeFile.h:172
virtual void setTags(int functionSpaceType, int newTag, const escript::Data &mask) const
assigns new tag newTag to all samples of functionspace with a positive value of mask for any its samp...
Definition: DudleyDomain.cpp:1927
virtual int getReducedFunctionOnContactOneCode() const
Return a FunctionOnContactOne code with reduced integration order.
Definition: DudleyDomain.cpp:854
dim_t getNumDegreesOfFreedom() const
returns the number of degrees of freedom (on this rank)
Definition: dudley/src/NodeFile.h:208
double * Coordinates
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Definition: dudley/src/NodeFile.h:158
std::vector< int > tagsInUse
array of tags which are actually used
Definition: dudley/src/ElementFile.h:139
An exception class that signals an invalid argument value.
Definition: EsysException.h:101
ElementTypeId etype
element type ID
Definition: dudley/src/ElementFile.h:165
virtual signed char preferredInterpolationOnDomain(int functionSpaceType_source, int functionSpaceType_target) const
Preferred direction of interpolation. If you really need to test for a particular direction,...
Definition: DudleyDomain.cpp:1698
ElementFile * m_faceElements
the table of face elements
Definition: DudleyDomain.h:780
AbstractContinuousDomain, base class for continuous domains.
Definition: AbstractContinuousDomain.h:58
virtual escript::Data getX() const
returns locations in the FEM nodes
Definition: DudleyDomain.cpp:1804
int numNodes
number of nodes per element
Definition: dudley/src/ElementFile.h:142
index_t * globalNodesIndex
assigns each local node a global unique ID in a dense labeling
Definition: dudley/src/NodeFile.h:160
~DudleyDomain()
Destructor for DudleyDomain.
Definition: DudleyDomain.cpp:91
std::vector< index_t > IndexVector
Definition: DataTypes.h:88
virtual escript::Data getNormal() const
returns locations in the FEM nodes as a numpy ndarray
Definition: DudleyDomain.cpp:1853
const index_t * borrowSampleReferenceIDs(int functionSpaceType) const
Return the reference number of the given sample number.
Definition: DudleyDomain.cpp:1863
BOOST_PYTHON_MODULE(dudleycpp)
Definition: dudleycpp.cpp:31