Version: 9.14.0
MEDCoupling::MEDCouplingFieldDiscretizationPerCell Class Reference
Inheritance diagram for MEDCoupling::MEDCouplingFieldDiscretizationPerCell:
Collaboration diagram for MEDCoupling::MEDCouplingFieldDiscretizationPerCell:

Public Member Functions

void checkNoOrphanCells () const
 
const DataArrayIdType * getArrayOfDiscIds () const
 
void setArrayOfDiscIds (const DataArrayIdType *adids)
 
std::vector< DataArrayIdType * > splitIntoSingleGaussDicrPerCellType (std::vector< mcIdType > &locIds) const
 
- Public Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
virtual MCAuto< MEDCouplingFieldDiscretizationaggregate (std::vector< const MEDCouplingFieldDiscretization * > &fds) const =0
 
virtual MEDCouplingMeshbuildSubMeshData (const MEDCouplingMesh *mesh, const mcIdType *start, const mcIdType *end, DataArrayIdType *&di) const =0
 
virtual MEDCouplingMeshbuildSubMeshDataRange (const MEDCouplingMesh *mesh, mcIdType beginCellIds, mcIdType endCellIds, mcIdType stepCellIds, mcIdType &beginOut, mcIdType &endOut, mcIdType &stepOut, DataArrayIdType *&di) const
 
virtual void checkCompatibilityWithNature (NatureOfField nat) const =0
 
virtual void checkForUnserialization (const std::vector< mcIdType > &tinyInfo, const DataArrayIdType *arr)
 
virtual void clearGaussLocalizations ()
 
virtual MEDCouplingFieldDiscretizationclone () const =0
 
virtual MEDCouplingFieldDiscretizationclonePart (const mcIdType *startCellIds, const mcIdType *endCellIds) const
 
virtual MEDCouplingFieldDiscretizationclonePartRange (mcIdType beginCellIds, mcIdType endCellIds, mcIdType stepCellIds) const
 
virtual void computeMeshRestrictionFromTupleIds (const MEDCouplingMesh *mesh, const mcIdType *tupleIdsBg, const mcIdType *tupleIdsEnd, DataArrayIdType *&cellRestriction, DataArrayIdType *&trueTupleRestriction) const =0
 
virtual DataArrayIdType * computeTupleIdsToSelectFromCellIds (const MEDCouplingMesh *mesh, const mcIdType *startCellIds, const mcIdType *endCellIds) const =0
 
virtual MEDCouplingFieldDiscretizationdeepCopy () const
 
virtual void finishUnserialization (const std::vector< double > &tinyInfo)
 
virtual void getCellIdsHavingGaussLocalization (mcIdType locId, std::vector< mcIdType > &cellIds) const
 
virtual TypeOfField getEnum () const =0
 
virtual MEDCouplingGaussLocalizationgetGaussLocalization (mcIdType locId)
 
virtual const MEDCouplingGaussLocalizationgetGaussLocalization (mcIdType locId) const
 
virtual mcIdType getGaussLocalizationIdOfOneCell (mcIdType cellId) const
 
virtual mcIdType getGaussLocalizationIdOfOneType (INTERP_KERNEL::NormalizedCellType type) const
 
virtual std::set< mcIdType > getGaussLocalizationIdsOfOneType (INTERP_KERNEL::NormalizedCellType type) const
 
virtual double getIJK (const MEDCouplingMesh *mesh, const DataArrayDouble *da, mcIdType cellId, mcIdType nodeIdInCell, int compoId) const
 
virtual DataArrayDoublegetLocalizationOfDiscValues (const MEDCouplingMesh *mesh) const =0
 
virtual MEDCouplingFieldDoublegetMeasureField (const MEDCouplingMesh *mesh, bool isAbs) const =0
 
virtual mcIdType getNbOfGaussLocalization () const
 
virtual mcIdType getNumberOfMeshPlaces (const MEDCouplingMesh *mesh) const =0
 
virtual mcIdType getNumberOfTuples (const MEDCouplingMesh *mesh) const =0
 
virtual mcIdType getNumberOfTuplesExpectedRegardingCode (const std::vector< mcIdType > &code, const std::vector< const DataArrayIdType * > &idsPerType) const =0
 
virtual DataArrayIdType * getOffsetArr (const MEDCouplingMesh *mesh) const =0
 
double getPrecision () const
 
virtual const char * getRepr () const =0
 
virtual void getSerializationIntArray (DataArrayIdType *&arr) const
 
virtual std::string getStringRepr () const =0
 
