%newobject ParaMEDMEM::MEDCouplingFieldOverTime::New;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRPatchGen::getMesh;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRPatchGen::__getitem__;
+%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::deepCpy;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::buildUnstructured;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::extractGhostFrom;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::buildMeshFromPatchEnvelop;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::getPatch;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::createCellFieldOnPatch;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::findPatchesInTheNeighborhoodOf;
+%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::getPatchAtPosition;
+%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::getMeshAtPosition;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMeshGen::__getitem__;
%newobject ParaMEDMEM::MEDCouplingCartesianAMRMesh::New;
+%newobject ParaMEDMEM::MEDCouplingDataForGodFather::getMyGodFather;
%newobject ParaMEDMEM::MEDCouplingAMRAttribute::New;
+%newobject ParaMEDMEM::MEDCouplingAMRAttribute::deepCpy;
+%newobject ParaMEDMEM::MEDCouplingAMRAttribute::deepCpyWithoutGodFather;
%newobject ParaMEDMEM::MEDCouplingAMRAttribute::getFieldOn;
+%newobject ParaMEDMEM::MEDCouplingAMRAttribute::projectTo;
%newobject ParaMEDMEM::MEDCouplingAMRAttribute::buildCellFieldOnRecurseWithoutOverlapWithoutGhost;
%newobject ParaMEDMEM::MEDCouplingAMRAttribute::buildCellFieldOnWithGhost;
%newobject ParaMEDMEM::MEDCouplingAMRAttribute::buildCellFieldOnWithoutGhost;
public:
BoxSplittingOptions();
void init() throw(INTERP_KERNEL::Exception);
- double getEffeciency() const throw(INTERP_KERNEL::Exception);
- void setEffeciency(double effeciency) throw(INTERP_KERNEL::Exception);
- double getEffeciencySnd() const throw(INTERP_KERNEL::Exception);
- void setEffeciencySnd(double effeciencySnd) throw(INTERP_KERNEL::Exception);
- int getMinCellDirection() const throw(INTERP_KERNEL::Exception);
- void setMinCellDirection(int minCellDirection) throw(INTERP_KERNEL::Exception);
- int getMaxCells() const throw(INTERP_KERNEL::Exception);
- void setMaxCells(int maxCells) throw(INTERP_KERNEL::Exception);
+ double getEfficiencyGoal() const throw(INTERP_KERNEL::Exception);
+ void setEfficiencyGoal(double efficiency) throw(INTERP_KERNEL::Exception);
+ double getEfficiencyThreshold() const throw(INTERP_KERNEL::Exception);
+ void setEfficiencyThreshold(double efficiencyThreshold) throw(INTERP_KERNEL::Exception);
+ int getMinimumPatchLength() const throw(INTERP_KERNEL::Exception);
+ void setMinimumPatchLength(int minPatchLength) throw(INTERP_KERNEL::Exception);
+ int getMaximumPatchLength() const throw(INTERP_KERNEL::Exception);
+ void setMaximumPatchLength(int maxPatchLength) throw(INTERP_KERNEL::Exception);
+ int getMaximumNbOfCellsInPatch() const throw(INTERP_KERNEL::Exception);
+ void setMaximumNbOfCellsInPatch(int maxNbCellsInPatch) throw(INTERP_KERNEL::Exception);
void copyOptions(const BoxSplittingOptions & other) throw(INTERP_KERNEL::Exception);
std::string printOptions() const throw(INTERP_KERNEL::Exception);
%extend
virtual INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const throw(INTERP_KERNEL::Exception);
virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
virtual std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
- void writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception);
+ std::string writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception);
+ virtual std::string getVTKFileExtension() const;
+ std::string getVTKFileNameOf(const std::string& fileName) const;
// tools
virtual MEDCouplingFieldDouble *getMeasureField(bool isAbs) const throw(INTERP_KERNEL::Exception);
virtual MEDCouplingFieldDouble *getMeasureFieldOnNode(bool isAbs) const throw(INTERP_KERNEL::Exception);
int getNodeIdFromPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception);
int getNumberOfCellsOfSubLevelMesh() const throw(INTERP_KERNEL::Exception);
int getSpaceDimensionOnNodeStruct() const throw(INTERP_KERNEL::Exception);
+ double computeSquareness() const throw(INTERP_KERNEL::Exception);
virtual std::vector<int> getNodeGridStructure() const throw(INTERP_KERNEL::Exception);
std::vector<int> getCellGridStructure() const throw(INTERP_KERNEL::Exception);
MEDCoupling1SGTUMesh *build1SGTUnstructured() const throw(INTERP_KERNEL::Exception);
return MEDCouplingStructuredMesh::ExtractFieldOfDoubleFrom(st,fieldOfDbl,inp);
}
+ static void AssignPartOfFieldOfDoubleUsing(const std::vector<int>& st, DataArrayDouble *fieldOfDbl, PyObject *partCompactFormat, const DataArrayDouble *other) throw(INTERP_KERNEL::Exception)
+ {
+ std::vector< std::pair<int,int> > inp;
+ convertPyToVectorPairInt(partCompactFormat,inp);
+ MEDCouplingStructuredMesh::AssignPartOfFieldOfDoubleUsing(st,fieldOfDbl,inp,other);
+ }
+
static int DeduceNumberOfGivenRangeInCompactFrmt(PyObject *part) throw(INTERP_KERNEL::Exception)
{
std::vector< std::pair<int,int> > inp;
return retPy;
}
+ static bool AreRangesIntersect(PyObject *r1, PyObject *r2)
+ {
+ std::vector< std::pair<int,int> > r1Cpp,r2Cpp;
+ convertPyToVectorPairInt(r1,r1Cpp);
+ convertPyToVectorPairInt(r2,r2Cpp);
+ return MEDCouplingStructuredMesh::AreRangesIntersect(r1Cpp,r2Cpp);
+ }
+
static PyObject *IsPartStructured(PyObject *li, PyObject *st) throw(INTERP_KERNEL::Exception)
{
int szArr,sw,iTypppArr;
void copyAllTinyAttrFrom(const MEDCouplingFieldDouble *other) throw(INTERP_KERNEL::Exception);
std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
- void writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception);
+ std::string writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception);
MEDCouplingFieldDouble *clone(bool recDeepCpy) const;
MEDCouplingFieldDouble *cloneWithMesh(bool recDeepCpy) const;
MEDCouplingFieldDouble *deepCpy() const;
return MEDCouplingFieldDouble::MergeFields(tmp);
}
- static void WriteVTK(const char *fileName, PyObject *li, bool isBinary=true) throw(INTERP_KERNEL::Exception)
+ static std::string WriteVTK(const char *fileName, PyObject *li, bool isBinary=true) throw(INTERP_KERNEL::Exception)
{
std::vector<const MEDCouplingFieldDouble *> tmp;
convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
- MEDCouplingFieldDouble::WriteVTK(fileName,tmp,isBinary);
+ return MEDCouplingFieldDouble::WriteVTK(fileName,tmp,isBinary);
}
}
};
class MEDCouplingCartesianAMRPatchGF : public MEDCouplingCartesianAMRPatchGen
{
};
-
- class MEDCouplingDataForGodFather : public RefCountObject
- {
- public:
- virtual void synchronizeFineToCoarse() throw(INTERP_KERNEL::Exception);
- virtual void synchronizeCoarseToFine() throw(INTERP_KERNEL::Exception);
- virtual void synchronizeAllGhostZones() throw(INTERP_KERNEL::Exception);
- virtual void alloc() throw(INTERP_KERNEL::Exception);
- virtual void dealloc() throw(INTERP_KERNEL::Exception);
- };
class MEDCouplingCartesianAMRMeshGen : public RefCountObject, public TimeLabel
{
public:
int getAbsoluteLevel() const throw(INTERP_KERNEL::Exception);
+ int getAbsoluteLevelRelativeTo(const MEDCouplingCartesianAMRMeshGen *ref) const throw(INTERP_KERNEL::Exception);
+ std::vector<int> getPositionRelativeTo(const MEDCouplingCartesianAMRMeshGen *ref) const throw(INTERP_KERNEL::Exception);
int getSpaceDimension() const throw(INTERP_KERNEL::Exception);
const std::vector<int>& getFactors() const throw(INTERP_KERNEL::Exception);
void setFactors(const std::vector<int>& newFactors) throw(INTERP_KERNEL::Exception);
int getNumberOfCellsRecursiveWithOverlap() const throw(INTERP_KERNEL::Exception);
int getNumberOfCellsRecursiveWithoutOverlap() const throw(INTERP_KERNEL::Exception);
bool isPatchInNeighborhoodOf(int patchId1, int patchId2, int ghostLev) const throw(INTERP_KERNEL::Exception);
+ virtual void detachFromFather() throw(INTERP_KERNEL::Exception);
//
int getNumberOfPatches() const throw(INTERP_KERNEL::Exception);
int getPatchIdFromChildMesh(const MEDCouplingCartesianAMRMeshGen *mesh) const throw(INTERP_KERNEL::Exception);
MEDCoupling1SGTUMesh *buildMeshOfDirectChildrenOnly() const throw(INTERP_KERNEL::Exception);
void removeAllPatches() throw(INTERP_KERNEL::Exception);
void removePatch(int patchId) throw(INTERP_KERNEL::Exception);
- void detachFromFather() throw(INTERP_KERNEL::Exception);
void createPatchesFromCriterion(const INTERP_KERNEL::BoxSplittingOptions& bso, const DataArrayByte *criterion, const std::vector<int>& factors) throw(INTERP_KERNEL::Exception);
void createPatchesFromCriterion(const INTERP_KERNEL::BoxSplittingOptions& bso, const DataArrayDouble *criterion, const std::vector<int>& factors, double eps) throw(INTERP_KERNEL::Exception);
DataArrayDouble *createCellFieldOnPatch(int patchId, const DataArrayDouble *cellFieldOnThis) const throw(INTERP_KERNEL::Exception);
return ret;
}
- void createPatchesFromCriterionML(PyObject *bso, const DataArrayDouble *criterion, PyObject *factors, double eps) throw(INTERP_KERNEL::Exception)
+ // agy : don't know why typemap fails here ??? let it in the extend section
+ PyObject *deepCpy(MEDCouplingCartesianAMRMeshGen *father) const throw(INTERP_KERNEL::Exception)
{
- std::vector<const INTERP_KERNEL::BoxSplittingOptions *> inp0;
- convertFromPyObjVectorOfObj<const INTERP_KERNEL::BoxSplittingOptions *>(bso,SWIGTYPE_p_INTERP_KERNEL__BoxSplittingOptions,"BoxSplittingOptions",inp0);
- std::vector< std::vector<int> > inp2;
- convertPyToVectorOfVectorOfInt(factors,inp2);
- self->createPatchesFromCriterionML(inp0,criterion,inp2,eps);
+ return convertCartesianAMRMesh(self->deepCpy(father), SWIG_POINTER_OWN | 0 );
+ }
+
+ MEDCouplingCartesianAMRPatch *getPatchAtPosition(const std::vector<int>& pos) const throw(INTERP_KERNEL::Exception)
+ {
+ const MEDCouplingCartesianAMRPatch *ret(self->getPatchAtPosition(pos));
+ MEDCouplingCartesianAMRPatch *ret2(const_cast<MEDCouplingCartesianAMRPatch *>(ret));
+ if(ret2)
+ ret2->incrRef();
+ return ret2;
}
- PyObject *retrieveGridsAt(int absoluteLev) const throw(INTERP_KERNEL::Exception)
+ MEDCouplingCartesianAMRMeshGen *getMeshAtPosition(const std::vector<int>& pos) const throw(INTERP_KERNEL::Exception)
+ {
+ const MEDCouplingCartesianAMRMeshGen *ret(self->getMeshAtPosition(pos));
+ MEDCouplingCartesianAMRMeshGen *ret2(const_cast<MEDCouplingCartesianAMRMeshGen *>(ret));
+ if(ret2)
+ ret2->incrRef();
+ return ret2;
+ }
+
+ virtual PyObject *positionRelativeToGodFather() const throw(INTERP_KERNEL::Exception)
+ {
+ std::vector<int> out1;
+ std::vector< std::pair<int,int> > out0(self->positionRelativeToGodFather(out1));
+ PyObject *ret(PyTuple_New(2));
+ PyTuple_SetItem(ret,0,convertFromVectorPairInt(out0));
+ PyTuple_SetItem(ret,1,convertIntArrToPyList2(out1));
+ return ret;
+ }
+
+ virtual PyObject *retrieveGridsAt(int absoluteLev) const throw(INTERP_KERNEL::Exception)
{
std::vector<MEDCouplingCartesianAMRPatchGen *> ps(self->retrieveGridsAt(absoluteLev));
int sz(ps.size());
return self->buildCellFieldOnRecurseWithoutOverlapWithoutGhost(ghostSz,inp);
}
- MEDCouplingCartesianAMRMeshGen *getFather() const throw(INTERP_KERNEL::Exception)
+ virtual MEDCouplingCartesianAMRMeshGen *getFather() const throw(INTERP_KERNEL::Exception)
{
MEDCouplingCartesianAMRMeshGen *ret(const_cast<MEDCouplingCartesianAMRMeshGen *>(self->getFather()));
if(ret)
return ret;
}
- MEDCouplingCartesianAMRMeshGen *getGodFather() const throw(INTERP_KERNEL::Exception)
+ virtual MEDCouplingCartesianAMRMeshGen *getGodFather() const throw(INTERP_KERNEL::Exception)
{
MEDCouplingCartesianAMRMeshGen *ret(const_cast<MEDCouplingCartesianAMRMeshGen *>(self->getGodFather()));
if(ret)
return MEDCouplingCartesianAMRMesh::New(meshName,spaceDim,nodeStrctPtr,nodeStrctPtr+sz,originPtr,originPtr+sz1,dxyzPtr,dxyzPtr+sz2);
}
+ void createPatchesFromCriterionML(PyObject *bso, const DataArrayDouble *criterion, PyObject *factors, double eps) throw(INTERP_KERNEL::Exception)
+ {
+ std::vector<const INTERP_KERNEL::BoxSplittingOptions *> inp0;
+ convertFromPyObjVectorOfObj<const INTERP_KERNEL::BoxSplittingOptions *>(bso,SWIGTYPE_p_INTERP_KERNEL__BoxSplittingOptions,"BoxSplittingOptions",inp0);
+ std::vector< std::vector<int> > inp2;
+ convertPyToVectorOfVectorOfInt(factors,inp2);
+ self->createPatchesFromCriterionML(inp0,criterion,inp2,eps);
+ }
+
MEDCouplingCartesianAMRMesh(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz) throw(INTERP_KERNEL::Exception)
{
return ParaMEDMEM_MEDCouplingCartesianAMRMesh_New(meshName,spaceDim,nodeStrct,origin,dxyz);
}
}
};
+
+ class MEDCouplingDataForGodFather : public RefCountObject
+ {
+ public:
+ virtual void synchronizeFineToCoarse() throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeFineToCoarseBetween(int fromLev, int toLev) throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeCoarseToFine() throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeCoarseToFineBetween(int fromLev, int toLev) throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeAllGhostZones() throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeAllGhostZonesOfDirectChidrenOf(const MEDCouplingCartesianAMRMeshGen *mesh) throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeAllGhostZonesAtASpecifiedLevel(int level) throw(INTERP_KERNEL::Exception);
+ virtual void synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(int level) throw(INTERP_KERNEL::Exception);
+ virtual void alloc() throw(INTERP_KERNEL::Exception);
+ virtual void dealloc() throw(INTERP_KERNEL::Exception);
+ %extend
+ {
+ MEDCouplingCartesianAMRMesh *getMyGodFather() throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingCartesianAMRMesh *ret(self->getMyGodFather());
+ if(ret)
+ ret->incrRef();
+ return ret;
+ }
+ }
+ };
class MEDCouplingAMRAttribute : public MEDCouplingDataForGodFather, public TimeLabel
{
public:
+ int getNumberOfLevels() const throw(INTERP_KERNEL::Exception);
+ MEDCouplingAMRAttribute *deepCpy() const throw(INTERP_KERNEL::Exception);
+ MEDCouplingAMRAttribute *deepCpyWithoutGodFather() const throw(INTERP_KERNEL::Exception);
MEDCouplingFieldDouble *buildCellFieldOnRecurseWithoutOverlapWithoutGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
MEDCouplingFieldDouble *buildCellFieldOnWithGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
MEDCouplingFieldDouble *buildCellFieldOnWithoutGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
bool changeGodFather(MEDCouplingCartesianAMRMesh *gf) throw(INTERP_KERNEL::Exception);
+ MEDCouplingAMRAttribute *projectTo(MEDCouplingCartesianAMRMesh *targetGF) const throw(INTERP_KERNEL::Exception);
%extend
{
static MEDCouplingAMRAttribute *New(MEDCouplingCartesianAMRMesh *gf, PyObject *fieldNames, int ghostLev) throw(INTERP_KERNEL::Exception)
{
return ParaMEDMEM_MEDCouplingAMRAttribute_New(gf,fieldNames,ghostLev);
}
-
+
DataArrayDouble *getFieldOn(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception)
{
const DataArrayDouble *ret(self->getFieldOn(mesh,fieldName));