18 #if !defined finley_MeshAdapter_20040526_H 19 #define finley_MeshAdapter_20040526_H 22 #include "finley/Mesh.h" 23 #include "finley/Finley.h" 24 #include "finley/Assemble.h" 27 #include <pasowrap/SystemMatrixAdapter.h> 28 #include <pasowrap/TransportProblemAdapter.h> 29 #include "escript/AbstractContinuousDomain.h" 30 #include "escript/FunctionSpace.h" 31 #include "escript/FunctionSpaceFactory.h" 33 #include <boost/shared_ptr.hpp> 34 #include <boost/python/dict.hpp> 35 #include <boost/python/extract.hpp> 49 int order,
double l0,
double l1,
double l2,
50 bool periodic0,
bool periodic1,
bool periodic2,
51 int integrationOrder,
int reducedIntegrationOrder,
52 bool useElementsOnFace,
bool useFullElementOrder,
53 bool optimize,
const std::vector<double>& points,
54 const std::vector<int>& tags,
55 const std::map<std::string, int>& tagNamesToNums
60 int order,
double l0,
double l1,
61 bool periodic0,
bool periodic1,
62 int integrationOrder,
int reducedIntegrationOrder,
63 bool useElementsOnFace,
bool useFullElementOrder,
64 bool optimize,
const std::vector<double>& points,
65 const std::vector<int>& tags,
66 const std::map<std::string, int>& tagNamesToNums
133 virtual int getMPISize()
const;
139 virtual int getMPIRank()
const;
146 virtual void MPIBarrier()
const;
153 virtual bool onMasterProcessor()
const;
162 void write(
const std::string& fileName)
const;
168 void Print_Mesh_Info(
bool full=
false)
const;
175 void dump(
const std::string& fileName)
const;
181 Mesh* getFinley_Mesh()
const;
189 int getTagFromSampleNo(
int functionSpaceType,
index_t sampleNo)
const;
196 const index_t* borrowSampleReferenceIDs(
int functionSpaceType)
const;
203 virtual bool isValidFunctionSpaceType(
int functionSpaceType)
const;
209 virtual std::string getDescription()
const;
215 virtual std::string functionSpaceTypeAsString(
int functionSpaceType)
const;
221 void setFunctionSpaceTypeNames();
227 virtual int getContinuousFunctionCode()
const;
233 virtual int getReducedContinuousFunctionCode()
const;
239 virtual int getFunctionCode()
const;
245 virtual int getReducedFunctionCode()
const;
251 virtual int getFunctionOnBoundaryCode()
const;
257 virtual int getReducedFunctionOnBoundaryCode()
const;
263 virtual int getFunctionOnContactZeroCode()
const;
269 virtual int getReducedFunctionOnContactZeroCode()
const;
275 virtual int getFunctionOnContactOneCode()
const;
281 virtual int getReducedFunctionOnContactOneCode()
const;
287 virtual int getSolutionCode()
const;
293 virtual int getReducedSolutionCode()
const;
299 virtual int getDiracDeltaFunctionsCode()
const;
309 virtual int getDim()
const;
326 virtual dim_t getNumDataPointsGlobal()
const;
333 virtual std::pair<int,dim_t> getDataShape(
int functionSpaceCode)
const;
348 virtual void setTagMap(
const std::string& name,
int tag);
355 virtual int getTag(
const std::string& name)
const;
362 virtual bool isValidTagName(
const std::string& name)
const;
368 virtual std::string showTagNames()
const;
382 virtual bool probeInterpolationOnDomain(
int functionSpaceType_source,
int functionSpaceType_target)
const;
384 virtual signed char preferredInterpolationOnDomain(
int functionSpaceType_source,
int functionSpaceType_target)
const;
391 bool commonFunctionSpace(
const std::vector<int>& fs,
int& resultcode)
const;
432 virtual void setToIntegrals(std::vector<double>& integrals,
const escript::Data& arg)
const;
441 virtual int getSystemMatrixTypeId(
const boost::python::object& options)
const;
452 virtual int getTransportTypeId(
const int solver,
const int preconditioner,
const int package,
const bool symmetry)
const;
459 virtual bool isCellOriented(
int functionSpaceCode)
const;
462 virtual bool ownSample(
int fsCode,
index_t id)
const;
475 virtual void addPDEToSystem(
486 virtual void addPDEToLumpedSystem(
491 const bool useHRZ)
const;
505 virtual void addPDEToTransportProblem(
518 const int row_blocksize,
520 const int column_blocksize,
522 const int type)
const;
532 const int type)
const;
560 virtual void setTags(
const int functionSpaceType,
const int newTag,
const escript::Data& mask)
const;
566 virtual int getNumberOfTagsInUse(
int functionSpaceCode)
const;
568 virtual const int* borrowListOfTagsInUse(
int functionSpaceCode)
const;
574 bool canTag(
int functionSpaceCode)
const;
581 int getApproximationOrder(
const int functionSpaceCode)
const;
583 bool supportsContactElements()
const;
597 void addDiracPoints(
const std::vector<double>& points,
const std::vector<int>& tags)
const;
616 double l0,
double l1,
double l2,
617 bool periodic0,
bool periodic1,
bool periodic2,
618 int integrationOrder,
619 int reducedIntegrationOrder,
620 bool useElementsOnFace,
621 bool useFullElementOrder,
623 const std::vector<double>& points,
624 const std::vector<int>& tags,
625 const std::map<std::string, int>& tagNamesToNums);
630 double l0,
double l1,
631 bool periodic0,
bool periodic1,
632 int integrationOrder,
633 int reducedIntegrationOrder,
634 bool useElementsOnFace,
635 bool useFullElementOrder,
637 const std::vector<double>& points,
638 const std::vector<int>& tags,
639 const std::map<std::string, int>& tagNamesToNums);
644 const std::string& fileName,
645 int integrationOrder,
646 int reducedIntegrationOrder,
648 const std::vector<double>& points,
649 const std::vector<int>& tags);
654 const std::string& fileName,
656 int integrationOrder,
657 int reducedIntegrationOrder,
659 bool useMacroElements,
660 const std::vector<double>& points,
661 const std::vector<int>& tags);
AbstractContinuousDomain, base class for continuous domains.
Definition: AbstractContinuousDomain.h:46
static const int ReducedFaceElements
Definition: finley/src/CPPAdapter/MeshAdapter.h:88
Definition: FunctionSpace.h:34
static const int ReducedDegreesOfFreedom
Definition: finley/src/CPPAdapter/MeshAdapter.h:82
bool probeInterpolationAcross(int fsType_source, const escript::AbstractDomain &domain, int fsType_target, int dim)
Definition: CrossDomainCoupler.cpp:36
static FunctionSpaceNamesMapType m_functionSpaceTypeNames
Definition: finley/src/CPPAdapter/MeshAdapter.h:612
boost::shared_ptr< AbstractDomain > Domain_ptr
Definition: AbstractDomain.h:36
static const int Nodes
Definition: finley/src/CPPAdapter/MeshAdapter.h:83
Definition: finley/src/CPPAdapter/MeshAdapter.h:69
Domain_ptr readMesh_driver(const boost::python::list &args)
Python driver for readMesh()
Definition: finley/src/CPPAdapter/MeshAdapterFactory.cpp:531
static const int ContactElementsOne
Definition: finley/src/CPPAdapter/MeshAdapter.h:92
static const int Elements
Definition: finley/src/CPPAdapter/MeshAdapter.h:85
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:38
static dim_t M
Definition: SparseMatrix_saveHB.cpp:37
implements the AbstractContinuousDomain interface for the Finley library.
Definition: finley/src/CPPAdapter/MeshAdapter.h:76
Definition: finley/src/Assemble.h:32
static const int ReducedElements
Definition: finley/src/CPPAdapter/MeshAdapter.h:86
static const int ContactElementsZero
Definition: finley/src/CPPAdapter/MeshAdapter.h:90
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:162
int MPI_Comm
Definition: Esys_MPI.h:38
Domain_ptr readGmsh(esysUtils::JMPI &info, const std::string &fileName, int numDim, int integrationOrder, int reducedIntegrationOrder, bool optimize, bool useMacroElements, const std::vector< double > &points, const std::vector< int > &tags)
Definition: finley/src/CPPAdapter/MeshAdapterFactory.cpp:611
boost::shared_ptr< Mesh > getMesh()
Definition: finley/src/CPPAdapter/MeshAdapter.h:607
Domain_ptr readGmsh_driver(const boost::python::list &args)
Python driver for readGMesh()
Definition: finley/src/CPPAdapter/MeshAdapterFactory.cpp:629
double l2(dim_t n, const double *x, const esysUtils::JMPI &mpiinfo)
returns the global L2 norm of x
Definition: PasoUtil.cpp:484
boost::shared_ptr< Mesh > m_finleyMesh
Definition: finley/src/CPPAdapter/MeshAdapter.h:603
int StatusType
Definition: AbstractDomain.h:48
escript::Domain_ptr rectangle(esysUtils::JMPI &p, dim_t n0, dim_t n1, int order, double l0, double l1, bool periodic0, bool periodic1, int integrationOrder, int reducedIntegrationOrder, bool useElementsOnFace, bool useFullElementOrder, bool optimize, const std::vector< double > &points, const std::vector< int > &tags, const std::map< std::string, int > &tagNamesToNums)
Creates a rectangular mesh with n0 x n1 elements over the brick [0,l0] x [0,l1].
Definition: finley/src/CPPAdapter/MeshAdapterFactory.cpp:823
Data represents a collection of datapoints.
Definition: Data.h:68
static const int ReducedContactElementsOne
Definition: finley/src/CPPAdapter/MeshAdapter.h:93
int index_t
Definition: types.h:24
static const int ReducedContactElementsZero
Definition: finley/src/CPPAdapter/MeshAdapter.h:91
static const int ReducedNodes
Definition: finley/src/CPPAdapter/MeshAdapter.h:84
static const int FaceElements
Definition: finley/src/CPPAdapter/MeshAdapter.h:87
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
#define FINLEY_DLL_API
Definition: finley/src/CPPAdapter/system_dep.h:31
index_t dim_t
Definition: types.h:27
static const int Points
Definition: finley/src/CPPAdapter/MeshAdapter.h:89
Base class for escript system matrices.
Definition: AbstractSystemMatrix.h:37
escript::Domain_ptr brick(esysUtils::JMPI &p, dim_t n0, dim_t n1, dim_t n2, int order, double l0, double l1, double l2, bool periodic0, bool periodic1, bool periodic2, int integrationOrder, int reducedIntegrationOrder, bool useElementsOnFace, bool useFullElementOrder, bool optimize, const std::vector< double > &points, const std::vector< int > &tags, const std::map< std::string, int > &tagNamesToNums)
Creates a rectangular mesh with n0 x n1 x n2 elements over the brick [0,l0] x [0,l1] x [0...
Definition: finley/src/CPPAdapter/MeshAdapterFactory.cpp:710
static const int DegreesOfFreedom
Definition: finley/src/CPPAdapter/MeshAdapter.h:81
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:170
Base class for all escript domains.
Definition: AbstractDomain.h:45
void operator()(void const *ptr) const
Definition: finley/src/CPPAdapter/MeshAdapter.h:69
boost::shared_ptr< JMPI_ > JMPI
Definition: Esys_MPI.h:79
Domain_ptr readMesh(esysUtils::JMPI &info, const std::string &fileName, int integrationOrder, int reducedIntegrationOrder, bool optimize, const std::vector< double > &points, const std::vector< int > &tags)
Definition: finley/src/CPPAdapter/MeshAdapterFactory.cpp:513
Definition: finley/src/Mesh.h:78
std::map< int, std::string > FunctionSpaceNamesMapType
Definition: finley/src/CPPAdapter/MeshAdapter.h:304