virtual void getTinySerializationDbleInformation (std::vector< double > &tinyInfo) const
 
virtual void getTinySerializationIntInformation (std::vector< mcIdType > &tinyInfo) const
 
virtual void getValueOn (const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, double *res) const =0
 
virtual DataArrayDoublegetValueOnMulti (const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, mcIdType nbOfPoints) const =0
 
virtual void getValueOnPos (const DataArrayDouble *arr, const MEDCouplingMesh *mesh, mcIdType i, mcIdType j, mcIdType k, double *res) const =0
 
virtual void integral (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, bool isWAbs, double *res) const
 
virtual bool isEqual (const MEDCouplingFieldDiscretization *other, double eps) const
 
virtual void normL1 (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, double *res) const
 
virtual void normL2 (const MEDCouplingMesh *mesh, const DataArrayDouble *arr, double *res) const
 
virtual void renumberArraysForCell (const MEDCouplingMesh *mesh, const std::vector< DataArray * > &arrays, const mcIdType *old2NewBg, bool check)=0
 
virtual void renumberValuesOnCells (double epsOnVals, const MEDCouplingMesh *mesh, const mcIdType *old2New, mcIdType newSz, DataArrayDouble *arr) const =0
 
virtual void renumberValuesOnCellsR (const MEDCouplingMesh *mesh, const mcIdType *new2old, mcIdType newSz, DataArrayDouble *arr) const =0
 
virtual void renumberValuesOnNodes (double epsOnVals, const mcIdType *old2New, mcIdType newNbOfNodes, DataArrayDouble *arr) const =0
 
virtual void reprQuickOverview (std::ostream &stream) const =0
 
virtual void resizeForUnserialization (const std::vector< mcIdType > &tinyInfo, DataArrayIdType *&arr)
 
virtual void setGaussLocalizationOnCells (const MEDCouplingMesh *m, const mcIdType *begin, const mcIdType *end, const std::vector< double > &refCoo, const std::vector< double > &gsCoo, const std::vector< double > &wg)
 
virtual void setGaussLocalizationOnType (const MEDCouplingMesh *m, INTERP_KERNEL::NormalizedCellType type, const std::vector< double > &refCoo, const std::vector< double > &gsCoo, const std::vector< double > &wg)
 
void setPrecision (double val)
 
virtual ~MEDCouplingFieldDiscretization ()
 
- Public Member Functions inherited from MEDCoupling::RefCountObjectOnly
bool decrRef () const
 
int getRCValue () const
 
void incrRef () const
 
RefCountObjectOnlyoperator= (const RefCountObjectOnly &other)
 
- Public Member Functions inherited from MEDCoupling::BigMemoryObject
std::string debugHeapMemorySize () const
 
std::vector< const BigMemoryObject * > getAllTheProgeny () const
 
virtual std::string getClassName () const
 
std::vector< const BigMemoryObject * > getDirectChildren () const
 
std::size_t getHeapMemorySize () const
 
std::string getHeapMemorySizeStr () const
 
bool isObjectInTheProgeny (const BigMemoryObject *obj) const
 
virtual ~BigMemoryObject ()
 
- Public Member Functions inherited from MEDCoupling::TimeLabel
void declareAsNew () const
 
std::size_t getTimeOfThis () const
 
TimeLabeloperator= (const TimeLabel &other)
 
 TimeLabel (const TimeLabel &other)=default
 

Protected Member Functions

void buildDiscrPerCellIfNecessary (const MEDCouplingMesh *mesh)
 
void checkCoherencyBetween (const MEDCouplingMesh *mesh, const DataArray *da) const
 
std::vector< const BigMemoryObject * > getDirectChildrenWithNull () const
 
std::size_t getHeapMemorySizeWithoutChildren () const
 
bool isEqualIfNotWhy (const MEDCouplingFieldDiscretization *other, double eps, std::string &reason) const override
 
bool isEqualWithoutConsideringStr (const MEDCouplingFieldDiscretization *other, double eps) const
 
 MEDCouplingFieldDiscretizationPerCell ()
 
 MEDCouplingFieldDiscretizationPerCell (const MEDCouplingFieldDiscretizationPerCell &other, const mcIdType *startCellIds, const mcIdType *endCellIds)
 
 MEDCouplingFieldDiscretizationPerCell (const MEDCouplingFieldDiscretizationPerCell &other, mcIdType beginCellIds, mcIdType endCellIds, mcIdType stepCellIds)
 
 MEDCouplingFieldDiscretizationPerCell (DataArrayIdType *dpc)
 
