Go to the documentation of this file.
18 #ifndef __DUDLEY_DOMAIN_H__
19 #define __DUDLEY_DOMAIN_H__
51 #include <dudley/Dudley.h>
52 #include <dudley/ElementFile.h>
53 #include <dudley/NodeFile.h>
54 #include <dudley/Util.h>
56 #include <escript/AbstractContinuousDomain.h>
57 #include <escript/FunctionSpace.h>
58 #include <escript/FunctionSpaceFactory.h>
61 #include <paso/SystemMatrixPattern.h>
63 #ifdef ESYS_HAVE_TRILINOS
64 #include <trilinoswrap/types.h>
73 typedef std::map<std::string, int>
TagMap;
106 const std::string& filename,
bool optimize);
117 const std::string& filename,
int numDim,
132 double l1,
bool optimize,
149 double l0,
double l1,
double l2,
238 virtual void MPIBarrier()
const;
254 void write(
const std::string& fileName)
const;
260 void Print_Mesh_Info(
bool full=
false)
const;
267 void dump(
const std::string& fileName)
const;
275 int getTagFromSampleNo(
int functionSpaceType,
index_t sampleNo)
const;
282 const index_t* borrowSampleReferenceIDs(
int functionSpaceType)
const;
289 virtual bool isValidFunctionSpaceType(
int functionSpaceType)
const;
295 virtual std::string getDescription()
const;
301 virtual std::string functionSpaceTypeAsString(
int functionSpaceType)
const;
307 void setFunctionSpaceTypeNames();
313 virtual int getContinuousFunctionCode()
const;
319 virtual int getReducedContinuousFunctionCode()
const;
325 virtual int getFunctionCode()
const;
331 virtual int getReducedFunctionCode()
const;
337 virtual int getFunctionOnBoundaryCode()
const;
343 virtual int getReducedFunctionOnBoundaryCode()
const;
349 virtual int getFunctionOnContactZeroCode()
const;
355 virtual int getReducedFunctionOnContactZeroCode()
const;
361 virtual int getFunctionOnContactOneCode()
const;
367 virtual int getReducedFunctionOnContactOneCode()
const;
373 virtual int getSolutionCode()
const;
379 virtual int getReducedSolutionCode()
const;
385 virtual int getDiracDeltaFunctionsCode()
const;
395 virtual int getDim()
const {
return m_nodes->numDim; }
403 virtual StatusType getStatus()
const;
409 virtual dim_t getNumDataPointsGlobal()
const;
416 virtual std::pair<int,dim_t> getDataShape(
int functionSpaceCode)
const;
431 virtual void setTagMap(
const std::string& name,
int tag);
438 virtual int getTag(
const std::string& name)
const;
445 virtual bool isValidTagName(
const std::string& name)
const;
451 virtual std::string showTagNames()
const;
466 virtual bool probeInterpolationOnDomain(
int functionSpaceType_source,
467 int functionSpaceType_target)
const;
469 virtual signed char preferredInterpolationOnDomain(
int functionSpaceType_source,
int functionSpaceType_target)
const;
475 bool commonFunctionSpace(
const std::vector<int>& fs,
int& resultcode)
const;
488 int functionSpaceType_target)
const;
529 virtual int getSystemMatrixTypeId(
const boost::python::object& options)
const;
540 virtual int getTransportTypeId(
int solver,
int preconditioner,
int package,
541 bool symmetry)
const;
548 virtual bool isCellOriented(
int functionSpaceCode)
const;
550 virtual bool ownSample(
int fsCode,
index_t id)
const;
556 virtual void addPDEToSystem(
590 virtual void addPDEToTransportProblem(
609 int column_blocksize,
629 #ifdef ESYS_HAVE_BOOST_NUMPY
630 boost::python::numpy::ndarray getNumpyX()
const;
632 boost::python::numpy::ndarray getConnectivityInfo()
const;
656 virtual void setTags(
int functionSpaceType,
int newTag,
664 virtual int getNumberOfTagsInUse(
int functionSpaceCode)
const;
666 virtual const int* borrowListOfTagsInUse(
int functionSpaceCode)
const;
672 virtual bool canTag(
int functionSpaceCode)
const;
677 virtual int getApproximationOrder(
int functionSpaceCode)
const;
683 const boost::python::tuple& filter)
const;
685 void createMappings(
const std::vector<index_t>& dofDistribution,
686 const std::vector<index_t>& nodeDistribution);
692 template<
typename Scalar>
693 void setToIntegralsWorker(std::vector<Scalar>& integrals,
696 #ifdef ESYS_HAVE_PASO
701 #ifdef ESYS_HAVE_TRILINOS
702 esys_trilinos::const_TrilinosGraph_ptr getTrilinosGraph()
const {
704 return m_nodes->getTrilinosGraph();
709 void prepare(
bool optimize);
718 void resolveNodeIds();
720 #ifdef ESYS_HAVE_PASO
724 void createColoring(
const index_t* dofMap);
725 void distributeByRankOfDOF(
const IndexVector& distribution);
726 void markNodes(std::vector<short>& mask,
index_t offset)
const;
727 void optimizeDOFDistribution(
IndexVector& distribution);
728 void optimizeDOFLabeling(
const IndexVector& distribution);
729 void optimizeElementOrdering();
730 void updateTagList();
731 void printElementInfo(
const ElementFile* e,
const std::string& title,
732 const std::string& defaultType,
bool full)
const;
734 void writeElementInfo(std::ostream& stream,
const ElementFile* e,
735 const std::string& defaultType)
const;
751 #ifdef ESYS_HAVE_PASO
761 #endif // __DUDLEY_DOMAIN_H__
index_t * globalDegreesOfFreedom
Definition: dudley/src/NodeFile.h:157
@ SMT_COMPLEX
Definition: DudleyDomain.h:78
ElementFile * getFaceElements() const
returns a pointer to this domain's face element file
Definition: DudleyDomain.h:202
void setToIntegralsWorker(std::vector< Scalar > &integrals, const escript::Data &arg) const
Definition: DudleyDomain.cpp:1310
SolverOptions
Definition: SolverOptions.h:82
int MPI_Status
Definition: EsysMPI.h:47
Definition: SolverOptions.h:161
bool isComplex() const
True if components of this data are stored as complex.
Definition: Data.cpp:1160
virtual void MPIBarrier() const
If compiled for MPI then execute an MPI_Barrier, else do nothing.
Definition: DudleyDomain.cpp:100
escript::Data getSize() const
Returns the sample size (e.g. the diameter of elements, radius of particles).
Definition: FunctionSpace.cpp:295
int * Tag
Tag[i] is the tag of element i.
Definition: dudley/src/ElementFile.h:121
escript::JMPI m_mpiInfo
MPI information.
Definition: DudleyDomain.h:738
void updateTagList()
regenerates list of tags in use for node file and element files
Definition: DudleyDomain.cpp:2177
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:52
@ Points
Definition: Dudley.h:58
#define REGISTER_ESCRIPT_EXCEPTION_TRANSLATORS
Definition: ExceptionTranslators.h:27
@ SMT_PASO
Definition: DudleyDomain.h:76
void Assemble_LumpedSystem(const NodeFile *nodes, const ElementFile *elements, escript::Data &lumpedMat, const escript::Data &D, bool useHRZ)
Definition: dudley/src/Assemble_LumpedSystem.cpp:26
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:1287
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:887
escript::Distribution_ptr nodesDistribution
MPI distribution of nodes.
Definition: dudley/src/NodeFile.h:164
Definition: DudleyException.h:26
int numDim
number of spatial dimensions
Definition: dudley/src/NodeFile.h:146
void createColoring(dim_t numNodes, const index_t *degreeOfFreedom)
Definition: ElementFile_createColoring.cpp:25
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:26
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:2004
this class holds a (distributed) stiffness matrix
Definition: SystemMatrix.h:50
virtual bool onMasterProcessor() const
returns true if on MPI processor 0, else false
Definition: DudleyDomain.h:244
Definition: dudley/src/NodeFile.h:40
@ SO_METHOD_DIRECT
Definition: SolverOptions.h:102
void createNodeMappings(const IndexVector &dofDistribution, const IndexVector &nodeDistribution)
Definition: NodeFile_createMappings.cpp:224
void setCoordinates(const escript::Data &newX)
Definition: dudley/src/NodeFile.cpp:172
@ Nodes
Definition: Dudley.h:53
Domain_ptr readGmsh(const string &fileName, int numDim, int, int, bool optimize)
reads a gmsh mesh file
Definition: dudley/src/DomainFactory.cpp:681
std::string m_name
domain description
Definition: DudleyDomain.h:740
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:992
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:84
static escript::Domain_ptr load(const std::string &filename)
recovers domain from a dump file
Definition: dudley/src/DomainFactory.cpp:366
const index_t * borrowTargetDegreesOfFreedom() const
returns the mapping from local degrees of freedom to a target
Definition: dudley/src/NodeFile.h:234
SolverOptions getPackage() const
Definition: SolverOptions.cpp:513
FunctionSpace continuousFunction(const AbstractDomain &domain)
Create function space objects.
Definition: FunctionSpaceFactory.cpp:31
index_t * Nodes
Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element.
Definition: dudley/src/ElementFile.h:133
void setElements(ElementFile *elements)
replaces the element file by elements
Definition: DudleyDomain.cpp:107
An exception class for features which are not (yet) implemented.
Definition: EsysException.h:90
virtual int getContinuousFunctionCode() const
Return a continuous FunctionSpace code.
Definition: DudleyDomain.cpp:810
ElementFile * getElements() const
returns a pointer to this domain's element file
Definition: DudleyDomain.h:190
ElementFile * m_elements
the table of the elements
Definition: DudleyDomain.h:744
SolverOptions getSolverMethod() const
Definition: SolverOptions.cpp:441
void randomFillArray(long seed, double *array, size_t n)
Definition: Random.cpp:79
@ SMT_TRILINOS
Definition: DudleyDomain.h:77
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:1249
dim_t getNumNodes() const
returns the number of FEM nodes (on this rank)
Definition: dudley/src/NodeFile.h:204
int StatusType
Definition: AbstractDomain.h:53
dim_t createDenseDOFLabeling()
Definition: NodeFile_createDenseLabelings.cpp:22
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition: SystemMatrixPattern.h:40
void dump(const std::string &fileName) const
dumps the mesh to a file with the given name.
Definition: DudleyDomain.cpp:465
DudleyDomain(const std::string &name, int numDim, escript::JMPI jmpi)
Constructor for DudleyDomain.
Definition: DudleyDomain.cpp:69
virtual int getMPIRank() const
returns the number MPI rank of this processor
Definition: DudleyDomain.h:232
virtual bool probeInterpolationOnDomain(int functionSpaceType_source, int functionSpaceType_target) const
True if interpolation is possible from source to target.
Definition: DudleyDomain.cpp:1648
SystemMatrix_ptr< double > borrowTransportMatrix() const
Definition: Transport.h:65
#define MATRIX_FORMAT_COMPLEX
Definition: Paso.h:66
int * Owner
Owner[i] contains the rank that owns element i.
Definition: dudley/src/ElementFile.h:124
boost::shared_ptr< AbstractDomain > Domain_ptr
Definition: AbstractDomain.h:41
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
void createMappings(const std::vector< index_t > &dofDistribution, const std::vector< index_t > &nodeDistribution)
Definition: DudleyDomain.cpp:125
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:2076
void updateTagList()
Definition: dudley/src/NodeFile.h:239
@ DegreesOfFreedom
Definition: Dudley.h:52
void setTags(int newTag, const escript::Data &mask)
set tags to newTag where mask > 0
Definition: dudley/src/NodeFile.cpp:201
virtual std::string functionSpaceTypeAsString(int functionSpaceType) const
Return a description for the given function space type code.
Definition: DudleyDomain.cpp:774
@ SO_PRECONDITIONER_ILUT
Definition: SolverOptions.h:122
void Assemble_NodeCoordinates(const NodeFile *nodes, escript::Data &x)
copies node coordinates into expanded Data object x
Definition: dudley/src/Assemble_NodeCoordinates.cpp:27
void markNodes(std::vector< short > &mask, index_t offset) const
Definition: dudley/src/ElementFile.cpp:228
index_t getLastNode() const
Definition: dudley/src/NodeFile.h:189
bool isComplex() const
Definition: SolverOptions.cpp:679
virtual int getReducedFunctionOnContactZeroCode() const
Return a FunctionOnContactZero code with reduced integration order.
Definition: DudleyDomain.cpp:845
Definition: FunctionSpace.h:36
virtual bool operator==(const escript::AbstractDomain &other) const
comparison operators
Definition: DudleyDomain.cpp:1723
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:463
int status
Definition: dudley/src/NodeFile.h:177
SystemMatrixType
Definition: DudleyDomain.h:75
@ Elements
Definition: Dudley.h:54
bool probeInterpolationAcross(int fsType_source, const escript::AbstractDomain &domain, int fsType_target, int dim)
Definition: CrossDomainCoupler.cpp:32
virtual int getDiracDeltaFunctionsCode() const
Return a DiracDeltaFunctions code.
Definition: DudleyDomain.cpp:870
const_Domain_ptr getDomain() const
Returns the function space domain.
Definition: FunctionSpace.cpp:103
#define MPI_INT
Definition: EsysMPI.h:48
bool initialize(const std::string &simFile, const std::string &comment)
Definition: VisItControl.cpp:178
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:1392
boost::shared_ptr< SystemMatrix< T > > SystemMatrix_ptr
Definition: SystemMatrix.h:42
ElementFile * m_points
the table of points (treated as elements of dimension 0)
Definition: DudleyDomain.h:748
Domain_ptr rectangle_driver(const bp::list &args)
Definition: dudley/src/DomainFactory.cpp:754
#define DUDLEY_DLL_API
Definition: dudley/src/system_dep.h:29
void IndexList_insertElements(IndexList *index_list, const ElementFile *elements, const index_t *map)
Definition: dudley/src/IndexList.cpp:35
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:1058
escript::Data getNormal() const
Returns the surface normal field.
Definition: FunctionSpace.cpp:286
dim_t getNumDegreesOfFreedomTargets() const
returns the number of degrees of freedom targets (own and shared)
Definition: dudley/src/NodeFile.h:214
virtual int getFunctionCode() const
Return a function FunctionSpace code.
Definition: DudleyDomain.cpp:820
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:756
virtual escript::Data getSize() const
returns the element size
Definition: DudleyDomain.cpp:1873
void Assemble_getSize(const NodeFile *nodes, const ElementFile *elements, escript::Data &size)
Definition: dudley/src/Assemble_getSize.cpp:25
Data represents a collection of datapoints.
Definition: Data.h:64
boost::shared_ptr< TransportProblem > TransportProblem_ptr
Definition: Transport.h:32
virtual int getFunctionOnContactOneCode() const
Return a FunctionOnContactOne code.
Definition: DudleyDomain.cpp:850
double l2(dim_t n, const double *x, escript::JMPI mpiinfo)
returns the global L2 norm of x
Definition: PasoUtil.cpp:501
ASM_ptr getPtr()
Returns smart pointer which is managing this object. If one does not exist yet it creates one.
Definition: AbstractSystemMatrix.cpp:42
ElementFile * getPoints() const
returns a pointer to this domain's point (nodal) element file
Definition: DudleyDomain.h:214
escript::Data getX() const
Returns the spatial locations of the data points.
Definition: FunctionSpace.cpp:229
index_t dim_t
Definition: DataTypes.h:66
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:44
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:113
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:74
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:161
Base class for escript system matrices.
Definition: AbstractSystemMatrix.h:44
Definition: dudley/src/ElementFile.h:53
std::vector< int > tagsInUse
vector of tags which are actually used
Definition: dudley/src/NodeFile.h:152
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:945
void optimizeDOFDistribution(IndexVector &distribution)
Definition: dudley/src/Mesh_optimizeDOFDistribution.cpp:64
std::map< std::string, int > TagMap
Definition: DudleyDomain.h:73
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:2101
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:674
NodeFile * m_nodes
the table of the nodes
Definition: DudleyDomain.h:742
index_t * Id
Definition: dudley/src/ElementFile.h:118
virtual int getReducedContinuousFunctionCode() const
Return a continuous on reduced order nodes FunctionSpace code.
Definition: DudleyDomain.cpp:815
void markNodes(std::vector< short > &mask, index_t offset) const
Definition: DudleyDomain.cpp:151
void optimizeDOFLabeling(const IndexVector &distribution)
optimizes the labeling of the DOFs on each processor
Definition: Mesh_optimizeDOFLabeling.cpp:26
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:1457
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:865
dim_t createDenseNodeLabeling(IndexVector &nodeDistribution, const IndexVector &dofDistribution)
TagMap m_tagMap
the tag map mapping names to tag keys
Definition: DudleyDomain.h:750
SystemMatrix_ptr< double > borrowMassMatrix() const
Definition: Transport.h:70
void Print_Mesh_Info(bool full=false) const
Definition: dudley/src/Mesh_write.cpp:140
bool isEmpty() const
Definition: Data.cpp:1132
virtual int getFunctionOnBoundaryCode() const
Return a function on boundary FunctionSpace code.
Definition: DudleyDomain.cpp:830
NodeFile * getNodes() const
returns a pointer to this domain's node file
Definition: DudleyDomain.h:178
std::map< int, std::string > FunctionSpaceNamesMapType
Definition: DudleyDomain.h:390
int getTagFromSampleNo(int functionSpaceType, index_t sampleNo) const
Return the tag key for the given sample number.
Definition: DudleyDomain.cpp:1912
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:1544
virtual int getTag(const std::string &name) const
Return the tag key for tag name.
Definition: DudleyDomain.cpp:1975
virtual const int * borrowListOfTagsInUse(int functionSpaceCode) const
Definition: DudleyDomain.cpp:2026
escript::ATP_ptr newTransportProblem(int blocksize, const escript::FunctionSpace &functionspace, int type) const
creates a TransportProblem
Definition: DudleyDomain.cpp:1517
void optimizeOrdering()
reorders the elements so that they are stored close to the nodes
Definition: dudley/src/ElementFile.cpp:164
virtual bool canTag(int functionSpaceCode) const
Checks if this domain allows tags for the specified functionSpace code.
Definition: DudleyDomain.cpp:2061
@ SO_PRECONDITIONER_AMG
Definition: SolverOptions.h:119
Definition: Transport.h:38
virtual int getReducedFunctionCode() const
Return a function with reduced integration order FunctionSpace code.
Definition: DudleyDomain.cpp:825
void updateTagList()
Definition: dudley/src/ElementFile.h:175
static int getTypeId(int solver, int preconditioner, int package, bool symmetry, const escript::JMPI &mpi_info)
Definition: Transport.h:95
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:1807
@ ReducedElements
Definition: Dudley.h:55
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:29
index_t getFirstNode() const
Definition: dudley/src/NodeFile.h:184
dim_t getGlobalNumNodes() const
Definition: dudley/src/NodeFile.h:194
bool isSymmetric() const
Definition: SolverOptions.cpp:689
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:1268
virtual std::string showTagNames() const
Returns all tag names in a single string sperated by commas.
Definition: DudleyDomain.cpp:1991
virtual void setToIntegrals(std::vector< escript::DataTypes::cplx_t > &integrals, const escript::Data &arg) const
static int getSystemMatrixTypeId(int solver, int preconditioner, int package, bool is_complex, bool symmetry, const escript::JMPI &mpi_info)
Definition: SystemMatrix.h:504
Domain_ptr brick_driver(const bp::list &args)
Definition: dudley/src/DomainFactory.cpp:712
virtual bool ownSample(int fsCode, index_t id) const
Definition: DudleyDomain.cpp:1433
SolverOptions getPreconditioner() const
Definition: SolverOptions.cpp:358
Data load(const std::string fileName, const AbstractDomain &domain)
reads Data on domain from file in netCDF format
Definition: DataFactory.cpp:708
bool isDirectSolver(const SolverOptions &method)
returns true if the passed solver method refers to a direct solver type
Definition: SolverOptions.h:145
virtual int getApproximationOrder(int functionSpaceCode) const
returns the approximation order used for a function space functionSpaceCode
Definition: DudleyDomain.cpp:2081
virtual int getMPISize() const
returns the number of processors used for this domain
Definition: DudleyDomain.h:226
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:1717
void relabelNodes(const index_t *newNode, index_t offset)
Definition: dudley/src/ElementFile.cpp:238
int numLocalDim
dimension of the element e.g. 2 for a line in 2D or 3D
Definition: dudley/src/ElementFile.h:150
@ FaceElements
Definition: Dudley.h:56
void RuntimeErrorTranslator(const EsysException &e)
Function which translates an EsysException into a python RuntimeError.
Definition: ExceptionTranslators.cpp:37
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:61
escript::Distribution_ptr dofDistribution
MPI distribution of degrees of freedom.
Definition: dudley/src/NodeFile.h:167
void createColoring(const index_t *dofMap)
tries to reduce the number of colours for all element files
Definition: DudleyDomain.cpp:2161
virtual void setTagMap(const std::string &name, int tag)
sets a map from a clear tag name to a tag key
Definition: DudleyDomain.cpp:1970
size_type size() const
Return the number of elements in this DataVectorAlt.
Definition: DataVectorAlt.h:215
virtual escript::JMPI getMPI() const
returns a reference to the MPI information wrapper for this domain
Definition: DudleyDomain.h:220
virtual void setNewX(const escript::Data &arg)
assigns new location to the domain
Definition: DudleyDomain.cpp:1420
void relabelElementNodes(const index_t *newNode, index_t offset)
Definition: DudleyDomain.cpp:158
@ ReducedFaceElements
Definition: Dudley.h:57
virtual dim_t getNumDataPointsGlobal() const
Return the number of data points summed across all MPI processes.
Definition: DudleyDomain.cpp:878
void setFunctionSpaceTypeNames()
Build the table of function space type names.
Definition: DudleyDomain.cpp:792
void setPoints(ElementFile *elements)
replaces the point element file by elements
Definition: DudleyDomain.cpp:119
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:1015
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:978
@ SO_DEFAULT
Definition: SolverOptions.h:83
virtual int getSolutionCode() const
Return a Solution code.
Definition: DudleyDomain.cpp:860
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:1740
int getTypeCode() const
Returns the function space type code.
Definition: FunctionSpace.cpp:95
MPI_Comm getMPIComm() const
get the communicator for this domain. Returns an integer on non-MPI builds Routine must be implemente...
Definition: DudleyDomain.h:246
void distributeByRankOfDOF(const IndexVector &distribution)
Definition: Mesh_distributeByRankOfDOF.cpp:25
DudleyDomain implements the AbstractContinuousDomain interface for the Dudley library.
Definition: DudleyDomain.h:88
FunctionSpace function(const AbstractDomain &domain)
Return a function FunctionSpace.
Definition: FunctionSpaceFactory.cpp:43
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:125
index_t * Id
Id[i] is the unique ID number of FEM node i.
Definition: dudley/src/NodeFile.h:148
virtual bool operator!=(const escript::AbstractDomain &other) const
Return true if given domains are not equal.
Definition: DudleyDomain.cpp:1735
void optimizeElementOrdering()
redistributes elements to minimize communication during assemblage
Definition: DudleyDomain.cpp:2169
static dim_t M
Definition: SparseMatrix_saveHB.cpp:37
virtual int getFunctionOnContactZeroCode() const
Return a FunctionOnContactZero code.
Definition: DudleyDomain.cpp:840
int * Tag
Tag[i] is the tag of node i.
Definition: dudley/src/NodeFile.h:150
virtual std::string getDescription() const
Return a description for this domain.
Definition: DudleyDomain.cpp:769
FunctionSpace functionOnBoundary(const AbstractDomain &domain)
Return a function on boundary FunctionSpace.
Definition: FunctionSpaceFactory.cpp:55
virtual bool supportsContactElements() const
Definition: DudleyDomain.h:679
void prepare(bool optimize)
prepares the mesh for further use
Definition: DudleyDomain.cpp:2115
int MPI_Comm
Definition: EsysMPI.h:44
index_t * Color
Definition: dudley/src/ElementFile.h:138
void setFaceElements(ElementFile *elements)
replaces the face element file by elements
Definition: DudleyDomain.cpp:113
@ SMT_UNROLL
Definition: DudleyDomain.h:79
virtual bool isValidTagName(const std::string &name) const
Returns true if name is a defined tag name.
Definition: DudleyDomain.cpp:1986
Base class for all escript domains.
Definition: AbstractDomain.h:51
virtual int getDim() const
Returns the spatial dimension of the domain.
Definition: DudleyDomain.h:395
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:84
virtual int getReducedFunctionOnBoundaryCode() const
Return a function on boundary with reduced integration order FunctionSpace code.
Definition: DudleyDomain.cpp:835
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:1345
Definition: escriptcore/src/IndexList.h:29
virtual bool isValidFunctionSpaceType(int functionSpaceType) const
Returns true if the given integer is a valid function space type for this domain.
Definition: DudleyDomain.cpp:785
const index_t * borrowGlobalNodesIndex() const
Definition: dudley/src/NodeFile.h:199
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:5837
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:1564
@ SO_PACKAGE_TRILINOS
Definition: SolverOptions.h:92
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:33
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:55
void setTags(int newTag, const escript::Data &mask)
sets element tags to newTag where mask > 0
Definition: dudley/src/ElementFile.cpp:193
void expand()
Whatever the current Data type make this into a DataExpanded.
Definition: Data.cpp:1180
index_t * degreesOfFreedomId
Definition: dudley/src/NodeFile.h:173
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:1942
virtual int getReducedFunctionOnContactOneCode() const
Return a FunctionOnContactOne code with reduced integration order.
Definition: DudleyDomain.cpp:855
dim_t getNumDegreesOfFreedom() const
returns the number of degrees of freedom (on this rank)
Definition: dudley/src/NodeFile.h:209
double * Coordinates
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Definition: dudley/src/NodeFile.h:159
std::vector< int > tagsInUse
array of tags which are actually used
Definition: dudley/src/ElementFile.h:127
An exception class that signals an invalid argument value.
Definition: EsysException.h:100
ElementTypeId etype
element type ID
Definition: dudley/src/ElementFile.h:153
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:1706
ElementFile * m_faceElements
the table of face elements
Definition: DudleyDomain.h:746
AbstractContinuousDomain, base class for continuous domains.
Definition: AbstractContinuousDomain.h:47
virtual escript::Data getX() const
returns locations in the FEM nodes
Definition: DudleyDomain.cpp:1819
int numNodes
number of nodes per element
Definition: dudley/src/ElementFile.h:130
index_t * globalNodesIndex
assigns each local node a global unique ID in a dense labeling
Definition: dudley/src/NodeFile.h:161
~DudleyDomain()
Destructor for DudleyDomain.
Definition: DudleyDomain.cpp:92
std::vector< index_t > IndexVector
Definition: DataTypes.h:64
virtual escript::Data getNormal() const
returns locations in the FEM nodes as a numpy ndarray
Definition: DudleyDomain.cpp:1868
const index_t * borrowSampleReferenceIDs(int functionSpaceType) const
Return the reference number of the given sample number.
Definition: DudleyDomain.cpp:1878
BOOST_PYTHON_MODULE(dudleycpp)
Definition: dudleycpp.cpp:32