-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2015 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <list>
#include <algorithm>
-namespace ParaMEDMEM
+namespace MEDCoupling
{
class DataArrayDouble;
class DataArrayInt;
namespace SauvUtilities
{
- class IntermediateMED;
+ struct IntermediateMED;
// ==============================================================================
typedef int TID; // an ID countered from 1
std::string _name;
std::vector<const Cell*> _cells;
std::vector< Group* > _groups; // des sous-groupes composant le Group
- //bool _isShared; // true if any Cell was added to the mesh from other Group
bool _isProfile; // is a field support or not
std::vector<std::string> _refNames; /* names of groups referring this one;
_refNames is resized according to nb of references
reference is converted into a copy of the medGroup
(issue 0021311)
*/
- ParaMEDMEM::DataArrayInt* _medGroup; // result of conversion
+ MEDCoupling::DataArrayInt* _medGroup; // result of conversion
std::vector< unsigned > _relocTable; // for _cells[i] gives its index in _medGroup
bool empty() const { return _cells.empty() && _groups.empty(); }
void setData( int nb_comp, Group* supp )
{ _support = supp; _comp_names.resize(nb_comp); _nb_gauss.resize(nb_comp,1); }
- int nbComponents() const { return _comp_names.size(); }
+ int nbComponents() const { return _comp_names.size(); }
std::string & compName( int i_comp ) { return _comp_names[ i_comp ]; }
- bool isValidNbGauss() const { return *std::max_element( _nb_gauss.begin(), _nb_gauss.end() ) ==
+ bool isSameNbGauss() const { return *std::max_element( _nb_gauss.begin(), _nb_gauss.end() ) ==
*std::min_element( _nb_gauss.begin(), _nb_gauss.end() ); }
- int nbGauss() const { return _nb_gauss[0] ? _nb_gauss[0] : 1; }
+ int nbGauss() const { return _nb_gauss[0] ? _nb_gauss[0] : 1; }
bool hasGauss() const { return nbGauss() > 1; }
};
// ----------------------------------------------------------------------------
is the same and supports of subcomponents do not overlap
*/
std::vector< std::vector< double > > _comp_values;
- ParaMEDMEM::MEDFileFieldMultiTS* _curMedField;
+ MEDCoupling::MEDFileFieldMultiTS* _curMedField;
DoubleField( int nb_sub, int total_nb_comp )
: _sub(nb_sub), _group(NULL), _curMedField(NULL) { _comp_values.reserve( total_nb_comp ); }
bool hasSameComponentsBySupport() const;
bool isMultiTimeStamps() const;
- bool isMedCompatible() const;
- ParaMEDMEM::TypeOfField getMedType( const int iSub=0 ) const;
- ParaMEDMEM::TypeOfTimeDiscretization getMedTimeDisc() const;
+ bool isMedCompatible(bool& sameNbGauss) const;
+ MEDCoupling::TypeOfField getMedType( const int iSub=0 ) const;
+ MEDCoupling::TypeOfTimeDiscretization getMedTimeDisc() const;
int getNbTuples( const int iSub=0 ) const;
int getNbValuesPerElement( const int iSub=0 ) const;
int getNbGauss( const int iSub=0 ) const;
const Group* getSupport( const int iSub=0 ) const;
int setValues( double * valPtr, const int iSub, const int elemShift=0 ) const;
+ void splitSubWithDiffNbGauss();
//virtual void dump(std::ostream&) const;
//virtual ~DoubleField() {}
Node* getNode( TID nID ) { return _points.getNode( nID ); }
int getNbCellsOfType( TCellType type ) const { return _cellsByType[type].size(); }
const Cell* insert(TCellType type, const Cell& ma) { return &( *_cellsByType[type].insert( ma ).first ); }
- ParaMEDMEM::MEDFileData* convertInMEDFileDS();
+ Group* addNewGroup(std::vector<SauvUtilities::Group*>* groupsToFix=0);
+ MEDCoupling::MEDFileData* convertInMEDFileDS();
private:
- ParaMEDMEM::MEDFileUMesh* makeMEDFileMesh();
- ParaMEDMEM::DataArrayDouble * getCoords();
- void setConnectivity( ParaMEDMEM::MEDFileUMesh* mesh, ParaMEDMEM::DataArrayDouble* coords );
- void setGroups( ParaMEDMEM::MEDFileUMesh* mesh );
- ParaMEDMEM::MEDFileFields * makeMEDFileFields(ParaMEDMEM::MEDFileUMesh* mesh);
+ MEDCoupling::MEDFileUMesh* makeMEDFileMesh();
+ MEDCoupling::DataArrayDouble * getCoords();
+ void setConnectivity( MEDCoupling::MEDFileUMesh* mesh, MEDCoupling::DataArrayDouble* coords );
+ void setGroups( MEDCoupling::MEDFileUMesh* mesh );
+ MEDCoupling::MEDFileFields * makeMEDFileFields(MEDCoupling::MEDFileUMesh* mesh);
void setFields( SauvUtilities::DoubleField* fld,
- ParaMEDMEM::MEDFileFields* medFields,
- ParaMEDMEM::MEDFileUMesh* mesh,
+ MEDCoupling::MEDFileFields* medFields,
+ MEDCoupling::MEDFileUMesh* mesh,
const TID castemID,
std::set< std::string >& usedNames);
void setTS( SauvUtilities::DoubleField* fld,
- ParaMEDMEM::DataArrayDouble* values,
- ParaMEDMEM::MEDFileFields* medFields,
- ParaMEDMEM::MEDFileUMesh* mesh,
+ MEDCoupling::DataArrayDouble* values,
+ MEDCoupling::MEDFileFields* medFields,
+ MEDCoupling::MEDFileUMesh* mesh,
const int iSub=0);
- void checkDataAvailability() const throw(INTERP_KERNEL::Exception);
+ void checkDataAvailability() const;
void setGroupLongNames();
void setFieldLongNames(std::set< std::string >& usedNames);
void makeFieldNewName(std::set< std::string >& usedNames,