void renumberCells (const mcIdType *old2NewBg, bool check)
 
void updateTime () const
 
 ~MEDCouplingFieldDiscretizationPerCell ()
 
- Protected Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
 MEDCouplingFieldDiscretization ()
 
- Protected Member Functions inherited from MEDCoupling::RefCountObject
 RefCountObject ()
 
 RefCountObject (const RefCountObject &other)
 
virtual ~RefCountObject ()
 
- Protected Member Functions inherited from MEDCoupling::RefCountObjectOnly
 RefCountObjectOnly ()
 
 RefCountObjectOnly (const RefCountObjectOnly &other)
 
virtual ~RefCountObjectOnly ()
 
- Protected Member Functions inherited from MEDCoupling::TimeLabel
void forceTimeOfThis (const TimeLabel &other) const
 
 TimeLabel ()
 
void updateTimeWith (const TimeLabel &other) const
 
virtual ~TimeLabel ()
 

Protected Attributes

DataArrayIdType * _discr_per_cell
 
- Protected Attributes inherited from MEDCoupling::MEDCouplingFieldDiscretization
double _precision
 

Static Protected Attributes

static const mcIdType DFT_INVALID_LOCID_VALUE = -1
 
- Static Protected Attributes inherited from MEDCoupling::MEDCouplingFieldDiscretization
static const double DFLT_PRECISION = 1.e-12
 

Additional Inherited Members

- Static Public Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
static TypeOfField GetTypeOfFieldFromStringRepr (const std::string &repr)
 
static std::string GetTypeOfFieldRepr (TypeOfField type)
 
static MEDCouplingFieldDiscretizationNew (TypeOfField type)
 
- Static Public Member Functions inherited from MEDCoupling::BigMemoryObject
static std::size_t GetHeapMemorySizeOfObjs (const std::vector< const BigMemoryObject * > &objs)
 
- Static Protected Member Functions inherited from MEDCoupling::MEDCouplingFieldDiscretization
template<class FIELD_DISC >
static MCAuto< MEDCouplingFieldDiscretizationEasyAggregate (std::vector< const MEDCouplingFieldDiscretization * > &fds)
 
static void RenumberEntitiesFromN2OArr (const mcIdType *new2OldPtr, mcIdType new2OldSz, DataArrayDouble *arr, const std::string &msg)
 
static void RenumberEntitiesFromO2NArr (double epsOnVals, const mcIdType *old2NewPtr, mcIdType newNbOfEntity, DataArrayDouble *arr, const std::string &msg)
 

Detailed Description

This class abstracts MEDCouplingFieldDiscretization that needs an information on each cell to perform their job. All classes that inherits from this are more linked to mesh.

Constructor & Destructor Documentation

◆ MEDCouplingFieldDiscretizationPerCell() [1/4]

MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell ( )
protected

◆ MEDCouplingFieldDiscretizationPerCell() [2/4]

MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell ( const MEDCouplingFieldDiscretizationPerCell other,
const mcIdType *  startCellIds,
const mcIdType *  endCellIds 
)
protected

This constructor deep copies MEDCoupling::DataArrayIdType instance from other (if any).

References _discr_per_cell.

◆ MEDCouplingFieldDiscretizationPerCell() [3/4]

MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell ( const MEDCouplingFieldDiscretizationPerCell other,
mcIdType  beginCellIds,
mcIdType  endCellIds,
mcIdType  stepCellIds 
)
protected

References _discr_per_cell.

◆ MEDCouplingFieldDiscretizationPerCell() [4/4]

MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell ( DataArrayIdType *  dpc)
protected

References _discr_per_cell.

◆ ~MEDCouplingFieldDiscretizationPerCell()

MEDCouplingFieldDiscretizationPerCell::~MEDCouplingFieldDiscretizationPerCell ( )
protected

References _discr_per_cell.

Member Function Documentation

◆ getArrayOfDiscIds()

const DataArrayIdType * MEDCouplingFieldDiscretizationPerCell::getArrayOfDiscIds ( ) const

References _discr_per_cell.

◆ setArrayOfDiscIds()

void MEDCouplingFieldDiscretizationPerCell::setArrayOfDiscIds ( const DataArrayIdType *  adids)

◆ checkNoOrphanCells()

void MEDCouplingFieldDiscretizationPerCell::checkNoOrphanCells ( ) const

◆ splitIntoSingleGaussDicrPerCellType()

std::vector< DataArrayIdType * > MEDCouplingFieldDiscretizationPerCell::splitIntoSingleGaussDicrPerCellType ( std::vector< mcIdType > &  locIds) const

This method is useful when 'this' describes a field discretization with several gauss discretization on a same cell type. For example same NORM_TRI3 cells having 6 gauss points and others with 12 gauss points. This method returns 2 arrays with same size : the return value and 'locIds' output parameter. For a given i into [0,locIds.size) ret[i] represents the set of cell ids of i_th set an locIds[i] represents the set of discretisation of the set. The return vector contains a set of newly created instance to deal with. The returned vector represents a partition of cells ids with a gauss discretization set.

If no descretization is set in 'this' and exception will be thrown.

References _discr_per_cell.

Referenced by MEDCoupling::MEDCouplingFieldDiscretizationGauss::getLocalizationOfDiscValues(), and MEDCoupling::MEDCouplingFieldDiscretizationGauss::getMeasureField().

◆ updateTime()

void MEDCouplingFieldDiscretizationPerCell::updateTime ( ) const
protectedvirtual

Excepted for MEDCouplingFieldDiscretizationPerCell no underlying TimeLabel object : nothing to do in generally.

Reimplemented from MEDCoupling::MEDCouplingFieldDiscretization.

References _discr_per_cell, and MEDCoupling::TimeLabel::updateTimeWith().

◆ getHeapMemorySizeWithoutChildren()

std::size_t MEDCouplingFieldDiscretizationPerCell::getHeapMemorySizeWithoutChildren ( ) const
protectedvirtual

◆ getDirectChildrenWithNull()

std::vector< const BigMemoryObject * > MEDCouplingFieldDiscretizationPerCell::getDirectChildrenWithNull ( ) const
protectedvirtual

◆ checkCoherencyBetween()

void MEDCouplingFieldDiscretizationPerCell::checkCoherencyBetween ( const MEDCouplingMesh mesh,
const DataArray da 
) const
protectedvirtual

◆ isEqualIfNotWhy()

bool MEDCouplingFieldDiscretizationPerCell::isEqualIfNotWhy ( const MEDCouplingFieldDiscretization other,
double  eps,
std::string &  reason 
) const
overrideprotectedvirtual

◆ isEqualWithoutConsideringStr()

bool MEDCouplingFieldDiscretizationPerCell::isEqualWithoutConsideringStr ( const MEDCouplingFieldDiscretization other,
double  eps 
) const
protectedvirtual

◆ renumberCells()

void MEDCouplingFieldDiscretizationPerCell::renumberCells ( const mcIdType *  old2NewBg,
bool  check 
)
protectedvirtual

This method is typically the first step of renumbering. The impact on _discr_per_cell is necessary here. virtually by this method.

Reimplemented from MEDCoupling::MEDCouplingFieldDiscretization.

References _discr_per_cell.

◆ buildDiscrPerCellIfNecessary()

Member Data Documentation

◆ _discr_per_cell

DataArrayIdType* MEDCoupling::MEDCouplingFieldDiscretizationPerCell::_discr_per_cell
protected

Referenced by MEDCoupling::MEDCouplingFieldDiscretizationGauss::aggregate(), buildDiscrPerCellIfNecessary(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::buildNbOfGaussPointPerCellField(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::buildSubMeshDataRange(), checkCoherencyBetween(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::checkCoherencyBetween(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::checkForUnserialization(), checkNoOrphanCells(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::clearGaussLocalizations(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::computeTupleIdsToSelectFromCellIds(), getArrayOfDiscIds(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getCellIdsHavingGaussLocalization(), getDirectChildrenWithNull(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getGaussLocalizationIdOfOneCell(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getGaussLocalizationIdsOfOneType(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getMeasureField(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getNumberOfTuples(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getNumberOfTuplesExpectedRegardingCode(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getOffsetArr(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getOffsetOfCell(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getSerializationIntArray(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getStringRepr(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::getTinySerializationIntInformation(), isEqualIfNotWhy(), isEqualWithoutConsideringStr(), MEDCouplingFieldDiscretizationPerCell(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::renumberArraysForCell(), renumberCells(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::resizeForUnserialization(), setArrayOfDiscIds(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::setGaussLocalizationOnCells(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::setGaussLocalizationOnType(), splitIntoSingleGaussDicrPerCellType(), updateTime(), MEDCoupling::MEDCouplingFieldDiscretizationGauss::zipGaussLocalizations(), and ~MEDCouplingFieldDiscretizationPerCell().

◆ DFT_INVALID_LOCID_VALUE