mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-08 18:07:27 +05:00
0021803: EDF 2351 : Available versions of MED in TUI function ExportMED aren't consistent with GUI behavior
This commit is contained in:
parent
d502984073
commit
d3e1cabf77
@ -296,7 +296,7 @@ INCLUDE(CMakePackageConfigHelpers)
|
|||||||
# They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
|
# They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
|
||||||
SET(_${PROJECT_NAME}_exposed_targets
|
SET(_${PROJECT_NAME}_exposed_targets
|
||||||
SMESHControls MeshDriver MeshDriverDAT MeshDriverGMF MeshDriverMED
|
SMESHControls MeshDriver MeshDriverDAT MeshDriverGMF MeshDriverMED
|
||||||
MeshDriverSTL MeshDriverUNV MEDWrapperBase MEDWrapper MEDWrapper_V2_2
|
MeshDriverSTL MeshDriverUNV MEDWrapper
|
||||||
SMDS SMESHimpl SMESHEngine SMESHClient SMESHDS
|
SMDS SMESHimpl SMESHEngine SMESHClient SMESHDS
|
||||||
SMESHUtils StdMeshers StdMeshersEngine MeshJobManagerEngine
|
SMESHUtils StdMeshers StdMeshersEngine MeshJobManagerEngine
|
||||||
SPADDERPluginTesterEngine SalomeIDLSMESH SalomeIDLSPADDER
|
SPADDERPluginTesterEngine SalomeIDLSMESH SalomeIDLSPADDER
|
||||||
|
@ -138,9 +138,7 @@ SET(SMESH_MeshDriverGMF MeshDriverGMF)
|
|||||||
SET(SMESH_MeshDriverMED MeshDriverMED)
|
SET(SMESH_MeshDriverMED MeshDriverMED)
|
||||||
SET(SMESH_MeshDriverSTL MeshDriverSTL)
|
SET(SMESH_MeshDriverSTL MeshDriverSTL)
|
||||||
SET(SMESH_MeshDriverUNV MeshDriverUNV)
|
SET(SMESH_MeshDriverUNV MeshDriverUNV)
|
||||||
SET(SMESH_MEDWrapperBase MEDWrapperBase)
|
|
||||||
SET(SMESH_MEDWrapper MEDWrapper)
|
SET(SMESH_MEDWrapper MEDWrapper)
|
||||||
SET(SMESH_MEDWrapper_V2_2 MEDWrapper_V2_2)
|
|
||||||
IF(SALOME_SMESH_ENABLE_MEFISTO)
|
IF(SALOME_SMESH_ENABLE_MEFISTO)
|
||||||
SET(SMESH_MEFISTO2D MEFISTO2D)
|
SET(SMESH_MEFISTO2D MEFISTO2D)
|
||||||
ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
|
ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
|
||||||
|
@ -411,10 +411,20 @@ module SMESH
|
|||||||
*/
|
*/
|
||||||
long GetObjectId(in Object theObject);
|
long GetObjectId(in Object theObject);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get version of MED format being used.
|
||||||
|
*/
|
||||||
|
string GetMEDFileVersion();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Get MED version of the file by its name.
|
* \brief Get MED version of the file by its name.
|
||||||
*/
|
*/
|
||||||
boolean GetMEDVersion(in string theFileName, out MED_VERSION theVersion);
|
string GetMEDVersion(in string theFileName);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Check compatibility of file with MED format being used.
|
||||||
|
*/
|
||||||
|
boolean CheckCompatibility(in string theFileName);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Get names of meshes defined in file with the specified name.
|
* \brief Get names of meshes defined in file with the specified name.
|
||||||
|
@ -235,15 +235,6 @@ module SMESH
|
|||||||
DRS_FAIL // general failure (exception etc.)
|
DRS_FAIL // general failure (exception etc.)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
|
||||||
* Enumeration for ExportToMED*()
|
|
||||||
*/
|
|
||||||
enum MED_VERSION
|
|
||||||
{
|
|
||||||
MED_V2_1,
|
|
||||||
MED_V2_2
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief A structure containing information about MED file
|
* \brief A structure containing information about MED file
|
||||||
*/
|
*/
|
||||||
@ -623,13 +614,12 @@ module SMESH
|
|||||||
boolean HasDuplicatedGroupNamesMED();
|
boolean HasDuplicatedGroupNamesMED();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Export Mesh to a MED Format file
|
* Export a Mesh to MED file.
|
||||||
* @params
|
* @params
|
||||||
* - file : name of the MED file
|
* - fileName : name of the MED file
|
||||||
* - auto_groups : boolean parameter for creating/not creating
|
* - auto_groups : boolean parameter for creating/not creating
|
||||||
* the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
|
* the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
|
||||||
* the typical use is auto_groups=false.
|
* the typical use is auto_groups=false.
|
||||||
* - version : defines the version of format of MED file, that will be created
|
|
||||||
* - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
|
* - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
|
||||||
* - autoDimension : if @c true, a space dimension of a MED mesh can be either
|
* - autoDimension : if @c true, a space dimension of a MED mesh can be either
|
||||||
* - 1D if all mesh nodes lie on OX coordinate axis, or
|
* - 1D if all mesh nodes lie on OX coordinate axis, or
|
||||||
@ -637,18 +627,16 @@ module SMESH
|
|||||||
* - 3D in the rest cases.
|
* - 3D in the rest cases.
|
||||||
* If @a autoDimension is @c false, the space dimension is always 3.
|
* If @a autoDimension is @c false, the space dimension is always 3.
|
||||||
*/
|
*/
|
||||||
void ExportToMEDX( in string file,
|
void ExportMED( in string fileName,
|
||||||
in boolean auto_groups,
|
in boolean auto_groups,
|
||||||
in MED_VERSION version,
|
in boolean overwrite,
|
||||||
in boolean overwrite,
|
in boolean autoDimension) raises (SALOME::SALOME_Exception);
|
||||||
in boolean autoDimension) raises (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Export a [part of] Mesh into a MED file
|
* Export a [part of] Mesh into a MED file
|
||||||
* @params
|
* @params
|
||||||
* - meshPart : a part of mesh to store
|
* - meshPart : a part of mesh to store
|
||||||
* - file : name of the MED file
|
* - fileName : name of the MED file
|
||||||
* - version : define the version of format of MED file, that will be created
|
|
||||||
* - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
|
* - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists
|
||||||
* - autoDimension : if @c True, a space dimension for export is defined by mesh
|
* - autoDimension : if @c True, a space dimension for export is defined by mesh
|
||||||
* configuration; for example a planar mesh lying on XOY plane
|
* configuration; for example a planar mesh lying on XOY plane
|
||||||
@ -663,31 +651,13 @@ module SMESH
|
|||||||
* - 's' stands for _solids_ field.
|
* - 's' stands for _solids_ field.
|
||||||
*/
|
*/
|
||||||
void ExportPartToMED( in SMESH_IDSource meshPart,
|
void ExportPartToMED( in SMESH_IDSource meshPart,
|
||||||
in string file,
|
in string fileName,
|
||||||
in boolean auto_groups,
|
in boolean auto_groups,
|
||||||
in MED_VERSION version,
|
|
||||||
in boolean overwrite,
|
in boolean overwrite,
|
||||||
in boolean autoDimension,
|
in boolean autoDimension,
|
||||||
in GEOM::ListOfFields fields,
|
in GEOM::ListOfFields fields,
|
||||||
in string geomAssocFields ) raises (SALOME::SALOME_Exception);
|
in string geomAssocFields ) raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
|
||||||
* Export Mesh to a MED Format file
|
|
||||||
* Works, just the same as ExportToMEDX, with overwrite parameter equal to true.
|
|
||||||
* The method is kept in order to support old functionality
|
|
||||||
*/
|
|
||||||
void ExportToMED( in string file, in boolean auto_groups, in MED_VERSION theVersion )
|
|
||||||
raises (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Export Mesh to MED_V2_1 MED format
|
|
||||||
* Works, just the same as ExportToMEDX with MED_VERSION parameter equal to MED_V2_1
|
|
||||||
* and overwrite parameter equal to true
|
|
||||||
* The method is kept in order to support old functionality
|
|
||||||
*/
|
|
||||||
void ExportMED( in string file, in boolean auto_groups )
|
|
||||||
raises (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Export Mesh to SAUV formatted file
|
* Export Mesh to SAUV formatted file
|
||||||
* Write a temporary med file and use med2sauv
|
* Write a temporary med file and use med2sauv
|
||||||
@ -695,11 +665,6 @@ module SMESH
|
|||||||
void ExportSAUV( in string file, in boolean auto_groups )
|
void ExportSAUV( in string file, in boolean auto_groups )
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
|
||||||
* Return string representation of a MED file version comprising nbDigits
|
|
||||||
*/
|
|
||||||
string GetVersionString(in MED_VERSION version, in short nbDigits);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Export Mesh to different Formats
|
* Export Mesh to different Formats
|
||||||
* (UNV supported version is I-DEAS 10)
|
* (UNV supported version is I-DEAS 10)
|
||||||
|
@ -25,8 +25,7 @@ INCLUDE_DIRECTORIES(
|
|||||||
${CAS_INCLUDE_DIRS}
|
${CAS_INCLUDE_DIRS}
|
||||||
${VTK_INCLUDE_DIRS}
|
${VTK_INCLUDE_DIRS}
|
||||||
${Boost_INCLUDE_DIRS}
|
${Boost_INCLUDE_DIRS}
|
||||||
${PROJECT_SOURCE_DIR}/src/MEDWrapper/Base
|
${PROJECT_SOURCE_DIR}/src/MEDWrapper
|
||||||
${PROJECT_SOURCE_DIR}/src/MEDWrapper/Factory
|
|
||||||
${PROJECT_SOURCE_DIR}/src/Driver
|
${PROJECT_SOURCE_DIR}/src/Driver
|
||||||
${PROJECT_SOURCE_DIR}/src/SMDS
|
${PROJECT_SOURCE_DIR}/src/SMDS
|
||||||
${PROJECT_SOURCE_DIR}/src/SMESHUtils
|
${PROJECT_SOURCE_DIR}/src/SMESHUtils
|
||||||
@ -45,8 +44,6 @@ SET(_link_LIBRARIES
|
|||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
MeshDriver
|
MeshDriver
|
||||||
MEDWrapper
|
MEDWrapper
|
||||||
MEDWrapperBase
|
|
||||||
MEDWrapper_V2_2
|
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(_link_LIBRARIES_bin
|
SET(_link_LIBRARIES_bin
|
||||||
|
@ -383,11 +383,7 @@ DriverMED_Family::GetFamilyInfo(const MED::PWrapper& theWrapper,
|
|||||||
}
|
}
|
||||||
string aValue = aStr.str();
|
string aValue = aStr.str();
|
||||||
// PAL19785,0019867 - med forbids whitespace to be the last char in the name
|
// PAL19785,0019867 - med forbids whitespace to be the last char in the name
|
||||||
int maxSize;
|
int maxSize = MED::GetNOMLength();
|
||||||
//if ( theWrapper->GetVersion() == MED::eV2_1 )
|
|
||||||
// maxSize = MED::GetNOMLength<MED::eV2_1>();
|
|
||||||
//else
|
|
||||||
maxSize = MED::GetNOMLength<MED::eV2_2>();
|
|
||||||
int lastCharPos = min( maxSize, (int) aValue.size() ) - 1;
|
int lastCharPos = min( maxSize, (int) aValue.size() ) - 1;
|
||||||
while ( isspace( aValue[ lastCharPos ] ))
|
while ( isspace( aValue[ lastCharPos ] ))
|
||||||
aValue.resize( lastCharPos-- );
|
aValue.resize( lastCharPos-- );
|
||||||
|
@ -110,7 +110,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
|
|||||||
#endif
|
#endif
|
||||||
myFamilies.clear();
|
myFamilies.clear();
|
||||||
if(MYDEBUG) MESSAGE("Perform - myFile : "<<myFile);
|
if(MYDEBUG) MESSAGE("Perform - myFile : "<<myFile);
|
||||||
PWrapper aMed = CrWrapper(myFile,true);
|
PWrapper aMed = CrWrapperR(myFile);
|
||||||
|
|
||||||
aResult = DRS_EMPTY;
|
aResult = DRS_EMPTY;
|
||||||
TInt aNbMeshes = aMed->GetNbMeshes();
|
TInt aNbMeshes = aMed->GetNbMeshes();
|
||||||
@ -1022,7 +1022,7 @@ list<string> DriverMED_R_SMESHDS_Mesh::GetMeshNames(Status& theStatus)
|
|||||||
try {
|
try {
|
||||||
if(MYDEBUG) MESSAGE("GetMeshNames - myFile : " << myFile);
|
if(MYDEBUG) MESSAGE("GetMeshNames - myFile : " << myFile);
|
||||||
theStatus = DRS_OK;
|
theStatus = DRS_OK;
|
||||||
PWrapper aMed = CrWrapper(myFile);
|
PWrapper aMed = CrWrapperR(myFile);
|
||||||
|
|
||||||
if (TInt aNbMeshes = aMed->GetNbMeshes()) {
|
if (TInt aNbMeshes = aMed->GetNbMeshes()) {
|
||||||
for (int iMesh = 0; iMesh < aNbMeshes; iMesh++) {
|
for (int iMesh = 0; iMesh < aNbMeshes; iMesh++) {
|
||||||
|
@ -254,7 +254,7 @@ Driver_Mesh::Status DriverMED_W_Field::Perform()
|
|||||||
if ( !myMesh )
|
if ( !myMesh )
|
||||||
return addMessage("Supporting mesh not set", /*isFatal=*/true );
|
return addMessage("Supporting mesh not set", /*isFatal=*/true );
|
||||||
|
|
||||||
MED::PWrapper medFile = MED::CrWrapper( myFile, MED::eV2_2 );
|
MED::PWrapper medFile = MED::CrWrapperW( myFile );
|
||||||
MED::PMeshInfo meshInfo;
|
MED::PMeshInfo meshInfo;
|
||||||
if ( myMeshId > 0 )
|
if ( myMeshId > 0 )
|
||||||
{
|
{
|
||||||
|
@ -52,7 +52,6 @@ using namespace MED;
|
|||||||
|
|
||||||
|
|
||||||
DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh():
|
DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh():
|
||||||
myMedVersion(MED::eV2_2),
|
|
||||||
myAllSubMeshes (false),
|
myAllSubMeshes (false),
|
||||||
myDoGroupOfNodes (false),
|
myDoGroupOfNodes (false),
|
||||||
myDoGroupOfEdges (false),
|
myDoGroupOfEdges (false),
|
||||||
@ -65,36 +64,11 @@ DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh():
|
|||||||
myDoAllInGroups(false)
|
myDoAllInGroups(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void DriverMED_W_SMESHDS_Mesh::SetFile(const std::string& theFileName,
|
|
||||||
MED::EVersion theId)
|
|
||||||
{
|
|
||||||
Driver_SMESHDS_Mesh::SetFile(theFileName);
|
|
||||||
myMedVersion = theId;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DriverMED_W_SMESHDS_Mesh::SetFile(const std::string& theFileName)
|
void DriverMED_W_SMESHDS_Mesh::SetFile(const std::string& theFileName)
|
||||||
{
|
{
|
||||||
Driver_SMESHDS_Mesh::SetFile(theFileName);
|
Driver_SMESHDS_Mesh::SetFile(theFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
string DriverMED_W_SMESHDS_Mesh::GetVersionString(const MED::EVersion theVersion, int theNbDigits)
|
|
||||||
{
|
|
||||||
TInt majeur, mineur, release;
|
|
||||||
majeur = mineur = release = 0;
|
|
||||||
// if ( theVersion == eV2_1 )
|
|
||||||
// MED::GetVersionRelease<eV2_1>(majeur, mineur, release);
|
|
||||||
// else
|
|
||||||
MED::GetVersionRelease<eV2_2>(majeur, mineur, release);
|
|
||||||
ostringstream name;
|
|
||||||
if ( theNbDigits > 0 )
|
|
||||||
name << majeur;
|
|
||||||
if ( theNbDigits > 1 )
|
|
||||||
name << "." << mineur;
|
|
||||||
if ( theNbDigits > 2 )
|
|
||||||
name << "." << release;
|
|
||||||
return name.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DriverMED_W_SMESHDS_Mesh::AddGroup(SMESHDS_GroupBase* theGroup)
|
void DriverMED_W_SMESHDS_Mesh::AddGroup(SMESHDS_GroupBase* theGroup)
|
||||||
{
|
{
|
||||||
myGroups.push_back(theGroup);
|
myGroups.push_back(theGroup);
|
||||||
@ -457,7 +431,7 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MED::PWrapper myMed = CrWrapper(myFile,myMedVersion);
|
MED::PWrapper myMed = CrWrapperW(myFile);
|
||||||
PMeshInfo aMeshInfo = myMed->CrMeshInfo(aMeshDimension,aSpaceDimension,aMeshName);
|
PMeshInfo aMeshInfo = myMed->CrMeshInfo(aMeshDimension,aSpaceDimension,aMeshName);
|
||||||
//MESSAGE("Add - aMeshName : "<<aMeshName<<"; "<<aMeshInfo->GetName());
|
//MESSAGE("Add - aMeshName : "<<aMeshName<<"; "<<aMeshInfo->GetName());
|
||||||
myMed->SetMeshInfo(aMeshInfo);
|
myMed->SetMeshInfo(aMeshInfo);
|
||||||
|
@ -47,12 +47,9 @@ class MESHDRIVERMED_EXPORT DriverMED_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
|
|||||||
|
|
||||||
DriverMED_W_SMESHDS_Mesh();
|
DriverMED_W_SMESHDS_Mesh();
|
||||||
|
|
||||||
virtual void SetFile(const std::string& theFileName);
|
void SetFile(const std::string& theFileName);
|
||||||
void SetFile(const std::string& theFileName, MED::EVersion theId);
|
|
||||||
void SetAutoDimension(bool toFindOutDimension) { myAutoDimension = toFindOutDimension; }
|
void SetAutoDimension(bool toFindOutDimension) { myAutoDimension = toFindOutDimension; }
|
||||||
|
|
||||||
static std::string GetVersionString(const MED::EVersion theVersion, int theNbDigits=2);
|
|
||||||
|
|
||||||
void AddGroupOfNodes();
|
void AddGroupOfNodes();
|
||||||
void AddGroupOfEdges();
|
void AddGroupOfEdges();
|
||||||
void AddGroupOfFaces();
|
void AddGroupOfFaces();
|
||||||
@ -77,7 +74,6 @@ class MESHDRIVERMED_EXPORT DriverMED_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
MED::EVersion myMedVersion;
|
|
||||||
std::list<SMESHDS_GroupBase*> myGroups;
|
std::list<SMESHDS_GroupBase*> myGroups;
|
||||||
bool myAllSubMeshes;
|
bool myAllSubMeshes;
|
||||||
std::vector<SMESHDS_SubMesh*> mySubMeshes;
|
std::vector<SMESHDS_SubMesh*> mySubMeshes;
|
||||||
|
@ -1,78 +0,0 @@
|
|||||||
# Copyright (C) 2012-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
#
|
|
||||||
# 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, 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
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this library; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
#
|
|
||||||
|
|
||||||
# --- options ---
|
|
||||||
# additional include directories
|
|
||||||
INCLUDE_DIRECTORIES(
|
|
||||||
${HDF5_INCLUDE_DIRS}
|
|
||||||
${Boost_INCLUDE_DIRS}
|
|
||||||
${KERNEL_INCLUDE_DIRS}
|
|
||||||
${MEDFILE_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
# additional preprocessor / compiler flags
|
|
||||||
ADD_DEFINITIONS(
|
|
||||||
${HDF5_DEFINITIONS}
|
|
||||||
${BOOST_DEFINITIONS}
|
|
||||||
)
|
|
||||||
|
|
||||||
SET(_link_LIBRARIES
|
|
||||||
${Boost_LIBRARIES}
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- headers ---
|
|
||||||
|
|
||||||
# header files / no moc processing
|
|
||||||
SET(MEDWrapperBase_HEADERS
|
|
||||||
MED_Common.hxx
|
|
||||||
MED_Vector.hxx
|
|
||||||
MED_SharedPtr.hxx
|
|
||||||
MED_SliceArray.hxx
|
|
||||||
MED_Wrapper.hxx
|
|
||||||
MED_TWrapper.hxx
|
|
||||||
MED_Structures.hxx
|
|
||||||
MED_TStructures.hxx
|
|
||||||
MED_Algorithm.hxx
|
|
||||||
MED_GaussUtils.hxx
|
|
||||||
MED_CoordUtils.hxx
|
|
||||||
MED_Utilities.hxx
|
|
||||||
MED_GaussDef.hxx
|
|
||||||
MED_WrapperBase.hxx
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- sources ---
|
|
||||||
|
|
||||||
# sources / static
|
|
||||||
SET(MEDWrapperBase_SOURCES
|
|
||||||
MED_Structures.cxx
|
|
||||||
MED_Wrapper.cxx
|
|
||||||
MED_Algorithm.cxx
|
|
||||||
MED_GaussUtils.cxx
|
|
||||||
MED_CoordUtils.cxx
|
|
||||||
MED_Utilities.cxx
|
|
||||||
MED_GaussDef.cxx
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- rules ---
|
|
||||||
|
|
||||||
ADD_LIBRARY(MEDWrapperBase ${MEDWrapperBase_SOURCES})
|
|
||||||
TARGET_LINK_LIBRARIES(MEDWrapperBase ${_link_LIBRARIES})
|
|
||||||
INSTALL(TARGETS MEDWrapperBase EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
|
|
||||||
|
|
||||||
INSTALL(FILES ${MEDWrapperBase_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
|
|
@ -1,865 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
// File : MED_Structure.cxx
|
|
||||||
// Author : Eugeny NIKOLAEV
|
|
||||||
//
|
|
||||||
#include "MED_Structures.hxx"
|
|
||||||
#include "MED_Utilities.hxx"
|
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
using namespace MED;
|
|
||||||
|
|
||||||
namespace MED
|
|
||||||
{
|
|
||||||
TInt
|
|
||||||
GetNbNodes(EGeometrieElement typmai)
|
|
||||||
{
|
|
||||||
return typmai%100;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string
|
|
||||||
GetString(TInt theId,
|
|
||||||
TInt theStep,
|
|
||||||
const TString& theString)
|
|
||||||
{
|
|
||||||
const char* aPos = &theString[theId*theStep];
|
|
||||||
TInt aSize = std::min(TInt(strlen(aPos)),theStep);
|
|
||||||
return std::string(aPos,aSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
SetString(TInt theId,
|
|
||||||
TInt theStep,
|
|
||||||
TString& theString,
|
|
||||||
const std::string& theValue)
|
|
||||||
{
|
|
||||||
TInt aSize = std::min(TInt(theValue.size()+1),theStep);
|
|
||||||
char* aPos = &theString[theId*theStep];
|
|
||||||
strncpy(aPos,theValue.c_str(),aSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
SetString(TInt theId,
|
|
||||||
TInt theStep,
|
|
||||||
TString& theString,
|
|
||||||
const TString& theValue)
|
|
||||||
{
|
|
||||||
TInt aSize = std::min(TInt(theValue.size()+1),theStep);
|
|
||||||
char* aPos = &theString[theId*theStep];
|
|
||||||
const char* aValue = &theValue[0];
|
|
||||||
strncpy(aPos,aValue,aSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
GetDimGaussCoord(EGeometrieElement theGeom)
|
|
||||||
{
|
|
||||||
return theGeom/100;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
GetNbRefCoord(EGeometrieElement theGeom)
|
|
||||||
{
|
|
||||||
return (theGeom%100);
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
PFloatTimeStampValue
|
|
||||||
CastToFloatTimeStampValue(const PTimeStampValueBase& theTimeStampValue)
|
|
||||||
{
|
|
||||||
return theTimeStampValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
PIntTimeStampValue
|
|
||||||
CastToIntTimeStampValue(const PTimeStampValueBase& theTimeStampValue)
|
|
||||||
{
|
|
||||||
return theTimeStampValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TInt
|
|
||||||
TFamilyInfo
|
|
||||||
::GetAttrId(TInt theId) const
|
|
||||||
{
|
|
||||||
return myAttrId[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TFamilyInfo
|
|
||||||
::GetAttrVal(TInt theId) const
|
|
||||||
{
|
|
||||||
return myAttrVal[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TFamilyInfo
|
|
||||||
::SetAttrId(TInt theId,TInt theVal)
|
|
||||||
{
|
|
||||||
myAttrId[theId] = theVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TFamilyInfo
|
|
||||||
::SetAttrVal(TInt theId,TInt theVal)
|
|
||||||
{
|
|
||||||
myAttrVal[theId] = theVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TInt
|
|
||||||
TElemInfo
|
|
||||||
::GetFamNum(TInt theId) const
|
|
||||||
{
|
|
||||||
return (*myFamNum)[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TElemInfo
|
|
||||||
::SetFamNum(TInt theId, TInt theVal)
|
|
||||||
{
|
|
||||||
(*myFamNum)[theId] = theVal;
|
|
||||||
myIsFamNum = eVRAI;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TElemInfo
|
|
||||||
::GetElemNum(TInt theId) const
|
|
||||||
{
|
|
||||||
return (*myElemNum)[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TElemInfo
|
|
||||||
::SetElemNum(TInt theId, TInt theVal)
|
|
||||||
{
|
|
||||||
(*myElemNum)[theId] = theVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TCCoordSlice
|
|
||||||
TNodeInfo
|
|
||||||
::GetCoordSlice(TInt theId) const
|
|
||||||
{
|
|
||||||
TInt aDim = myMeshInfo->GetSpaceDim();
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCCoordSlice(*myCoord, std::slice(theId*aDim, aDim, 1));
|
|
||||||
else
|
|
||||||
return TCCoordSlice(*myCoord, std::slice(theId, aDim, aDim));
|
|
||||||
}
|
|
||||||
|
|
||||||
TCoordSlice
|
|
||||||
TNodeInfo
|
|
||||||
::GetCoordSlice(TInt theId)
|
|
||||||
{
|
|
||||||
TInt aDim = myMeshInfo->GetSpaceDim();
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCoordSlice(*myCoord, std::slice(theId*aDim,aDim,1));
|
|
||||||
else
|
|
||||||
return TCoordSlice(*myCoord, std::slice(theId,aDim,aDim));
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TCConnSlice
|
|
||||||
TCellInfo
|
|
||||||
::GetConnSlice(TInt theElemId) const
|
|
||||||
{
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCConnSlice(*myConn, std::slice(GetConnDim()*theElemId, GetNbNodes(myGeom), 1));
|
|
||||||
else
|
|
||||||
return TCConnSlice(*myConn, std::slice(theElemId, GetNbNodes(myGeom), GetConnDim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
TConnSlice
|
|
||||||
TCellInfo
|
|
||||||
::GetConnSlice(TInt theElemId)
|
|
||||||
{
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TConnSlice(*myConn, std::slice(GetConnDim()*theElemId, GetNbNodes(myGeom), 1));
|
|
||||||
else
|
|
||||||
return TConnSlice(*myConn, std::slice(theElemId, GetNbNodes(myGeom), GetConnDim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TInt
|
|
||||||
TPolygoneInfo
|
|
||||||
::GetNbConn(TInt theElemId) const
|
|
||||||
{
|
|
||||||
return (*myIndex)[theElemId + 1] - (*myIndex)[theElemId];
|
|
||||||
}
|
|
||||||
|
|
||||||
TCConnSlice
|
|
||||||
TPolygoneInfo
|
|
||||||
::GetConnSlice(TInt theElemId) const
|
|
||||||
{
|
|
||||||
return TCConnSlice(*myConn, std::slice((*myIndex)[theElemId] - 1, GetNbConn(theElemId), 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
TConnSlice
|
|
||||||
TPolygoneInfo
|
|
||||||
::GetConnSlice(TInt theElemId)
|
|
||||||
{
|
|
||||||
return TConnSlice(*myConn, std::slice((*myIndex)[theElemId] - 1, GetNbConn(theElemId), 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TInt
|
|
||||||
TPolyedreInfo
|
|
||||||
::GetNbFaces(TInt theElemId) const
|
|
||||||
{
|
|
||||||
return (*myIndex)[theElemId+1] - (*myIndex)[theElemId];
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TPolyedreInfo
|
|
||||||
::GetNbNodes(TInt theElemId) const
|
|
||||||
{
|
|
||||||
TInt aNbNodes = 0;
|
|
||||||
TInt aNbFaces = GetNbFaces(theElemId);
|
|
||||||
TInt aStartFaceId = (*myIndex)[theElemId] - 1;
|
|
||||||
for(TInt aFaceId = 0; aFaceId < aNbFaces; aFaceId++, aStartFaceId++){
|
|
||||||
TInt aCurrentId = (*myFaces)[aStartFaceId];
|
|
||||||
TInt aDiff = (*myFaces)[aStartFaceId + 1] - aCurrentId;
|
|
||||||
aNbNodes += aDiff;
|
|
||||||
}
|
|
||||||
return aNbNodes;
|
|
||||||
}
|
|
||||||
|
|
||||||
TCConnSliceArr
|
|
||||||
TPolyedreInfo
|
|
||||||
::GetConnSliceArr(TInt theElemId) const
|
|
||||||
{
|
|
||||||
TInt aNbFaces = GetNbFaces(theElemId);
|
|
||||||
TCConnSliceArr aConnSliceArr(aNbFaces);
|
|
||||||
TInt aStartFaceId = (*myIndex)[theElemId] - 1;
|
|
||||||
for(TInt aFaceId = 0; aFaceId < aNbFaces; aFaceId++, aStartFaceId++){
|
|
||||||
TInt aCurrentId = (*myFaces)[aStartFaceId];
|
|
||||||
TInt aDiff = (*myFaces)[aStartFaceId + 1] - aCurrentId;
|
|
||||||
aConnSliceArr[aFaceId] =
|
|
||||||
TCConnSlice(*myConn, std::slice(aCurrentId - 1, aDiff, 1));
|
|
||||||
}
|
|
||||||
return aConnSliceArr;
|
|
||||||
}
|
|
||||||
|
|
||||||
TConnSliceArr
|
|
||||||
TPolyedreInfo
|
|
||||||
::GetConnSliceArr(TInt theElemId)
|
|
||||||
{
|
|
||||||
TInt aNbFaces = GetNbFaces(theElemId);
|
|
||||||
TConnSliceArr aConnSliceArr(aNbFaces);
|
|
||||||
TInt aStartFaceId = (*myIndex)[theElemId] - 1;
|
|
||||||
for(TInt aFaceId = 0; aFaceId < aNbFaces; aFaceId++, aStartFaceId++){
|
|
||||||
TInt aCurrentId = (*myFaces)[aStartFaceId];
|
|
||||||
TInt aDiff = (*myFaces)[aStartFaceId + 1] - aCurrentId;
|
|
||||||
aConnSliceArr[aFaceId] =
|
|
||||||
TConnSlice(*myConn, std::slice(aCurrentId - 1, aDiff, 1));
|
|
||||||
}
|
|
||||||
return aConnSliceArr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TMeshValueBase
|
|
||||||
::TMeshValueBase():
|
|
||||||
myNbElem(0),
|
|
||||||
myNbComp(0),
|
|
||||||
myNbGauss(0),
|
|
||||||
myStep(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void
|
|
||||||
TMeshValueBase
|
|
||||||
::Allocate(TInt theNbElem,
|
|
||||||
TInt theNbGauss,
|
|
||||||
TInt theNbComp,
|
|
||||||
EModeSwitch theMode)
|
|
||||||
{
|
|
||||||
myModeSwitch = theMode;
|
|
||||||
|
|
||||||
myNbElem = theNbElem;
|
|
||||||
myNbGauss = theNbGauss;
|
|
||||||
myNbComp = theNbComp;
|
|
||||||
|
|
||||||
myStep = theNbComp*theNbGauss;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
TMeshValueBase
|
|
||||||
::GetSize() const
|
|
||||||
{
|
|
||||||
return myNbElem * myStep;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
TMeshValueBase
|
|
||||||
::GetNbVal() const
|
|
||||||
{
|
|
||||||
return myNbElem * myNbGauss;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
TMeshValueBase
|
|
||||||
::GetNbGauss() const
|
|
||||||
{
|
|
||||||
return myNbGauss;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
TMeshValueBase
|
|
||||||
::GetStep() const
|
|
||||||
{
|
|
||||||
return myStep;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TInt
|
|
||||||
TProfileInfo
|
|
||||||
::GetElemNum(TInt theId) const
|
|
||||||
{
|
|
||||||
return (*myElemNum)[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TProfileInfo
|
|
||||||
::SetElemNum(TInt theId,TInt theVal)
|
|
||||||
{
|
|
||||||
(*myElemNum)[theId] = theVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
bool
|
|
||||||
TGaussInfo::TLess
|
|
||||||
::operator()(const TKey& theLeft, const TKey& theRight) const
|
|
||||||
{
|
|
||||||
EGeometrieElement aLGeom = boost::get<0>(theLeft);
|
|
||||||
EGeometrieElement aRGeom = boost::get<0>(theRight);
|
|
||||||
if(aLGeom != aRGeom)
|
|
||||||
return aLGeom < aRGeom;
|
|
||||||
|
|
||||||
const std::string& aLStr = boost::get<1>(theLeft);
|
|
||||||
const std::string& aRStr = boost::get<1>(theRight);
|
|
||||||
return aLStr < aRStr;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
TGaussInfo::TLess
|
|
||||||
::operator()(const TGaussInfo& theLeft, const TGaussInfo& theRight) const
|
|
||||||
{
|
|
||||||
if(!&theLeft)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if(!&theRight)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if(theLeft.myGeom != theRight.myGeom)
|
|
||||||
return theLeft.myGeom < theRight.myGeom;
|
|
||||||
|
|
||||||
if(theLeft.myRefCoord != theRight.myRefCoord)
|
|
||||||
return theLeft.myRefCoord < theRight.myRefCoord;
|
|
||||||
|
|
||||||
return theLeft.myGaussCoord < theRight.myGaussCoord;
|
|
||||||
}
|
|
||||||
|
|
||||||
TCCoordSlice
|
|
||||||
TGaussInfo
|
|
||||||
::GetRefCoordSlice(TInt theId) const
|
|
||||||
{
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCCoordSlice(myRefCoord,std::slice(theId*GetDim(),GetDim(),1));
|
|
||||||
else
|
|
||||||
return TCCoordSlice(myRefCoord,std::slice(theId,GetDim(),GetDim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
TCoordSlice
|
|
||||||
TGaussInfo
|
|
||||||
::GetRefCoordSlice(TInt theId)
|
|
||||||
{
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCoordSlice(myRefCoord,std::slice(theId*GetDim(),GetDim(),1));
|
|
||||||
else
|
|
||||||
return TCoordSlice(myRefCoord,std::slice(theId,GetDim(),GetDim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
TCCoordSlice
|
|
||||||
TGaussInfo
|
|
||||||
::GetGaussCoordSlice(TInt theId) const
|
|
||||||
{
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCCoordSlice(myGaussCoord,std::slice(theId*GetDim(),GetDim(),1));
|
|
||||||
else
|
|
||||||
return TCCoordSlice(myGaussCoord,std::slice(theId,GetDim(),GetDim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
TCoordSlice
|
|
||||||
TGaussInfo
|
|
||||||
::GetGaussCoordSlice(TInt theId)
|
|
||||||
{
|
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE)
|
|
||||||
return TCoordSlice(myGaussCoord,std::slice(theId*GetDim(),GetNbGauss(),1));
|
|
||||||
else
|
|
||||||
return TCoordSlice(myGaussCoord,std::slice(theId,GetNbGauss(),GetDim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
TInt
|
|
||||||
TTimeStampInfo
|
|
||||||
::GetNbGauss(EGeometrieElement theGeom) const
|
|
||||||
{
|
|
||||||
TGeom2NbGauss::const_iterator anIter = myGeom2NbGauss.find(theGeom);
|
|
||||||
if(anIter == myGeom2NbGauss.end())
|
|
||||||
return 1;//EXCEPTION(runtime_error,"TTimeStampInfo::GetNbGauss - myGeom2NbGauss.find(theGeom) fails");
|
|
||||||
|
|
||||||
return anIter->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
// TGrilleInfo structure methods
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
const EGrilleType&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetGrilleType() const
|
|
||||||
{
|
|
||||||
return myGrilleType;
|
|
||||||
}
|
|
||||||
|
|
||||||
EGrilleType
|
|
||||||
TGrilleInfo
|
|
||||||
::GetGrilleType()
|
|
||||||
{
|
|
||||||
return myGrilleType;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TGrilleInfo
|
|
||||||
::SetGrilleType(EGrilleType theGrilleType)
|
|
||||||
{
|
|
||||||
myGrilleType = theGrilleType;
|
|
||||||
}
|
|
||||||
|
|
||||||
const
|
|
||||||
TIndexes&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetMapOfIndexes() const
|
|
||||||
{
|
|
||||||
return myIndixes;
|
|
||||||
}
|
|
||||||
|
|
||||||
TIndexes&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetMapOfIndexes()
|
|
||||||
{
|
|
||||||
return myIndixes;
|
|
||||||
}
|
|
||||||
|
|
||||||
const
|
|
||||||
TFloatVector&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetIndexes(TInt theAxisNumber) const
|
|
||||||
{
|
|
||||||
TIndexes::const_iterator aIter=myIndixes.find(theAxisNumber);
|
|
||||||
if(aIter==myIndixes.end())
|
|
||||||
EXCEPTION(std::runtime_error, "const TGrilleInfo::GetIndexes - myIndixes.find(theAxisNumber); fails");
|
|
||||||
return aIter->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
TFloatVector&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetIndexes(TInt theAxisNumber)
|
|
||||||
{
|
|
||||||
TIndexes::iterator aIter=myIndixes.find(theAxisNumber);
|
|
||||||
if(aIter==myIndixes.end())
|
|
||||||
EXCEPTION(std::runtime_error, "TGrilleInfo::GetIndexes - myIndixes.find(theAxisNumber="<<theAxisNumber<<"); fails");
|
|
||||||
return aIter->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetNbIndexes(TInt theAxisNumber)
|
|
||||||
{
|
|
||||||
const TFloatVector& aVector=GetIndexes(theAxisNumber);
|
|
||||||
return aVector.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetNbNodes()
|
|
||||||
{
|
|
||||||
TInt nbNodes=0;
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
for(int i=0;i<aDim;i++)
|
|
||||||
if(nbNodes == 0)
|
|
||||||
nbNodes = this->GetGrilleStructure()[i];
|
|
||||||
else
|
|
||||||
nbNodes = nbNodes*this->GetGrilleStructure()[i];
|
|
||||||
|
|
||||||
return nbNodes;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetNbCells()
|
|
||||||
{
|
|
||||||
TInt nbCells=0;
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
for(int i=0;i<aDim;i++)
|
|
||||||
if(nbCells == 0)
|
|
||||||
nbCells = this->GetGrilleStructure()[i]-1;
|
|
||||||
else
|
|
||||||
nbCells = nbCells*(this->GetGrilleStructure()[i]-1);
|
|
||||||
return nbCells;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetNbSubCells()
|
|
||||||
{
|
|
||||||
TInt nb=0;
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
switch (aDim) {
|
|
||||||
case 3:
|
|
||||||
nb =
|
|
||||||
(myGrilleStructure[0] ) * (myGrilleStructure[1]-1) * (myGrilleStructure[2]-1) +
|
|
||||||
(myGrilleStructure[0]-1) * (myGrilleStructure[1] ) * (myGrilleStructure[2]-1) +
|
|
||||||
(myGrilleStructure[0]-1) * (myGrilleStructure[1]-1) * (myGrilleStructure[2] );
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
nb =
|
|
||||||
(myGrilleStructure[0] ) * (myGrilleStructure[1]-1) +
|
|
||||||
(myGrilleStructure[0]-1) * (myGrilleStructure[1] );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return nb;
|
|
||||||
}
|
|
||||||
|
|
||||||
EGeometrieElement
|
|
||||||
TGrilleInfo
|
|
||||||
::GetGeom()
|
|
||||||
{
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
switch(aDim){
|
|
||||||
case 1:
|
|
||||||
return eSEG2;
|
|
||||||
case 2:
|
|
||||||
return eQUAD4;
|
|
||||||
case 3:
|
|
||||||
return eHEXA8;
|
|
||||||
default:
|
|
||||||
return eNONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EGeometrieElement
|
|
||||||
TGrilleInfo
|
|
||||||
::GetSubGeom()
|
|
||||||
{
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
switch(aDim){
|
|
||||||
case 2:
|
|
||||||
return eSEG2;
|
|
||||||
case 3:
|
|
||||||
return eQUAD4;
|
|
||||||
}
|
|
||||||
return eNONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EEntiteMaillage
|
|
||||||
TGrilleInfo
|
|
||||||
::GetEntity()
|
|
||||||
{
|
|
||||||
return eMAILLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EEntiteMaillage
|
|
||||||
TGrilleInfo
|
|
||||||
::GetSubEntity()
|
|
||||||
{
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
switch(aDim){
|
|
||||||
case 2:
|
|
||||||
return eARETE;
|
|
||||||
case 3:
|
|
||||||
return eFACE;
|
|
||||||
}
|
|
||||||
return EEntiteMaillage(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
const
|
|
||||||
TIntVector&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetGrilleStructure() const
|
|
||||||
{
|
|
||||||
return myGrilleStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
TIntVector
|
|
||||||
TGrilleInfo
|
|
||||||
::GetGrilleStructure()
|
|
||||||
{
|
|
||||||
return myGrilleStructure;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TGrilleInfo
|
|
||||||
::SetGrilleStructure(TInt theAxis,TInt theNb)
|
|
||||||
{
|
|
||||||
if(theAxis >= 0 && theAxis <=2 && theNb >= 0)
|
|
||||||
myGrilleStructure[theAxis]=theNb;
|
|
||||||
}
|
|
||||||
|
|
||||||
const
|
|
||||||
TNodeCoord&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetNodeCoord() const
|
|
||||||
{
|
|
||||||
return myCoord;
|
|
||||||
}
|
|
||||||
|
|
||||||
TNodeCoord&
|
|
||||||
TGrilleInfo
|
|
||||||
::GetNodeCoord()
|
|
||||||
{
|
|
||||||
return myCoord;
|
|
||||||
}
|
|
||||||
|
|
||||||
TNodeCoord
|
|
||||||
TGrilleInfo
|
|
||||||
::GetCoord(TInt theId)
|
|
||||||
{
|
|
||||||
TNodeCoord aCoord;
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
TInt aNbNodes = this->GetNbNodes();
|
|
||||||
aCoord.resize(aDim);
|
|
||||||
|
|
||||||
if(theId >= aNbNodes)
|
|
||||||
EXCEPTION(std::runtime_error, "TGrilleInfo::GetCoord - theId out of range");
|
|
||||||
|
|
||||||
if(myGrilleType == eGRILLE_STANDARD){
|
|
||||||
switch(aDim){
|
|
||||||
case 3:
|
|
||||||
aCoord[2] = myCoord[aDim*theId+2];
|
|
||||||
case 2:
|
|
||||||
aCoord[1] = myCoord[aDim*theId+1];
|
|
||||||
case 1:{
|
|
||||||
aCoord[0] = myCoord[aDim*theId];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
TFloatVector aVecX = this->GetIndexes(0);
|
|
||||||
TInt nbIndxX = this->GetNbIndexes(0);
|
|
||||||
|
|
||||||
switch(aDim){
|
|
||||||
case 1:{
|
|
||||||
aCoord[0] = aVecX[theId];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:{
|
|
||||||
TFloatVector aVecY = this->GetIndexes(1);
|
|
||||||
TInt i,j,k;
|
|
||||||
i = j = k = 0;
|
|
||||||
i = theId % nbIndxX;
|
|
||||||
j = theId / nbIndxX;
|
|
||||||
if(myGrilleType == eGRILLE_CARTESIENNE){
|
|
||||||
aCoord[0] = aVecX[i];
|
|
||||||
aCoord[1] = aVecY[j];
|
|
||||||
} else { // eGRILLE_POLAIRE (cylindrical)
|
|
||||||
aCoord[0] = aVecX[i] * cos(aVecY[j]);
|
|
||||||
aCoord[1] = aVecX[i] * sin(aVecY[j]);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:{
|
|
||||||
TFloatVector aVecY = this->GetIndexes(1);
|
|
||||||
TInt nbIndxY = this->GetNbIndexes(1);
|
|
||||||
TFloatVector aVecZ = this->GetIndexes(2);
|
|
||||||
TInt i,j,k;
|
|
||||||
i = j = k = 0;
|
|
||||||
|
|
||||||
i = theId % nbIndxX;
|
|
||||||
j = (theId / nbIndxX) % nbIndxY;
|
|
||||||
k = theId / (nbIndxX*nbIndxY);
|
|
||||||
|
|
||||||
if(myGrilleType == eGRILLE_CARTESIENNE){
|
|
||||||
aCoord[0] = aVecX[i];
|
|
||||||
aCoord[1] = aVecY[j];
|
|
||||||
aCoord[2] = aVecZ[k];
|
|
||||||
} else { // eGRILLE_POLAIRE (cylindrical)
|
|
||||||
aCoord[0] = aVecX[i] * cos(aVecY[j]);
|
|
||||||
aCoord[1] = aVecX[i] * sin(aVecY[j]);
|
|
||||||
aCoord[2] = aVecZ[k];
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return aCoord;
|
|
||||||
}
|
|
||||||
|
|
||||||
TIntVector
|
|
||||||
TGrilleInfo
|
|
||||||
::GetConn(TInt theId, const bool isSub)
|
|
||||||
{
|
|
||||||
TIntVector anIndexes;
|
|
||||||
TInt aDim = myMeshInfo->GetDim();
|
|
||||||
|
|
||||||
TInt idx;
|
|
||||||
TInt iMin, jMin, kMin, iMax, jMax, kMax;
|
|
||||||
TInt loc[3];
|
|
||||||
|
|
||||||
loc[0] = loc[1] = loc[2] = 0;
|
|
||||||
iMin = iMax = jMin = jMax = kMin = kMax = 0;
|
|
||||||
|
|
||||||
switch(aDim) {
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
TInt nbX = this->GetGrilleStructure()[0];
|
|
||||||
TInt nbY = this->GetGrilleStructure()[1];
|
|
||||||
TInt nbZ = this->GetGrilleStructure()[2];
|
|
||||||
TInt d01 = nbX*nbY, dX = 1, dY = 1, dZ = 1;
|
|
||||||
if ( isSub )
|
|
||||||
{
|
|
||||||
if ( theId < nbX * (nbY-1) * (nbZ-1))
|
|
||||||
{ // face is normal to X axis
|
|
||||||
dX = 0;
|
|
||||||
}
|
|
||||||
else if ( theId < nbX * (nbY-1) * (nbZ-1) + (nbX-1) * nbY * (nbZ-1))
|
|
||||||
{ // face is normal to Y axis
|
|
||||||
theId -= nbX * (nbY-1) * (nbZ-1);
|
|
||||||
dY = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
theId -= nbX * (nbY-1) * (nbZ-1) + (nbX-1) * nbY * (nbZ-1);
|
|
||||||
dZ = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//else
|
|
||||||
{
|
|
||||||
iMin = theId % (nbX - dX);
|
|
||||||
jMin = (theId / (nbX - dX)) % (nbY - dY);
|
|
||||||
kMin = theId / ((nbX - dX) * (nbY - dY));
|
|
||||||
iMax = iMin+dX;
|
|
||||||
jMax = jMin+dY;
|
|
||||||
kMax = kMin+dZ;
|
|
||||||
}
|
|
||||||
for (loc[2]=kMin; loc[2]<=kMax; loc[2]++)
|
|
||||||
for (loc[1]=jMin; loc[1]<=jMax; loc[1]++)
|
|
||||||
for (loc[0]=iMin; loc[0]<=iMax; loc[0]++)
|
|
||||||
{
|
|
||||||
idx = loc[0] + loc[1]*nbX + loc[2]*d01;
|
|
||||||
anIndexes.push_back(idx);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
TInt nbX = this->GetGrilleStructure()[0];
|
|
||||||
TInt nbY = this->GetGrilleStructure()[1];
|
|
||||||
TInt dX = 1, dY = 1;
|
|
||||||
if ( isSub )
|
|
||||||
{
|
|
||||||
if ( theId < nbX * (nbY-1))
|
|
||||||
{ // edge is normal to X axis
|
|
||||||
dX = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
theId -= nbX * (nbY-1);
|
|
||||||
dY = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
iMin = theId % (nbX-dX);
|
|
||||||
jMin = theId / (nbX-dX);
|
|
||||||
iMax = iMin+dX;
|
|
||||||
jMax = jMin+dY;
|
|
||||||
for (loc[1]=jMin; loc[1]<=jMax; loc[1]++)
|
|
||||||
for (loc[0]=iMin; loc[0]<=iMax; loc[0]++)
|
|
||||||
{
|
|
||||||
idx = loc[0] + loc[1]*nbX;
|
|
||||||
anIndexes.push_back(idx);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
iMin = theId;
|
|
||||||
for (loc[0]=iMin; loc[0]<=iMin+1; loc[0]++)
|
|
||||||
{
|
|
||||||
idx = loc[0];
|
|
||||||
anIndexes.push_back(idx);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return anIndexes;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetFamNumNode(TInt theId) const
|
|
||||||
{
|
|
||||||
return myFamNumNode[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TGrilleInfo
|
|
||||||
::SetFamNumNode(TInt theId,TInt theVal)
|
|
||||||
{
|
|
||||||
myFamNumNode[theId] = theVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetFamNum(TInt theId) const
|
|
||||||
{
|
|
||||||
return myFamNum[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TGrilleInfo
|
|
||||||
::SetFamNum(TInt theId,TInt theVal)
|
|
||||||
{
|
|
||||||
myFamNum[theId] = theVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
TGrilleInfo
|
|
||||||
::GetFamSubNum(TInt theId) const
|
|
||||||
{
|
|
||||||
return myFamSubNum[theId];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TGrilleInfo
|
|
||||||
::SetFamSubNum(TInt theId,TInt theVal)
|
|
||||||
{
|
|
||||||
myFamSubNum[theId] = theVal;
|
|
||||||
}
|
|
@ -1,578 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
#ifndef MED_TWrapper_HeaderFile
|
|
||||||
#define MED_TWrapper_HeaderFile
|
|
||||||
|
|
||||||
#include "MED_TStructures.hxx"
|
|
||||||
#include "MED_Wrapper.hxx"
|
|
||||||
|
|
||||||
namespace MED
|
|
||||||
{
|
|
||||||
|
|
||||||
template<EVersion eVersion>
|
|
||||||
class TTWrapper: public TWrapper
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//! Gets version of the MED library used for the MED file
|
|
||||||
virtual
|
|
||||||
EVersion
|
|
||||||
GetVersion()
|
|
||||||
{
|
|
||||||
return eVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PMeshInfo
|
|
||||||
CrMeshInfo(TInt theDim = 0, TInt theSpaceDim = 0,
|
|
||||||
const std::string& theValue = "",
|
|
||||||
EMaillage theType = eNON_STRUCTURE,
|
|
||||||
const std::string& theDesc = "")
|
|
||||||
{
|
|
||||||
return PMeshInfo(new TTMeshInfo<eVersion>
|
|
||||||
(theDim,
|
|
||||||
theSpaceDim,
|
|
||||||
theValue,
|
|
||||||
theType,
|
|
||||||
theDesc));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PMeshInfo
|
|
||||||
CrMeshInfo(const PMeshInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PMeshInfo(new TTMeshInfo<eVersion>(theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PFamilyInfo
|
|
||||||
CrFamilyInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theNbGroup = 0,
|
|
||||||
TInt theNbAttr = 0,
|
|
||||||
TInt theId = 0,
|
|
||||||
const std::string& theValue = "")
|
|
||||||
{
|
|
||||||
return PFamilyInfo(new TTFamilyInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theNbGroup,
|
|
||||||
theNbAttr,
|
|
||||||
theId,
|
|
||||||
theValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PFamilyInfo
|
|
||||||
CrFamilyInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const std::string& theValue,
|
|
||||||
TInt theId,
|
|
||||||
const MED::TStringSet& theGroupNames,
|
|
||||||
const MED::TStringVector& theAttrDescs = MED::TStringVector(),
|
|
||||||
const MED::TIntVector& theAttrIds = MED::TIntVector(),
|
|
||||||
const MED::TIntVector& theAttrVals = MED::TIntVector())
|
|
||||||
{
|
|
||||||
return PFamilyInfo(new TTFamilyInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theValue,
|
|
||||||
theId,
|
|
||||||
theGroupNames,
|
|
||||||
theAttrDescs,
|
|
||||||
theAttrIds,
|
|
||||||
theAttrVals));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PFamilyInfo
|
|
||||||
CrFamilyInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PFamilyInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PFamilyInfo(new TTFamilyInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PElemInfo
|
|
||||||
CrElemInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theNbElem,
|
|
||||||
EBooleen theIsElemNum = eVRAI,
|
|
||||||
EBooleen theIsElemNames = eVRAI)
|
|
||||||
{
|
|
||||||
return PElemInfo(new TTElemInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theNbElem,
|
|
||||||
theIsElemNum,
|
|
||||||
theIsElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PElemInfo
|
|
||||||
CrElemInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theNbElem,
|
|
||||||
const TIntVector& theFamNum,
|
|
||||||
const TIntVector& aElemNum,
|
|
||||||
const TStringVector& aElemNames)
|
|
||||||
{
|
|
||||||
return PElemInfo(new TTElemInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theNbElem,
|
|
||||||
theFamNum,
|
|
||||||
aElemNum,
|
|
||||||
aElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PNodeInfo
|
|
||||||
CrNodeInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theNbElem,
|
|
||||||
EModeSwitch theMode = eFULL_INTERLACE,
|
|
||||||
ERepere theSystem = eCART,
|
|
||||||
EBooleen theIsElemNum = eVRAI,
|
|
||||||
EBooleen theIsElemNames = eVRAI)
|
|
||||||
{
|
|
||||||
return PNodeInfo(new TTNodeInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theNbElem,
|
|
||||||
theMode,
|
|
||||||
theSystem,
|
|
||||||
theIsElemNum,
|
|
||||||
theIsElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PNodeInfo
|
|
||||||
CrNodeInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const TFloatVector& theNodeCoords,
|
|
||||||
EModeSwitch theMode = eFULL_INTERLACE,
|
|
||||||
ERepere theSystem = eCART,
|
|
||||||
const TStringVector& theCoordNames = TStringVector(),
|
|
||||||
const TStringVector& theCoordUnits = TStringVector(),
|
|
||||||
const TIntVector& theFamilyNums = TIntVector(),
|
|
||||||
const TIntVector& theElemNums = TIntVector(),
|
|
||||||
const TStringVector& theElemNames = TStringVector())
|
|
||||||
{
|
|
||||||
return PNodeInfo(new TTNodeInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theNodeCoords,
|
|
||||||
theMode,
|
|
||||||
theSystem,
|
|
||||||
theCoordNames,
|
|
||||||
theCoordUnits,
|
|
||||||
theFamilyNums,
|
|
||||||
theElemNums,
|
|
||||||
theElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PNodeInfo
|
|
||||||
CrNodeInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PNodeInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PNodeInfo(new TTNodeInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PPolygoneInfo
|
|
||||||
CrPolygoneInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TInt theNbElem,
|
|
||||||
TInt theConnSize,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
EBooleen theIsElemNum = eVRAI,
|
|
||||||
EBooleen theIsElemNames = eVRAI)
|
|
||||||
{
|
|
||||||
return PPolygoneInfo(new TTPolygoneInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theNbElem,
|
|
||||||
theConnSize,
|
|
||||||
theConnMode,
|
|
||||||
theIsElemNum,
|
|
||||||
theIsElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PPolygoneInfo
|
|
||||||
CrPolygoneInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
const TIntVector& theIndexes,
|
|
||||||
const TIntVector& theConnectivities,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
const TIntVector& theFamilyNums = TIntVector(),
|
|
||||||
const TIntVector& theElemNums = TIntVector(),
|
|
||||||
const TStringVector& theElemNames = TStringVector())
|
|
||||||
{
|
|
||||||
return PPolygoneInfo(new TTPolygoneInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theIndexes,
|
|
||||||
theConnectivities,
|
|
||||||
theConnMode,
|
|
||||||
theFamilyNums,
|
|
||||||
theElemNums,
|
|
||||||
theElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PPolygoneInfo
|
|
||||||
CrPolygoneInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PPolygoneInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PPolygoneInfo(new TTPolygoneInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PPolyedreInfo
|
|
||||||
CrPolyedreInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TInt theNbElem,
|
|
||||||
TInt theNbFaces,
|
|
||||||
TInt theConnSize,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
EBooleen theIsElemNum = eVRAI,
|
|
||||||
EBooleen theIsElemNames = eVRAI)
|
|
||||||
{
|
|
||||||
return PPolyedreInfo(new TTPolyedreInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theNbElem,
|
|
||||||
theNbFaces,
|
|
||||||
theConnSize,
|
|
||||||
theConnMode,
|
|
||||||
theIsElemNum,
|
|
||||||
theIsElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PPolyedreInfo
|
|
||||||
CrPolyedreInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
const TIntVector& theIndexes,
|
|
||||||
const TIntVector& theFaces,
|
|
||||||
const TIntVector& theConnectivities,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
const TIntVector& theFamilyNums = TIntVector(),
|
|
||||||
const TIntVector& theElemNums = TIntVector(),
|
|
||||||
const TStringVector& theElemNames = TStringVector())
|
|
||||||
{
|
|
||||||
return PPolyedreInfo(new TTPolyedreInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theIndexes,
|
|
||||||
theFaces,
|
|
||||||
theConnectivities,
|
|
||||||
theConnMode,
|
|
||||||
theFamilyNums,
|
|
||||||
theElemNums,
|
|
||||||
theElemNames));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PPolyedreInfo
|
|
||||||
CrPolyedreInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PPolyedreInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PPolyedreInfo(new TTPolyedreInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PCellInfo
|
|
||||||
CrCellInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TInt theNbElem,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
EBooleen theIsElemNum = eVRAI,
|
|
||||||
EBooleen theIsElemNames = eVRAI,
|
|
||||||
EModeSwitch theMode = eFULL_INTERLACE)
|
|
||||||
{
|
|
||||||
return PCellInfo(new TTCellInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theNbElem,
|
|
||||||
theConnMode,
|
|
||||||
theIsElemNum,
|
|
||||||
theIsElemNames,
|
|
||||||
theMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PCellInfo
|
|
||||||
CrCellInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
const TIntVector& theConnectivities,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
const TIntVector& theFamilyNums = TIntVector(),
|
|
||||||
const TIntVector& theElemNums = TIntVector(),
|
|
||||||
const TStringVector& theElemNames = TStringVector(),
|
|
||||||
EModeSwitch theMode = eFULL_INTERLACE)
|
|
||||||
{
|
|
||||||
return PCellInfo(new TTCellInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theConnectivities,
|
|
||||||
theConnMode,
|
|
||||||
theFamilyNums,
|
|
||||||
theElemNums,
|
|
||||||
theElemNames,
|
|
||||||
theMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PCellInfo
|
|
||||||
CrCellInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PCellInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PCellInfo(new TTCellInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//! Creates a MEDWrapper MED Balls representation
|
|
||||||
virtual PBallInfo CrBallInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theNbBalls,
|
|
||||||
EBooleen theIsElemNum = eVRAI)
|
|
||||||
{
|
|
||||||
return PBallInfo( new TTBallInfo<eVersion>( theMeshInfo, theNbBalls, theIsElemNum ));
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Creates a MEDWrapper MED Balls representation
|
|
||||||
virtual PBallInfo CrBallInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const TIntVector& theNodes,
|
|
||||||
TFloatVector& theDiameters,
|
|
||||||
const TIntVector& theFamilyNums = TIntVector(),
|
|
||||||
const TIntVector& theElemNums = TIntVector())
|
|
||||||
{
|
|
||||||
return PBallInfo( new TTBallInfo<eVersion>( theMeshInfo, theNodes, theDiameters,
|
|
||||||
theFamilyNums, theElemNums));
|
|
||||||
}
|
|
||||||
|
|
||||||
//! A copy-constructor for the MEDWrapper MED Balls representation
|
|
||||||
virtual PBallInfo CrBallInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PBallInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PBallInfo( new TTBallInfo<eVersion>( theMeshInfo, theInfo ));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PFieldInfo
|
|
||||||
CrFieldInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theNbComp = 0,
|
|
||||||
ETypeChamp theType = eFLOAT64,
|
|
||||||
const std::string& theValue = "",
|
|
||||||
EBooleen theIsLocal = eVRAI,
|
|
||||||
TInt theNbRef = 1)
|
|
||||||
{
|
|
||||||
return PFieldInfo(new TTFieldInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theNbComp,
|
|
||||||
theType,
|
|
||||||
theValue,
|
|
||||||
theIsLocal,
|
|
||||||
theNbRef));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PFieldInfo
|
|
||||||
CrFieldInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PFieldInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PFieldInfo(new TTFieldInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PTimeStampInfo
|
|
||||||
CrTimeStampInfo(const PFieldInfo& theFieldInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
const TGeom2Size& theGeom2Size,
|
|
||||||
const TGeom2NbGauss& theGeom2NbGauss = TGeom2NbGauss(),
|
|
||||||
TInt theNumDt = 0,
|
|
||||||
TInt theNumOrd = 0,
|
|
||||||
TFloat theDt = 0,
|
|
||||||
const std::string& theUnitDt = "",
|
|
||||||
const TGeom2Gauss& theGeom2Gauss = TGeom2Gauss())
|
|
||||||
{
|
|
||||||
return PTimeStampInfo(new TTTimeStampInfo<eVersion>
|
|
||||||
(theFieldInfo,
|
|
||||||
theEntity,
|
|
||||||
theGeom2Size,
|
|
||||||
theGeom2NbGauss,
|
|
||||||
theNumDt,
|
|
||||||
theNumOrd,
|
|
||||||
theDt,
|
|
||||||
theUnitDt,
|
|
||||||
theGeom2Gauss));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PTimeStampInfo
|
|
||||||
CrTimeStampInfo(const PFieldInfo& theFieldInfo,
|
|
||||||
const PTimeStampInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PTimeStampInfo(new TTTimeStampInfo<eVersion>
|
|
||||||
(theFieldInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PGaussInfo
|
|
||||||
CrGaussInfo(const TGaussInfo::TInfo& theInfo,
|
|
||||||
EModeSwitch theMode = eFULL_INTERLACE)
|
|
||||||
{
|
|
||||||
return PGaussInfo(new TTGaussInfo<eVersion>
|
|
||||||
(theInfo,
|
|
||||||
theMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PProfileInfo
|
|
||||||
CrProfileInfo(const TProfileInfo::TInfo& theInfo,
|
|
||||||
EModeProfil theMode = eCOMPACT)
|
|
||||||
{
|
|
||||||
return PProfileInfo(new TTProfileInfo<eVersion>
|
|
||||||
(theInfo,
|
|
||||||
theMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PTimeStampValueBase
|
|
||||||
CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
ETypeChamp theTypeChamp,
|
|
||||||
const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
|
|
||||||
EModeSwitch theMode = eFULL_INTERLACE)
|
|
||||||
{
|
|
||||||
if(theTypeChamp == eFLOAT64)
|
|
||||||
return PTimeStampValueBase(new TTTimeStampValue<eVersion, TFloatMeshValue>
|
|
||||||
(theTimeStampInfo,
|
|
||||||
theTypeChamp,
|
|
||||||
theGeom2Profile,
|
|
||||||
theMode));
|
|
||||||
return PTimeStampValueBase(new TTTimeStampValue<eVersion, TIntMeshValue>
|
|
||||||
(theTimeStampInfo,
|
|
||||||
theTypeChamp,
|
|
||||||
theGeom2Profile,
|
|
||||||
theMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PTimeStampValueBase
|
|
||||||
CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const PTimeStampValueBase& theInfo,
|
|
||||||
ETypeChamp theTypeChamp)
|
|
||||||
{
|
|
||||||
if(theTypeChamp == eFLOAT64)
|
|
||||||
return PTimeStampValueBase(new TTTimeStampValue<eVersion, TFloatMeshValue>
|
|
||||||
(theTimeStampInfo,
|
|
||||||
theInfo,
|
|
||||||
theTypeChamp));
|
|
||||||
return PTimeStampValueBase(new TTTimeStampValue<eVersion, TIntMeshValue>
|
|
||||||
(theTimeStampInfo,
|
|
||||||
theInfo,
|
|
||||||
theTypeChamp));
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
PGrilleInfo
|
|
||||||
CrGrilleInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PGrilleInfo& theInfo)
|
|
||||||
{
|
|
||||||
return PGrilleInfo(new TTGrilleInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
theInfo));
|
|
||||||
}
|
|
||||||
virtual
|
|
||||||
PGrilleInfo
|
|
||||||
CrGrilleInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const EGrilleType& type)
|
|
||||||
{
|
|
||||||
return PGrilleInfo(new TTGrilleInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
type));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PGrilleInfo
|
|
||||||
CrGrilleInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const EGrilleType& type,
|
|
||||||
const TInt& nbNodes)
|
|
||||||
{
|
|
||||||
return PGrilleInfo(new TTGrilleInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
type,
|
|
||||||
nbNodes));
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual
|
|
||||||
PGrilleInfo
|
|
||||||
CrGrilleInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const EGrilleType& type,
|
|
||||||
const MED::TIntVector& nbNodeVec)
|
|
||||||
{
|
|
||||||
return PGrilleInfo(new TTGrilleInfo<eVersion>
|
|
||||||
(theMeshInfo,
|
|
||||||
type,
|
|
||||||
nbNodeVec));
|
|
||||||
}
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,113 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
#include "MED_Utilities.hxx"
|
|
||||||
#include "MED_Common.hxx"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
static int MYDEBUG = 0;
|
|
||||||
#else
|
|
||||||
// static int MYDEBUG = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
int MED::PrefixPrinter::myCounter = 0;
|
|
||||||
|
|
||||||
MED::PrefixPrinter::PrefixPrinter(bool theIsActive):
|
|
||||||
myIsActive(theIsActive)
|
|
||||||
{
|
|
||||||
if(myIsActive)
|
|
||||||
myCounter++;
|
|
||||||
MSG(MYDEBUG,"MED::PrefixPrinter::PrefixPrinter(...)- "<<myCounter);
|
|
||||||
}
|
|
||||||
|
|
||||||
MED::PrefixPrinter::~PrefixPrinter()
|
|
||||||
{
|
|
||||||
if(myIsActive){
|
|
||||||
myCounter--;
|
|
||||||
if(myCounter < 0)
|
|
||||||
EXCEPTION(runtime_error,"PrefixPrinter::~PrefixPrinter() - myCounter("<<myCounter<<") < 0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string MED::PrefixPrinter::GetPrefix()
|
|
||||||
{
|
|
||||||
if(myCounter){
|
|
||||||
if(myCounter < 0)
|
|
||||||
EXCEPTION(runtime_error,"PrefixPrinter::~PrefixPrinter() - myCounter("<<myCounter<<") < 0");
|
|
||||||
return string(myCounter*2,' ');
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static MED::TEntity2GeomSet Entity2GeomSet;
|
|
||||||
|
|
||||||
bool InitEntity2GeomSet()
|
|
||||||
{
|
|
||||||
using namespace MED;
|
|
||||||
|
|
||||||
TGeomSet& aGeomARETESet = Entity2GeomSet[eARETE];
|
|
||||||
aGeomARETESet.insert(eSEG2);
|
|
||||||
aGeomARETESet.insert(eSEG3);
|
|
||||||
|
|
||||||
TGeomSet& aGeomFACESet = Entity2GeomSet[eFACE];
|
|
||||||
aGeomFACESet.insert(eTRIA3);
|
|
||||||
aGeomFACESet.insert(eQUAD4);
|
|
||||||
aGeomFACESet.insert(eTRIA6);
|
|
||||||
aGeomFACESet.insert(eTRIA7);
|
|
||||||
aGeomFACESet.insert(eQUAD8);
|
|
||||||
aGeomFACESet.insert(eQUAD9);
|
|
||||||
aGeomFACESet.insert(ePOLYGONE);
|
|
||||||
aGeomFACESet.insert(ePOLYGON2);
|
|
||||||
|
|
||||||
TGeomSet& aGeomMAILLESet = Entity2GeomSet[eMAILLE];
|
|
||||||
aGeomMAILLESet.insert(ePOINT1);
|
|
||||||
aGeomMAILLESet.insert(aGeomARETESet.begin(),aGeomARETESet.end());
|
|
||||||
aGeomMAILLESet.insert(aGeomFACESet.begin(),aGeomFACESet.end());
|
|
||||||
aGeomMAILLESet.insert(eTETRA4);
|
|
||||||
aGeomMAILLESet.insert(ePYRA5);
|
|
||||||
aGeomMAILLESet.insert(ePENTA6);
|
|
||||||
aGeomMAILLESet.insert(eHEXA8);
|
|
||||||
aGeomMAILLESet.insert(eOCTA12);
|
|
||||||
aGeomMAILLESet.insert(eTETRA10);
|
|
||||||
aGeomMAILLESet.insert(ePYRA13);
|
|
||||||
aGeomMAILLESet.insert(ePENTA15);
|
|
||||||
aGeomMAILLESet.insert(eHEXA20);
|
|
||||||
aGeomMAILLESet.insert(eHEXA27);
|
|
||||||
aGeomMAILLESet.insert(ePOLYEDRE);
|
|
||||||
|
|
||||||
/* This combination allows reading nb of models of structure elements */
|
|
||||||
Entity2GeomSet[eSTRUCT_ELEMENT].insert(eAllGeoType);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool anIsInited = InitEntity2GeomSet();
|
|
||||||
|
|
||||||
const MED::TEntity2GeomSet& MED::GetEntity2GeomSet()
|
|
||||||
{
|
|
||||||
return Entity2GeomSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,707 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
// File : MED_Wrapper.cxx
|
|
||||||
// Author : Alexey PETROV
|
|
||||||
//
|
|
||||||
#include "MED_Wrapper.hxx"
|
|
||||||
#include "MED_Utilities.hxx"
|
|
||||||
|
|
||||||
#include <boost/version.hpp>
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
static int MYDEBUG = 0;
|
|
||||||
static int MYVALUEDEBUG = 0;
|
|
||||||
#else
|
|
||||||
// static int MYDEBUG = 0;
|
|
||||||
// static int MYVALUEDEBUG = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace MED
|
|
||||||
{
|
|
||||||
TLockProxy
|
|
||||||
::TLockProxy(TWrapper* theWrapper):
|
|
||||||
myWrapper(theWrapper)
|
|
||||||
{
|
|
||||||
#if BOOST_VERSION >= 103500
|
|
||||||
myWrapper->myMutex.lock();
|
|
||||||
#else
|
|
||||||
boost::detail::thread::lock_ops<TWrapper::TMutex>::lock(myWrapper->myMutex);
|
|
||||||
#endif
|
|
||||||
INITMSG(MYDEBUG,"TLockProxy() - this -"<<this<<"; myWrapper = "<<myWrapper<<std::endl);
|
|
||||||
}
|
|
||||||
|
|
||||||
TLockProxy
|
|
||||||
::~TLockProxy()
|
|
||||||
{
|
|
||||||
INITMSG(MYDEBUG,"~TLockProxy() - this -"<<this<<"; myWrapper = "<<myWrapper<<std::endl);
|
|
||||||
#if BOOST_VERSION >= 103500
|
|
||||||
myWrapper->myMutex.unlock();
|
|
||||||
#else
|
|
||||||
boost::detail::thread::lock_ops<TWrapper::TMutex>::unlock(myWrapper->myMutex);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
TWrapper*
|
|
||||||
TLockProxy
|
|
||||||
::operator-> () const // never throws
|
|
||||||
{
|
|
||||||
return myWrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
TWrapper::~TWrapper()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PMeshInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPMeshInfo(TInt theId,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
PMeshInfo anInfo = CrMeshInfo();
|
|
||||||
GetMeshInfo(theId,*anInfo,theErr);
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PFamilyInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPFamilyInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theId,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
// must be reimplemented in connection with mesh type eSTRUCTURE
|
|
||||||
// if(theMeshInfo->GetType() != eNON_STRUCTURE)
|
|
||||||
// return PFamilyInfo();
|
|
||||||
|
|
||||||
TInt aNbAttr = GetNbFamAttr(theId,*theMeshInfo);
|
|
||||||
TInt aNbGroup = GetNbFamGroup(theId,*theMeshInfo);
|
|
||||||
PFamilyInfo anInfo = CrFamilyInfo(theMeshInfo,aNbGroup,aNbAttr);
|
|
||||||
GetFamilyInfo(theId,*anInfo,theErr);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
std::string aName = anInfo->GetName();
|
|
||||||
INITMSG(MYDEBUG,"GetPFamilyInfo - aFamilyName = '"<<aName<<
|
|
||||||
"'; andId = "<<anInfo->GetId()<<
|
|
||||||
"; aNbAttr = "<<aNbAttr<<
|
|
||||||
"; aNbGroup = "<<aNbGroup<<"\n");
|
|
||||||
for(TInt iGroup = 0; iGroup < aNbGroup; iGroup++){
|
|
||||||
aName = anInfo->GetGroupName(iGroup);
|
|
||||||
INITMSG(MYDEBUG,"aGroupName = '"<<aName<<"'\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PNodeInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPNodeInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
TInt aNbElems = GetNbNodes(*theMeshInfo);
|
|
||||||
if(aNbElems == 0){
|
|
||||||
return PNodeInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
PNodeInfo anInfo = CrNodeInfo(theMeshInfo,aNbElems);
|
|
||||||
GetNodeInfo(*anInfo,theErr);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
TInt aDim = theMeshInfo->myDim;
|
|
||||||
TInt aNbElem = anInfo->GetNbElem();
|
|
||||||
INITMSG(MYDEBUG,"GetPNodeInfo: ");
|
|
||||||
{
|
|
||||||
INITMSG(MYDEBUG,"aCoords: "<<aNbElem<<": ");
|
|
||||||
TNodeCoord& aCoord = anInfo->myCoord;
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
for(TInt iDim = 0, anId = iElem*aDim; iDim < aDim; iDim++, anId++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,aCoord[anId]<<",");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG," ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG, std::endl);
|
|
||||||
|
|
||||||
BEGMSG(MYVALUEDEBUG, "GetFamNum: ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetFamNum(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
|
|
||||||
if(anInfo->IsElemNum()){
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetElemNum: ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetElemNum(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG, std::endl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PPolygoneInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPPolygoneInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
EConnectivite theConnMode)
|
|
||||||
{
|
|
||||||
if(theMeshInfo->GetType() != eNON_STRUCTURE)
|
|
||||||
return PPolygoneInfo();
|
|
||||||
|
|
||||||
TInt aNbElem = GetNbPolygones(theMeshInfo,theEntity,theGeom,theConnMode);
|
|
||||||
TInt aConnSize = GetPolygoneConnSize(theMeshInfo,theEntity,theGeom,theConnMode);
|
|
||||||
PPolygoneInfo anInfo = CrPolygoneInfo(theMeshInfo,theEntity,theGeom,aNbElem,aConnSize,theConnMode);
|
|
||||||
GetPolygoneInfo(anInfo);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
INITMSG(MYDEBUG,"GetPPolygoneInfo"<<
|
|
||||||
" - theGeom = "<<theGeom<<
|
|
||||||
"; aNbElem = "<<aNbElem<<": ");
|
|
||||||
for(TInt iElem = 1; iElem < aNbElem; iElem++){
|
|
||||||
TCConnSlice aConnSlice = anInfo->GetConnSlice(iElem);
|
|
||||||
TInt aConnDim = aConnSlice.size();
|
|
||||||
for(TInt iConn = 0; iConn < aConnDim; iConn++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,aConnSlice[iConn]<<",");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG," ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG, std::endl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PPolyedreInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPPolyedreInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
EConnectivite theConnMode)
|
|
||||||
{
|
|
||||||
if(theMeshInfo->GetType() != eNON_STRUCTURE)
|
|
||||||
return PPolyedreInfo();
|
|
||||||
TInt aNbElem = GetNbPolyedres(theMeshInfo,theEntity,theGeom,theConnMode);
|
|
||||||
TInt aNbFaces, aConnSize;
|
|
||||||
GetPolyedreConnSize(theMeshInfo,aNbFaces,aConnSize,theConnMode);
|
|
||||||
PPolyedreInfo anInfo = CrPolyedreInfo(theMeshInfo,theEntity,theGeom,aNbElem,aNbFaces,aConnSize,theConnMode);
|
|
||||||
GetPolyedreInfo(anInfo);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
INITMSG(MYDEBUG,"GetPPolyedreInfo"<<
|
|
||||||
" - theGeom = "<<theGeom<<
|
|
||||||
"; aNbElem = "<<aNbElem<<": ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
TCConnSliceArr aConnSliceArr = anInfo->GetConnSliceArr(iElem);
|
|
||||||
TInt aNbFaces = aConnSliceArr.size();
|
|
||||||
ADDMSG(MYDEBUG,"{");
|
|
||||||
for(TInt iFace = 0; iFace < aNbFaces; iFace++){
|
|
||||||
TCConnSlice aConnSlice = aConnSliceArr[iFace];
|
|
||||||
TInt aNbConn = aConnSlice.size();
|
|
||||||
ADDMSG(MYDEBUG,"[");
|
|
||||||
for(TInt iConn = 0; iConn < aNbConn; iConn++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,aConnSlice[iConn]<<",");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG,"] ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG,"} ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG, std::endl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PElemInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPElemInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
EConnectivite theConnMode,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
EMaillage aType = theMeshInfo->GetType();
|
|
||||||
if(aType == eNON_STRUCTURE){
|
|
||||||
switch(theGeom){
|
|
||||||
case ePOINT1:
|
|
||||||
if(theEntity == eNOEUD)
|
|
||||||
return GetPNodeInfo(theMeshInfo,theErr);
|
|
||||||
return GetPCellInfo(theMeshInfo,theEntity,theGeom,theConnMode,theErr);
|
|
||||||
break;
|
|
||||||
case ePOLYGONE:
|
|
||||||
return GetPPolygoneInfo(theMeshInfo,theEntity,theGeom,theConnMode);
|
|
||||||
break;
|
|
||||||
case ePOLYEDRE:
|
|
||||||
return GetPPolyedreInfo(theMeshInfo,theEntity,theGeom,theConnMode);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return GetPCellInfo(theMeshInfo,theEntity,theGeom,theConnMode,theErr);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
PGrilleInfo aGrille = GetPGrilleInfo(theMeshInfo);
|
|
||||||
|
|
||||||
TInt nbElems;
|
|
||||||
EBooleen theIsElemNum = eFAUX;
|
|
||||||
// nodes
|
|
||||||
switch(theGeom){
|
|
||||||
case ePOINT1:
|
|
||||||
nbElems = aGrille->GetNbNodes();
|
|
||||||
theIsElemNum = eVRAI;
|
|
||||||
break;
|
|
||||||
case eSEG2:
|
|
||||||
case eQUAD4:
|
|
||||||
case eHEXA8:
|
|
||||||
nbElems = aGrille->GetNbCells();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
nbElems = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
TIntVector aFamNum;
|
|
||||||
TIntVector aElemNum;
|
|
||||||
TStringVector aElemNames;
|
|
||||||
|
|
||||||
PElemInfo aElemInfo;
|
|
||||||
|
|
||||||
if(theGeom == ePOINT1){
|
|
||||||
aElemInfo = CrElemInfo(theMeshInfo,
|
|
||||||
nbElems,
|
|
||||||
theIsElemNum);
|
|
||||||
MED::TElemInfo &aTElemInfo = *aElemInfo;
|
|
||||||
|
|
||||||
// must be reimplemente in connection with mesh type eSTRUCTURE
|
|
||||||
// GetNumeration(aTElemInfo,
|
|
||||||
// nbElems,
|
|
||||||
// theEntity,
|
|
||||||
// theGeom,
|
|
||||||
// theErr);
|
|
||||||
|
|
||||||
GetFamilies(aTElemInfo,
|
|
||||||
nbElems,
|
|
||||||
theEntity,
|
|
||||||
theGeom,
|
|
||||||
theErr);
|
|
||||||
|
|
||||||
// must be reimplemente in connection with mesh type eSTRUCTURE
|
|
||||||
// GetNames(aTElemInfo,
|
|
||||||
// nbElems,
|
|
||||||
// theEntity,
|
|
||||||
// theGeom,
|
|
||||||
// theErr);
|
|
||||||
} else {
|
|
||||||
aElemInfo = CrElemInfo(theMeshInfo,
|
|
||||||
nbElems,
|
|
||||||
aFamNum,
|
|
||||||
aElemNum,
|
|
||||||
aElemNames);
|
|
||||||
}
|
|
||||||
|
|
||||||
return aElemInfo;
|
|
||||||
}
|
|
||||||
return PElemInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PCellInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPCellInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
EConnectivite theConnMode,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
if(theMeshInfo->GetType() != eNON_STRUCTURE)
|
|
||||||
return PCellInfo();
|
|
||||||
TInt aNbElem = GetNbCells(theMeshInfo,theEntity,theGeom,theConnMode);
|
|
||||||
PCellInfo anInfo = CrCellInfo(theMeshInfo,theEntity,theGeom,aNbElem,theConnMode);
|
|
||||||
GetCellInfo(anInfo,theErr);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
TInt aConnDim = anInfo->GetConnDim();
|
|
||||||
INITMSG(MYDEBUG,"GetPCellInfo - theEntity = "<<theEntity<<"; theGeom = "<<theGeom<<"; aConnDim: "<<aConnDim<<"\n");
|
|
||||||
BEGMSG(MYDEBUG,"GetPCellInfo - aNbElem: "<<aNbElem<<": ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
TCConnSlice aConnSlice = anInfo->GetConnSlice(iElem);
|
|
||||||
for(TInt iConn = 0; iConn < aConnDim; iConn++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,aConnSlice[iConn]<<",");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG," ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG, std::endl);
|
|
||||||
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetPCellInfo - GetFamNum: ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetFamNum(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
|
|
||||||
if(anInfo->IsElemNum()){
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetPCellInfo - GetElemNum: ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetElemNum(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG, std::endl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//! Read a MEDWrapped representation of MED Balls from the MED file
|
|
||||||
PBallInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPBallInfo(const PMeshInfo& theMeshInfo)
|
|
||||||
{
|
|
||||||
TInt nbBalls = GetNbBalls(theMeshInfo);
|
|
||||||
if ( nbBalls < 1 ) return PBallInfo();
|
|
||||||
|
|
||||||
PBallInfo anInfo = CrBallInfo( theMeshInfo, nbBalls );
|
|
||||||
GetBallInfo(anInfo);
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PFieldInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPFieldInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
TInt theId,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
TInt aNbComp = GetNbComp(theId);
|
|
||||||
PFieldInfo anInfo = CrFieldInfo(theMeshInfo,aNbComp);
|
|
||||||
GetFieldInfo(theId,*anInfo,theErr);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
INITMSG(MYDEBUG,
|
|
||||||
"GetPFieldInfo "<<
|
|
||||||
"- aName = '"<<anInfo->GetName()<<"'"<<
|
|
||||||
"; aType = "<<anInfo->GetType()<<
|
|
||||||
"; aNbComp = "<<aNbComp<<
|
|
||||||
std::endl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPTimeStampInfo(const PFieldInfo& theFieldInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
const TGeom2Size& theGeom2Size,
|
|
||||||
TInt theId,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
PTimeStampInfo anInfo = CrTimeStampInfo(theFieldInfo,theEntity,theGeom2Size);
|
|
||||||
GetTimeStampInfo(theId,*anInfo,theErr);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
INITMSG(MYDEBUG,"GetPTimeStampInfo - anEntity = "<<anInfo->GetEntity()<<"\n");
|
|
||||||
TGeom2NbGauss& aGeom2NbGauss = anInfo->myGeom2NbGauss;
|
|
||||||
TGeom2NbGauss::const_iterator anIter = aGeom2NbGauss.begin();
|
|
||||||
for(; anIter != aGeom2NbGauss.end(); anIter++){
|
|
||||||
const EGeometrieElement& aGeom = anIter->first;
|
|
||||||
INITMSG(MYDEBUG,"aGeom = "<<aGeom<<" - "<<aGeom2NbGauss[aGeom]<<";\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PProfileInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPProfileInfo(TInt theId,
|
|
||||||
EModeProfil theMode,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
TProfileInfo::TInfo aPreInfo = GetProfilePreInfo(theId);
|
|
||||||
PProfileInfo anInfo = CrProfileInfo(aPreInfo,theMode);
|
|
||||||
GetProfileInfo(theId,*anInfo,theErr);
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampValueBase
|
|
||||||
TWrapper
|
|
||||||
::CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const TGeom2Profile& theGeom2Profile,
|
|
||||||
EModeSwitch theMode)
|
|
||||||
{
|
|
||||||
PFieldInfo aFieldInfo = theTimeStampInfo->GetFieldInfo();
|
|
||||||
return CrTimeStampValue(theTimeStampInfo,
|
|
||||||
aFieldInfo->GetType(),
|
|
||||||
theGeom2Profile,
|
|
||||||
theMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampValueBase
|
|
||||||
TWrapper
|
|
||||||
::CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const PTimeStampValueBase& theInfo)
|
|
||||||
{
|
|
||||||
PFieldInfo aFieldInfo = theTimeStampInfo->GetFieldInfo();
|
|
||||||
return CrTimeStampValue(theTimeStampInfo,
|
|
||||||
theInfo,
|
|
||||||
aFieldInfo->GetType());
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
template<class TimeStampValueType>
|
|
||||||
void
|
|
||||||
Print(SharedPtr<TimeStampValueType> theTimeStampValue)
|
|
||||||
{
|
|
||||||
INITMSG(MYDEBUG,"Print - TimeStampValue\n");
|
|
||||||
typename TimeStampValueType::TTGeom2Value& aGeom2Value = theTimeStampValue->myGeom2Value;
|
|
||||||
typename TimeStampValueType::TTGeom2Value::const_iterator anIter = aGeom2Value.begin();
|
|
||||||
for(; anIter != aGeom2Value.end(); anIter++){
|
|
||||||
const EGeometrieElement& aGeom = anIter->first;
|
|
||||||
const typename TimeStampValueType::TTMeshValue& aMeshValue = anIter->second;
|
|
||||||
TInt aNbElem = aMeshValue.myNbElem;
|
|
||||||
TInt aNbGauss = aMeshValue.myNbGauss;
|
|
||||||
TInt aNbComp = aMeshValue.myNbComp;
|
|
||||||
INITMSG(MYDEBUG,"aGeom = "<<aGeom<<" - "<<aNbElem<<": ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
typename TimeStampValueType::TTMeshValue::TCValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
|
|
||||||
ADDMSG(MYVALUEDEBUG,"{");
|
|
||||||
for(TInt iGauss = 0; iGauss < aNbGauss; iGauss++){
|
|
||||||
const typename TimeStampValueType::TTMeshValue::TCValueSlice& aValueSlice = aValueSliceArr[iGauss];
|
|
||||||
for(TInt iComp = 0; iComp < aNbComp; iComp++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,aValueSlice[iComp]<<" ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG,"| ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG,"} ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYDEBUG,"\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampValueBase
|
|
||||||
TWrapper
|
|
||||||
::GetPTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const TMKey2Profile& theMKey2Profile,
|
|
||||||
const TKey2Gauss& theKey2Gauss,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
PFieldInfo aFieldInfo = theTimeStampInfo->GetFieldInfo();
|
|
||||||
PTimeStampValueBase anInfo = CrTimeStampValue(theTimeStampInfo,
|
|
||||||
aFieldInfo->GetType());
|
|
||||||
GetTimeStampValue(anInfo,
|
|
||||||
theMKey2Profile,
|
|
||||||
theKey2Gauss,
|
|
||||||
theErr);
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
if(aFieldInfo->GetType() == eFLOAT64)
|
|
||||||
Print<TFloatTimeStampValue>(anInfo);
|
|
||||||
else
|
|
||||||
Print<TIntTimeStampValue>(anInfo);
|
|
||||||
#endif
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
void
|
|
||||||
TWrapper
|
|
||||||
::GetTimeStampVal(const PTimeStampVal& theVal,
|
|
||||||
const TMKey2Profile& theMKey2Profile,
|
|
||||||
const TKey2Gauss& theKey2Gauss,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
PTimeStampInfo aTimeStampInfo = theVal->GetTimeStampInfo();
|
|
||||||
PFieldInfo aFieldInfo = aTimeStampInfo->GetFieldInfo();
|
|
||||||
if(aFieldInfo->GetType() == eFLOAT64)
|
|
||||||
GetTimeStampValue(theVal,
|
|
||||||
theMKey2Profile,
|
|
||||||
theKey2Gauss,
|
|
||||||
theErr);
|
|
||||||
else{
|
|
||||||
PTimeStampValueBase aVal = CrTimeStampValue(aTimeStampInfo,
|
|
||||||
theVal,
|
|
||||||
eINT);
|
|
||||||
GetTimeStampValue(aVal,
|
|
||||||
theMKey2Profile,
|
|
||||||
theKey2Gauss,
|
|
||||||
theErr);
|
|
||||||
CopyTimeStampValueBase(aVal, theVal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
void
|
|
||||||
TWrapper
|
|
||||||
::SetTimeStamp(const PTimeStampVal& theVal,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
PTimeStampInfo aTimeStampInfo = theVal->GetTimeStampInfo();
|
|
||||||
PFieldInfo aFieldInfo = aTimeStampInfo->GetFieldInfo();
|
|
||||||
if(aFieldInfo->GetType() == eFLOAT64)
|
|
||||||
SetTimeStampValue(theVal, theErr);
|
|
||||||
else{
|
|
||||||
PTimeStampValueBase aVal = CrTimeStampValue(aTimeStampInfo,
|
|
||||||
eINT,
|
|
||||||
theVal->GetGeom2Profile(),
|
|
||||||
theVal->GetModeSwitch());
|
|
||||||
CopyTimeStampValueBase(theVal, aVal);
|
|
||||||
SetTimeStampValue(aVal, theErr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampVal
|
|
||||||
TWrapper
|
|
||||||
::CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const TGeom2Profile& theGeom2Profile,
|
|
||||||
EModeSwitch theMode)
|
|
||||||
{
|
|
||||||
return CrTimeStampValue(theTimeStampInfo,
|
|
||||||
eFLOAT64,
|
|
||||||
theGeom2Profile,
|
|
||||||
theMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampVal
|
|
||||||
TWrapper
|
|
||||||
::CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const PTimeStampVal& theInfo)
|
|
||||||
{
|
|
||||||
return CrTimeStampValue(theTimeStampInfo,
|
|
||||||
theInfo,
|
|
||||||
eFLOAT64);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PTimeStampVal
|
|
||||||
TWrapper
|
|
||||||
::GetPTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
|
|
||||||
const TMKey2Profile& theMKey2Profile,
|
|
||||||
const TKey2Gauss& theKey2Gauss,
|
|
||||||
TErr* theErr)
|
|
||||||
{
|
|
||||||
PTimeStampVal anInfo = CrTimeStampVal(theTimeStampInfo);
|
|
||||||
GetTimeStampVal(anInfo,
|
|
||||||
theMKey2Profile,
|
|
||||||
theKey2Gauss,
|
|
||||||
theErr);
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PGrilleInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPGrilleInfo(const PMeshInfo& theMeshInfo)
|
|
||||||
{
|
|
||||||
if(theMeshInfo->GetType() != eSTRUCTURE)
|
|
||||||
return PGrilleInfo();
|
|
||||||
|
|
||||||
EGrilleType type;
|
|
||||||
GetGrilleType(*theMeshInfo,type);
|
|
||||||
PGrilleInfo anInfo;
|
|
||||||
if(type == eGRILLE_STANDARD){
|
|
||||||
const TInt nnoeuds = GetNbNodes(*theMeshInfo);
|
|
||||||
anInfo = CrGrilleInfo(theMeshInfo,type,nnoeuds);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
TIntVector aVec;
|
|
||||||
aVec.resize(theMeshInfo->GetDim());
|
|
||||||
for(int aAxe=0;aAxe<theMeshInfo->GetDim();aAxe++){
|
|
||||||
ETable aATable = eCOOR_IND1;
|
|
||||||
switch(aAxe){
|
|
||||||
case 0:
|
|
||||||
aATable = eCOOR_IND1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
aATable = eCOOR_IND2;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
aATable = eCOOR_IND3;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
aVec[aAxe] = GetNbNodes(*theMeshInfo,aATable);
|
|
||||||
}
|
|
||||||
anInfo = CrGrilleInfo(theMeshInfo,type,aVec);
|
|
||||||
}
|
|
||||||
|
|
||||||
GetGrilleInfo(anInfo);
|
|
||||||
anInfo->SetGrilleType(type);
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
INITMSG(MYDEBUG,"GetPGrilleInfo: ");
|
|
||||||
{
|
|
||||||
TInt aNbElem = anInfo->GetNbNodes();
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetFamNumNode: ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbElem; iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetFamNumNode(iElem)<<", ");
|
|
||||||
}
|
|
||||||
TInt aNbCells = anInfo->GetNbCells();
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetFamNum: ");
|
|
||||||
for(TInt iElem = 0; iElem < aNbCells; iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetFamNum(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetCoordName: ");
|
|
||||||
for(TInt iElem = 0; iElem < theMeshInfo->GetDim(); iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetCoordName(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
BEGMSG(MYVALUEDEBUG,"GetCoordUnit: ");
|
|
||||||
for(TInt iElem = 0; iElem < theMeshInfo->GetDim(); iElem++){
|
|
||||||
ADDMSG(MYVALUEDEBUG,anInfo->GetCoordUnit(iElem)<<", ");
|
|
||||||
}
|
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
PGrilleInfo
|
|
||||||
TWrapper
|
|
||||||
::GetPGrilleInfo(const PMeshInfo& theMeshInfo,
|
|
||||||
const PGrilleInfo& theInfo)
|
|
||||||
{
|
|
||||||
PGrilleInfo anInfo = CrGrilleInfo(theMeshInfo,theInfo);
|
|
||||||
return anInfo;
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@ -17,6 +17,70 @@
|
|||||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
#
|
#
|
||||||
|
|
||||||
ADD_SUBDIRECTORY(Base)
|
# --- options ---
|
||||||
ADD_SUBDIRECTORY(V2_2)
|
# additional include directories
|
||||||
ADD_SUBDIRECTORY(Factory)
|
INCLUDE_DIRECTORIES(
|
||||||
|
${Boost_INCLUDE_DIRS}
|
||||||
|
${HDF5_INCLUDE_DIRS}
|
||||||
|
${MEDFILE_INCLUDE_DIRS}
|
||||||
|
${KERNEL_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
# additional preprocessor / compiler flags
|
||||||
|
ADD_DEFINITIONS(
|
||||||
|
${BOOST_DEFINITIONS}
|
||||||
|
${HDF5_DEFINITIONS}
|
||||||
|
)
|
||||||
|
|
||||||
|
SET(_link_LIBRARIES
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
${HDF5_LIBS}
|
||||||
|
${MEDFILE_C_LIBRARIES}
|
||||||
|
)
|
||||||
|
|
||||||
|
# --- headers ---
|
||||||
|
|
||||||
|
# header files / no moc processing
|
||||||
|
SET(MEDWrapper_HEADERS
|
||||||
|
MED_Algorithm.hxx
|
||||||
|
MED_Common.hxx
|
||||||
|
MED_CoordUtils.hxx
|
||||||
|
MED_Factory.hxx
|
||||||
|
MED_GaussDef.hxx
|
||||||
|
MED_GaussUtils.hxx
|
||||||
|
MED_SharedPtr.hxx
|
||||||
|
MED_SliceArray.hxx
|
||||||
|
MED_Structures.hxx
|
||||||
|
MED_TStructures.hxx
|
||||||
|
MED_Utilities.hxx
|
||||||
|
MED_Vector.hxx
|
||||||
|
MED_Wrapper.hxx
|
||||||
|
MED_WrapperDef.hxx
|
||||||
|
)
|
||||||
|
|
||||||
|
# --- sources ---
|
||||||
|
|
||||||
|
# sources / static
|
||||||
|
SET(MEDWrapper_SOURCES
|
||||||
|
MED_Algorithm.cxx
|
||||||
|
MED_Common.cxx
|
||||||
|
MED_CoordUtils.cxx
|
||||||
|
MED_Factory.cxx
|
||||||
|
MED_GaussDef.cxx
|
||||||
|
MED_GaussUtils.cxx
|
||||||
|
MED_Structures.cxx
|
||||||
|
MED_Utilities.cxx
|
||||||
|
MED_Wrapper.cxx
|
||||||
|
)
|
||||||
|
|
||||||
|
# --- rules ---
|
||||||
|
|
||||||
|
ADD_LIBRARY(MEDWrapper ${MEDWrapper_SOURCES})
|
||||||
|
TARGET_LINK_LIBRARIES(MEDWrapper ${_link_LIBRARIES})
|
||||||
|
INSTALL(TARGETS MEDWrapper EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(mprint_version mprint_version.cxx)
|
||||||
|
TARGET_LINK_LIBRARIES(mprint_version ${MEDFILE_C_LIBRARIES})
|
||||||
|
INSTALL(TARGETS mprint_version EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_BINS})
|
||||||
|
|
||||||
|
INSTALL(FILES ${MEDWrapper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
# Copyright (C) 2012-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
#
|
|
||||||
# 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, 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
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this library; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
#
|
|
||||||
|
|
||||||
# --- options ---
|
|
||||||
# additional include directories
|
|
||||||
INCLUDE_DIRECTORIES(
|
|
||||||
${HDF5_INCLUDE_DIRS}
|
|
||||||
${Boost_INCLUDE_DIRS}
|
|
||||||
${MEDFILE_INCLUDE_DIRS}
|
|
||||||
${KERNEL_INCLUDE_DIRS}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../Base
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../V2_2
|
|
||||||
)
|
|
||||||
|
|
||||||
# additional preprocessor / compiler flags
|
|
||||||
ADD_DEFINITIONS(
|
|
||||||
${HDF5_DEFINITIONS}
|
|
||||||
${BOOST_DEFINITIONS}
|
|
||||||
)
|
|
||||||
|
|
||||||
SET(_link_LIBRARIES
|
|
||||||
MEDWrapperBase
|
|
||||||
MEDWrapper_V2_2
|
|
||||||
${Boost_LIBRARIES}
|
|
||||||
${MEDFILE_C_LIBRARIES}
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- headers ---
|
|
||||||
|
|
||||||
# header files / no moc processing
|
|
||||||
SET(MEDWrapper_HEADERS
|
|
||||||
MED_Factory.hxx
|
|
||||||
MED_WrapperFactory.hxx
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- sources ---
|
|
||||||
|
|
||||||
# sources / static
|
|
||||||
SET(MEDWrapper_SOURCES
|
|
||||||
MED_Factory.cxx
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- rules ---
|
|
||||||
|
|
||||||
ADD_LIBRARY(MEDWrapper ${MEDWrapper_SOURCES})
|
|
||||||
TARGET_LINK_LIBRARIES(MEDWrapper ${_link_LIBRARIES} ${MED_medloader} )
|
|
||||||
INSTALL(TARGETS MEDWrapper EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(mprint_version mprint_version.cxx)
|
|
||||||
TARGET_LINK_LIBRARIES(mprint_version ${_link_LIBRARIES} MEDWrapper)
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(MED_Test MED_Test.cxx)
|
|
||||||
TARGET_LINK_LIBRARIES(MED_Test ${_link_LIBRARIES} MEDWrapper)
|
|
||||||
|
|
||||||
INSTALL(TARGETS mprint_version MED_Test EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_BINS})
|
|
||||||
|
|
||||||
INSTALL(FILES ${MEDWrapper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
|
|
@ -1,167 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "MED_Factory.hxx"
|
|
||||||
#include "MED_Utilities.hxx"
|
|
||||||
#include "MED_V2_2_Wrapper.hxx"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sstream>
|
|
||||||
|
|
||||||
#include <med.h>
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#ifndef WIN32
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
static int MYDEBUG = 0;
|
|
||||||
#else
|
|
||||||
static int MYDEBUG = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace MED
|
|
||||||
{
|
|
||||||
|
|
||||||
EVersion GetVersionId(const std::string& theFileName,
|
|
||||||
bool theDoPreCheckInSeparateProcess)
|
|
||||||
{
|
|
||||||
INITMSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'"<<std::endl);
|
|
||||||
EVersion aVersion = eVUnknown;
|
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
if (access(theFileName.c_str(),F_OK))
|
|
||||||
return aVersion;
|
|
||||||
if ( theDoPreCheckInSeparateProcess ) {
|
|
||||||
// First check, is it possible to deal with the file
|
|
||||||
std::ostringstream aStr;
|
|
||||||
// File name is in quotes for the case of space(s) inside it (PAL13009)
|
|
||||||
aStr<<"bash -c \""<<getenv("SMESH_ROOT_DIR")<<"/bin/salome/mprint_version \'"<<theFileName<<"\'\"";
|
|
||||||
if(!MYDEBUG)
|
|
||||||
aStr<<" 2>&1 > /dev/null";
|
|
||||||
|
|
||||||
std::string aCommand = aStr.str();
|
|
||||||
int aStatus = system(aCommand.c_str());
|
|
||||||
|
|
||||||
BEGMSG( MYDEBUG,"aCommand = '" << aCommand << "'; aStatus = " << aStatus
|
|
||||||
<< "; errno = " << errno << " = " << strerror( errno ) << std::endl );
|
|
||||||
if ( aStatus != 0 && errno != EAGAIN && errno != ENOMEM ) // "Cannot allocate memory" is OK
|
|
||||||
return aVersion;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
// check compatibility of hdf and med versions
|
|
||||||
med_bool hdfok, medok;
|
|
||||||
MEDfileCompatibility(theFileName.c_str(), &hdfok, &medok);
|
|
||||||
if ((!hdfok) /*|| (!medok)*/) // med-2.1 is KO since med-3.0.0
|
|
||||||
return aVersion;
|
|
||||||
|
|
||||||
// Next, try to open the file trough the MED API
|
|
||||||
const char* aFileName = theFileName.c_str();
|
|
||||||
med_idt aFid = MEDfileOpen(aFileName,MED_ACC_RDONLY);
|
|
||||||
|
|
||||||
MSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'; aFid = "<<aFid<<std::endl);
|
|
||||||
if(aFid >= 0){
|
|
||||||
med_int aMajor, aMinor, aRelease;
|
|
||||||
med_err aRet = MEDfileNumVersionRd(aFid,&aMajor,&aMinor,&aRelease);
|
|
||||||
INITMSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'; aRet = "<<aRet<<std::endl);
|
|
||||||
if(aRet >= 0){
|
|
||||||
if(aMajor == 2 && aMinor == 1)
|
|
||||||
aVersion = eV2_1;
|
|
||||||
else
|
|
||||||
aVersion = eV2_2;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// VSR: simulate med 2.3.6 behavior, med file version is assumed to 2.1
|
|
||||||
aVersion = eV2_1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MEDfileClose(aFid);
|
|
||||||
|
|
||||||
BEGMSG(MYDEBUG,"GetVersionId - theFileName = '"<<theFileName<<"'; aVersion = "<<aVersion<<std::endl);
|
|
||||||
return aVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getMEDVersion( const std::string& fname, int& major, int& minor, int& release )
|
|
||||||
{
|
|
||||||
med_idt f = MEDfileOpen(fname.c_str(), MED_ACC_RDONLY );
|
|
||||||
if( f<0 )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
med_int aMajor, aMinor, aRelease;
|
|
||||||
med_err aRet = MEDfileNumVersionRd( f, &aMajor, &aMinor, &aRelease );
|
|
||||||
major = aMajor;
|
|
||||||
minor = aMinor;
|
|
||||||
release = aRelease;
|
|
||||||
MEDfileClose( f );
|
|
||||||
if( aRet<0 ) {
|
|
||||||
// VSR: simulate med 2.3.6 behavior, med file version is assumed to 2.1
|
|
||||||
major = 2; minor = release = -1;
|
|
||||||
//return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PWrapper CrWrapper(const std::string& theFileName,
|
|
||||||
bool theDoPreCheckInSeparateProcess)
|
|
||||||
{
|
|
||||||
PWrapper aWrapper;
|
|
||||||
EVersion aVersion = GetVersionId(theFileName,theDoPreCheckInSeparateProcess);
|
|
||||||
switch(aVersion){
|
|
||||||
case eV2_2:
|
|
||||||
aWrapper.reset(new MED::V2_2::TVWrapper(theFileName));
|
|
||||||
break;
|
|
||||||
case eV2_1:
|
|
||||||
EXCEPTION(std::runtime_error,"Cannot open file '"<<theFileName<<"'. Med version 2.1 is not supported any more.");
|
|
||||||
//aWrapper.reset(new MED::V2_1::TVWrapper(theFileName));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
EXCEPTION(std::runtime_error,"MED::CrWrapper - theFileName = '"<<theFileName<<"'");
|
|
||||||
}
|
|
||||||
return aWrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
PWrapper CrWrapper(const std::string& theFileName, EVersion theId)
|
|
||||||
{
|
|
||||||
EVersion aVersion = GetVersionId(theFileName);
|
|
||||||
|
|
||||||
if(aVersion != theId)
|
|
||||||
remove(theFileName.c_str());
|
|
||||||
|
|
||||||
PWrapper aWrapper;
|
|
||||||
switch(theId){
|
|
||||||
case eV2_2:
|
|
||||||
aWrapper.reset(new MED::V2_2::TVWrapper(theFileName));
|
|
||||||
break;
|
|
||||||
case eV2_1:
|
|
||||||
EXCEPTION(std::runtime_error,"Cannot open file '"<<theFileName<<"'. Med version 2.1 is not supported any more.");
|
|
||||||
//aWrapper.reset(new MED::V2_1::TVWrapper(theFileName));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
aWrapper.reset(new MED::V2_2::TVWrapper(theFileName));
|
|
||||||
}
|
|
||||||
return aWrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,347 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
#include "MED_Utilities.hxx"
|
|
||||||
#include "MED_Algorithm.hxx"
|
|
||||||
#include "MED_GaussUtils.hxx"
|
|
||||||
#include "MED_Factory.hxx"
|
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
static int MYDEBUG = 1;
|
|
||||||
#else
|
|
||||||
// static int MYDEBUG = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int MYWRITEDEBUG = 1;
|
|
||||||
|
|
||||||
using namespace MED;
|
|
||||||
|
|
||||||
#undef _DEBUG_
|
|
||||||
|
|
||||||
void CheckMed(const std::string& theFileName)
|
|
||||||
{
|
|
||||||
MSG(MYDEBUG,"CheckMed - theFileName = '"<<theFileName<<"'");
|
|
||||||
{
|
|
||||||
//TErr anErr;
|
|
||||||
PWrapper aMed = CrWrapper(theFileName);
|
|
||||||
|
|
||||||
TKey2Gauss aKey2Gauss = GetKey2Gauss(aMed);
|
|
||||||
TMKey2Profile aMKey2Profile = GetMKey2Profile(aMed);
|
|
||||||
INITMSG(MYDEBUG,"aMed->GetNbProfiles() = "<<aMed->GetNbProfiles()<<std::endl);
|
|
||||||
|
|
||||||
TInt aNbMeshes = aMed->GetNbMeshes();
|
|
||||||
BEGMSG(MYDEBUG,"GetNbMeshes() = "<<aNbMeshes<<std::endl);
|
|
||||||
for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
|
|
||||||
|
|
||||||
PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
|
|
||||||
INITMSG(MYDEBUG,"aMeshInfo->GetName() = '"<<aMeshInfo->GetName()<<"'"<<std::endl);
|
|
||||||
|
|
||||||
TEntityInfo aEntityInfo = aMed->GetEntityInfo(aMeshInfo);
|
|
||||||
|
|
||||||
TEntity2TGeom2ElemInfo anEntity2TGeom2ElemInfo =
|
|
||||||
GetEntity2TGeom2ElemInfo(aMed,aMeshInfo,aEntityInfo);
|
|
||||||
|
|
||||||
TFieldInfo2TimeStampInfoSet aFieldInfo2TimeStampInfoSet =
|
|
||||||
GetFieldInfo2TimeStampInfoSet(aMed,aMeshInfo,aEntityInfo);
|
|
||||||
|
|
||||||
TEntite2TFieldInfo2TimeStampInfoSet anEntite2TFieldInfo2TimeStampInfoSet =
|
|
||||||
GetEntite2TFieldInfo2TimeStampInfoSet(aFieldInfo2TimeStampInfoSet);
|
|
||||||
|
|
||||||
TEntite2TFieldInfo2TimeStampInfoSet::const_iterator anEntite2TFieldInfo2TimeStampInfoSetIter =
|
|
||||||
anEntite2TFieldInfo2TimeStampInfoSet.begin();
|
|
||||||
for(; anEntite2TFieldInfo2TimeStampInfoSetIter != anEntite2TFieldInfo2TimeStampInfoSet.end(); anEntite2TFieldInfo2TimeStampInfoSetIter++){
|
|
||||||
const TFieldInfo2TimeStampInfoSet& aFieldInfo2TimeStampInfoSet = anEntite2TFieldInfo2TimeStampInfoSetIter->second;
|
|
||||||
TFieldInfo2TimeStampInfoSet::const_iterator aFieldInfo2TimeStampInfoSetIter = aFieldInfo2TimeStampInfoSet.begin();
|
|
||||||
for(; aFieldInfo2TimeStampInfoSetIter != aFieldInfo2TimeStampInfoSet.end(); aFieldInfo2TimeStampInfoSetIter++){
|
|
||||||
PFieldInfo aFieldInfo = aFieldInfo2TimeStampInfoSetIter->first;
|
|
||||||
INITMSG(MYDEBUG,
|
|
||||||
"GetPFieldInfo "<<
|
|
||||||
"- aName = '"<<aFieldInfo->GetName()<<"'"<<
|
|
||||||
"; aType = "<<aFieldInfo->GetType()<<
|
|
||||||
"; aNbComp = "<<aFieldInfo->GetNbComp()<<
|
|
||||||
std::endl);
|
|
||||||
const TTimeStampInfoSet& aTimeStampInfoSet = aFieldInfo2TimeStampInfoSetIter->second;
|
|
||||||
TTimeStampInfoSet::const_iterator aTimeStampInfoSettIter = aTimeStampInfoSet.begin();
|
|
||||||
for(; aTimeStampInfoSettIter != aTimeStampInfoSet.end(); aTimeStampInfoSettIter++){
|
|
||||||
PTimeStampInfo aTimeStampInfo = *aTimeStampInfoSettIter;
|
|
||||||
INITMSG(MYDEBUG,
|
|
||||||
"GetPTimeStampInfo "<<
|
|
||||||
"- anEntity = "<<aTimeStampInfo->GetEntity()<<
|
|
||||||
"; aNumDt = "<<aTimeStampInfo->GetNumDt()<<
|
|
||||||
std::endl);
|
|
||||||
PTimeStampValueBase aTimeStampValue =
|
|
||||||
aMed->GetPTimeStampValue(aTimeStampInfo,
|
|
||||||
aMKey2Profile,
|
|
||||||
aKey2Gauss);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
|
|
||||||
TFamilyInfoSet aFamilyInfoSet = GetFamilyInfoSet(aMed,aMeshInfo);
|
|
||||||
|
|
||||||
TEntity2FamilySet aEntity2FamilySet =
|
|
||||||
GetEntity2FamilySet(aMed,anEntity2TGeom2ElemInfo,aFamilyInfoSet);
|
|
||||||
|
|
||||||
TGroupInfo aGroupInfo = GetGroupInfo(aFamilyInfoSet);
|
|
||||||
|
|
||||||
PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
|
|
||||||
TEntity2TGeom2ElemInfo::const_iterator anIter = anEntity2TGeom2ElemInfo.begin();
|
|
||||||
for(; anIter != anEntity2TGeom2ElemInfo.end(); anIter++){
|
|
||||||
const EEntiteMaillage& anEntity = anIter->first;
|
|
||||||
if(anEntity != eNOEUD){
|
|
||||||
const TGeom2ElemInfo& aGeom2ElemInfo = anIter->second;
|
|
||||||
TKey2Gauss::const_iterator anIter2 = aKey2Gauss.begin();
|
|
||||||
for(; anIter2 != aKey2Gauss.end(); anIter2++){
|
|
||||||
const TGaussInfo::TKey& aKey = anIter2->first;
|
|
||||||
EGeometrieElement aGeom = boost::get<0>(aKey);
|
|
||||||
TGeom2ElemInfo::const_iterator anIter3 = aGeom2ElemInfo.find(aGeom);
|
|
||||||
if(anIter3 != aGeom2ElemInfo.end()){
|
|
||||||
if(PCellInfo aCellInfo = anIter3->second){
|
|
||||||
PGaussInfo aGaussInfo = anIter2->second;
|
|
||||||
TGaussCoord aGaussCoord;
|
|
||||||
GetGaussCoord3D(aGaussInfo,aCellInfo,aNodeInfo,aGaussCoord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MSG(MYDEBUG,"OK");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CopyMed(const PWrapper& theMed,
|
|
||||||
const PWrapper& theMed2,
|
|
||||||
int theIncr)
|
|
||||||
{
|
|
||||||
TKey2Gauss aKey2Gauss = GetKey2Gauss(theMed);
|
|
||||||
TMKey2Profile aMKey2Profile = GetMKey2Profile(theMed);
|
|
||||||
|
|
||||||
TInt aNbMeshes = theMed->GetNbMeshes();
|
|
||||||
MSG(MYDEBUG,"aNbMeshes = "<<aNbMeshes);
|
|
||||||
std::string aName;
|
|
||||||
for(TInt iMesh = 0; iMesh < aNbMeshes; iMesh++){
|
|
||||||
PMeshInfo aMeshInfo = theMed->GetPMeshInfo(iMesh+1);
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
TInt aDim = aMeshInfo->myDim;
|
|
||||||
aName = aMeshInfo->GetName();
|
|
||||||
INITMSG(MYDEBUG,"GetMeshInfo - aName = '"<<aName<<"'; aDim = "<<aDim<<"\n");
|
|
||||||
#endif
|
|
||||||
PMeshInfo aMeshInfo2 = theMed2->CrMeshInfo(aMeshInfo);
|
|
||||||
if(MYWRITEDEBUG){
|
|
||||||
aName = aMeshInfo2->GetName();
|
|
||||||
|
|
||||||
aName[0] += theIncr;
|
|
||||||
aMeshInfo2->SetName(aName);
|
|
||||||
theMed2->SetMeshInfo(aMeshInfo2);
|
|
||||||
BEGMSG(MYDEBUG,"aNbMeshes2 = "<<theMed2->GetNbMeshes()<<"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
TEntityInfo aEntityInfo = theMed->GetEntityInfo(aMeshInfo);
|
|
||||||
|
|
||||||
//continue;
|
|
||||||
|
|
||||||
TInt aNbFields = theMed->GetNbFields();
|
|
||||||
MSG(MYDEBUG,"GetNbFields() = "<<aNbFields);
|
|
||||||
for(TInt iField = 0; iField < aNbFields; iField++){
|
|
||||||
PFieldInfo aFieldInfo = theMed->GetPFieldInfo(aMeshInfo,iField+1);
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
TInt aNbComp = aFieldInfo->GetNbComp();
|
|
||||||
INITMSG(MYDEBUG,"aName = '"<<aFieldInfo->GetName()<<"'; aNbComp = "<<aNbComp<<";\n");
|
|
||||||
#endif
|
|
||||||
PFieldInfo aFieldInfo2 = theMed->CrFieldInfo(aMeshInfo2,aFieldInfo);
|
|
||||||
|
|
||||||
if(MYWRITEDEBUG){
|
|
||||||
aName = aFieldInfo->GetName();
|
|
||||||
aName[0] += theIncr;
|
|
||||||
aFieldInfo2->SetName(aName);
|
|
||||||
theMed2->SetFieldInfo(aFieldInfo2);
|
|
||||||
}
|
|
||||||
|
|
||||||
EEntiteMaillage anEntity;
|
|
||||||
TGeom2Size aGeom2Size;
|
|
||||||
TInt aNbTimeStamps =
|
|
||||||
theMed->GetNbTimeStamps(aFieldInfo,aEntityInfo,anEntity,aGeom2Size);
|
|
||||||
{
|
|
||||||
INITMSG(MYDEBUG,"GetNbTimeStamps = "<<aNbTimeStamps<<std::endl);
|
|
||||||
for(TInt iTimeStamp = 0; iTimeStamp < aNbTimeStamps; iTimeStamp++){
|
|
||||||
PTimeStampInfo aTimeStampInfo =
|
|
||||||
theMed->GetPTimeStampInfo(aFieldInfo,anEntity,aGeom2Size,iTimeStamp+1);
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
TInt aNumDt = aTimeStampInfo->GetNumDt();
|
|
||||||
INITMSG(MYDEBUG,"aNumDt = "<<aNumDt<<"\n");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PTimeStampInfo aTimeStampInfo2 =
|
|
||||||
theMed->CrTimeStampInfo(aFieldInfo2,aTimeStampInfo);
|
|
||||||
|
|
||||||
PTimeStampValueBase aTimeStampValue =
|
|
||||||
theMed->GetPTimeStampValue(aTimeStampInfo,
|
|
||||||
aMKey2Profile,
|
|
||||||
aKey2Gauss);
|
|
||||||
|
|
||||||
PTimeStampValueBase aTimeStampValue2 =
|
|
||||||
theMed->CrTimeStampValue(aTimeStampInfo2,
|
|
||||||
aTimeStampValue);
|
|
||||||
|
|
||||||
if(MYWRITEDEBUG) theMed2->SetTimeStamp(aTimeStampValue2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt aNbFam = theMed->GetNbFamilies(aMeshInfo);
|
|
||||||
MSG(MYDEBUG,"GetNbFamilies() = "<<aNbFam);
|
|
||||||
for(TInt iFam = 0; iFam < aNbFam; iFam++){
|
|
||||||
PFamilyInfo aFamilyInfo = theMed->GetPFamilyInfo(aMeshInfo,iFam+1);
|
|
||||||
TInt aNbGroup = aFamilyInfo->GetNbGroup();
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
TInt aNbAttr = aFamilyInfo->GetNbAttr();
|
|
||||||
#endif
|
|
||||||
TInt anId = aFamilyInfo->GetId();
|
|
||||||
if(anId == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
aName = aFamilyInfo->GetName();
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
INITMSG(MYDEBUG,"aName = '"<<aName<<"'; anId = "<<anId<<
|
|
||||||
"; aNbAttr = "<<aNbAttr<<"; aNbGroup = "<<aNbGroup<<"\n");
|
|
||||||
#endif
|
|
||||||
PFamilyInfo aFamilyInfo2 = theMed->CrFamilyInfo(aMeshInfo2,aFamilyInfo);
|
|
||||||
for(TInt iGroup = 0; iGroup < aNbGroup; iGroup++){
|
|
||||||
aName = aFamilyInfo->GetGroupName(iGroup);
|
|
||||||
INITMSG(MYDEBUG,"aGroupName = '"<<aName<<"'\n");
|
|
||||||
aName[0] += theIncr;
|
|
||||||
aFamilyInfo2->SetGroupName(iGroup,aName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(MYWRITEDEBUG){
|
|
||||||
aName = aFamilyInfo->GetName();
|
|
||||||
aName[0] += theIncr;
|
|
||||||
aFamilyInfo2->SetName(aName);
|
|
||||||
theMed2->SetFamilyInfo(aFamilyInfo2);
|
|
||||||
INITMSG(MYDEBUG,"GetNbFamilies = "<<theMed2->GetNbFamilies(aMeshInfo2)<<std::endl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MSG(MYDEBUG,"GetEntityInfo - aNbEntities = "<<aEntityInfo.size());
|
|
||||||
TEntityInfo::iterator anEntityInfoIter = aEntityInfo.begin();
|
|
||||||
for(; anEntityInfoIter != aEntityInfo.end(); anEntityInfoIter++){
|
|
||||||
const EEntiteMaillage& anEntity = anEntityInfoIter->first;
|
|
||||||
INITMSG(MYDEBUG,"anEntity = "<<anEntity<<"\n");
|
|
||||||
if(anEntity == eNOEUD){
|
|
||||||
PNodeInfo aNodeInfo = theMed->GetPNodeInfo(aMeshInfo);
|
|
||||||
PNodeInfo aNodeInfo2 = theMed->CrNodeInfo(aMeshInfo2,aNodeInfo);
|
|
||||||
if(MYWRITEDEBUG) theMed2->SetNodeInfo(aNodeInfo2);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
TGeom2Size& aGeom2Size = anEntityInfoIter->second;
|
|
||||||
TGeom2Size::iterator aGeomIter = aGeom2Size.begin();
|
|
||||||
for(; aGeomIter != aGeom2Size.end(); aGeomIter++){
|
|
||||||
const EGeometrieElement& aGeom = aGeomIter->first;
|
|
||||||
#ifdef _DEBUG_
|
|
||||||
const TInt& aNbElem = aGeomIter->second;
|
|
||||||
INITMSG(MYDEBUG,"aGeom = "<<aGeom<<"; aNbElem = "<<aNbElem<<": ");
|
|
||||||
#endif
|
|
||||||
switch(aGeom){
|
|
||||||
case ePOLYGONE: {
|
|
||||||
PPolygoneInfo aPolygoneInfo = theMed->GetPPolygoneInfo(aMeshInfo,anEntity,aGeom);
|
|
||||||
PPolygoneInfo aPolygoneInfo2 = theMed->CrPolygoneInfo(aMeshInfo2,aPolygoneInfo);
|
|
||||||
if(MYWRITEDEBUG) theMed2->SetPolygoneInfo(aPolygoneInfo2);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ePOLYEDRE: {
|
|
||||||
PPolyedreInfo aPolyedreInfo = theMed->GetPPolyedreInfo(aMeshInfo,anEntity,aGeom);
|
|
||||||
PPolyedreInfo aPolyedreInfo2 = theMed->CrPolyedreInfo(aMeshInfo2,aPolyedreInfo);
|
|
||||||
if(MYWRITEDEBUG) theMed2->SetPolyedreInfo(aPolyedreInfo2);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
PCellInfo aCellInfo = theMed->GetPCellInfo(aMeshInfo,anEntity,aGeom);
|
|
||||||
PCellInfo aCellInfo2 = theMed2->CrCellInfo(aMeshInfo2,aCellInfo);
|
|
||||||
if(MYWRITEDEBUG) theMed2->SetCellInfo(aCellInfo2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
MSG(MYDEBUG,"OK");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CopyMed(const std::string& theFileName,
|
|
||||||
const std::string& theFileName2,
|
|
||||||
MED::EVersion theVersion,
|
|
||||||
int theNbCopy)
|
|
||||||
{
|
|
||||||
MSG(MYDEBUG,"CopyMed - theFileName = '"<<theFileName<<"'; theFileName2 = '"<<theFileName2<<"', theVersion = "<<theVersion);
|
|
||||||
|
|
||||||
PWrapper aMed = CrWrapper(theFileName);
|
|
||||||
|
|
||||||
PWrapper aMed2 = CrWrapper(theFileName2,theVersion);
|
|
||||||
|
|
||||||
for(int i = 0; i < theNbCopy; i++)
|
|
||||||
CopyMed(aMed,aMed2,i);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ReadMed(const char* theFileName,
|
|
||||||
const char* theFileName2,
|
|
||||||
MED::EVersion theVersion = eV2_2,
|
|
||||||
int theNbCopy = 1)
|
|
||||||
{
|
|
||||||
MSG(MYDEBUG,"theFileName = '"<<theFileName<<"'; "<<
|
|
||||||
"theFileName2 = '"<<theFileName2<<"'; "<<
|
|
||||||
"theVersion = "<<theVersion<<"; "<<
|
|
||||||
"theNbCopy = "<<theNbCopy);
|
|
||||||
|
|
||||||
CopyMed(theFileName,theFileName2,theVersion,theNbCopy);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#pragma warning(disable:4101) // exc unreferenced ... ??
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int main(int argc, char** argv){
|
|
||||||
#ifndef _DEBUG_
|
|
||||||
try{
|
|
||||||
#endif
|
|
||||||
if(argc == 2)
|
|
||||||
CheckMed(argv[1]);
|
|
||||||
if(argc == 3)
|
|
||||||
ReadMed(argv[1],argv[2]);
|
|
||||||
if(argc == 4)
|
|
||||||
ReadMed(argv[1],argv[2],MED::EVersion(atoi(argv[3])));
|
|
||||||
if(argc == 5)
|
|
||||||
ReadMed(argv[1],argv[2],MED::EVersion(atoi(argv[3])),atoi(argv[4]));
|
|
||||||
return 0;
|
|
||||||
#ifndef _DEBUG_
|
|
||||||
}catch(std::exception& exc){
|
|
||||||
MSG(MYDEBUG,"Follow exception was accured :\n"<<exc.what());
|
|
||||||
}catch(...){
|
|
||||||
MSG(MYDEBUG,"Unknown exception was accured");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return 1;
|
|
||||||
}
|
|
@ -19,24 +19,24 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "MED_Algorithm.hxx"
|
#include "MED_Algorithm.hxx"
|
||||||
#include "MED_Wrapper.hxx"
|
#include "MED_Wrapper.hxx"
|
||||||
|
|
||||||
#include "MED_Utilities.hxx"
|
#include "MED_Utilities.hxx"
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
static int MYDEBUG = 0;
|
static int MYDEBUG = 0;
|
||||||
static int MYVALUEDEBUG = 0;
|
static int MYVALUEDEBUG = 0;
|
||||||
#else
|
#else
|
||||||
// static int MYDEBUG = 0;
|
static int MYDEBUG = 0;
|
||||||
// static int MYVALUEDEBUG = 0;
|
static int MYVALUEDEBUG = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TEntity2TGeom2ElemInfo
|
TEntity2TGeom2ElemInfo
|
||||||
GetEntity2TGeom2ElemInfo(const PWrapper& theWrapper,
|
GetEntity2TGeom2ElemInfo(const PWrapper& theWrapper,
|
||||||
const PMeshInfo& theMeshInfo,
|
const PMeshInfo& theMeshInfo,
|
||||||
const MED::TEntityInfo& theEntityInfo)
|
const MED::TEntityInfo& theEntityInfo)
|
||||||
{
|
{
|
||||||
@ -64,8 +64,7 @@ namespace MED
|
|||||||
ADDMSG(MYDEBUG,"\n");
|
ADDMSG(MYDEBUG,"\n");
|
||||||
return anEntity2TGeom2ElemInfo;
|
return anEntity2TGeom2ElemInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TFamilyInfoSet
|
TFamilyInfoSet
|
||||||
GetFamilyInfoSet(const PWrapper& theWrapper,
|
GetFamilyInfoSet(const PWrapper& theWrapper,
|
||||||
@ -85,7 +84,6 @@ namespace MED
|
|||||||
return aFamilyInfoSet;
|
return aFamilyInfoSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TGroupInfo
|
TGroupInfo
|
||||||
GetGroupInfo(const TFamilyInfoSet& theFamilyInfoSet)
|
GetGroupInfo(const TFamilyInfoSet& theFamilyInfoSet)
|
||||||
@ -98,7 +96,7 @@ namespace MED
|
|||||||
TInt aNbGroup = aFamilyInfo->GetNbGroup();
|
TInt aNbGroup = aFamilyInfo->GetNbGroup();
|
||||||
for(TInt iGroup = 0; iGroup < aNbGroup; iGroup++){
|
for(TInt iGroup = 0; iGroup < aNbGroup; iGroup++){
|
||||||
aGroup[aFamilyInfo->GetGroupName(iGroup)].insert(aFamilyInfo);
|
aGroup[aFamilyInfo->GetGroupName(iGroup)].insert(aFamilyInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
@ -121,10 +119,9 @@ namespace MED
|
|||||||
return aGroup;
|
return aGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TFieldInfo2TimeStampInfoSet
|
TFieldInfo2TimeStampInfoSet
|
||||||
GetFieldInfo2TimeStampInfoSet(const PWrapper& theWrapper,
|
GetFieldInfo2TimeStampInfoSet(const PWrapper& theWrapper,
|
||||||
const PMeshInfo& theMeshInfo,
|
const PMeshInfo& theMeshInfo,
|
||||||
const MED::TEntityInfo& theEntityInfo)
|
const MED::TEntityInfo& theEntityInfo)
|
||||||
{
|
{
|
||||||
@ -141,7 +138,7 @@ namespace MED
|
|||||||
TInt aNbTimeStamps = theWrapper->GetNbTimeStamps(aFieldInfo,theEntityInfo,anEntity,aGeom2Size);
|
TInt aNbTimeStamps = theWrapper->GetNbTimeStamps(aFieldInfo,theEntityInfo,anEntity,aGeom2Size);
|
||||||
ADDMSG(MYDEBUG,"anEntity = "<<anEntity<<"; GetNbTimeStamps = "<<aNbTimeStamps<<"\n");
|
ADDMSG(MYDEBUG,"anEntity = "<<anEntity<<"; GetNbTimeStamps = "<<aNbTimeStamps<<"\n");
|
||||||
for(TInt iTimeStamp = 1; iTimeStamp <= aNbTimeStamps; iTimeStamp++){
|
for(TInt iTimeStamp = 1; iTimeStamp <= aNbTimeStamps; iTimeStamp++){
|
||||||
PTimeStampInfo aTimeStamp =
|
PTimeStampInfo aTimeStamp =
|
||||||
theWrapper->GetPTimeStampInfo(aFieldInfo,anEntity,aGeom2Size,iTimeStamp);
|
theWrapper->GetPTimeStampInfo(aFieldInfo,anEntity,aGeom2Size,iTimeStamp);
|
||||||
aFieldInfo2TimeStampInfoSet[aFieldInfo].insert(aTimeStamp);
|
aFieldInfo2TimeStampInfoSet[aFieldInfo].insert(aTimeStamp);
|
||||||
INITMSG(MYDEBUG,
|
INITMSG(MYDEBUG,
|
||||||
@ -152,10 +149,9 @@ namespace MED
|
|||||||
ADDMSG(MYDEBUG,"\n");
|
ADDMSG(MYDEBUG,"\n");
|
||||||
return aFieldInfo2TimeStampInfoSet;
|
return aFieldInfo2TimeStampInfoSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TEntite2TFieldInfo2TimeStampInfoSet
|
TEntite2TFieldInfo2TimeStampInfoSet
|
||||||
GetEntite2TFieldInfo2TimeStampInfoSet(const TFieldInfo2TimeStampInfoSet& theFieldInfo2TimeStampInfoSet)
|
GetEntite2TFieldInfo2TimeStampInfoSet(const TFieldInfo2TimeStampInfoSet& theFieldInfo2TimeStampInfoSet)
|
||||||
{
|
{
|
||||||
TEntite2TFieldInfo2TimeStampInfoSet anEntite2TFieldInfo2TimeStampInfoSet;
|
TEntite2TFieldInfo2TimeStampInfoSet anEntite2TFieldInfo2TimeStampInfoSet;
|
||||||
@ -163,14 +159,13 @@ namespace MED
|
|||||||
for(; anIter != theFieldInfo2TimeStampInfoSet.end(); anIter++){
|
for(; anIter != theFieldInfo2TimeStampInfoSet.end(); anIter++){
|
||||||
const TTimeStampInfoSet& aTimeStampInfoSet = anIter->second;
|
const TTimeStampInfoSet& aTimeStampInfoSet = anIter->second;
|
||||||
//const PFieldInfo& aFieldInfo = anIter->first;
|
//const PFieldInfo& aFieldInfo = anIter->first;
|
||||||
if(aTimeStampInfoSet.empty())
|
if(aTimeStampInfoSet.empty())
|
||||||
continue;
|
continue;
|
||||||
const PTimeStampInfo& aTimeStampInfo = *aTimeStampInfoSet.begin();
|
const PTimeStampInfo& aTimeStampInfo = *aTimeStampInfoSet.begin();
|
||||||
anEntite2TFieldInfo2TimeStampInfoSet[ConvertEntity(aTimeStampInfo->GetEntity())].insert(*anIter);
|
anEntite2TFieldInfo2TimeStampInfoSet[ConvertEntity(aTimeStampInfo->GetEntity())].insert(*anIter);
|
||||||
}
|
}
|
||||||
return anEntite2TFieldInfo2TimeStampInfoSet;
|
return anEntite2TFieldInfo2TimeStampInfoSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool
|
bool
|
||||||
@ -181,16 +176,15 @@ namespace MED
|
|||||||
return aLeftInfo->GetId() < aRightInfo->GetId();
|
return aLeftInfo->GetId() < aRightInfo->GetId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TEntity2FamilySet
|
TEntity2FamilySet
|
||||||
GetEntity2FamilySet(const PWrapper& theWrapper,
|
GetEntity2FamilySet(const PWrapper& theWrapper,
|
||||||
const TEntity2TGeom2ElemInfo& theEntity2TGeom2ElemInfo,
|
const TEntity2TGeom2ElemInfo& theEntity2TGeom2ElemInfo,
|
||||||
const TFamilyInfoSet& theFamilyInfoSet)
|
const TFamilyInfoSet& theFamilyInfoSet)
|
||||||
{
|
{
|
||||||
MSG(MYDEBUG,"GetFamiliesByEntity(...)");
|
MSG(MYDEBUG,"GetFamiliesByEntity(...)");
|
||||||
TEntity2FamilySet anEntity2FamilySet;
|
TEntity2FamilySet anEntity2FamilySet;
|
||||||
|
|
||||||
typedef std::map<TInt,PFamilyInfo> TId2Family;
|
typedef std::map<TInt,PFamilyInfo> TId2Family;
|
||||||
TId2Family anId2Family;
|
TId2Family anId2Family;
|
||||||
TFamilyInfoSet::const_iterator anIter = theFamilyInfoSet.begin();
|
TFamilyInfoSet::const_iterator anIter = theFamilyInfoSet.begin();
|
||||||
@ -198,12 +192,12 @@ namespace MED
|
|||||||
const PFamilyInfo& aFamilyInfo = *anIter;
|
const PFamilyInfo& aFamilyInfo = *anIter;
|
||||||
anId2Family.insert(TId2Family::value_type(aFamilyInfo->GetId(),aFamilyInfo));
|
anId2Family.insert(TId2Family::value_type(aFamilyInfo->GetId(),aFamilyInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!anId2Family.empty()){
|
if(!anId2Family.empty()){
|
||||||
typedef std::map<TInt,TInt> TFamilyID2Size;
|
typedef std::map<TInt,TInt> TFamilyID2Size;
|
||||||
typedef std::map<EEntiteMaillage,TFamilyID2Size> TEntity2FamilyID;
|
typedef std::map<EEntiteMaillage,TFamilyID2Size> TEntity2FamilyID;
|
||||||
TEntity2FamilyID anEntity2FamilyID;
|
TEntity2FamilyID anEntity2FamilyID;
|
||||||
|
|
||||||
if(!theEntity2TGeom2ElemInfo.empty()){
|
if(!theEntity2TGeom2ElemInfo.empty()){
|
||||||
TEntity2TGeom2ElemInfo::const_iterator anIter = theEntity2TGeom2ElemInfo.begin();
|
TEntity2TGeom2ElemInfo::const_iterator anIter = theEntity2TGeom2ElemInfo.begin();
|
||||||
for(; anIter != theEntity2TGeom2ElemInfo.end(); anIter++){
|
for(; anIter != theEntity2TGeom2ElemInfo.end(); anIter++){
|
||||||
@ -221,7 +215,7 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!anEntity2FamilyID.empty()){
|
if(!anEntity2FamilyID.empty()){
|
||||||
TEntity2FamilyID::const_iterator anIter = anEntity2FamilyID.begin();
|
TEntity2FamilyID::const_iterator anIter = anEntity2FamilyID.begin();
|
||||||
for(; anIter != anEntity2FamilyID.end(); anIter++){
|
for(; anIter != anEntity2FamilyID.end(); anIter++){
|
||||||
@ -243,15 +237,14 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ADDMSG(MYDEBUG,"\n");
|
ADDMSG(MYDEBUG,"\n");
|
||||||
return anEntity2FamilySet;
|
return anEntity2FamilySet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TKey2Gauss
|
TKey2Gauss
|
||||||
GetKey2Gauss(const PWrapper& theWrapper,
|
GetKey2Gauss(const PWrapper& theWrapper,
|
||||||
TErr* theErr,
|
TErr* theErr,
|
||||||
EModeSwitch theMode)
|
EModeSwitch theMode)
|
||||||
{
|
{
|
||||||
@ -278,10 +271,9 @@ namespace MED
|
|||||||
return aKey2Gauss;
|
return aKey2Gauss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
PProfileInfo
|
PProfileInfo
|
||||||
GetProfileInfo(const PWrapper& theWrapper,
|
GetProfileInfo(const PWrapper& theWrapper,
|
||||||
const std::string& theProfileName,
|
const std::string& theProfileName,
|
||||||
TErr* theErr,
|
TErr* theErr,
|
||||||
EModeProfil theMode)
|
EModeProfil theMode)
|
||||||
@ -296,11 +288,10 @@ namespace MED
|
|||||||
}
|
}
|
||||||
return anInfo;
|
return anInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TMKey2Profile
|
TMKey2Profile
|
||||||
GetMKey2Profile(const PWrapper& theWrapper,
|
GetMKey2Profile(const PWrapper& theWrapper,
|
||||||
TErr* theErr,
|
TErr* theErr,
|
||||||
EModeProfil theMode)
|
EModeProfil theMode)
|
||||||
{
|
{
|
||||||
@ -312,7 +303,7 @@ namespace MED
|
|||||||
PProfileInfo anInfo = theWrapper->GetPProfileInfo(anId,theMode,theErr);
|
PProfileInfo anInfo = theWrapper->GetPProfileInfo(anId,theMode,theErr);
|
||||||
const std::string& aName = boost::get<0>(aPreInfo);
|
const std::string& aName = boost::get<0>(aPreInfo);
|
||||||
aKey2Profile[aName] = anInfo;
|
aKey2Profile[aName] = anInfo;
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
INITMSG(MYDEBUG,
|
INITMSG(MYDEBUG,
|
||||||
"- aName = '"<<aName<<"'"<<
|
"- aName = '"<<aName<<"'"<<
|
||||||
@ -324,14 +315,16 @@ namespace MED
|
|||||||
}
|
}
|
||||||
ADDMSG(MYVALUEDEBUG, std::endl);
|
ADDMSG(MYVALUEDEBUG, std::endl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
return TMKey2Profile(theMode,aKey2Profile);
|
return TMKey2Profile(theMode,aKey2Profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
EEntiteMaillage
|
EEntiteMaillage
|
||||||
GetEntityByFamilyId(PGrilleInfo& theInfo,TInt theId){
|
GetEntityByFamilyId(PGrilleInfo& theInfo,
|
||||||
|
TInt theId)
|
||||||
|
{
|
||||||
TElemNum::iterator aNodeFamIter = (theInfo->myFamNumNode).begin();
|
TElemNum::iterator aNodeFamIter = (theInfo->myFamNumNode).begin();
|
||||||
for(;aNodeFamIter != (theInfo->myFamNumNode).end(); aNodeFamIter++){
|
for(;aNodeFamIter != (theInfo->myFamNumNode).end(); aNodeFamIter++){
|
||||||
if(theId == *aNodeFamIter)
|
if(theId == *aNodeFamIter)
|
||||||
@ -346,8 +339,10 @@ namespace MED
|
|||||||
return EEntiteMaillage(-1);
|
return EEntiteMaillage(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
TFamilyID2NbCells
|
TFamilyID2NbCells
|
||||||
GetFamilyID2NbCells(PGrilleInfo& theInfo){
|
GetFamilyID2NbCells(PGrilleInfo& theInfo)
|
||||||
|
{
|
||||||
TFamilyID2NbCells aFamily2NbCells;
|
TFamilyID2NbCells aFamily2NbCells;
|
||||||
TInt aNbNodes = theInfo->myFamNumNode.size();
|
TInt aNbNodes = theInfo->myFamNumNode.size();
|
||||||
TInt aNbCells = theInfo->myFamNum.size();
|
TInt aNbCells = theInfo->myFamNum.size();
|
||||||
@ -358,17 +353,21 @@ namespace MED
|
|||||||
return aFamily2NbCells;
|
return aFamily2NbCells;
|
||||||
}
|
}
|
||||||
|
|
||||||
EEntiteMaillage ConvertEntity(const EEntiteMaillage& aEntity){
|
//---------------------------------------------------------------
|
||||||
|
EEntiteMaillage
|
||||||
|
ConvertEntity(const EEntiteMaillage& aEntity)
|
||||||
|
{
|
||||||
switch( aEntity ){
|
switch( aEntity ){
|
||||||
|
|
||||||
case eNOEUD_ELEMENT:
|
case eNOEUD_ELEMENT:
|
||||||
case eMAILLE: return eMAILLE; //eNOEUD_ELEMENT it is eMAILLE
|
case eMAILLE:
|
||||||
|
return eMAILLE; // eNOEUD_ELEMENT is eMAILLE
|
||||||
case eFACE:
|
case eFACE:
|
||||||
case eARETE:
|
case eARETE:
|
||||||
case eNOEUD: return aEntity; break;
|
case eNOEUD:
|
||||||
default: return EEntiteMaillage(-1);
|
return aEntity;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return EEntiteMaillage(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,116 +19,107 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_Algorithm_HeaderFile
|
#ifndef MED_Algorithm_HeaderFile
|
||||||
#define MED_Algorithm_HeaderFile
|
#define MED_Algorithm_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperBase.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
#include "MED_Structures.hxx"
|
#include "MED_Structures.hxx"
|
||||||
|
|
||||||
|
#include <boost/tuple/tuple.hpp>
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<EGeometrieElement,PElemInfo> TGeom2ElemInfo;
|
typedef std::map<EGeometrieElement,PElemInfo> TGeom2ElemInfo;
|
||||||
typedef std::map<EEntiteMaillage,TGeom2ElemInfo> TEntity2TGeom2ElemInfo;
|
typedef std::map<EEntiteMaillage,TGeom2ElemInfo> TEntity2TGeom2ElemInfo;
|
||||||
|
typedef std::set<PFamilyInfo> TFamilyInfoSet;
|
||||||
|
typedef std::map<std::string,TFamilyInfoSet> TGroupInfo;
|
||||||
|
typedef boost::tuple<PFamilyInfo,TInt> TFamilyTSize;
|
||||||
|
typedef std::set<TFamilyTSize> TFamilyTSizeSet;
|
||||||
|
typedef std::map<EEntiteMaillage,TFamilyTSizeSet> TEntity2FamilySet;
|
||||||
|
typedef std::set<PTimeStampInfo> TTimeStampInfoSet;
|
||||||
|
typedef std::map<PFieldInfo,TTimeStampInfoSet> TFieldInfo2TimeStampInfoSet;
|
||||||
|
typedef std::map<EEntiteMaillage,TFieldInfo2TimeStampInfoSet> TEntite2TFieldInfo2TimeStampInfoSet;
|
||||||
|
typedef std::map<TGaussInfo::TKey,PGaussInfo,TGaussInfo::TLess> TKey2Gauss;
|
||||||
|
typedef std::map<TProfileInfo::TKey,PProfileInfo> TKey2Profile;
|
||||||
|
typedef boost::tuple<EModeProfil,TKey2Profile> TMKey2Profile;
|
||||||
|
typedef std::map<TInt,TInt> TFamilyID2NbCells;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Get set of TElemInfo by its geometrical type and corresponding MED ENTITY
|
//! Get set of TElemInfo by its geometrical type and corresponding MED ENTITY
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TEntity2TGeom2ElemInfo
|
TEntity2TGeom2ElemInfo
|
||||||
GetEntity2TGeom2ElemInfo(const PWrapper& theWrapper,
|
GetEntity2TGeom2ElemInfo(const PWrapper& theWrapper,
|
||||||
const PMeshInfo& theMeshInfo,
|
const PMeshInfo& theMeshInfo,
|
||||||
const MED::TEntityInfo& theEntityInfo);
|
const MED::TEntityInfo& theEntityInfo);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::set<PFamilyInfo> TFamilyInfoSet;
|
|
||||||
|
|
||||||
//! Read set of MED FAMILIES for defined MED file
|
//! Read set of MED FAMILIES for defined MED file
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TFamilyInfoSet
|
TFamilyInfoSet
|
||||||
GetFamilyInfoSet(const PWrapper& theWrapper,
|
GetFamilyInfoSet(const PWrapper& theWrapper,
|
||||||
const PMeshInfo& theMeshInfo);
|
const PMeshInfo& theMeshInfo);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef boost::tuple<PFamilyInfo,TInt> TFamilyTSize;
|
//! Compare two MED FAMILIES
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
bool
|
bool
|
||||||
operator<(const TFamilyTSize& theLeft, const TFamilyTSize& theRight);
|
operator<(const TFamilyTSize& theLeft, const TFamilyTSize& theRight);
|
||||||
typedef std::set<TFamilyTSize> TFamilyTSizeSet;
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<EEntiteMaillage,TFamilyTSizeSet> TEntity2FamilySet;
|
|
||||||
|
|
||||||
//! Split set of MED FAMILIES by corresponding MED ENTITY
|
//! Split set of MED FAMILIES by corresponding MED ENTITY
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TEntity2FamilySet
|
TEntity2FamilySet
|
||||||
GetEntity2FamilySet(const PWrapper& theWrapper,
|
GetEntity2FamilySet(const PWrapper& theWrapper,
|
||||||
const TEntity2TGeom2ElemInfo& theEntity2TGeom2ElemInfo,
|
const TEntity2TGeom2ElemInfo& theEntity2TGeom2ElemInfo,
|
||||||
const TFamilyInfoSet& theFamilyInfoSet);
|
const TFamilyInfoSet& theFamilyInfoSet);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<std::string,TFamilyInfoSet> TGroupInfo;
|
|
||||||
|
|
||||||
//! Split the input set of MED FAMILIES by corresponding MED GROUPS
|
//! Split the input set of MED FAMILIES by corresponding MED GROUPS
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TGroupInfo
|
TGroupInfo
|
||||||
GetGroupInfo(const TFamilyInfoSet& theFamilyInfoSet);
|
GetGroupInfo(const TFamilyInfoSet& theFamilyInfoSet);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
typedef std::set<PTimeStampInfo> TTimeStampInfoSet;
|
|
||||||
typedef std::map<PFieldInfo,TTimeStampInfoSet> TFieldInfo2TimeStampInfoSet;
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Read set of MED TIMESTAMPS groupped by corresponding MED FIELDS
|
//! Read set of MED TIMESTAMPS groupped by corresponding MED FIELDS
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TFieldInfo2TimeStampInfoSet
|
TFieldInfo2TimeStampInfoSet
|
||||||
GetFieldInfo2TimeStampInfoSet(const PWrapper& theWrapper,
|
GetFieldInfo2TimeStampInfoSet(const PWrapper& theWrapper,
|
||||||
const PMeshInfo& theMeshInfo,
|
const PMeshInfo& theMeshInfo,
|
||||||
const MED::TEntityInfo& theEntityInfo);
|
const MED::TEntityInfo& theEntityInfo);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<EEntiteMaillage,TFieldInfo2TimeStampInfoSet> TEntite2TFieldInfo2TimeStampInfoSet;
|
|
||||||
|
|
||||||
//! Split the input set of MED TIMESTAMPS by corresponding MED FIELDS and MED ENTITIES
|
//! Split the input set of MED TIMESTAMPS by corresponding MED FIELDS and MED ENTITIES
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TEntite2TFieldInfo2TimeStampInfoSet
|
TEntite2TFieldInfo2TimeStampInfoSet
|
||||||
GetEntite2TFieldInfo2TimeStampInfoSet(const TFieldInfo2TimeStampInfoSet& theFieldInfo2TimeStampInfoSet);
|
GetEntite2TFieldInfo2TimeStampInfoSet(const TFieldInfo2TimeStampInfoSet& theFieldInfo2TimeStampInfoSet);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<TGaussInfo::TKey,PGaussInfo,TGaussInfo::TLess> TKey2Gauss;
|
|
||||||
|
|
||||||
//! Read set of MED GAUSS
|
//! Read set of MED GAUSS
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TKey2Gauss
|
TKey2Gauss
|
||||||
GetKey2Gauss(const PWrapper& theWrapper,
|
GetKey2Gauss(const PWrapper& theWrapper,
|
||||||
TErr* theErr = NULL,
|
TErr* theErr = NULL,
|
||||||
EModeSwitch theMode = eFULL_INTERLACE);
|
EModeSwitch theMode = eFULL_INTERLACE);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Get MED PROFILE by its name
|
//! Get MED PROFILE by its name
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
PProfileInfo
|
PProfileInfo
|
||||||
GetProfileInfo(const PWrapper& theWrapper,
|
GetProfileInfo(const PWrapper& theWrapper,
|
||||||
const std::string& theProfileName,
|
const std::string& theProfileName,
|
||||||
TErr* theErr = NULL,
|
TErr* theErr = NULL,
|
||||||
EModeProfil theMode = eCOMPACT);
|
EModeProfil theMode = eCOMPACT);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<TProfileInfo::TKey,PProfileInfo> TKey2Profile;
|
|
||||||
typedef boost::tuple<EModeProfil,TKey2Profile> TMKey2Profile;
|
|
||||||
|
|
||||||
//! Read set of MED PROFILES
|
//! Read set of MED PROFILES
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TMKey2Profile
|
TMKey2Profile
|
||||||
GetMKey2Profile(const PWrapper& theWrapper,
|
GetMKey2Profile(const PWrapper& theWrapper,
|
||||||
TErr* theErr = NULL,
|
TErr* theErr = NULL,
|
||||||
EModeProfil theMode = eCOMPACT);
|
EModeProfil theMode = eCOMPACT);
|
||||||
|
|
||||||
@ -139,18 +130,17 @@ namespace MED
|
|||||||
GetEntityByFamilyId(PGrilleInfo& theInfo,
|
GetEntityByFamilyId(PGrilleInfo& theInfo,
|
||||||
TInt theId);
|
TInt theId);
|
||||||
|
|
||||||
typedef std::map<TInt,TInt> TFamilyID2NbCells;
|
//---------------------------------------------------------------
|
||||||
|
|
||||||
//! Get Number of cells for theId family, for Grille
|
//! Get Number of cells for theId family, for Grille
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TFamilyID2NbCells
|
TFamilyID2NbCells
|
||||||
GetFamilyID2NbCells(PGrilleInfo& theInfo);
|
GetFamilyID2NbCells(PGrilleInfo& theInfo);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Convert eNOEUD_ELEMENT to eMAILLE
|
//! Convert eNOEUD_ELEMENT to eMAILLE
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
EEntiteMaillage
|
EEntiteMaillage
|
||||||
ConvertEntity(const EEntiteMaillage& aEntity);
|
ConvertEntity(const EEntiteMaillage& aEntity);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_Algorithm_HeaderFile
|
121
src/MEDWrapper/MED_Common.cxx
Normal file
121
src/MEDWrapper/MED_Common.cxx
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// 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, 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
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "MED_Common.hxx"
|
||||||
|
#include <med.h>
|
||||||
|
|
||||||
|
namespace MED
|
||||||
|
{
|
||||||
|
TInt
|
||||||
|
GetDESCLength()
|
||||||
|
{
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetIDENTLength()
|
||||||
|
{
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetNOMLength()
|
||||||
|
{
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetLNOMLength()
|
||||||
|
{
|
||||||
|
return 80;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetPNOMLength()
|
||||||
|
{
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
GetVersionRelease(TInt& major, TInt& minor, TInt& release)
|
||||||
|
{
|
||||||
|
major = MED_MAJOR_NUM;
|
||||||
|
minor = MED_MINOR_NUM;
|
||||||
|
release = MED_RELEASE_NUM;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetNbConn(EGeometrieElement typmai,
|
||||||
|
EEntiteMaillage typent,
|
||||||
|
TInt mdim)
|
||||||
|
{
|
||||||
|
return typmai % 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetNbNodes(EGeometrieElement typmai)
|
||||||
|
{
|
||||||
|
return typmai % 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
const MED::TEntity2GeomSet& GetEntity2GeomSet()
|
||||||
|
{
|
||||||
|
static MED::TEntity2GeomSet Entity2GeomSet;
|
||||||
|
|
||||||
|
if ( Entity2GeomSet.empty() ) {
|
||||||
|
TGeomSet& aGeomARETESet = Entity2GeomSet[MED::eARETE];
|
||||||
|
aGeomARETESet.insert(MED::eSEG2);
|
||||||
|
aGeomARETESet.insert(MED::eSEG3);
|
||||||
|
|
||||||
|
TGeomSet& aGeomFACESet = Entity2GeomSet[MED::eFACE];
|
||||||
|
aGeomFACESet.insert(MED::eTRIA3);
|
||||||
|
aGeomFACESet.insert(MED::eQUAD4);
|
||||||
|
aGeomFACESet.insert(MED::eTRIA6);
|
||||||
|
aGeomFACESet.insert(MED::eTRIA7);
|
||||||
|
aGeomFACESet.insert(MED::eQUAD8);
|
||||||
|
aGeomFACESet.insert(MED::eQUAD9);
|
||||||
|
aGeomFACESet.insert(MED::ePOLYGONE);
|
||||||
|
aGeomFACESet.insert(MED::ePOLYGON2);
|
||||||
|
|
||||||
|
TGeomSet& aGeomMAILLESet = Entity2GeomSet[MED::eMAILLE];
|
||||||
|
aGeomMAILLESet.insert(MED::ePOINT1);
|
||||||
|
aGeomMAILLESet.insert(aGeomARETESet.begin(), aGeomARETESet.end());
|
||||||
|
aGeomMAILLESet.insert(aGeomFACESet.begin(), aGeomFACESet.end());
|
||||||
|
aGeomMAILLESet.insert(MED::eTETRA4);
|
||||||
|
aGeomMAILLESet.insert(MED::ePYRA5);
|
||||||
|
aGeomMAILLESet.insert(MED::ePENTA6);
|
||||||
|
aGeomMAILLESet.insert(MED::eHEXA8);
|
||||||
|
aGeomMAILLESet.insert(MED::eOCTA12);
|
||||||
|
aGeomMAILLESet.insert(MED::eTETRA10);
|
||||||
|
aGeomMAILLESet.insert(MED::ePYRA13);
|
||||||
|
aGeomMAILLESet.insert(MED::ePENTA15);
|
||||||
|
aGeomMAILLESet.insert(MED::eHEXA20);
|
||||||
|
aGeomMAILLESet.insert(MED::eHEXA27);
|
||||||
|
aGeomMAILLESet.insert(MED::ePOLYEDRE);
|
||||||
|
|
||||||
|
/* This combination allows reading nb of models of structure elements */
|
||||||
|
Entity2GeomSet[MED::eSTRUCT_ELEMENT].insert(MED::eAllGeoType);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Entity2GeomSet;
|
||||||
|
}
|
||||||
|
}
|
@ -23,7 +23,9 @@
|
|||||||
#ifndef MED_Common_HeaderFile
|
#ifndef MED_Common_HeaderFile
|
||||||
#define MED_Common_HeaderFile
|
#define MED_Common_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperBase.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
|
#include "MED_Vector.hxx"
|
||||||
|
#include "MED_SharedPtr.hxx"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <set>
|
#include <set>
|
||||||
@ -31,114 +33,65 @@
|
|||||||
|
|
||||||
#include <hdf5.h>
|
#include <hdf5.h>
|
||||||
|
|
||||||
#include <boost/tuple/tuple.hpp>
|
|
||||||
|
|
||||||
#include "SALOMEconfig.h"
|
|
||||||
|
|
||||||
#include "MED_Vector.hxx"
|
|
||||||
#include "MED_SharedPtr.hxx"
|
|
||||||
#include "MED_SliceArray.hxx"
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#pragma warning(disable:4099)
|
#pragma warning(disable:4099)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace MED{
|
namespace MED
|
||||||
|
{
|
||||||
enum EVersion {eVUnknown = -1, eV2_1, eV2_2};
|
typedef enum {eFAUX, eVRAI} EBooleen;
|
||||||
|
|
||||||
typedef enum {eFAUX, eVRAI} EBooleen ;
|
|
||||||
typedef double TFloat;
|
typedef double TFloat;
|
||||||
#if defined(HAVE_F77INT64)
|
#if defined(HAVE_F77INT64)
|
||||||
typedef long TInt;
|
typedef long TInt;
|
||||||
#else
|
#else
|
||||||
typedef int TInt;
|
typedef int TInt;
|
||||||
#endif
|
#endif
|
||||||
typedef hid_t TIdt;
|
typedef hid_t TIdt;
|
||||||
typedef herr_t TErr;
|
typedef herr_t TErr;
|
||||||
|
|
||||||
typedef enum {eFULL_INTERLACE, eNO_INTERLACE} EModeSwitch;
|
typedef enum {eFULL_INTERLACE, eNO_INTERLACE} EModeSwitch;
|
||||||
|
|
||||||
typedef enum {eFLOAT64=6, eINT=24, eLONG=26 } ETypeChamp;
|
typedef enum {eFLOAT64=6, eINT=24, eLONG=26} ETypeChamp;
|
||||||
|
|
||||||
typedef enum {eNON_STRUCTURE, eSTRUCTURE} EMaillage;
|
typedef enum {eNON_STRUCTURE, eSTRUCTURE} EMaillage;
|
||||||
|
|
||||||
typedef enum {eCART, eCYL, eSPHER} ERepere;
|
typedef enum {eCART, eCYL, eSPHER} ERepere;
|
||||||
|
|
||||||
typedef enum {eNOD, eDESC} EConnectivite ;
|
typedef enum {eNOD, eDESC} EConnectivite;
|
||||||
|
|
||||||
typedef enum {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
|
typedef enum {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
|
||||||
eQUAD4=204, eTRIA6=206, eTRIA7=207, eQUAD8=208, eQUAD9=209,eTETRA4=304,
|
eQUAD4=204, eTRIA6=206, eTRIA7=207, eQUAD8=208, eQUAD9=209, eTETRA4=304,
|
||||||
ePYRA5=305, ePENTA6=306, eHEXA8=308, eOCTA12=312, eTETRA10=310,
|
ePYRA5=305, ePENTA6=306, eHEXA8=308, eOCTA12=312, eTETRA10=310,
|
||||||
ePYRA13=313, ePENTA15=315, eHEXA20=320, eHEXA27=327,
|
ePYRA13=313, ePENTA15=315, eHEXA20=320, eHEXA27=327,
|
||||||
ePOLYGONE=400, ePOLYGON2=420, ePOLYEDRE=500, eNONE=0,
|
ePOLYGONE=400, ePOLYGON2=420, ePOLYEDRE=500, eNONE=0,
|
||||||
eBALL=1101 /*no such a type in med.h, it's just a trick*/,
|
eBALL=1101, // no such a type in med.h, it's just a trick
|
||||||
eAllGeoType=-1 } EGeometrieElement;
|
eAllGeoType=-1} EGeometrieElement;
|
||||||
|
|
||||||
typedef enum {eMAILLE, eFACE, eARETE, eNOEUD, eNOEUD_ELEMENT, eSTRUCT_ELEMENT} EEntiteMaillage;
|
typedef enum {eMAILLE, eFACE, eARETE, eNOEUD, eNOEUD_ELEMENT, eSTRUCT_ELEMENT} EEntiteMaillage;
|
||||||
|
|
||||||
typedef enum {eNO_PFLMOD, eGLOBAL, eCOMPACT} EModeProfil;
|
typedef enum {eNO_PFLMOD, eGLOBAL, eCOMPACT} EModeProfil;
|
||||||
|
|
||||||
typedef enum {eGRILLE_CARTESIENNE, eGRILLE_POLAIRE, eGRILLE_STANDARD} EGrilleType;
|
typedef enum {eGRILLE_CARTESIENNE, eGRILLE_POLAIRE, eGRILLE_STANDARD} EGrilleType;
|
||||||
|
|
||||||
typedef enum {eCOOR, eCONN, eNOM, eNUM, eFAM, eCOOR_IND1, eCOOR_IND2, eCOOR_IND3} ETable;
|
typedef enum {eCOOR, eCONN, eNOM, eNUM, eFAM, eCOOR_IND1, eCOOR_IND2, eCOOR_IND3} ETable;
|
||||||
|
|
||||||
|
typedef TVector<TInt> TIntVector;
|
||||||
typedef TVector<TFloat> TFloatVector;
|
typedef TVector<TFloat> TFloatVector;
|
||||||
typedef TVector<std::string> TStringVector;
|
typedef TVector<std::string> TStringVector;
|
||||||
typedef TVector<TInt> TIntVector;
|
|
||||||
typedef std::set<std::string> TStringSet;
|
typedef std::set<std::string> TStringSet;
|
||||||
|
|
||||||
typedef std::map<EGeometrieElement,TInt> TGeom2Size;
|
typedef std::map<EGeometrieElement,TInt> TGeom2Size;
|
||||||
typedef std::map<EEntiteMaillage,TGeom2Size> TEntityInfo;
|
typedef std::map<EEntiteMaillage,TGeom2Size> TEntityInfo;
|
||||||
|
|
||||||
typedef std::set<EGeometrieElement> TGeomSet;
|
typedef std::set<EGeometrieElement> TGeomSet;
|
||||||
typedef std::map<EEntiteMaillage,TGeomSet> TEntity2GeomSet;
|
typedef std::map<EEntiteMaillage,TGeomSet> TEntity2GeomSet;
|
||||||
|
|
||||||
MEDWRAPPER_EXPORT
|
|
||||||
const TEntity2GeomSet&
|
|
||||||
GetEntity2GeomSet();
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
TInt MEDWRAPPER_EXPORT
|
|
||||||
GetDESCLength();
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
TInt MEDWRAPPER_EXPORT
|
|
||||||
GetIDENTLength();
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
TInt MEDWRAPPER_EXPORT
|
|
||||||
GetNOMLength();
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
TInt MEDWRAPPER_EXPORT
|
|
||||||
GetLNOMLength();
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
TInt MEDWRAPPER_EXPORT
|
|
||||||
GetPNOMLength();
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
void MEDWRAPPER_EXPORT
|
|
||||||
GetVersionRelease(TInt& majeur, TInt& mineur, TInt& release);
|
|
||||||
|
|
||||||
template<EVersion>
|
|
||||||
MEDWRAPPER_EXPORT
|
|
||||||
TInt
|
|
||||||
GetNbConn(EGeometrieElement typmai,
|
|
||||||
EEntiteMaillage typent,
|
|
||||||
TInt mdim);
|
|
||||||
|
|
||||||
MEDWRAPPER_EXPORT
|
|
||||||
TInt
|
|
||||||
GetNbNodes(EGeometrieElement typmai);
|
|
||||||
|
|
||||||
struct TNameInfo;
|
struct TNameInfo;
|
||||||
typedef SharedPtr<TNameInfo> PNameInfo;
|
typedef SharedPtr<TNameInfo> PNameInfo;
|
||||||
|
|
||||||
struct TMeshInfo;
|
struct TMeshInfo;
|
||||||
typedef SharedPtr<TMeshInfo> PMeshInfo;
|
typedef SharedPtr<TMeshInfo> PMeshInfo;
|
||||||
|
|
||||||
struct TFamilyInfo;
|
struct TFamilyInfo;
|
||||||
typedef SharedPtr<TFamilyInfo> PFamilyInfo;
|
typedef SharedPtr<TFamilyInfo> PFamilyInfo;
|
||||||
|
|
||||||
@ -168,10 +121,10 @@ namespace MED{
|
|||||||
|
|
||||||
struct TProfileInfo;
|
struct TProfileInfo;
|
||||||
typedef SharedPtr<TProfileInfo> PProfileInfo;
|
typedef SharedPtr<TProfileInfo> PProfileInfo;
|
||||||
|
|
||||||
struct TGaussInfo;
|
struct TGaussInfo;
|
||||||
typedef SharedPtr<TGaussInfo> PGaussInfo;
|
typedef SharedPtr<TGaussInfo> PGaussInfo;
|
||||||
|
|
||||||
class TGrilleInfo;
|
class TGrilleInfo;
|
||||||
typedef SharedPtr<TGrilleInfo> PGrilleInfo;
|
typedef SharedPtr<TGrilleInfo> PGrilleInfo;
|
||||||
|
|
||||||
@ -180,7 +133,42 @@ namespace MED{
|
|||||||
|
|
||||||
struct TWrapper;
|
struct TWrapper;
|
||||||
typedef SharedPtr<TWrapper> PWrapper;
|
typedef SharedPtr<TWrapper> PWrapper;
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetDESCLength();
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetIDENTLength();
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetNOMLength();
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetLNOMLength();
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetPNOMLength();
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
void
|
||||||
|
GetVersionRelease(TInt&, TInt&, TInt&);
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetNbConn(EGeometrieElement, EEntiteMaillage, TInt);
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
TInt
|
||||||
|
GetNbNodes(EGeometrieElement typmai);
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
const TEntity2GeomSet&
|
||||||
|
GetEntity2GeomSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // MED_Common_HeaderFile
|
||||||
#endif
|
|
@ -19,68 +19,67 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "MED_CoordUtils.hxx"
|
#include "MED_CoordUtils.hxx"
|
||||||
#include "MED_Utilities.hxx"
|
#include "MED_Utilities.hxx"
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
|
|
||||||
enum ECoordName{eX, eY, eZ, eNone};
|
enum ECoordName{eX, eY, eZ, eNone};
|
||||||
|
|
||||||
template<ECoordName TCoordId>
|
template<ECoordName TCoordId>
|
||||||
TFloat
|
TFloat
|
||||||
GetCoord(const TCCoordSlice& theCoordSlice)
|
GetCoord(const TCCoordSlice& theCoordSlice)
|
||||||
{
|
{
|
||||||
return theCoordSlice[TCoordId];
|
return theCoordSlice[TCoordId];
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
TFloat
|
TFloat
|
||||||
GetCoord<eNone>(const TCCoordSlice& theCoordSlice)
|
GetCoord<eNone>(const TCCoordSlice& theCoordSlice)
|
||||||
{
|
{
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TGetCoord
|
TGetCoord
|
||||||
aXYZGetCoord[3] = {
|
aXYZGetCoord[3] = {
|
||||||
&GetCoord<eX>,
|
&GetCoord<eX>,
|
||||||
&GetCoord<eY>,
|
&GetCoord<eY>,
|
||||||
&GetCoord<eZ>
|
&GetCoord<eZ>
|
||||||
};
|
};
|
||||||
|
|
||||||
TGetCoord
|
TGetCoord
|
||||||
aXYGetCoord[3] = {
|
aXYGetCoord[3] = {
|
||||||
&GetCoord<eX>,
|
&GetCoord<eX>,
|
||||||
&GetCoord<eY>,
|
&GetCoord<eY>,
|
||||||
&GetCoord<eNone>
|
&GetCoord<eNone>
|
||||||
};
|
};
|
||||||
|
|
||||||
TGetCoord
|
TGetCoord
|
||||||
aYZGetCoord[3] = {
|
aYZGetCoord[3] = {
|
||||||
&GetCoord<eNone>,
|
&GetCoord<eNone>,
|
||||||
&GetCoord<eX>,
|
&GetCoord<eX>,
|
||||||
&GetCoord<eY>
|
&GetCoord<eY>
|
||||||
};
|
};
|
||||||
|
|
||||||
TGetCoord
|
TGetCoord
|
||||||
aXZGetCoord[3] = {
|
aXZGetCoord[3] = {
|
||||||
&GetCoord<eX>,
|
&GetCoord<eX>,
|
||||||
&GetCoord<eNone>,
|
&GetCoord<eNone>,
|
||||||
&GetCoord<eY>
|
&GetCoord<eY>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TGetCoord
|
||||||
TGetCoord
|
|
||||||
aXGetCoord[3] = {
|
aXGetCoord[3] = {
|
||||||
&GetCoord<eX>,
|
&GetCoord<eX>,
|
||||||
&GetCoord<eNone>,
|
&GetCoord<eNone>,
|
||||||
&GetCoord<eNone>
|
&GetCoord<eNone>
|
||||||
};
|
};
|
||||||
|
|
||||||
TGetCoord
|
TGetCoord
|
||||||
aYGetCoord[3] = {
|
aYGetCoord[3] = {
|
||||||
&GetCoord<eNone>,
|
&GetCoord<eNone>,
|
||||||
&GetCoord<eX>,
|
&GetCoord<eX>,
|
||||||
&GetCoord<eNone>
|
&GetCoord<eNone>
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -91,22 +90,20 @@ namespace MED
|
|||||||
&GetCoord<eX>
|
&GetCoord<eX>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TCoordHelper
|
TCoordHelper
|
||||||
::TCoordHelper(TGetCoord* theGetCoord):
|
::TCoordHelper(TGetCoord* theGetCoord):
|
||||||
myGetCoord(theGetCoord)
|
myGetCoord(theGetCoord)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
TFloat
|
TFloat
|
||||||
TCoordHelper
|
TCoordHelper
|
||||||
::GetCoord(TCCoordSlice& theCoordSlice,
|
::GetCoord(TCCoordSlice& theCoordSlice,
|
||||||
TInt theCoordId)
|
TInt theCoordId)
|
||||||
{
|
{
|
||||||
return (*myGetCoord[theCoordId])(theCoordSlice);
|
return (*myGetCoord[theCoordId])(theCoordSlice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
PCoordHelper
|
PCoordHelper
|
||||||
GetCoordHelper(PNodeInfo theNodeInfo)
|
GetCoordHelper(PNodeInfo theNodeInfo)
|
@ -19,38 +19,35 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_CoordUtils_HeaderFile
|
#ifndef MED_CoordUtils_HeaderFile
|
||||||
#define MED_CoordUtils_HeaderFile
|
#define MED_CoordUtils_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperBase.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
|
|
||||||
#include "MED_Structures.hxx"
|
#include "MED_Structures.hxx"
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
typedef TFloat (*TGetCoord)(const TCCoordSlice& theCoordSlice);
|
typedef TFloat (*TGetCoord)(const TCCoordSlice& theCoordSlice);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
class MEDWRAPPER_EXPORT TCoordHelper
|
class MEDWRAPPER_EXPORT TCoordHelper
|
||||||
{
|
{
|
||||||
TGetCoord* myGetCoord;
|
TGetCoord* myGetCoord;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TCoordHelper(TGetCoord* theGetCoord);
|
TCoordHelper(TGetCoord* theGetCoord);
|
||||||
|
|
||||||
TFloat
|
TFloat
|
||||||
GetCoord(TCCoordSlice& theCoordSlice,
|
GetCoord(TCCoordSlice& theCoordSlice,
|
||||||
TInt theCoordId);
|
TInt theCoordId);
|
||||||
};
|
};
|
||||||
typedef SharedPtr<TCoordHelper> PCoordHelper;
|
typedef SharedPtr<TCoordHelper> PCoordHelper;
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
PCoordHelper
|
PCoordHelper
|
||||||
GetCoordHelper(PNodeInfo theNodeInfo);
|
GetCoordHelper(PNodeInfo theNodeInfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_CoordUtils_HeaderFile
|
120
src/MEDWrapper/MED_Factory.cxx
Normal file
120
src/MEDWrapper/MED_Factory.cxx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// 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, 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
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "MED_Factory.hxx"
|
||||||
|
#include "MED_Utilities.hxx"
|
||||||
|
#include "MED_Wrapper.hxx"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#include <med.h>
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#ifndef WIN32
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MED
|
||||||
|
{
|
||||||
|
bool exists(const std::string& fileName)
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
return (GetFileAttributes(xmlPath.c_str()) != INVALID_FILE_ATTRIBUTES);
|
||||||
|
#else
|
||||||
|
return (access(fileName.c_str(), F_OK) == 0);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CheckCompatibility(const std::string& fileName)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
// check that file is accessible
|
||||||
|
if ( exists(fileName) ) {
|
||||||
|
// check HDF5 && MED compatibility
|
||||||
|
med_bool hdfok, medok;
|
||||||
|
MEDfileCompatibility(fileName.c_str(), &hdfok, &medok);
|
||||||
|
if ( hdfok && medok ) {
|
||||||
|
med_idt aFid = MEDfileOpen(fileName.c_str(), MED_ACC_RDONLY);
|
||||||
|
if (aFid >= 0) {
|
||||||
|
med_int major, minor, release;
|
||||||
|
med_err ret = MEDfileNumVersionRd(aFid, &major, &minor, &release);
|
||||||
|
if (ret >= 0) {
|
||||||
|
int version = 100*major + minor;
|
||||||
|
if (version >= 202)
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MEDfileClose(aFid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetMEDVersion(const std::string& fileName, int& major, int& minor, int& release)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
major = minor = release = 0;
|
||||||
|
med_idt aFid = MEDfileOpen(fileName.c_str(), MED_ACC_RDONLY);
|
||||||
|
if (aFid >= 0) {
|
||||||
|
med_int _major, _minor, _release;
|
||||||
|
med_err ret = MEDfileNumVersionRd(aFid, &_major, &_minor, &_release);
|
||||||
|
if (ret == 0) {
|
||||||
|
major = _major;
|
||||||
|
minor = _minor;
|
||||||
|
release = _release;
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
MEDfileClose(aFid);
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GetMEDVersion(const std::string& fileName)
|
||||||
|
{
|
||||||
|
std::string version;
|
||||||
|
int major, minor, release;
|
||||||
|
if (GetMEDVersion(fileName, major, minor, release)) {
|
||||||
|
std::ostringstream os;
|
||||||
|
os << major << "." << minor << "." << release;
|
||||||
|
version = os.str();
|
||||||
|
}
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
PWrapper CrWrapperR(const std::string& fileName)
|
||||||
|
{
|
||||||
|
if (!CheckCompatibility(fileName)) {
|
||||||
|
EXCEPTION(std::runtime_error, "Cannot open file '"<<fileName<<"'.");
|
||||||
|
}
|
||||||
|
return new MED::TWrapper(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
PWrapper CrWrapperW(const std::string& fileName)
|
||||||
|
{
|
||||||
|
if (!CheckCompatibility(fileName))
|
||||||
|
remove(fileName.c_str());
|
||||||
|
return new MED::TWrapper(fileName);
|
||||||
|
}
|
||||||
|
}
|
@ -23,27 +23,27 @@
|
|||||||
#ifndef MED_Factory_HeaderFile
|
#ifndef MED_Factory_HeaderFile
|
||||||
#define MED_Factory_HeaderFile
|
#define MED_Factory_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperFactory.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
#include "MED_Wrapper.hxx"
|
#include "MED_Wrapper.hxx"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
MEDWRAPPER_FACTORY_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
EVersion
|
std::string GetMEDVersion( const std::string& );
|
||||||
GetVersionId(const std::string& theFileName,
|
|
||||||
bool theDoPreCheckInSeparateProcess = false);
|
|
||||||
|
|
||||||
MEDWRAPPER_FACTORY_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
bool getMEDVersion( const std::string&, int&, int&, int& );
|
bool GetMEDVersion( const std::string&, int&, int&, int& );
|
||||||
|
|
||||||
MEDWRAPPER_FACTORY_EXPORT
|
|
||||||
PWrapper
|
|
||||||
CrWrapper(const std::string& theFileName,
|
|
||||||
bool theDoPreCheckInSeparateProcess = false);
|
|
||||||
|
|
||||||
MEDWRAPPER_FACTORY_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
PWrapper
|
bool CheckCompatibility( const std::string& );
|
||||||
CrWrapper(const std::string& theFileName, EVersion theId);
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
PWrapper CrWrapperR( const std::string& );
|
||||||
|
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
PWrapper CrWrapperW( const std::string& );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_Factory_HeaderFile
|
@ -16,34 +16,30 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
// File : MED_GaussDef.hxx
|
|
||||||
// Author : Edward AGAPOV (eap)
|
|
||||||
//
|
|
||||||
#include "MED_GaussDef.hxx"
|
#include "MED_GaussDef.hxx"
|
||||||
#include "MED_Utilities.hxx"
|
#include "MED_Utilities.hxx"
|
||||||
#include "MED_GaussUtils.hxx"
|
#include "MED_GaussUtils.hxx"
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
using namespace std;
|
|
||||||
using namespace MED;
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
|
|
||||||
void TGaussDef::add(const double x, const double weight)
|
void TGaussDef::add(const double x, const double weight)
|
||||||
{
|
{
|
||||||
if ( dim() != 1 )
|
if ( dim() != 1 )
|
||||||
EXCEPTION( logic_error,"dim() != 1");
|
EXCEPTION( std::logic_error,"dim() != 1");
|
||||||
if ( myWeights.capacity() == myWeights.size() )
|
if ( myWeights.capacity() == myWeights.size() )
|
||||||
EXCEPTION( logic_error,"Extra gauss point");
|
EXCEPTION( std::logic_error,"Extra gauss point");
|
||||||
myCoords.push_back( x );
|
myCoords.push_back( x );
|
||||||
myWeights.push_back( weight );
|
myWeights.push_back( weight );
|
||||||
}
|
}
|
||||||
void TGaussDef::add(const double x, const double y, const double weight)
|
void TGaussDef::add(const double x, const double y, const double weight)
|
||||||
{
|
{
|
||||||
if ( dim() != 2 )
|
if ( dim() != 2 )
|
||||||
EXCEPTION( logic_error,"dim() != 2");
|
EXCEPTION( std::logic_error,"dim() != 2");
|
||||||
if ( myWeights.capacity() == myWeights.size() )
|
if ( myWeights.capacity() == myWeights.size() )
|
||||||
EXCEPTION( logic_error,"Extra gauss point");
|
EXCEPTION( std::logic_error,"Extra gauss point");
|
||||||
myCoords.push_back( x );
|
myCoords.push_back( x );
|
||||||
myCoords.push_back( y );
|
myCoords.push_back( y );
|
||||||
myWeights.push_back( weight );
|
myWeights.push_back( weight );
|
||||||
@ -51,9 +47,9 @@ namespace MED
|
|||||||
void TGaussDef::add(const double x, const double y, const double z, const double weight)
|
void TGaussDef::add(const double x, const double y, const double z, const double weight)
|
||||||
{
|
{
|
||||||
if ( dim() != 3 )
|
if ( dim() != 3 )
|
||||||
EXCEPTION( logic_error,"dim() != 3");
|
EXCEPTION( std::logic_error,"dim() != 3");
|
||||||
if ( myWeights.capacity() == myWeights.size() )
|
if ( myWeights.capacity() == myWeights.size() )
|
||||||
EXCEPTION( logic_error,"Extra gauss point");
|
EXCEPTION( std::logic_error,"Extra gauss point");
|
||||||
myCoords.push_back( x );
|
myCoords.push_back( x );
|
||||||
myCoords.push_back( y );
|
myCoords.push_back( y );
|
||||||
myCoords.push_back( z );
|
myCoords.push_back( z );
|
||||||
@ -66,7 +62,6 @@ namespace MED
|
|||||||
aShapeFun.myRefCoord.end() );
|
aShapeFun.myRefCoord.end() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
/*!
|
/*!
|
||||||
* \brief Fill definition of gauss points family
|
* \brief Fill definition of gauss points family
|
||||||
@ -99,7 +94,7 @@ namespace MED
|
|||||||
const double P1 = 1./1.8;
|
const double P1 = 1./1.8;
|
||||||
const double P2 = 1./1.125;
|
const double P2 = 1./1.125;
|
||||||
add( -a, P1 );
|
add( -a, P1 );
|
||||||
add( 0, P2 );
|
add( 0, P2 );
|
||||||
add( a, P1 ); break;
|
add( a, P1 ); break;
|
||||||
}
|
}
|
||||||
case 4: {
|
case 4: {
|
||||||
@ -107,11 +102,11 @@ namespace MED
|
|||||||
const double P1 = 0.652145154862546, P2 = 0.347854845137454 ;
|
const double P1 = 0.652145154862546, P2 = 0.347854845137454 ;
|
||||||
add( a, P1 );
|
add( a, P1 );
|
||||||
add( -a, P1 );
|
add( -a, P1 );
|
||||||
add( b, P2 );
|
add( b, P2 );
|
||||||
add( -b, P2 ); break;
|
add( -b, P2 ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for SEG"<<nbGauss);
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for SEG"<<nbGauss);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -139,11 +134,11 @@ namespace MED
|
|||||||
case 6: { // FPG6
|
case 6: { // FPG6
|
||||||
const double P1 = 0.11169079483905, P2 = 0.0549758718227661;
|
const double P1 = 0.11169079483905, P2 = 0.0549758718227661;
|
||||||
const double a = 0.445948490915965, b = 0.091576213509771;
|
const double a = 0.445948490915965, b = 0.091576213509771;
|
||||||
add( b, b, P2 );
|
add( b, b, P2 );
|
||||||
add( 1-2*b, b, P2 );
|
add( 1-2*b, b, P2 );
|
||||||
add( b, 1-2*b, P2 );
|
add( b, 1-2*b, P2 );
|
||||||
add( a, 1-2*a, P1 );
|
add( a, 1-2*a, P1 );
|
||||||
add( a, a, P1 );
|
add( a, a, P1 );
|
||||||
add( 1-2*a, a, P1 ); break;
|
add( 1-2*a, a, P1 ); break;
|
||||||
}
|
}
|
||||||
case 7: { // FPG7
|
case 7: { // FPG7
|
||||||
@ -151,11 +146,11 @@ namespace MED
|
|||||||
const double B = 0.101286507323456;
|
const double B = 0.101286507323456;
|
||||||
const double P1 = 0.066197076394253;
|
const double P1 = 0.066197076394253;
|
||||||
const double P2 = 0.062969590272413;
|
const double P2 = 0.062969590272413;
|
||||||
add( 1/3., 1/3., 9/80. );
|
add( 1/3., 1/3., 9/80. );
|
||||||
add( A, A, P1 );
|
add( A, A, P1 );
|
||||||
add( 1-2*A, A, P1 );
|
add( 1-2*A, A, P1 );
|
||||||
add( A, 1-2*A, P1 );
|
add( A, 1-2*A, P1 );
|
||||||
add( B, B, P2 );
|
add( B, B, P2 );
|
||||||
add( 1-2*B, B, P2 );
|
add( 1-2*B, B, P2 );
|
||||||
add( B, 1-2*B, P2 ); break;
|
add( B, 1-2*B, P2 ); break;
|
||||||
}
|
}
|
||||||
@ -167,10 +162,10 @@ namespace MED
|
|||||||
const double P1 = 0.025422453185103;
|
const double P1 = 0.025422453185103;
|
||||||
const double P2 = 0.058393137863189;
|
const double P2 = 0.058393137863189;
|
||||||
const double P3 = 0.041425537809187;
|
const double P3 = 0.041425537809187;
|
||||||
add( A, A, P1 );
|
add( A, A, P1 );
|
||||||
add( 1-2*A, A, P1 );
|
add( 1-2*A, A, P1 );
|
||||||
add( A, 1-2*A, P1 );
|
add( A, 1-2*A, P1 );
|
||||||
add( B, B, P2 );
|
add( B, B, P2 );
|
||||||
add( 1-2*B, B, P2 );
|
add( 1-2*B, B, P2 );
|
||||||
add( B, 1-2*B, P2 );
|
add( B, 1-2*B, P2 );
|
||||||
add( C, D, P3 );
|
add( C, D, P3 );
|
||||||
@ -181,7 +176,7 @@ namespace MED
|
|||||||
add( D, 1-C-D, P3 ); break;
|
add( D, 1-C-D, P3 ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for TRIA, variant 1: "
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for TRIA, variant 1: "
|
||||||
<<nbGauss);
|
<<nbGauss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -200,15 +195,15 @@ namespace MED
|
|||||||
case 6: {
|
case 6: {
|
||||||
const double P1 = 0.11169079483905, P2 = 0.0549758718227661;
|
const double P1 = 0.11169079483905, P2 = 0.0549758718227661;
|
||||||
const double A = 0.445948490915965, B = 0.091576213509771;
|
const double A = 0.445948490915965, B = 0.091576213509771;
|
||||||
add( 2*B-1, 1-4*B, 4*P2 );
|
add( 2*B-1, 1-4*B, 4*P2 );
|
||||||
add( 2*B-1, 2*B-1, 4*P2 );
|
add( 2*B-1, 2*B-1, 4*P2 );
|
||||||
add( 1-4*B, 2*B-1, 4*P2 );
|
add( 1-4*B, 2*B-1, 4*P2 );
|
||||||
add( 1-4*A, 2*A-1, 4*P1 );
|
add( 1-4*A, 2*A-1, 4*P1 );
|
||||||
add( 2*A-1, 1-4*A, 4*P1 );
|
add( 2*A-1, 1-4*A, 4*P1 );
|
||||||
add( 2*A-1, 2*A-1, 4*P1 ); break;
|
add( 2*A-1, 2*A-1, 4*P1 ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for TRIA, variant 2: "
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for TRIA, variant 2: "
|
||||||
<<nbGauss);
|
<<nbGauss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,7 +218,7 @@ namespace MED
|
|||||||
add( 0.2 , 0.6 , 25/96 ); break;
|
add( 0.2 , 0.6 , 25/96 ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for TRIA, variant 3: "
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for TRIA, variant 3: "
|
||||||
<<nbGauss);
|
<<nbGauss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -258,7 +253,7 @@ namespace MED
|
|||||||
add( 0., 0., 64/81. ); break;
|
add( 0., 0., 64/81. ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for QUAD, variant 1: "
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for QUAD, variant 1: "
|
||||||
<<nbGauss);
|
<<nbGauss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -286,7 +281,7 @@ namespace MED
|
|||||||
add( 0., 0., 64/81. ); break;
|
add( 0., 0., 64/81. ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for QUAD, variant 1: "
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for QUAD, variant 1: "
|
||||||
<<nbGauss);
|
<<nbGauss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -315,7 +310,7 @@ namespace MED
|
|||||||
add( a, a, c12 ); break;
|
add( a, a, c12 ); break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for QUAD, variant 3: "
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for QUAD, variant 3: "
|
||||||
<<nbGauss);
|
<<nbGauss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -365,7 +360,7 @@ namespace MED
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for TETRA: "<<nbGauss);
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for TETRA: "<<nbGauss);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -399,12 +394,12 @@ namespace MED
|
|||||||
add( 0., 0., h3, p3 ); break;
|
add( 0., 0., h3, p3 ); break;
|
||||||
}
|
}
|
||||||
case 27: { // FPG27
|
case 27: { // FPG27
|
||||||
const double a1 = 0.788073483;
|
const double a1 = 0.788073483;
|
||||||
const double b6 = 0.499369002;
|
const double b6 = 0.499369002;
|
||||||
const double b1 = 0.848418011;
|
const double b1 = 0.848418011;
|
||||||
const double c8 = 0.478508449;
|
const double c8 = 0.478508449;
|
||||||
const double c1 = 0.652816472;
|
const double c1 = 0.652816472;
|
||||||
const double d12 = 0.032303742;
|
const double d12 = 0.032303742;
|
||||||
const double d1 = 1.106412899;
|
const double d1 = 1.106412899;
|
||||||
double z = 1/2., fz = b1/2*(1 - z);
|
double z = 1/2., fz = b1/2*(1 - z);
|
||||||
add( 0., 0., z, a1 ); // 1
|
add( 0., 0., z, a1 ); // 1
|
||||||
@ -444,7 +439,7 @@ namespace MED
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for PYRA: "<<nbGauss);
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for PYRA: "<<nbGauss);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ePENTA6:
|
case ePENTA6:
|
||||||
@ -502,7 +497,7 @@ namespace MED
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for PENTA: " <<nbGauss);
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for PENTA: " <<nbGauss);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -556,15 +551,15 @@ namespace MED
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"Invalid nb of gauss points for PENTA: " <<nbGauss);
|
EXCEPTION( std::logic_error,"Invalid nb of gauss points for PENTA: " <<nbGauss);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
EXCEPTION( logic_error,"unexpected EGeometrieElement: "<< geom);
|
EXCEPTION( std::logic_error,"unexpected EGeometrieElement: "<< geom);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( myWeights.capacity() != myWeights.size() )
|
if ( myWeights.capacity() != myWeights.size() )
|
||||||
EXCEPTION( logic_error,"Not all gauss points defined");
|
EXCEPTION( std::logic_error,"Not all gauss points defined");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,21 +16,19 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
// File : MED_GaussDef.hxx
|
|
||||||
// Author : Edward AGAPOV (eap)
|
|
||||||
//
|
|
||||||
#ifndef MED_GaussDef_HeaderFile
|
#ifndef MED_GaussDef_HeaderFile
|
||||||
#define MED_GaussDef_HeaderFile
|
#define MED_GaussDef_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperBase.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
|
|
||||||
//#include "MED_GaussUtils.hxx" <<<---- avoid dependence on boost
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
class TShapeFun;
|
class TShapeFun;
|
||||||
typedef std::vector<double> TDoubleVector;
|
typedef std::vector<double> TDoubleVector;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Description of family of integration points
|
* \brief Description of family of integration points
|
||||||
*/
|
*/
|
||||||
@ -46,9 +44,9 @@ namespace MED
|
|||||||
* \param geomType - element geometry (EGeometrieElement or med_geometrie_element)
|
* \param geomType - element geometry (EGeometrieElement or med_geometrie_element)
|
||||||
* \param nbPoints - nb gauss point
|
* \param nbPoints - nb gauss point
|
||||||
* \param variant - [1-3] to choose the variant of definition
|
* \param variant - [1-3] to choose the variant of definition
|
||||||
*
|
*
|
||||||
* Throws in case of invalid parameters
|
* Throws in case of invalid parameters
|
||||||
* variant == 1 refers to "Fonctions de forme et points d'integration
|
* variant == 1 refers to "Fonctions de forme et points d'integration
|
||||||
* des elements finis" v7.4 by J. PELLET, X. DESROCHES, 15/09/05
|
* des elements finis" v7.4 by J. PELLET, X. DESROCHES, 15/09/05
|
||||||
* variant == 2 refers to the same doc v6.4 by J.P. LEFEBVRE, X. DESROCHES, 03/07/03
|
* variant == 2 refers to the same doc v6.4 by J.P. LEFEBVRE, X. DESROCHES, 03/07/03
|
||||||
* variant == 3 refers to the same doc v6.4, second variant for 2D elements
|
* variant == 3 refers to the same doc v6.4, second variant for 2D elements
|
||||||
@ -66,4 +64,4 @@ namespace MED
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_GaussDef_HeaderFile
|
@ -19,19 +19,18 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "MED_GaussUtils.hxx"
|
#include "MED_GaussUtils.hxx"
|
||||||
#include "MED_Utilities.hxx"
|
#include "MED_Utilities.hxx"
|
||||||
|
|
||||||
#ifdef _DEBUG_
|
#ifdef _DEBUG_
|
||||||
static int MYDEBUG = 0;
|
static int MYDEBUG = 0;
|
||||||
static int MYVALUEDEBUG = 0;
|
static int MYVALUEDEBUG = 0;
|
||||||
#else
|
#else
|
||||||
// static int MYDEBUG = 0;
|
static int MYDEBUG = 0;
|
||||||
// static int MYVALUEDEBUG = 0;
|
static int MYVALUEDEBUG = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#define _DEBUG_REF_COORDS_
|
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
@ -63,28 +62,27 @@ namespace MED
|
|||||||
myGaussCoord.resize(theNbElem*myGaussStep);
|
myGaussCoord.resize(theNbElem*myGaussStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TInt
|
TInt
|
||||||
TGaussCoord
|
TGaussCoord
|
||||||
::GetNbElem() const
|
::GetNbElem() const
|
||||||
{
|
{
|
||||||
return myNbElem;
|
return myNbElem;
|
||||||
}
|
}
|
||||||
|
|
||||||
TInt
|
TInt
|
||||||
TGaussCoord
|
TGaussCoord
|
||||||
::GetNbGauss() const
|
::GetNbGauss() const
|
||||||
{
|
{
|
||||||
return myNbGauss;
|
return myNbGauss;
|
||||||
}
|
}
|
||||||
|
|
||||||
TInt
|
TInt
|
||||||
TGaussCoord
|
TGaussCoord
|
||||||
::GetDim() const
|
::GetDim() const
|
||||||
{
|
{
|
||||||
return myDim;
|
return myDim;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char*
|
unsigned char*
|
||||||
TGaussCoord
|
TGaussCoord
|
||||||
::GetValuePtr()
|
::GetValuePtr()
|
||||||
@ -92,8 +90,7 @@ namespace MED
|
|||||||
return (unsigned char*)&(myGaussCoord[0]);
|
return (unsigned char*)&(myGaussCoord[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TCCoordSliceArr
|
||||||
TCCoordSliceArr
|
|
||||||
TGaussCoord
|
TGaussCoord
|
||||||
::GetCoordSliceArr(TInt theElemId) const
|
::GetCoordSliceArr(TInt theElemId) const
|
||||||
{
|
{
|
||||||
@ -115,8 +112,7 @@ namespace MED
|
|||||||
return aCoordSliceArr;
|
return aCoordSliceArr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TCoordSliceArr
|
||||||
TCoordSliceArr
|
|
||||||
TGaussCoord
|
TGaussCoord
|
||||||
::GetCoordSliceArr(TInt theElemId)
|
::GetCoordSliceArr(TInt theElemId)
|
||||||
{
|
{
|
||||||
@ -138,10 +134,9 @@ namespace MED
|
|||||||
return aCoordSliceArr;
|
return aCoordSliceArr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
inline
|
inline
|
||||||
bool
|
bool
|
||||||
IsEqual(TFloat theLeft, TFloat theRight)
|
IsEqual(TFloat theLeft, TFloat theRight)
|
||||||
{
|
{
|
||||||
static TFloat EPS = 1.0E-3;
|
static TFloat EPS = 1.0E-3;
|
||||||
@ -150,7 +145,6 @@ namespace MED
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
class TShapeFun::TFun
|
class TShapeFun::TFun
|
||||||
{
|
{
|
||||||
@ -167,7 +161,7 @@ namespace MED
|
|||||||
myNbRef = theNbRef;
|
myNbRef = theNbRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
TCFloatVecSlice
|
TCFloatVecSlice
|
||||||
GetFunSlice(TInt theGaussId) const
|
GetFunSlice(TInt theGaussId) const
|
||||||
{
|
{
|
||||||
return TCFloatVecSlice(myFun,std::slice(theGaussId*myNbRef,myNbRef,1));
|
return TCFloatVecSlice(myFun,std::slice(theGaussId*myNbRef,myNbRef,1));
|
||||||
@ -188,7 +182,7 @@ namespace MED
|
|||||||
myNbRef(theNbRef)
|
myNbRef(theNbRef)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
TCCoordSlice
|
TCCoordSlice
|
||||||
TShapeFun::GetCoord(TInt theRefId) const
|
TShapeFun::GetCoord(TInt theRefId) const
|
||||||
{
|
{
|
||||||
return TCCoordSlice(myRefCoord,std::slice(theRefId*myDim,myDim,1));
|
return TCCoordSlice(myRefCoord,std::slice(theRefId*myDim,myDim,1));
|
||||||
@ -200,7 +194,7 @@ namespace MED
|
|||||||
return TCoordSlice(myRefCoord,std::slice(theRefId*myDim,myDim,1));
|
return TCoordSlice(myRefCoord,std::slice(theRefId*myDim,myDim,1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TShapeFun::GetFun(const TCCoordSliceArr& theRef,
|
TShapeFun::GetFun(const TCCoordSliceArr& theRef,
|
||||||
const TCCoordSliceArr& theGauss,
|
const TCCoordSliceArr& theGauss,
|
||||||
TFun& theFun) const
|
TFun& theFun) const
|
||||||
@ -210,7 +204,7 @@ namespace MED
|
|||||||
theFun.Init(aNbGauss,aNbRef);
|
theFun.Init(aNbGauss,aNbRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
TShapeFun::IsSatisfy(const TCCoordSliceArr& theRefCoord) const
|
TShapeFun::IsSatisfy(const TCCoordSliceArr& theRefCoord) const
|
||||||
{
|
{
|
||||||
TInt aNbRef = theRefCoord.size();
|
TInt aNbRef = theRefCoord.size();
|
||||||
@ -302,7 +296,7 @@ namespace MED
|
|||||||
TCFloatVecSlice aFunSlice = aFun.GetFunSlice(aGaussId);
|
TCFloatVecSlice aFunSlice = aFun.GetFunSlice(aGaussId);
|
||||||
|
|
||||||
for(TInt aConnId = 0; aConnId < aConnDim; aConnId++){
|
for(TInt aConnId = 0; aConnId < aConnDim; aConnId++){
|
||||||
TInt aNodeId = aConnSlice[aConnId] - 1;
|
TInt aNodeId = aConnSlice[aConnId] - 1;
|
||||||
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
||||||
|
|
||||||
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
||||||
@ -345,7 +339,6 @@ namespace MED
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TSeg2a::TSeg2a():TShapeFun(1,2)
|
TSeg2a::TSeg2a():TShapeFun(1,2)
|
||||||
{
|
{
|
||||||
@ -376,7 +369,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TSeg3a::TSeg3a():TShapeFun(1,3)
|
TSeg3a::TSeg3a():TShapeFun(1,3)
|
||||||
{
|
{
|
||||||
@ -409,8 +401,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTria3a::TTria3a():
|
TTria3a::TTria3a():
|
||||||
TShapeFun(2,3)
|
TShapeFun(2,3)
|
||||||
@ -444,8 +434,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTria6a::TTria6a():TShapeFun(2,6)
|
TTria6a::TTria6a():TShapeFun(2,6)
|
||||||
{
|
{
|
||||||
@ -486,8 +474,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTria3b::TTria3b():
|
TTria3b::TTria3b():
|
||||||
TShapeFun(2,3)
|
TShapeFun(2,3)
|
||||||
@ -521,8 +507,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTria6b::TTria6b():
|
TTria6b::TTria6b():
|
||||||
TShapeFun(2,6)
|
TShapeFun(2,6)
|
||||||
@ -564,8 +548,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TQuad4a::TQuad4a():
|
TQuad4a::TQuad4a():
|
||||||
TShapeFun(2,4)
|
TShapeFun(2,4)
|
||||||
@ -601,8 +583,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TQuad8a::TQuad8a():
|
TQuad8a::TQuad8a():
|
||||||
TShapeFun(2,8)
|
TShapeFun(2,8)
|
||||||
@ -648,8 +628,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TQuad9a::TQuad9a():
|
TQuad9a::TQuad9a():
|
||||||
TShapeFun(2,9)
|
TShapeFun(2,9)
|
||||||
@ -699,8 +677,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TQuad4b::TQuad4b():
|
TQuad4b::TQuad4b():
|
||||||
TShapeFun(2,4)
|
TShapeFun(2,4)
|
||||||
@ -736,8 +712,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TQuad8b::TQuad8b():
|
TQuad8b::TQuad8b():
|
||||||
TShapeFun(2,8)
|
TShapeFun(2,8)
|
||||||
@ -788,8 +762,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TQuad9b::TQuad9b():
|
TQuad9b::TQuad9b():
|
||||||
TShapeFun(2,9)
|
TShapeFun(2,9)
|
||||||
@ -839,8 +811,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTetra4a::TTetra4a():
|
TTetra4a::TTetra4a():
|
||||||
TShapeFun(3,4)
|
TShapeFun(3,4)
|
||||||
@ -876,8 +846,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTetra10a::TTetra10a():
|
TTetra10a::TTetra10a():
|
||||||
TShapeFun(3,10)
|
TShapeFun(3,10)
|
||||||
@ -929,11 +897,8 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
TTetra4b::TTetra4b():
|
TTetra4b::TTetra4b():
|
||||||
TShapeFun(3,4)
|
TShapeFun(3,4)
|
||||||
{
|
{
|
||||||
@ -968,8 +933,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TTetra10b::TTetra10b():
|
TTetra10b::TTetra10b():
|
||||||
TShapeFun(3,10)
|
TShapeFun(3,10)
|
||||||
@ -1021,8 +984,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
THexa8a::THexa8a():
|
THexa8a::THexa8a():
|
||||||
TShapeFun(3,8)
|
TShapeFun(3,8)
|
||||||
@ -1067,7 +1028,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
THexa20a::THexa20a(TInt theDim, TInt theNbRef):
|
THexa20a::THexa20a(TInt theDim, TInt theNbRef):
|
||||||
TShapeFun(theDim,theNbRef)
|
TShapeFun(theDim,theNbRef)
|
||||||
@ -1145,8 +1105,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
THexa27a::THexa27a():
|
THexa27a::THexa27a():
|
||||||
THexa20a(3,27)
|
THexa20a(3,27)
|
||||||
@ -1209,8 +1167,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
THexa8b::THexa8b():
|
THexa8b::THexa8b():
|
||||||
TShapeFun(3,8)
|
TShapeFun(3,8)
|
||||||
@ -1255,8 +1211,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
THexa20b::THexa20b(TInt theDim, TInt theNbRef):
|
THexa20b::THexa20b(TInt theDim, TInt theNbRef):
|
||||||
TShapeFun(theDim,theNbRef)
|
TShapeFun(theDim,theNbRef)
|
||||||
@ -1334,8 +1288,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPenta6a::TPenta6a():
|
TPenta6a::TPenta6a():
|
||||||
TShapeFun(3,6)
|
TShapeFun(3,6)
|
||||||
@ -1376,8 +1328,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPenta6b::TPenta6b():
|
TPenta6b::TPenta6b():
|
||||||
TShapeFun(3,6)
|
TShapeFun(3,6)
|
||||||
@ -1418,8 +1368,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPenta15a::TPenta15a():
|
TPenta15a::TPenta15a():
|
||||||
TShapeFun(3,15)
|
TShapeFun(3,15)
|
||||||
@ -1482,8 +1430,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPenta15b::TPenta15b():
|
TPenta15b::TPenta15b():
|
||||||
TShapeFun(3,15)
|
TShapeFun(3,15)
|
||||||
@ -1546,8 +1492,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPyra5a::TPyra5a():
|
TPyra5a::TPyra5a():
|
||||||
TShapeFun(3,5)
|
TShapeFun(3,5)
|
||||||
@ -1592,8 +1536,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPyra5b::TPyra5b():
|
TPyra5b::TPyra5b():
|
||||||
TShapeFun(3,5)
|
TShapeFun(3,5)
|
||||||
@ -1601,7 +1543,7 @@ namespace MED
|
|||||||
TInt aNbRef = myRefCoord.size();
|
TInt aNbRef = myRefCoord.size();
|
||||||
for(TInt aRefId = 0; aRefId < aNbRef; aRefId++){
|
for(TInt aRefId = 0; aRefId < aNbRef; aRefId++){
|
||||||
TCoordSlice aCoord = GetCoord(aRefId);
|
TCoordSlice aCoord = GetCoord(aRefId);
|
||||||
switch(aRefId){
|
switch(aRefId){
|
||||||
case 0: aCoord[0] = 1.0; aCoord[1] = 0.0; aCoord[2] = 0.0; break;
|
case 0: aCoord[0] = 1.0; aCoord[1] = 0.0; aCoord[2] = 0.0; break;
|
||||||
case 3: aCoord[0] = 0.0; aCoord[1] = 1.0; aCoord[2] = 0.0; break;
|
case 3: aCoord[0] = 0.0; aCoord[1] = 1.0; aCoord[2] = 0.0; break;
|
||||||
case 2: aCoord[0] = -1.0; aCoord[1] = 0.0; aCoord[2] = 0.0; break;
|
case 2: aCoord[0] = -1.0; aCoord[1] = 0.0; aCoord[2] = 0.0; break;
|
||||||
@ -1617,7 +1559,7 @@ namespace MED
|
|||||||
TFun& theFun) const
|
TFun& theFun) const
|
||||||
{
|
{
|
||||||
GetFun(theRef,theGauss,theFun);
|
GetFun(theRef,theGauss,theFun);
|
||||||
|
|
||||||
TInt aNbGauss = theGauss.size();
|
TInt aNbGauss = theGauss.size();
|
||||||
for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
|
for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++){
|
||||||
const TCCoordSlice& aCoord = theGauss[aGaussId];
|
const TCCoordSlice& aCoord = theGauss[aGaussId];
|
||||||
@ -1637,8 +1579,6 @@ namespace MED
|
|||||||
aSlice[4] = aCoord[2];
|
aSlice[4] = aCoord[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPyra13a::TPyra13a():
|
TPyra13a::TPyra13a():
|
||||||
@ -1709,8 +1649,6 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
TPyra13b::TPyra13b():
|
TPyra13b::TPyra13b():
|
||||||
TShapeFun(3,13)
|
TShapeFun(3,13)
|
||||||
@ -1780,11 +1718,9 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool
|
bool
|
||||||
GetGaussCoord3D(const TGaussInfo& theGaussInfo,
|
GetGaussCoord3D(const TGaussInfo& theGaussInfo,
|
||||||
const TCellInfo& theCellInfo,
|
const TCellInfo& theCellInfo,
|
||||||
const TNodeInfo& theNodeInfo,
|
const TNodeInfo& theNodeInfo,
|
||||||
TGaussCoord& theGaussCoord,
|
TGaussCoord& theGaussCoord,
|
||||||
@ -1966,7 +1902,7 @@ namespace MED
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
INITMSG(MYDEBUG,"eNONE"<<std::endl);
|
INITMSG(MYDEBUG,"eNONE"<<std::endl);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2015,7 +1951,7 @@ namespace MED
|
|||||||
TCoordSlice& aGaussCoordSlice = aCoordSliceArr[aGaussId];
|
TCoordSlice& aGaussCoordSlice = aCoordSliceArr[aGaussId];
|
||||||
|
|
||||||
for(TInt aConnId = 0; aConnId < aConnDim; aConnId++){
|
for(TInt aConnId = 0; aConnId < aConnDim; aConnId++){
|
||||||
TInt aNodeId = aConnSlice[aConnId] - 1;
|
TInt aNodeId = aConnSlice[aConnId] - 1;
|
||||||
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
||||||
|
|
||||||
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
||||||
@ -2048,7 +1984,6 @@ namespace MED
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool
|
bool
|
||||||
GetBaryCenter(const TPolygoneInfo& thePolygoneInfo,
|
GetBaryCenter(const TPolygoneInfo& thePolygoneInfo,
|
||||||
@ -2090,7 +2025,7 @@ namespace MED
|
|||||||
TCoordSlice& aGaussCoordSlice = aCoordSliceArr[aGaussId];
|
TCoordSlice& aGaussCoordSlice = aCoordSliceArr[aGaussId];
|
||||||
|
|
||||||
for(TInt aConnId = 0; aConnId < aNbConn; aConnId++){
|
for(TInt aConnId = 0; aConnId < aNbConn; aConnId++){
|
||||||
TInt aNodeId = aConnSlice[aConnId] - 1;
|
TInt aNodeId = aConnSlice[aConnId] - 1;
|
||||||
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
||||||
|
|
||||||
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
||||||
@ -2107,7 +2042,6 @@ namespace MED
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool
|
bool
|
||||||
GetBaryCenter(const TPolyedreInfo& thePolyedreInfo,
|
GetBaryCenter(const TPolyedreInfo& thePolyedreInfo,
|
||||||
@ -2153,7 +2087,7 @@ namespace MED
|
|||||||
TCConnSlice aConnSlice = aConnSliceArr[aFaceId];
|
TCConnSlice aConnSlice = aConnSliceArr[aFaceId];
|
||||||
TInt aNbConn = aConnSlice.size();
|
TInt aNbConn = aConnSlice.size();
|
||||||
for(TInt aConnId = 0; aConnId < aNbConn; aConnId++){
|
for(TInt aConnId = 0; aConnId < aNbConn; aConnId++){
|
||||||
TInt aNodeId = aConnSlice[aConnId] - 1;
|
TInt aNodeId = aConnSlice[aConnId] - 1;
|
||||||
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
TCCoordSlice aNodeCoordSlice = theNodeInfo.GetCoordSlice(aNodeId);
|
||||||
|
|
||||||
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
for(TInt aDimId = 0; aDimId < aDim; aDimId++){
|
@ -19,11 +19,11 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_GaussUtils_HeaderFile
|
#ifndef MED_GaussUtils_HeaderFile
|
||||||
#define MED_GaussUtils_HeaderFile
|
#define MED_GaussUtils_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperBase.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
|
|
||||||
#include "MED_Structures.hxx"
|
#include "MED_Structures.hxx"
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
@ -34,7 +34,7 @@ namespace MED
|
|||||||
|
|
||||||
//! Define a helper class to handle Gauss Points coordinates
|
//! Define a helper class to handle Gauss Points coordinates
|
||||||
class MEDWRAPPER_EXPORT TGaussCoord:
|
class MEDWRAPPER_EXPORT TGaussCoord:
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
TInt myNbElem;
|
TInt myNbElem;
|
||||||
TInt myNbGauss;
|
TInt myNbGauss;
|
||||||
@ -45,7 +45,7 @@ namespace MED
|
|||||||
TNodeCoord myGaussCoord;
|
TNodeCoord myGaussCoord;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TGaussCoord();
|
TGaussCoord();
|
||||||
|
|
||||||
//! To init the class
|
//! To init the class
|
||||||
@ -72,27 +72,25 @@ namespace MED
|
|||||||
GetCoordSliceArr(TInt theElemId) const;
|
GetCoordSliceArr(TInt theElemId) const;
|
||||||
|
|
||||||
//! Get slice of the coordinate that corresponds to defined cell
|
//! Get slice of the coordinate that corresponds to defined cell
|
||||||
TCoordSliceArr
|
TCoordSliceArr
|
||||||
GetCoordSliceArr(TInt theElemId);
|
GetCoordSliceArr(TInt theElemId);
|
||||||
};
|
};
|
||||||
typedef SharedPtr<TGaussCoord> PGaussCoord;
|
typedef SharedPtr<TGaussCoord> PGaussCoord;
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! To calculate Gauss Points coordinates
|
//! To calculate Gauss Points coordinates
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
bool
|
bool
|
||||||
GetGaussCoord3D(const TGaussInfo& theGaussInfo,
|
GetGaussCoord3D(const TGaussInfo& theGaussInfo,
|
||||||
const TCellInfo& theCellInfo,
|
const TCellInfo& theCellInfo,
|
||||||
const TNodeInfo& theNodeInfo,
|
const TNodeInfo& theNodeInfo,
|
||||||
TGaussCoord& theGaussCoord,
|
TGaussCoord& theGaussCoord,
|
||||||
const TElemNum& theElemNum = TElemNum(),
|
const TElemNum& theElemNum = TElemNum(),
|
||||||
EModeSwitch theMode = eFULL_INTERLACE);
|
EModeSwitch theMode = eFULL_INTERLACE);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! To calculate Gauss Points coordinates for defined TCellInfo as its bary center
|
//! To calculate Gauss Points coordinates for defined TCellInfo as its bary center
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
bool
|
bool
|
||||||
GetBaryCenter(const TCellInfo& theCellInfo,
|
GetBaryCenter(const TCellInfo& theCellInfo,
|
||||||
const TNodeInfo& theNodeInfo,
|
const TNodeInfo& theNodeInfo,
|
||||||
@ -101,7 +99,7 @@ namespace MED
|
|||||||
EModeSwitch theMode = eFULL_INTERLACE);
|
EModeSwitch theMode = eFULL_INTERLACE);
|
||||||
|
|
||||||
//! To calculate Gauss Points coordinates for defined TPolygoneInfo as its bary center
|
//! To calculate Gauss Points coordinates for defined TPolygoneInfo as its bary center
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
bool
|
bool
|
||||||
GetBaryCenter(const TPolygoneInfo& thePolygoneInfo,
|
GetBaryCenter(const TPolygoneInfo& thePolygoneInfo,
|
||||||
const TNodeInfo& theNodeInfo,
|
const TNodeInfo& theNodeInfo,
|
||||||
@ -110,7 +108,7 @@ namespace MED
|
|||||||
EModeSwitch theMode = eFULL_INTERLACE);
|
EModeSwitch theMode = eFULL_INTERLACE);
|
||||||
|
|
||||||
//! To calculate Gauss Points coordinates for defined TPolyedreInfo as its bary center
|
//! To calculate Gauss Points coordinates for defined TPolyedreInfo as its bary center
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
bool
|
bool
|
||||||
GetBaryCenter(const TPolyedreInfo& thePolyedreInfo,
|
GetBaryCenter(const TPolyedreInfo& thePolyedreInfo,
|
||||||
const TNodeInfo& theNodeInfo,
|
const TNodeInfo& theNodeInfo,
|
||||||
@ -124,7 +122,7 @@ namespace MED
|
|||||||
struct MEDWRAPPER_EXPORT TShapeFun
|
struct MEDWRAPPER_EXPORT TShapeFun
|
||||||
{
|
{
|
||||||
class TFun;
|
class TFun;
|
||||||
|
|
||||||
TFloatVector myRefCoord;
|
TFloatVector myRefCoord;
|
||||||
TInt myDim;
|
TInt myDim;
|
||||||
TInt myNbRef;
|
TInt myNbRef;
|
||||||
@ -140,7 +138,7 @@ namespace MED
|
|||||||
void GetFun(const TCCoordSliceArr& theRef,
|
void GetFun(const TCCoordSliceArr& theRef,
|
||||||
const TCCoordSliceArr& theGauss,
|
const TCCoordSliceArr& theGauss,
|
||||||
TFun& theFun) const;
|
TFun& theFun) const;
|
||||||
virtual
|
virtual
|
||||||
void InitFun(const TCCoordSliceArr& theRef,
|
void InitFun(const TCCoordSliceArr& theRef,
|
||||||
const TCCoordSliceArr& theGauss,
|
const TCCoordSliceArr& theGauss,
|
||||||
TFun& theFun) const = 0;
|
TFun& theFun) const = 0;
|
||||||
@ -359,7 +357,6 @@ namespace MED
|
|||||||
TFun& theFun) const;
|
TFun& theFun) const;
|
||||||
};
|
};
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_GaussUtils_HeaderFile
|
@ -19,6 +19,7 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_SharedPtr_HeaderFile
|
#ifndef MED_SharedPtr_HeaderFile
|
||||||
#define MED_SharedPtr_HeaderFile
|
#define MED_SharedPtr_HeaderFile
|
||||||
|
|
||||||
@ -26,11 +27,10 @@
|
|||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
|
|
||||||
//! To extend the boost::shared_ptr to support such features automatic dynamic cast
|
//! To extend the boost::shared_ptr to support such features automatic dynamic cast
|
||||||
/*!
|
/*!
|
||||||
All entities of the MEDWrapper package are handled as pointer.
|
All entities of the MEDWrapper package are handled as pointer.
|
||||||
This class was introduced to provide correct and flexible memory management
|
This class was introduced to provide correct and flexible memory management
|
||||||
for all of the MEDWrapper objects.
|
for all of the MEDWrapper objects.
|
||||||
*/
|
*/
|
||||||
template<class T> class SharedPtr: public boost::shared_ptr<T>
|
template<class T> class SharedPtr: public boost::shared_ptr<T>
|
||||||
@ -41,8 +41,8 @@ namespace MED
|
|||||||
|
|
||||||
//! Construct the class by any type of a pointer
|
//! Construct the class by any type of a pointer
|
||||||
template<class Y>
|
template<class Y>
|
||||||
explicit SharedPtr(Y * p):
|
explicit SharedPtr(Y * p):
|
||||||
boost::shared_ptr<T>(p)
|
boost::shared_ptr<T>(p)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Construct the class by any specialisation of the class
|
//! Construct the class by any specialisation of the class
|
||||||
@ -53,7 +53,7 @@ namespace MED
|
|||||||
|
|
||||||
//! Copy-constructor
|
//! Copy-constructor
|
||||||
template<class Y>
|
template<class Y>
|
||||||
SharedPtr&
|
SharedPtr&
|
||||||
operator=(SharedPtr<Y> const & r)
|
operator=(SharedPtr<Y> const & r)
|
||||||
{
|
{
|
||||||
SharedPtr<T>(r).swap(*this);
|
SharedPtr<T>(r).swap(*this);
|
||||||
@ -61,35 +61,33 @@ namespace MED
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Introduce a flexible way to reset the wrapped pointer
|
//! Introduce a flexible way to reset the wrapped pointer
|
||||||
template<class Y>
|
template<class Y>
|
||||||
SharedPtr&
|
SharedPtr&
|
||||||
operator()(Y * p) // Y must be complete
|
operator()(Y * p) // Y must be complete
|
||||||
{
|
{
|
||||||
return operator=<Y>(SharedPtr<Y>(p));
|
return operator=<Y>(SharedPtr<Y>(p));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Introduce a flexible way to reset the wrapped pointer
|
//! Introduce a flexible way to reset the wrapped pointer
|
||||||
template<class Y>
|
template<class Y>
|
||||||
SharedPtr&
|
SharedPtr&
|
||||||
operator()(SharedPtr<Y> const & r) // Y must be complete
|
operator()(SharedPtr<Y> const & r) // Y must be complete
|
||||||
{
|
{
|
||||||
return operator=<Y>(SharedPtr<Y>(r));
|
return operator=<Y>(SharedPtr<Y>(r));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! To provide a flexible way to use reference to the wrapped pointer (const version)
|
//! To provide a flexible way to use reference to the wrapped pointer (const version)
|
||||||
operator const T& () const
|
operator const T& () const
|
||||||
{
|
{
|
||||||
return *(this->get());
|
return *(this->get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//! To provide a flexible way to use reference to the wrapped pointer
|
//! To provide a flexible way to use reference to the wrapped pointer
|
||||||
operator T& ()
|
operator T& ()
|
||||||
{
|
{
|
||||||
return *(this->get());
|
return *(this->get());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // MED_SharedPtr_HeaderFile
|
||||||
#endif
|
|
@ -19,10 +19,11 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_SliceArray_HeaderFile
|
#ifndef MED_SliceArray_HeaderFile
|
||||||
#define MED_SliceArray_HeaderFile
|
#define MED_SliceArray_HeaderFile
|
||||||
|
|
||||||
#ifdef WIN32 // for correctly compiling "valarray" in modules, which includes this file
|
#ifdef WIN32 // for correct compiling of "valarray" in modules, which include this file
|
||||||
#undef max
|
#undef max
|
||||||
#undef min
|
#undef min
|
||||||
#endif
|
#endif
|
||||||
@ -38,12 +39,12 @@ namespace MED
|
|||||||
{
|
{
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! This class intends to provide a uniform way to handle multidimensional data (const version)
|
//! This class intends to provide a uniform way to handle multidimensional data (const version)
|
||||||
/*!
|
/*!
|
||||||
It just contains a pointer to real sequence and implement proper calculation of its indexes.
|
It just contains a pointer to real sequence and implement proper calculation of its indexes.
|
||||||
This class deals with constant pointer to the sources data and provides const method to
|
This class deals with constant pointer to the sources data and provides const method to
|
||||||
read them (data).
|
read them (data).
|
||||||
*/
|
*/
|
||||||
template<class TValueType>
|
template<class TValueType>
|
||||||
class TCSlice
|
class TCSlice
|
||||||
{
|
{
|
||||||
const TValueType* myCValuePtr; //!< Reference to source multidimensional data
|
const TValueType* myCValuePtr; //!< Reference to source multidimensional data
|
||||||
@ -69,7 +70,7 @@ namespace MED
|
|||||||
{
|
{
|
||||||
return mySlice.start() + theId*mySlice.stride();
|
return mySlice.start() + theId*mySlice.stride();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
get_id(size_t theId) const
|
get_id(size_t theId) const
|
||||||
{
|
{
|
||||||
@ -78,7 +79,7 @@ namespace MED
|
|||||||
#endif
|
#endif
|
||||||
return calculate_id(theId);
|
return calculate_id(theId);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
get_id_at(size_t theId) const
|
get_id_at(size_t theId) const
|
||||||
{
|
{
|
||||||
@ -92,38 +93,38 @@ namespace MED
|
|||||||
//! Construct the class from bare pointer
|
//! Construct the class from bare pointer
|
||||||
TCSlice(const value_type* theValuePtr,
|
TCSlice(const value_type* theValuePtr,
|
||||||
size_t theSourceSize,
|
size_t theSourceSize,
|
||||||
const std::slice& theSlice):
|
const std::slice& theSlice):
|
||||||
myCValuePtr(theValuePtr),
|
myCValuePtr(theValuePtr),
|
||||||
mySourceSize(theSourceSize),
|
mySourceSize(theSourceSize),
|
||||||
mySlice(theSlice)
|
mySlice(theSlice)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Construct the class from corresponding container
|
//! Construct the class from corresponding container
|
||||||
TCSlice(const TVector<value_type>& theContainer,
|
TCSlice(const TVector<value_type>& theContainer,
|
||||||
const std::slice& theSlice):
|
const std::slice& theSlice):
|
||||||
myCValuePtr(&theContainer[0]),
|
myCValuePtr(&theContainer[0]),
|
||||||
mySourceSize(theContainer.size()),
|
mySourceSize(theContainer.size()),
|
||||||
mySlice(theSlice)
|
mySlice(theSlice)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Default constructor (dangerous)
|
//! Default constructor (dangerous)
|
||||||
TCSlice():
|
TCSlice():
|
||||||
myCValuePtr(NULL)
|
myCValuePtr(NULL)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Get element by its number (const version)
|
//! Get element by its number (const version)
|
||||||
const value_type&
|
const value_type&
|
||||||
operator[](size_t theId) const
|
operator[](size_t theId) const
|
||||||
{
|
{
|
||||||
return *(myCValuePtr + get_id(theId));
|
return *(myCValuePtr + get_id(theId));
|
||||||
}
|
}
|
||||||
|
|
||||||
const value_type&
|
const value_type&
|
||||||
at(size_t theId) const
|
at(size_t theId) const
|
||||||
{
|
{
|
||||||
return *(myCValuePtr + get_id_at(theId));
|
return *(myCValuePtr + get_id_at(theId));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get range of the order numbers
|
//! Get range of the order numbers
|
||||||
size_t
|
size_t
|
||||||
size() const
|
size() const
|
||||||
@ -131,15 +132,14 @@ namespace MED
|
|||||||
return mySlice.size();
|
return mySlice.size();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! This class extends TCSlice functionality for non-constant case
|
//! This class extends TCSlice functionality for non-constant case
|
||||||
template<class TValueType>
|
template<class TValueType>
|
||||||
class TSlice: public TCSlice<TValueType>
|
class TSlice: public TCSlice<TValueType>
|
||||||
{
|
{
|
||||||
TValueType* myValuePtr;
|
TValueType* myValuePtr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef TValueType value_type;
|
typedef TValueType value_type;
|
||||||
typedef TCSlice<TValueType> TSupperClass;
|
typedef TCSlice<TValueType> TSupperClass;
|
||||||
@ -147,39 +147,38 @@ namespace MED
|
|||||||
//! Construct the class from bare pointer
|
//! Construct the class from bare pointer
|
||||||
TSlice(value_type* theValuePtr,
|
TSlice(value_type* theValuePtr,
|
||||||
size_t theSourceSize,
|
size_t theSourceSize,
|
||||||
const std::slice& theSlice):
|
const std::slice& theSlice):
|
||||||
TSupperClass(theValuePtr, theSourceSize, theSlice),
|
TSupperClass(theValuePtr, theSourceSize, theSlice),
|
||||||
myValuePtr(theValuePtr)
|
myValuePtr(theValuePtr)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Construct the class from corresponding container
|
//! Construct the class from corresponding container
|
||||||
TSlice(TVector<value_type>& theContainer,
|
TSlice(TVector<value_type>& theContainer,
|
||||||
const std::slice& theSlice):
|
const std::slice& theSlice):
|
||||||
TSupperClass(theContainer, theSlice),
|
TSupperClass(theContainer, theSlice),
|
||||||
myValuePtr(&theContainer[0])
|
myValuePtr(&theContainer[0])
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Default constructor (dangerous)
|
//! Default constructor (dangerous)
|
||||||
TSlice():
|
TSlice():
|
||||||
myValuePtr(NULL)
|
myValuePtr(NULL)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//! Get element by its number
|
//! Get element by its number
|
||||||
value_type&
|
value_type&
|
||||||
operator[](size_t theId)
|
operator[](size_t theId)
|
||||||
{
|
{
|
||||||
return *(myValuePtr + this->get_id(theId));
|
return *(myValuePtr + this->get_id(theId));
|
||||||
}
|
}
|
||||||
|
|
||||||
value_type&
|
value_type&
|
||||||
at(size_t theId)
|
at(size_t theId)
|
||||||
{
|
{
|
||||||
return *(myValuePtr + this->get_id_at(theId));
|
return *(myValuePtr + this->get_id_at(theId));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef MED_TCSLICE_CHECK_RANGE
|
#undef MED_TCSLICE_CHECK_RANGE
|
||||||
|
|
||||||
#endif
|
#endif // MED_SliceArray_HeaderFile
|
849
src/MEDWrapper/MED_Structures.cxx
Normal file
849
src/MEDWrapper/MED_Structures.cxx
Normal file
@ -0,0 +1,849 @@
|
|||||||
|
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// 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, 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
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "MED_Structures.hxx"
|
||||||
|
#include "MED_Utilities.hxx"
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
namespace MED
|
||||||
|
{
|
||||||
|
std::string
|
||||||
|
GetString(TInt theId,
|
||||||
|
TInt theStep,
|
||||||
|
const TString& theString)
|
||||||
|
{
|
||||||
|
const char* aPos = &theString[theId*theStep];
|
||||||
|
TInt aSize = std::min(TInt(strlen(aPos)),theStep);
|
||||||
|
return std::string(aPos,aSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SetString(TInt theId,
|
||||||
|
TInt theStep,
|
||||||
|
TString& theString,
|
||||||
|
const std::string& theValue)
|
||||||
|
{
|
||||||
|
TInt aSize = std::min(TInt(theValue.size()+1),theStep);
|
||||||
|
char* aPos = &theString[theId*theStep];
|
||||||
|
strncpy(aPos,theValue.c_str(),aSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SetString(TInt theId,
|
||||||
|
TInt theStep,
|
||||||
|
TString& theString,
|
||||||
|
const TString& theValue)
|
||||||
|
{
|
||||||
|
TInt aSize = std::min(TInt(theValue.size()+1),theStep);
|
||||||
|
char* aPos = &theString[theId*theStep];
|
||||||
|
const char* aValue = &theValue[0];
|
||||||
|
strncpy(aPos,aValue,aSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetDimGaussCoord(EGeometrieElement theGeom)
|
||||||
|
{
|
||||||
|
return theGeom/100;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
GetNbRefCoord(EGeometrieElement theGeom)
|
||||||
|
{
|
||||||
|
return (theGeom%100);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
PFloatTimeStampValue
|
||||||
|
CastToFloatTimeStampValue(const PTimeStampValueBase& theTimeStampValue)
|
||||||
|
{
|
||||||
|
return theTimeStampValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
PIntTimeStampValue
|
||||||
|
CastToIntTimeStampValue(const PTimeStampValueBase& theTimeStampValue)
|
||||||
|
{
|
||||||
|
return theTimeStampValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TInt
|
||||||
|
TFamilyInfo
|
||||||
|
::GetAttrId(TInt theId) const
|
||||||
|
{
|
||||||
|
return myAttrId[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TFamilyInfo
|
||||||
|
::GetAttrVal(TInt theId) const
|
||||||
|
{
|
||||||
|
return myAttrVal[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFamilyInfo
|
||||||
|
::SetAttrId(TInt theId,TInt theVal)
|
||||||
|
{
|
||||||
|
myAttrId[theId] = theVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TFamilyInfo
|
||||||
|
::SetAttrVal(TInt theId,TInt theVal)
|
||||||
|
{
|
||||||
|
myAttrVal[theId] = theVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TInt
|
||||||
|
TElemInfo
|
||||||
|
::GetFamNum(TInt theId) const
|
||||||
|
{
|
||||||
|
return (*myFamNum)[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TElemInfo
|
||||||
|
::SetFamNum(TInt theId, TInt theVal)
|
||||||
|
{
|
||||||
|
(*myFamNum)[theId] = theVal;
|
||||||
|
myIsFamNum = eVRAI;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TElemInfo
|
||||||
|
::GetElemNum(TInt theId) const
|
||||||
|
{
|
||||||
|
return (*myElemNum)[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TElemInfo
|
||||||
|
::SetElemNum(TInt theId, TInt theVal)
|
||||||
|
{
|
||||||
|
(*myElemNum)[theId] = theVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TCCoordSlice
|
||||||
|
TNodeInfo
|
||||||
|
::GetCoordSlice(TInt theId) const
|
||||||
|
{
|
||||||
|
TInt aDim = myMeshInfo->GetSpaceDim();
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCCoordSlice(*myCoord, std::slice(theId*aDim, aDim, 1));
|
||||||
|
else
|
||||||
|
return TCCoordSlice(*myCoord, std::slice(theId, aDim, aDim));
|
||||||
|
}
|
||||||
|
|
||||||
|
TCoordSlice
|
||||||
|
TNodeInfo
|
||||||
|
::GetCoordSlice(TInt theId)
|
||||||
|
{
|
||||||
|
TInt aDim = myMeshInfo->GetSpaceDim();
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCoordSlice(*myCoord, std::slice(theId*aDim,aDim,1));
|
||||||
|
else
|
||||||
|
return TCoordSlice(*myCoord, std::slice(theId,aDim,aDim));
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TCConnSlice
|
||||||
|
TCellInfo
|
||||||
|
::GetConnSlice(TInt theElemId) const
|
||||||
|
{
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCConnSlice(*myConn, std::slice(GetConnDim()*theElemId, GetNbNodes(myGeom), 1));
|
||||||
|
else
|
||||||
|
return TCConnSlice(*myConn, std::slice(theElemId, GetNbNodes(myGeom), GetConnDim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TConnSlice
|
||||||
|
TCellInfo
|
||||||
|
::GetConnSlice(TInt theElemId)
|
||||||
|
{
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TConnSlice(*myConn, std::slice(GetConnDim()*theElemId, GetNbNodes(myGeom), 1));
|
||||||
|
else
|
||||||
|
return TConnSlice(*myConn, std::slice(theElemId, GetNbNodes(myGeom), GetConnDim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TInt
|
||||||
|
TPolygoneInfo
|
||||||
|
::GetNbConn(TInt theElemId) const
|
||||||
|
{
|
||||||
|
return (*myIndex)[theElemId + 1] - (*myIndex)[theElemId];
|
||||||
|
}
|
||||||
|
|
||||||
|
TCConnSlice
|
||||||
|
TPolygoneInfo
|
||||||
|
::GetConnSlice(TInt theElemId) const
|
||||||
|
{
|
||||||
|
return TCConnSlice(*myConn, std::slice((*myIndex)[theElemId] - 1, GetNbConn(theElemId), 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
TConnSlice
|
||||||
|
TPolygoneInfo
|
||||||
|
::GetConnSlice(TInt theElemId)
|
||||||
|
{
|
||||||
|
return TConnSlice(*myConn, std::slice((*myIndex)[theElemId] - 1, GetNbConn(theElemId), 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TInt
|
||||||
|
TPolyedreInfo
|
||||||
|
::GetNbFaces(TInt theElemId) const
|
||||||
|
{
|
||||||
|
return (*myIndex)[theElemId+1] - (*myIndex)[theElemId];
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TPolyedreInfo
|
||||||
|
::GetNbNodes(TInt theElemId) const
|
||||||
|
{
|
||||||
|
TInt aNbNodes = 0;
|
||||||
|
TInt aNbFaces = GetNbFaces(theElemId);
|
||||||
|
TInt aStartFaceId = (*myIndex)[theElemId] - 1;
|
||||||
|
for(TInt aFaceId = 0; aFaceId < aNbFaces; aFaceId++, aStartFaceId++){
|
||||||
|
TInt aCurrentId = (*myFaces)[aStartFaceId];
|
||||||
|
TInt aDiff = (*myFaces)[aStartFaceId + 1] - aCurrentId;
|
||||||
|
aNbNodes += aDiff;
|
||||||
|
}
|
||||||
|
return aNbNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCConnSliceArr
|
||||||
|
TPolyedreInfo
|
||||||
|
::GetConnSliceArr(TInt theElemId) const
|
||||||
|
{
|
||||||
|
TInt aNbFaces = GetNbFaces(theElemId);
|
||||||
|
TCConnSliceArr aConnSliceArr(aNbFaces);
|
||||||
|
TInt aStartFaceId = (*myIndex)[theElemId] - 1;
|
||||||
|
for(TInt aFaceId = 0; aFaceId < aNbFaces; aFaceId++, aStartFaceId++){
|
||||||
|
TInt aCurrentId = (*myFaces)[aStartFaceId];
|
||||||
|
TInt aDiff = (*myFaces)[aStartFaceId + 1] - aCurrentId;
|
||||||
|
aConnSliceArr[aFaceId] =
|
||||||
|
TCConnSlice(*myConn, std::slice(aCurrentId - 1, aDiff, 1));
|
||||||
|
}
|
||||||
|
return aConnSliceArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
TConnSliceArr
|
||||||
|
TPolyedreInfo
|
||||||
|
::GetConnSliceArr(TInt theElemId)
|
||||||
|
{
|
||||||
|
TInt aNbFaces = GetNbFaces(theElemId);
|
||||||
|
TConnSliceArr aConnSliceArr(aNbFaces);
|
||||||
|
TInt aStartFaceId = (*myIndex)[theElemId] - 1;
|
||||||
|
for(TInt aFaceId = 0; aFaceId < aNbFaces; aFaceId++, aStartFaceId++){
|
||||||
|
TInt aCurrentId = (*myFaces)[aStartFaceId];
|
||||||
|
TInt aDiff = (*myFaces)[aStartFaceId + 1] - aCurrentId;
|
||||||
|
aConnSliceArr[aFaceId] =
|
||||||
|
TConnSlice(*myConn, std::slice(aCurrentId - 1, aDiff, 1));
|
||||||
|
}
|
||||||
|
return aConnSliceArr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TMeshValueBase
|
||||||
|
::TMeshValueBase():
|
||||||
|
myNbElem(0),
|
||||||
|
myNbComp(0),
|
||||||
|
myNbGauss(0),
|
||||||
|
myStep(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void
|
||||||
|
TMeshValueBase
|
||||||
|
::Allocate(TInt theNbElem,
|
||||||
|
TInt theNbGauss,
|
||||||
|
TInt theNbComp,
|
||||||
|
EModeSwitch theMode)
|
||||||
|
{
|
||||||
|
myModeSwitch = theMode;
|
||||||
|
|
||||||
|
myNbElem = theNbElem;
|
||||||
|
myNbGauss = theNbGauss;
|
||||||
|
myNbComp = theNbComp;
|
||||||
|
|
||||||
|
myStep = theNbComp*theNbGauss;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
TMeshValueBase
|
||||||
|
::GetSize() const
|
||||||
|
{
|
||||||
|
return myNbElem * myStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
TMeshValueBase
|
||||||
|
::GetNbVal() const
|
||||||
|
{
|
||||||
|
return myNbElem * myNbGauss;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
TMeshValueBase
|
||||||
|
::GetNbGauss() const
|
||||||
|
{
|
||||||
|
return myNbGauss;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
TMeshValueBase
|
||||||
|
::GetStep() const
|
||||||
|
{
|
||||||
|
return myStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TInt
|
||||||
|
TProfileInfo
|
||||||
|
::GetElemNum(TInt theId) const
|
||||||
|
{
|
||||||
|
return (*myElemNum)[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TProfileInfo
|
||||||
|
::SetElemNum(TInt theId,TInt theVal)
|
||||||
|
{
|
||||||
|
(*myElemNum)[theId] = theVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
bool
|
||||||
|
TGaussInfo::TLess
|
||||||
|
::operator()(const TKey& theLeft, const TKey& theRight) const
|
||||||
|
{
|
||||||
|
EGeometrieElement aLGeom = boost::get<0>(theLeft);
|
||||||
|
EGeometrieElement aRGeom = boost::get<0>(theRight);
|
||||||
|
if(aLGeom != aRGeom)
|
||||||
|
return aLGeom < aRGeom;
|
||||||
|
|
||||||
|
const std::string& aLStr = boost::get<1>(theLeft);
|
||||||
|
const std::string& aRStr = boost::get<1>(theRight);
|
||||||
|
return aLStr < aRStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
TGaussInfo::TLess
|
||||||
|
::operator()(const TGaussInfo& theLeft, const TGaussInfo& theRight) const
|
||||||
|
{
|
||||||
|
if(!&theLeft)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(!&theRight)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(theLeft.myGeom != theRight.myGeom)
|
||||||
|
return theLeft.myGeom < theRight.myGeom;
|
||||||
|
|
||||||
|
if(theLeft.myRefCoord != theRight.myRefCoord)
|
||||||
|
return theLeft.myRefCoord < theRight.myRefCoord;
|
||||||
|
|
||||||
|
return theLeft.myGaussCoord < theRight.myGaussCoord;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCCoordSlice
|
||||||
|
TGaussInfo
|
||||||
|
::GetRefCoordSlice(TInt theId) const
|
||||||
|
{
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCCoordSlice(myRefCoord,std::slice(theId*GetDim(),GetDim(),1));
|
||||||
|
else
|
||||||
|
return TCCoordSlice(myRefCoord,std::slice(theId,GetDim(),GetDim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TCoordSlice
|
||||||
|
TGaussInfo
|
||||||
|
::GetRefCoordSlice(TInt theId)
|
||||||
|
{
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCoordSlice(myRefCoord,std::slice(theId*GetDim(),GetDim(),1));
|
||||||
|
else
|
||||||
|
return TCoordSlice(myRefCoord,std::slice(theId,GetDim(),GetDim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TCCoordSlice
|
||||||
|
TGaussInfo
|
||||||
|
::GetGaussCoordSlice(TInt theId) const
|
||||||
|
{
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCCoordSlice(myGaussCoord,std::slice(theId*GetDim(),GetDim(),1));
|
||||||
|
else
|
||||||
|
return TCCoordSlice(myGaussCoord,std::slice(theId,GetDim(),GetDim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TCoordSlice
|
||||||
|
TGaussInfo
|
||||||
|
::GetGaussCoordSlice(TInt theId)
|
||||||
|
{
|
||||||
|
if(GetModeSwitch() == eFULL_INTERLACE)
|
||||||
|
return TCoordSlice(myGaussCoord,std::slice(theId*GetDim(),GetNbGauss(),1));
|
||||||
|
else
|
||||||
|
return TCoordSlice(myGaussCoord,std::slice(theId,GetNbGauss(),GetDim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
TInt
|
||||||
|
TTimeStampInfo
|
||||||
|
::GetNbGauss(EGeometrieElement theGeom) const
|
||||||
|
{
|
||||||
|
TGeom2NbGauss::const_iterator anIter = myGeom2NbGauss.find(theGeom);
|
||||||
|
if(anIter == myGeom2NbGauss.end())
|
||||||
|
return 1;//EXCEPTION(runtime_error,"TTimeStampInfo::GetNbGauss - myGeom2NbGauss.find(theGeom) fails");
|
||||||
|
|
||||||
|
return anIter->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
// TGrilleInfo structure methods
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
const EGrilleType&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetGrilleType() const
|
||||||
|
{
|
||||||
|
return myGrilleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
EGrilleType
|
||||||
|
TGrilleInfo
|
||||||
|
::GetGrilleType()
|
||||||
|
{
|
||||||
|
return myGrilleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TGrilleInfo
|
||||||
|
::SetGrilleType(EGrilleType theGrilleType)
|
||||||
|
{
|
||||||
|
myGrilleType = theGrilleType;
|
||||||
|
}
|
||||||
|
|
||||||
|
const
|
||||||
|
TIndexes&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetMapOfIndexes() const
|
||||||
|
{
|
||||||
|
return myIndixes;
|
||||||
|
}
|
||||||
|
|
||||||
|
TIndexes&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetMapOfIndexes()
|
||||||
|
{
|
||||||
|
return myIndixes;
|
||||||
|
}
|
||||||
|
|
||||||
|
const
|
||||||
|
TFloatVector&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetIndexes(TInt theAxisNumber) const
|
||||||
|
{
|
||||||
|
TIndexes::const_iterator aIter=myIndixes.find(theAxisNumber);
|
||||||
|
if(aIter==myIndixes.end())
|
||||||
|
EXCEPTION(std::runtime_error, "const TGrilleInfo::GetIndexes - myIndixes.find(theAxisNumber); fails");
|
||||||
|
return aIter->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
TFloatVector&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetIndexes(TInt theAxisNumber)
|
||||||
|
{
|
||||||
|
TIndexes::iterator aIter=myIndixes.find(theAxisNumber);
|
||||||
|
if(aIter==myIndixes.end())
|
||||||
|
EXCEPTION(std::runtime_error, "TGrilleInfo::GetIndexes - myIndixes.find(theAxisNumber="<<theAxisNumber<<"); fails");
|
||||||
|
return aIter->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetNbIndexes(TInt theAxisNumber)
|
||||||
|
{
|
||||||
|
const TFloatVector& aVector=GetIndexes(theAxisNumber);
|
||||||
|
return aVector.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetNbNodes()
|
||||||
|
{
|
||||||
|
TInt nbNodes=0;
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
for(int i=0;i<aDim;i++)
|
||||||
|
if(nbNodes == 0)
|
||||||
|
nbNodes = this->GetGrilleStructure()[i];
|
||||||
|
else
|
||||||
|
nbNodes = nbNodes*this->GetGrilleStructure()[i];
|
||||||
|
|
||||||
|
return nbNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetNbCells()
|
||||||
|
{
|
||||||
|
TInt nbCells=0;
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
for(int i=0;i<aDim;i++)
|
||||||
|
if(nbCells == 0)
|
||||||
|
nbCells = this->GetGrilleStructure()[i]-1;
|
||||||
|
else
|
||||||
|
nbCells = nbCells*(this->GetGrilleStructure()[i]-1);
|
||||||
|
return nbCells;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetNbSubCells()
|
||||||
|
{
|
||||||
|
TInt nb=0;
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
switch (aDim) {
|
||||||
|
case 3:
|
||||||
|
nb =
|
||||||
|
(myGrilleStructure[0] ) * (myGrilleStructure[1]-1) * (myGrilleStructure[2]-1) +
|
||||||
|
(myGrilleStructure[0]-1) * (myGrilleStructure[1] ) * (myGrilleStructure[2]-1) +
|
||||||
|
(myGrilleStructure[0]-1) * (myGrilleStructure[1]-1) * (myGrilleStructure[2] );
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
nb =
|
||||||
|
(myGrilleStructure[0] ) * (myGrilleStructure[1]-1) +
|
||||||
|
(myGrilleStructure[0]-1) * (myGrilleStructure[1] );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return nb;
|
||||||
|
}
|
||||||
|
|
||||||
|
EGeometrieElement
|
||||||
|
TGrilleInfo
|
||||||
|
::GetGeom()
|
||||||
|
{
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
switch(aDim){
|
||||||
|
case 1:
|
||||||
|
return eSEG2;
|
||||||
|
case 2:
|
||||||
|
return eQUAD4;
|
||||||
|
case 3:
|
||||||
|
return eHEXA8;
|
||||||
|
default:
|
||||||
|
return eNONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EGeometrieElement
|
||||||
|
TGrilleInfo
|
||||||
|
::GetSubGeom()
|
||||||
|
{
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
switch(aDim){
|
||||||
|
case 2:
|
||||||
|
return eSEG2;
|
||||||
|
case 3:
|
||||||
|
return eQUAD4;
|
||||||
|
}
|
||||||
|
return eNONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EEntiteMaillage
|
||||||
|
TGrilleInfo
|
||||||
|
::GetEntity()
|
||||||
|
{
|
||||||
|
return eMAILLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EEntiteMaillage
|
||||||
|
TGrilleInfo
|
||||||
|
::GetSubEntity()
|
||||||
|
{
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
switch(aDim){
|
||||||
|
case 2:
|
||||||
|
return eARETE;
|
||||||
|
case 3:
|
||||||
|
return eFACE;
|
||||||
|
}
|
||||||
|
return EEntiteMaillage(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const
|
||||||
|
TIntVector&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetGrilleStructure() const
|
||||||
|
{
|
||||||
|
return myGrilleStructure;
|
||||||
|
}
|
||||||
|
|
||||||
|
TIntVector
|
||||||
|
TGrilleInfo
|
||||||
|
::GetGrilleStructure()
|
||||||
|
{
|
||||||
|
return myGrilleStructure;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TGrilleInfo
|
||||||
|
::SetGrilleStructure(TInt theAxis,TInt theNb)
|
||||||
|
{
|
||||||
|
if(theAxis >= 0 && theAxis <=2 && theNb >= 0)
|
||||||
|
myGrilleStructure[theAxis]=theNb;
|
||||||
|
}
|
||||||
|
|
||||||
|
const
|
||||||
|
TNodeCoord&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetNodeCoord() const
|
||||||
|
{
|
||||||
|
return myCoord;
|
||||||
|
}
|
||||||
|
|
||||||
|
TNodeCoord&
|
||||||
|
TGrilleInfo
|
||||||
|
::GetNodeCoord()
|
||||||
|
{
|
||||||
|
return myCoord;
|
||||||
|
}
|
||||||
|
|
||||||
|
TNodeCoord
|
||||||
|
TGrilleInfo
|
||||||
|
::GetCoord(TInt theId)
|
||||||
|
{
|
||||||
|
TNodeCoord aCoord;
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
TInt aNbNodes = this->GetNbNodes();
|
||||||
|
aCoord.resize(aDim);
|
||||||
|
|
||||||
|
if(theId >= aNbNodes)
|
||||||
|
EXCEPTION(std::runtime_error, "TGrilleInfo::GetCoord - theId out of range");
|
||||||
|
|
||||||
|
if(myGrilleType == eGRILLE_STANDARD){
|
||||||
|
switch(aDim){
|
||||||
|
case 3:
|
||||||
|
aCoord[2] = myCoord[aDim*theId+2];
|
||||||
|
case 2:
|
||||||
|
aCoord[1] = myCoord[aDim*theId+1];
|
||||||
|
case 1:{
|
||||||
|
aCoord[0] = myCoord[aDim*theId];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
TFloatVector aVecX = this->GetIndexes(0);
|
||||||
|
TInt nbIndxX = this->GetNbIndexes(0);
|
||||||
|
|
||||||
|
switch(aDim){
|
||||||
|
case 1:{
|
||||||
|
aCoord[0] = aVecX[theId];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:{
|
||||||
|
TFloatVector aVecY = this->GetIndexes(1);
|
||||||
|
TInt i,j,k;
|
||||||
|
i = j = k = 0;
|
||||||
|
i = theId % nbIndxX;
|
||||||
|
j = theId / nbIndxX;
|
||||||
|
if(myGrilleType == eGRILLE_CARTESIENNE){
|
||||||
|
aCoord[0] = aVecX[i];
|
||||||
|
aCoord[1] = aVecY[j];
|
||||||
|
} else { // eGRILLE_POLAIRE (cylindrical)
|
||||||
|
aCoord[0] = aVecX[i] * cos(aVecY[j]);
|
||||||
|
aCoord[1] = aVecX[i] * sin(aVecY[j]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:{
|
||||||
|
TFloatVector aVecY = this->GetIndexes(1);
|
||||||
|
TInt nbIndxY = this->GetNbIndexes(1);
|
||||||
|
TFloatVector aVecZ = this->GetIndexes(2);
|
||||||
|
TInt i,j,k;
|
||||||
|
i = j = k = 0;
|
||||||
|
|
||||||
|
i = theId % nbIndxX;
|
||||||
|
j = (theId / nbIndxX) % nbIndxY;
|
||||||
|
k = theId / (nbIndxX*nbIndxY);
|
||||||
|
|
||||||
|
if(myGrilleType == eGRILLE_CARTESIENNE){
|
||||||
|
aCoord[0] = aVecX[i];
|
||||||
|
aCoord[1] = aVecY[j];
|
||||||
|
aCoord[2] = aVecZ[k];
|
||||||
|
} else { // eGRILLE_POLAIRE (cylindrical)
|
||||||
|
aCoord[0] = aVecX[i] * cos(aVecY[j]);
|
||||||
|
aCoord[1] = aVecX[i] * sin(aVecY[j]);
|
||||||
|
aCoord[2] = aVecZ[k];
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return aCoord;
|
||||||
|
}
|
||||||
|
|
||||||
|
TIntVector
|
||||||
|
TGrilleInfo
|
||||||
|
::GetConn(TInt theId, const bool isSub)
|
||||||
|
{
|
||||||
|
TIntVector anIndexes;
|
||||||
|
TInt aDim = myMeshInfo->GetDim();
|
||||||
|
|
||||||
|
TInt idx;
|
||||||
|
TInt iMin, jMin, kMin, iMax, jMax, kMax;
|
||||||
|
TInt loc[3];
|
||||||
|
|
||||||
|
loc[0] = loc[1] = loc[2] = 0;
|
||||||
|
iMin = iMax = jMin = jMax = kMin = kMax = 0;
|
||||||
|
|
||||||
|
switch(aDim) {
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
TInt nbX = this->GetGrilleStructure()[0];
|
||||||
|
TInt nbY = this->GetGrilleStructure()[1];
|
||||||
|
TInt nbZ = this->GetGrilleStructure()[2];
|
||||||
|
TInt d01 = nbX*nbY, dX = 1, dY = 1, dZ = 1;
|
||||||
|
if ( isSub )
|
||||||
|
{
|
||||||
|
if ( theId < nbX * (nbY-1) * (nbZ-1))
|
||||||
|
{ // face is normal to X axis
|
||||||
|
dX = 0;
|
||||||
|
}
|
||||||
|
else if ( theId < nbX * (nbY-1) * (nbZ-1) + (nbX-1) * nbY * (nbZ-1))
|
||||||
|
{ // face is normal to Y axis
|
||||||
|
theId -= nbX * (nbY-1) * (nbZ-1);
|
||||||
|
dY = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theId -= nbX * (nbY-1) * (nbZ-1) + (nbX-1) * nbY * (nbZ-1);
|
||||||
|
dZ = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//else
|
||||||
|
{
|
||||||
|
iMin = theId % (nbX - dX);
|
||||||
|
jMin = (theId / (nbX - dX)) % (nbY - dY);
|
||||||
|
kMin = theId / ((nbX - dX) * (nbY - dY));
|
||||||
|
iMax = iMin+dX;
|
||||||
|
jMax = jMin+dY;
|
||||||
|
kMax = kMin+dZ;
|
||||||
|
}
|
||||||
|
for (loc[2]=kMin; loc[2]<=kMax; loc[2]++)
|
||||||
|
for (loc[1]=jMin; loc[1]<=jMax; loc[1]++)
|
||||||
|
for (loc[0]=iMin; loc[0]<=iMax; loc[0]++)
|
||||||
|
{
|
||||||
|
idx = loc[0] + loc[1]*nbX + loc[2]*d01;
|
||||||
|
anIndexes.push_back(idx);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
TInt nbX = this->GetGrilleStructure()[0];
|
||||||
|
TInt nbY = this->GetGrilleStructure()[1];
|
||||||
|
TInt dX = 1, dY = 1;
|
||||||
|
if ( isSub )
|
||||||
|
{
|
||||||
|
if ( theId < nbX * (nbY-1))
|
||||||
|
{ // edge is normal to X axis
|
||||||
|
dX = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theId -= nbX * (nbY-1);
|
||||||
|
dY = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
iMin = theId % (nbX-dX);
|
||||||
|
jMin = theId / (nbX-dX);
|
||||||
|
iMax = iMin+dX;
|
||||||
|
jMax = jMin+dY;
|
||||||
|
for (loc[1]=jMin; loc[1]<=jMax; loc[1]++)
|
||||||
|
for (loc[0]=iMin; loc[0]<=iMax; loc[0]++)
|
||||||
|
{
|
||||||
|
idx = loc[0] + loc[1]*nbX;
|
||||||
|
anIndexes.push_back(idx);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
iMin = theId;
|
||||||
|
for (loc[0]=iMin; loc[0]<=iMin+1; loc[0]++)
|
||||||
|
{
|
||||||
|
idx = loc[0];
|
||||||
|
anIndexes.push_back(idx);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return anIndexes;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetFamNumNode(TInt theId) const
|
||||||
|
{
|
||||||
|
return myFamNumNode[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TGrilleInfo
|
||||||
|
::SetFamNumNode(TInt theId,TInt theVal)
|
||||||
|
{
|
||||||
|
myFamNumNode[theId] = theVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetFamNum(TInt theId) const
|
||||||
|
{
|
||||||
|
return myFamNum[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TGrilleInfo
|
||||||
|
::SetFamNum(TInt theId,TInt theVal)
|
||||||
|
{
|
||||||
|
myFamNum[theId] = theVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
TInt
|
||||||
|
TGrilleInfo
|
||||||
|
::GetFamSubNum(TInt theId) const
|
||||||
|
{
|
||||||
|
return myFamSubNum[theId];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TGrilleInfo
|
||||||
|
::SetFamSubNum(TInt theId,TInt theVal)
|
||||||
|
{
|
||||||
|
myFamSubNum[theId] = theVal;
|
||||||
|
}
|
||||||
|
}
|
@ -23,8 +23,12 @@
|
|||||||
#ifndef MED_Structures_HeaderFile
|
#ifndef MED_Structures_HeaderFile
|
||||||
#define MED_Structures_HeaderFile
|
#define MED_Structures_HeaderFile
|
||||||
|
|
||||||
|
#include "MED_WrapperDef.hxx"
|
||||||
#include "MED_Common.hxx"
|
#include "MED_Common.hxx"
|
||||||
#include "MED_Utilities.hxx"
|
#include "MED_Utilities.hxx"
|
||||||
|
#include "MED_SliceArray.hxx"
|
||||||
|
|
||||||
|
#include <boost/tuple/tuple.hpp>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#pragma warning(disable:4251)
|
#pragma warning(disable:4251)
|
||||||
@ -32,40 +36,44 @@
|
|||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Defines a type for managing sequence of strings
|
//! Defines a type for managing sequence of strings
|
||||||
typedef TVector<char> TString;
|
typedef TVector<char> TString;
|
||||||
typedef SharedPtr<TString> PString;
|
typedef SharedPtr<TString> PString;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Extract a substring from the sequence of the strings
|
//! Extract a substring from the sequence of the strings
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
std::string
|
std::string
|
||||||
GetString(TInt theId, TInt theStep,
|
GetString(TInt theId,
|
||||||
|
TInt theStep,
|
||||||
const TString& theString);
|
const TString& theString);
|
||||||
|
|
||||||
//! Set a substring in the sequence of the strings
|
|
||||||
MEDWRAPPER_EXPORT
|
|
||||||
void
|
|
||||||
SetString(TInt theId, TInt theStep,
|
|
||||||
TString& theString,
|
|
||||||
const std::string& theValue);
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Set a substring in the sequence of the strings
|
//! Set a substring in the sequence of the strings
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
void
|
void
|
||||||
SetString(TInt theId, TInt theStep,
|
SetString(TInt theId,
|
||||||
TString& theString,
|
TInt theStep,
|
||||||
const TString& theValue);
|
TString& theString,
|
||||||
|
const std::string& theValue);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
|
//! Set a substring in the sequence of the strings
|
||||||
|
MEDWRAPPER_EXPORT
|
||||||
|
void
|
||||||
|
SetString(TInt theId,
|
||||||
|
TInt theStep,
|
||||||
|
TString& theString,
|
||||||
|
const TString& theValue);
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a parent class for all MEDWrapper classes
|
//! Define a parent class for all MEDWrapper classes
|
||||||
struct MEDWRAPPER_EXPORT TBase
|
struct MEDWRAPPER_EXPORT TBase
|
||||||
{
|
{
|
||||||
virtual ~TBase() {}
|
virtual ~TBase() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a parent class for all named MED entities
|
//! Define a parent class for all named MED entities
|
||||||
struct MEDWRAPPER_EXPORT TNameInfo: virtual TBase
|
struct MEDWRAPPER_EXPORT TNameInfo: virtual TBase
|
||||||
@ -76,11 +84,10 @@ namespace MED
|
|||||||
virtual void SetName(const TString& theValue) = 0; //!< Set a new name
|
virtual void SetName(const TString& theValue) = 0; //!< Set a new name
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a parent class for all MED entities that contains a sequence of numbers
|
//! Define a parent class for all MED entities that contains a sequence of numbers
|
||||||
/*!
|
/*!
|
||||||
It defines through corresponding enumeration (EModeSwitch) how the sequence
|
It defines through corresponding enumeration (EModeSwitch) how the sequence
|
||||||
should be interpreted in C or Fortran mode (eFULL_INTERLACE or eNON_INTERLACE).
|
should be interpreted in C or Fortran mode (eFULL_INTERLACE or eNON_INTERLACE).
|
||||||
*/
|
*/
|
||||||
struct MEDWRAPPER_EXPORT TModeSwitchInfo: virtual TBase
|
struct MEDWRAPPER_EXPORT TModeSwitchInfo: virtual TBase
|
||||||
@ -95,67 +102,62 @@ namespace MED
|
|||||||
myModeSwitch(theModeSwitch)
|
myModeSwitch(theModeSwitch)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
EModeSwitch myModeSwitch; //!< Keeps the
|
EModeSwitch myModeSwitch; //!< Keeps the interlace mode
|
||||||
EModeSwitch GetModeSwitch() const { return myModeSwitch;}
|
EModeSwitch GetModeSwitch() const { return myModeSwitch; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Mesh entity
|
//! Define a base class which represents MED Mesh entity
|
||||||
struct MEDWRAPPER_EXPORT TMeshInfo: virtual TNameInfo
|
struct MEDWRAPPER_EXPORT TMeshInfo: virtual TNameInfo
|
||||||
{
|
{
|
||||||
TInt myDim; //!< Dimension of the mesh (0, 1, 2 or 3)
|
TInt myDim; //!< Dimension of the mesh (0, 1, 2 or 3)
|
||||||
TInt GetDim() const { return myDim;} //!< Gets dimension of the mesh
|
TInt GetDim() const { return myDim; } //!< Gets dimension of the mesh
|
||||||
|
|
||||||
TInt mySpaceDim;
|
TInt mySpaceDim;
|
||||||
TInt GetSpaceDim() const { return mySpaceDim; }
|
TInt GetSpaceDim() const { return mySpaceDim; }
|
||||||
|
|
||||||
EMaillage myType; //!< Type of the mesh
|
EMaillage myType; //!< Type of the mesh
|
||||||
EMaillage GetType() const { return myType;} //!< Gets type of the mesh
|
EMaillage GetType() const { return myType; } //!< Gets type of the mesh
|
||||||
|
|
||||||
TString myDesc; //!< Description of the mesh
|
TString myDesc; //!< Description of the mesh
|
||||||
virtual std::string GetDesc() const = 0; //!< Get description for the mesh
|
virtual std::string GetDesc() const = 0; //!< Get description for the mesh
|
||||||
virtual void SetDesc(const std::string& theValue) = 0; //!< Sets description for the mesh
|
virtual void SetDesc(const std::string& theValue) = 0; //!< Sets description for the mesh
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef TVector<TInt> TIntVector;
|
|
||||||
typedef TSlice<TInt> TIntVecSlice;
|
typedef TSlice<TInt> TIntVecSlice;
|
||||||
typedef TCSlice<TInt> TCIntVecSlice;
|
typedef TCSlice<TInt> TCIntVecSlice;
|
||||||
|
|
||||||
typedef TIntVector TFamAttr;
|
typedef TIntVector TFamAttr;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Family entity
|
//! Define a base class which represents MED Family entity
|
||||||
struct MEDWRAPPER_EXPORT TFamilyInfo: virtual TNameInfo
|
struct MEDWRAPPER_EXPORT TFamilyInfo: virtual TNameInfo
|
||||||
{
|
{
|
||||||
PMeshInfo myMeshInfo; //!< A reference to correspondig MED Mesh
|
PMeshInfo myMeshInfo; //!< A reference to correspondig MED Mesh
|
||||||
//! Get a reference to corresponding MED Mesh
|
//! Get a reference to corresponding MED Mesh
|
||||||
const PMeshInfo& GetMeshInfo() const { return myMeshInfo;}
|
const PMeshInfo& GetMeshInfo() const { return myMeshInfo; }
|
||||||
|
|
||||||
TInt myId; //!< An unique index of the MED FAMILY
|
TInt myId; //!< An unique index of the MED FAMILY
|
||||||
TInt GetId() const { return myId;} //!< Gets number of the MED FAMILY
|
TInt GetId() const { return myId; } //!< Gets number of the MED FAMILY
|
||||||
void SetId(TInt theId) { myId = theId;} //! Define number of the MED FAMILY
|
void SetId(TInt theId) { myId = theId; } //! Define number of the MED FAMILY
|
||||||
|
|
||||||
TInt myNbGroup; //!< Defines number MED Groups connected to
|
TInt myNbGroup; //!< Defines number MED Groups connected to
|
||||||
//! Gets number of MED GROUPS the MED FAMILY is bound to
|
//! Gets number of MED GROUPS the MED FAMILY is bound to
|
||||||
TInt GetNbGroup() const { return myNbGroup;}
|
TInt GetNbGroup() const { return myNbGroup; }
|
||||||
|
|
||||||
//! Contains sequence of the names for the MED Groups connected to
|
//! Contains sequence of the names for the MED Groups connected to
|
||||||
TString myGroupNames;
|
TString myGroupNames;
|
||||||
//! Gets name of a bound MED GROUP by its number
|
//! Gets name of a bound MED GROUP by its number
|
||||||
virtual std::string GetGroupName(TInt theId) const = 0;
|
virtual std::string GetGroupName(TInt theId) const = 0;
|
||||||
//! Sets name of the defined MED GROUP by its number
|
//! Sets name of the defined MED GROUP by its number
|
||||||
virtual void SetGroupName(TInt theId, const std::string& theValue) = 0;
|
virtual void SetGroupName(TInt theId, const std::string& theValue) = 0;
|
||||||
|
|
||||||
TInt myNbAttr; //!< Defines number of the MED Family attributes
|
TInt myNbAttr; //!< Defines number of the MED Family attributes
|
||||||
//! Gets number of attached attributes for the MED FAMILY
|
//! Gets number of attached attributes for the MED FAMILY
|
||||||
TInt GetNbAttr() const { return myNbAttr;}
|
TInt GetNbAttr() const { return myNbAttr; }
|
||||||
|
|
||||||
//! Defines sequence of the indexes of the MED Family attributes
|
//! Defines sequence of the indexes of the MED Family attributes
|
||||||
TFamAttr myAttrId;
|
TFamAttr myAttrId;
|
||||||
//! Get MED FAMILY attribute by its number
|
//! Get MED FAMILY attribute by its number
|
||||||
TInt GetAttrId(TInt theId) const;
|
TInt GetAttrId(TInt theId) const;
|
||||||
//! Set MED FAMILY attribute by its number
|
//! Set MED FAMILY attribute by its number
|
||||||
@ -176,38 +178,37 @@ namespace MED
|
|||||||
virtual void SetAttrDesc(TInt theId, const std::string& theValue) = 0;
|
virtual void SetAttrDesc(TInt theId, const std::string& theValue) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef TIntVector TElemNum;
|
typedef TIntVector TElemNum;
|
||||||
typedef SharedPtr<TElemNum> PElemNum;
|
typedef SharedPtr<TElemNum> PElemNum;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a parent class for all MED entities that describes mesh entites such as nodes and cells.
|
//! Define a parent class for all MED entities that describes mesh entites such as nodes and cells.
|
||||||
struct MEDWRAPPER_EXPORT TElemInfo: virtual TBase
|
struct MEDWRAPPER_EXPORT TElemInfo: virtual TBase
|
||||||
{
|
{
|
||||||
PMeshInfo myMeshInfo; //!< A reference to correspondig MED Mesh
|
PMeshInfo myMeshInfo; //!< A reference to correspondig MED Mesh
|
||||||
//! Get a reference to corresponding MED Mesh
|
//! Get a reference to corresponding MED Mesh
|
||||||
const PMeshInfo& GetMeshInfo() const { return myMeshInfo;}
|
const PMeshInfo& GetMeshInfo() const { return myMeshInfo; }
|
||||||
|
|
||||||
TInt myNbElem; //<! Number of corresponding mesh entities
|
TInt myNbElem; //<! Number of corresponding mesh entities
|
||||||
TInt GetNbElem() const { return myNbElem;} //! Get number of mesh elements
|
TInt GetNbElem() const { return myNbElem; } //! Get number of mesh elements
|
||||||
|
|
||||||
//! Defines sequence MED Family indexes for corresponding mesh entites
|
//! Defines sequence MED Family indexes for corresponding mesh entites
|
||||||
PElemNum myFamNum;
|
PElemNum myFamNum;
|
||||||
//! Get number of a MED FAMILY by order number of the mesh element
|
//! Get number of a MED FAMILY by order number of the mesh element
|
||||||
TInt GetFamNum(TInt theId) const;
|
TInt GetFamNum(TInt theId) const;
|
||||||
//! Set number of a MED FAMILY for the mesh element with the order number
|
//! Set number of a MED FAMILY for the mesh element with the order number
|
||||||
void SetFamNum(TInt theId, TInt theVal);
|
void SetFamNum(TInt theId, TInt theVal);
|
||||||
|
|
||||||
//! Defines if the mesh elements are indexed
|
//! Defines if the mesh elements are indexed
|
||||||
EBooleen myIsElemNum;
|
EBooleen myIsElemNum;
|
||||||
//! Let know if the mesh elements are indexed
|
//! Let know if the mesh elements are indexed
|
||||||
EBooleen IsElemNum() const { return myIsElemNum;}
|
EBooleen IsElemNum() const { return myIsElemNum; }
|
||||||
|
|
||||||
//! Defines if the mesh elements family are indexed
|
//! Defines if the mesh elements family are indexed
|
||||||
EBooleen myIsFamNum;
|
EBooleen myIsFamNum;
|
||||||
//! Let know if the mesh elements family are indexed
|
//! Let know if the mesh elements family are indexed
|
||||||
EBooleen IsFamNum() const { return myIsFamNum;}
|
EBooleen IsFamNum() const { return myIsFamNum; }
|
||||||
|
|
||||||
|
|
||||||
//! Contains sequence of the indexes for the mesh elements
|
//! Contains sequence of the indexes for the mesh elements
|
||||||
PElemNum myElemNum;
|
PElemNum myElemNum;
|
||||||
@ -219,7 +220,7 @@ namespace MED
|
|||||||
//! Defines if the mesh elements are named
|
//! Defines if the mesh elements are named
|
||||||
EBooleen myIsElemNames;
|
EBooleen myIsElemNames;
|
||||||
//! Let know if the mesh elements havew names
|
//! Let know if the mesh elements havew names
|
||||||
EBooleen IsElemNames() const { return myIsElemNames;}
|
EBooleen IsElemNames() const { return myIsElemNames; }
|
||||||
|
|
||||||
//! Contains sequence of the names for the mesh elements
|
//! Contains sequence of the names for the mesh elements
|
||||||
PString myElemNames;
|
PString myElemNames;
|
||||||
@ -229,22 +230,19 @@ namespace MED
|
|||||||
virtual void SetElemName(TInt theId, const std::string& theValue) = 0;
|
virtual void SetElemName(TInt theId, const std::string& theValue) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef TVector<TFloat> TFloatVector;
|
|
||||||
typedef TSlice<TFloat> TFloatVecSlice;
|
typedef TSlice<TFloat> TFloatVecSlice;
|
||||||
typedef TCSlice<TFloat> TCFloatVecSlice;
|
typedef TCSlice<TFloat> TCFloatVecSlice;
|
||||||
|
|
||||||
typedef TFloatVector TNodeCoord;
|
typedef TFloatVector TNodeCoord;
|
||||||
typedef SharedPtr<TNodeCoord> PNodeCoord;
|
typedef SharedPtr<TNodeCoord> PNodeCoord;
|
||||||
|
|
||||||
typedef TFloatVecSlice TCoordSlice;
|
typedef TFloatVecSlice TCoordSlice;
|
||||||
typedef TCFloatVecSlice TCCoordSlice;
|
typedef TCFloatVecSlice TCCoordSlice;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Nodes entity
|
//! Define a base class which represents MED Nodes entity
|
||||||
struct MEDWRAPPER_EXPORT TNodeInfo:
|
struct MEDWRAPPER_EXPORT TNodeInfo:
|
||||||
virtual TElemInfo,
|
virtual TElemInfo,
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
PNodeCoord myCoord; //!< Contains all nodal coordinates
|
PNodeCoord myCoord; //!< Contains all nodal coordinates
|
||||||
|
|
||||||
@ -255,9 +253,9 @@ namespace MED
|
|||||||
|
|
||||||
ERepere mySystem; //!< Defines, which coordinate system is used
|
ERepere mySystem; //!< Defines, which coordinate system is used
|
||||||
//! Get which coordinate system is used for the node describing
|
//! Get which coordinate system is used for the node describing
|
||||||
ERepere GetSystem() const { return mySystem;}
|
ERepere GetSystem() const { return mySystem; }
|
||||||
//! Set coordinate system to be used for the node describing
|
//! Set coordinate system to be used for the node describing
|
||||||
void SetSystem(ERepere theSystem) { mySystem = theSystem;}
|
void SetSystem(ERepere theSystem) { mySystem = theSystem; }
|
||||||
|
|
||||||
TString myCoordNames; //!< Contains names for the coordinate dimensions
|
TString myCoordNames; //!< Contains names for the coordinate dimensions
|
||||||
//! Get name of the coordinate dimension by its order number
|
//! Get name of the coordinate dimension by its order number
|
||||||
@ -272,27 +270,27 @@ namespace MED
|
|||||||
virtual void SetCoordUnit(TInt theId, const std::string& theValue) = 0;
|
virtual void SetCoordUnit(TInt theId, const std::string& theValue) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef TIntVecSlice TConnSlice;
|
typedef TIntVecSlice TConnSlice;
|
||||||
typedef TCIntVecSlice TCConnSlice;
|
typedef TCIntVecSlice TCConnSlice;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Cells entity
|
//! Define a base class which represents MED Cells entity
|
||||||
struct MEDWRAPPER_EXPORT TCellInfo:
|
struct MEDWRAPPER_EXPORT TCellInfo:
|
||||||
virtual TElemInfo,
|
virtual TElemInfo,
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
EEntiteMaillage myEntity; //!< Defines the MED Entity where the mesh cells belongs to
|
EEntiteMaillage myEntity; //!< Defines the MED Entity where the mesh cells belongs to
|
||||||
//! Find out what MED ENTITY the cells belong to
|
//! Find out what MED ENTITY the cells belong to
|
||||||
EEntiteMaillage GetEntity() const { return myEntity;}
|
EEntiteMaillage GetEntity() const { return myEntity; }
|
||||||
|
|
||||||
EGeometrieElement myGeom; //!< Defines the MED Geometric type of the instance
|
EGeometrieElement myGeom; //!< Defines the MED Geometric type of the instance
|
||||||
//! Find out what MED geometrical type the cells belong to
|
//! Find out what MED geometrical type the cells belong to
|
||||||
EGeometrieElement GetGeom() const { return myGeom;}
|
EGeometrieElement GetGeom() const { return myGeom; }
|
||||||
|
|
||||||
EConnectivite myConnMode; //!< Defines connectivity mode
|
EConnectivite myConnMode; //!< Defines connectivity mode
|
||||||
//! Find out in what connectivity the cells are written
|
//! Find out in what connectivity the cells are writen
|
||||||
EConnectivite GetConnMode() const { return myConnMode;}
|
EConnectivite GetConnMode() const { return myConnMode; }
|
||||||
|
|
||||||
virtual TInt GetConnDim() const = 0; //!< Gives step in the connectivity sequence
|
virtual TInt GetConnDim() const = 0; //!< Gives step in the connectivity sequence
|
||||||
|
|
||||||
@ -306,23 +304,23 @@ namespace MED
|
|||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Polygon entity
|
//! Define a base class which represents MED Polygon entity
|
||||||
struct MEDWRAPPER_EXPORT TPolygoneInfo:
|
struct MEDWRAPPER_EXPORT TPolygoneInfo:
|
||||||
virtual TElemInfo
|
virtual TElemInfo
|
||||||
{
|
{
|
||||||
//! Defines the MED Entity where the polygons belongs to
|
//! Defines the MED Entity where the polygons belongs to
|
||||||
EEntiteMaillage myEntity; // MED_FACE|MED_MAILLE
|
EEntiteMaillage myEntity; // MED_FACE|MED_MAILLE
|
||||||
//! Find out what MED ENTITY the MED Polygons belong to
|
//! Find out what MED ENTITY the MED Polygons belong to
|
||||||
EEntiteMaillage GetEntity() const { return myEntity;}
|
EEntiteMaillage GetEntity() const { return myEntity; }
|
||||||
|
|
||||||
//! Defines the MED Geometric type of the instance
|
//! Defines the MED Geometric type of the instance
|
||||||
EGeometrieElement myGeom; // ePOLYGONE
|
EGeometrieElement myGeom; // ePOLYGONE
|
||||||
//! Find out what MED geometrical type the MED Polygons belong to
|
//! Find out what MED geometrical type the MED Polygons belong to
|
||||||
EGeometrieElement GetGeom() const { return ePOLYGONE;}
|
EGeometrieElement GetGeom() const { return ePOLYGONE; }
|
||||||
|
|
||||||
//! Defines connectivity mode
|
//! Defines connectivity mode
|
||||||
EConnectivite myConnMode; // eNOD|eDESC(eDESC not used)
|
EConnectivite myConnMode; // eNOD|eDESC(eDESC not used)
|
||||||
//! Find out in what connectivity the cells are written
|
//! Find out in what connectivity the cells are writen
|
||||||
EConnectivite GetConnMode() const { return myConnMode;}
|
EConnectivite GetConnMode() const { return myConnMode; }
|
||||||
|
|
||||||
PElemNum myConn; //!< Table de connectivities
|
PElemNum myConn; //!< Table de connectivities
|
||||||
PElemNum myIndex; //!< Table de indexes
|
PElemNum myIndex; //!< Table de indexes
|
||||||
@ -338,12 +336,12 @@ namespace MED
|
|||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a class representing MED_BALL structure element.
|
//! Define a class representing MED_BALL structure element.
|
||||||
//
|
/*!
|
||||||
// This could be a generic class for any structure element
|
This could be a generic class for any structure element
|
||||||
// holding any number of contant and variable attributes
|
holding any number of contant and variable attributes
|
||||||
// but it's too hard to implement
|
but it's too hard to implement
|
||||||
//
|
*/
|
||||||
struct MEDWRAPPER_EXPORT TBallInfo:
|
struct MEDWRAPPER_EXPORT TBallInfo:
|
||||||
virtual TCellInfo
|
virtual TCellInfo
|
||||||
{
|
{
|
||||||
TFloatVector myDiameters;
|
TFloatVector myDiameters;
|
||||||
@ -353,24 +351,25 @@ namespace MED
|
|||||||
typedef TVector<TCConnSlice> TCConnSliceArr;
|
typedef TVector<TCConnSlice> TCConnSliceArr;
|
||||||
typedef TVector<TConnSlice> TConnSliceArr;
|
typedef TVector<TConnSlice> TConnSliceArr;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Polyedre entity
|
//! Define a base class which represents MED Polyedre entity
|
||||||
struct MEDWRAPPER_EXPORT TPolyedreInfo:
|
struct MEDWRAPPER_EXPORT TPolyedreInfo:
|
||||||
virtual TElemInfo
|
virtual TElemInfo
|
||||||
{
|
{
|
||||||
//! Defines the MED Entity where the polyedres belongs to
|
//! Defines the MED Entity where the polyedres belongs to
|
||||||
EEntiteMaillage myEntity; // MED_FACE|MED_MAILLE
|
EEntiteMaillage myEntity; // MED_FACE|MED_MAILLE
|
||||||
//! Find out what MED ENTITY the MED Polyedres belong to
|
//! Find out what MED ENTITY the MED Polyedres belong to
|
||||||
EEntiteMaillage GetEntity() const { return myEntity;}
|
EEntiteMaillage GetEntity() const { return myEntity; }
|
||||||
|
|
||||||
//! Defines the MED Geometric type of the instance
|
//! Defines the MED Geometric type of the instance
|
||||||
EGeometrieElement myGeom; // ePOLYEDRE
|
EGeometrieElement myGeom; // ePOLYEDRE
|
||||||
//! Find out what MED geometrical type the MED Polyedres belong to
|
//! Find out what MED geometrical type the MED Polyedres belong to
|
||||||
EGeometrieElement GetGeom() const { return ePOLYEDRE;}
|
EGeometrieElement GetGeom() const { return ePOLYEDRE; }
|
||||||
|
|
||||||
//! Defines connectivity mode
|
//! Defines connectivity mode
|
||||||
EConnectivite myConnMode; // eNOD|eDESC(eDESC not used)
|
EConnectivite myConnMode; // eNOD|eDESC(eDESC not used)
|
||||||
//! Find out in what connectivity the cells are written
|
//! Find out in what connectivity the cells are writen
|
||||||
EConnectivite GetConnMode() const { return myConnMode;}
|
EConnectivite GetConnMode() const { return myConnMode; }
|
||||||
|
|
||||||
PElemNum myConn; //!< Table de connectivities
|
PElemNum myConn; //!< Table de connectivities
|
||||||
PElemNum myFaces; //!< Table de faces indexes
|
PElemNum myFaces; //!< Table de faces indexes
|
||||||
@ -389,28 +388,28 @@ namespace MED
|
|||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Field entity
|
//! Define a base class which represents MED Field entity
|
||||||
struct MEDWRAPPER_EXPORT TFieldInfo:
|
struct MEDWRAPPER_EXPORT TFieldInfo:
|
||||||
virtual TNameInfo
|
virtual TNameInfo
|
||||||
{
|
{
|
||||||
PMeshInfo myMeshInfo; //!< A reference to corresponding MED Mesh
|
PMeshInfo myMeshInfo; //!< A reference to corresponding MED Mesh
|
||||||
//! Get a reference to corresponding MED Mesh
|
//! Get a reference to corresponding MED Mesh
|
||||||
const PMeshInfo& GetMeshInfo() const { return myMeshInfo;}
|
const PMeshInfo& GetMeshInfo() const { return myMeshInfo; }
|
||||||
|
|
||||||
ETypeChamp myType; //!< Defines type of MED Field
|
ETypeChamp myType; //!< Defines type of MED Field
|
||||||
//! Find out what type of MED FIELD is used
|
//! Find out what type of MED FIELD is used
|
||||||
ETypeChamp GetType() const { return myType;}
|
ETypeChamp GetType() const { return myType; }
|
||||||
|
|
||||||
TInt myNbComp; //!< Defines number of components stored in the field
|
TInt myNbComp; //!< Defines number of components stored in the field
|
||||||
//! Get number of components for MED FIELD
|
//! Get number of components for MED FIELD
|
||||||
TInt GetNbComp() const { return myNbComp;}
|
TInt GetNbComp() const { return myNbComp; }
|
||||||
|
|
||||||
EBooleen myIsLocal; //!< Defines if the MED Field is local
|
EBooleen myIsLocal; //!< Defines if the MED Field is local
|
||||||
//! Find out if MED FIELD is local or not
|
//! Find out if MED FIELD is local or not
|
||||||
EBooleen GetIsLocal() const { return myIsLocal;}
|
EBooleen GetIsLocal() const { return myIsLocal; }
|
||||||
|
|
||||||
TInt myNbRef; //!< Defines number of references of the field
|
TInt myNbRef; //!< Defines number of references of the field
|
||||||
//! Find out number of references for the MED FIELD
|
//! Find out number of references for the MED FIELD
|
||||||
TInt GetNbRef() const { return myNbRef;}
|
TInt GetNbRef() const { return myNbRef; }
|
||||||
|
|
||||||
TString myCompNames; //!< Contains names for each of MED Field components
|
TString myCompNames; //!< Contains names for each of MED Field components
|
||||||
//! Get name of the component by its order number
|
//! Get name of the component by its order number
|
||||||
@ -423,27 +422,28 @@ namespace MED
|
|||||||
virtual std::string GetUnitName(TInt theId) const = 0;
|
virtual std::string GetUnitName(TInt theId) const = 0;
|
||||||
//! Set unit for the component by its order number
|
//! Set unit for the component by its order number
|
||||||
virtual void SetUnitName(TInt theId, const std::string& theValue) = 0;
|
virtual void SetUnitName(TInt theId, const std::string& theValue) = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! Get dimension of the Gauss coordinates for the defined type of mesh cell
|
//! Get dimension of the Gauss coordinates for the defined type of mesh cell
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TInt
|
TInt
|
||||||
GetDimGaussCoord(EGeometrieElement theGeom);
|
GetDimGaussCoord(EGeometrieElement theGeom);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Get number of referenced nodes for the defined type of mesh cell
|
//! Get number of referenced nodes for the defined type of mesh cell
|
||||||
MEDWRAPPER_EXPORT
|
MEDWRAPPER_EXPORT
|
||||||
TInt
|
TInt
|
||||||
GetNbRefCoord(EGeometrieElement theGeom);
|
GetNbRefCoord(EGeometrieElement theGeom);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
typedef TFloatVector TWeight;
|
typedef TFloatVector TWeight;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! The class represents MED Gauss entity
|
//! The class represents MED Gauss entity
|
||||||
struct MEDWRAPPER_EXPORT TGaussInfo:
|
struct MEDWRAPPER_EXPORT TGaussInfo:
|
||||||
virtual TNameInfo,
|
virtual TNameInfo,
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
typedef boost::tuple<EGeometrieElement,std::string> TKey;
|
typedef boost::tuple<EGeometrieElement,std::string> TKey;
|
||||||
typedef boost::tuple<TKey,TInt> TInfo;
|
typedef boost::tuple<TKey,TInt> TInfo;
|
||||||
@ -457,12 +457,12 @@ namespace MED
|
|||||||
};
|
};
|
||||||
|
|
||||||
//! Defines, which geometrical type the MED Gauss entity belongs to
|
//! Defines, which geometrical type the MED Gauss entity belongs to
|
||||||
EGeometrieElement myGeom;
|
EGeometrieElement myGeom;
|
||||||
//! Find out what MED geometrical type the MED GAUSS entity belong to
|
//! Find out what MED geometrical type the MED GAUSS entity belong to
|
||||||
EGeometrieElement GetGeom() const { return myGeom;}
|
EGeometrieElement GetGeom() const { return myGeom; }
|
||||||
|
|
||||||
//! Contains coordinates for the refereced nodes
|
//! Contains coordinates for the refereced nodes
|
||||||
TNodeCoord myRefCoord;
|
TNodeCoord myRefCoord;
|
||||||
|
|
||||||
//! Gives coordinates for the referenced node by its number
|
//! Gives coordinates for the referenced node by its number
|
||||||
TCCoordSlice GetRefCoordSlice(TInt theId) const;
|
TCCoordSlice GetRefCoordSlice(TInt theId) const;
|
||||||
@ -481,54 +481,54 @@ namespace MED
|
|||||||
TWeight myWeight;
|
TWeight myWeight;
|
||||||
|
|
||||||
//! Gives number of the referenced nodes
|
//! Gives number of the referenced nodes
|
||||||
TInt GetNbRef() const { return GetNbRefCoord(GetGeom());}
|
TInt GetNbRef() const { return GetNbRefCoord(GetGeom()); }
|
||||||
|
|
||||||
//! Gives dimension of the referenced nodes
|
//! Gives dimension of the referenced nodes
|
||||||
TInt GetDim() const { return GetDimGaussCoord(GetGeom());}
|
TInt GetDim() const { return GetDimGaussCoord(GetGeom()); }
|
||||||
|
|
||||||
//! Gives number of the Gauss Points
|
//! Gives number of the Gauss Points
|
||||||
TInt GetNbGauss() const { return (TInt)(myGaussCoord.size()/GetDim());}
|
TInt GetNbGauss() const { return (TInt)(myGaussCoord.size() / GetDim()); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<EGeometrieElement,PGaussInfo> TGeom2Gauss;
|
typedef std::map<EGeometrieElement,PGaussInfo> TGeom2Gauss;
|
||||||
typedef std::map<EGeometrieElement,TInt> TGeom2NbGauss;
|
typedef std::map<EGeometrieElement,TInt> TGeom2NbGauss;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED TimeStamp
|
//! Define a base class which represents MED TimeStamp
|
||||||
struct MEDWRAPPER_EXPORT TTimeStampInfo:
|
struct MEDWRAPPER_EXPORT TTimeStampInfo:
|
||||||
virtual TBase
|
virtual TBase
|
||||||
{
|
{
|
||||||
PFieldInfo myFieldInfo; //!< A reference to correspondig MED Field
|
PFieldInfo myFieldInfo; //!< A reference to correspondig MED Field
|
||||||
//! Get a reference to corresponding MED Field
|
//! Get a reference to corresponding MED Field
|
||||||
const PFieldInfo& GetFieldInfo() const { return myFieldInfo;}
|
const PFieldInfo& GetFieldInfo() const { return myFieldInfo; }
|
||||||
|
|
||||||
//! Defines the MED Entity where the MED TimeStamp belongs to
|
//! Defines the MED Entity where the MED TimeStamp belongs to
|
||||||
EEntiteMaillage myEntity;
|
EEntiteMaillage myEntity;
|
||||||
//! Find out to what MED Entity the MED TimeStamp belong to
|
//! Find out to what MED Entity the MED TimeStamp belong to
|
||||||
EEntiteMaillage GetEntity() const { return myEntity;}
|
EEntiteMaillage GetEntity() const { return myEntity; }
|
||||||
|
|
||||||
//! Keeps map of number of cells per geometric type where the MED TimeStamp belongs to
|
//! Keeps map of number of cells per geometric type where the MED TimeStamp belongs to
|
||||||
TGeom2Size myGeom2Size;
|
TGeom2Size myGeom2Size;
|
||||||
//! Get map of number of cells per geometric type where the MED TimeStamp belongs to
|
//! Get map of number of cells per geometric type where the MED TimeStamp belongs to
|
||||||
const TGeom2Size& GetGeom2Size() const { return myGeom2Size;}
|
const TGeom2Size& GetGeom2Size() const { return myGeom2Size; }
|
||||||
|
|
||||||
TGeom2NbGauss myGeom2NbGauss; //!< Keeps number of the Gauss Points for the MED TimeStamp
|
TGeom2NbGauss myGeom2NbGauss; //!< Keeps number of the Gauss Points for the MED TimeStamp
|
||||||
TInt GetNbGauss(EGeometrieElement theGeom) const; //!< Gives number of the Gauss Points for the MED TimeStamp
|
TInt GetNbGauss(EGeometrieElement theGeom) const; //!< Gives number of the Gauss Points for the MED TimeStamp
|
||||||
|
|
||||||
TInt myNumDt; //!< Keeps number in time for the MED TimeStamp
|
TInt myNumDt; //!< Keeps number in time for the MED TimeStamp
|
||||||
TInt GetNumDt() const { return myNumDt;} //!< Defines number in time for the MED TimeStamp
|
TInt GetNumDt() const { return myNumDt; } //!< Defines number in time for the MED TimeStamp
|
||||||
|
|
||||||
TInt myNumOrd; //!< Keeps number for the MED TimeStamp
|
TInt myNumOrd; //!< Keeps number for the MED TimeStamp
|
||||||
TInt GetNumOrd() const { return myNumOrd;} //!< Defines number for the MED TimeStamp
|
TInt GetNumOrd() const { return myNumOrd; } //!< Defines number for the MED TimeStamp
|
||||||
|
|
||||||
TFloat myDt; //!< Keeps time for the MED TimeStamp
|
TFloat myDt; //!< Keeps time for the MED TimeStamp
|
||||||
TFloat GetDt() const { return myDt;} //!< Defines time for the MED TimeStamp
|
TFloat GetDt() const { return myDt; } //!< Defines time for the MED TimeStamp
|
||||||
|
|
||||||
//! Keeps map of MED Gauss entityes per geometric type
|
//! Keeps map of MED Gauss entityes per geometric type
|
||||||
TGeom2Gauss myGeom2Gauss;
|
TGeom2Gauss myGeom2Gauss;
|
||||||
//! Gets a map of MED Gauss entityes per geometric type
|
//! Gets a map of MED Gauss entityes per geometric type
|
||||||
const TGeom2Gauss& GetGeom2Gauss() const { return myGeom2Gauss;}
|
const TGeom2Gauss& GetGeom2Gauss() const { return myGeom2Gauss; }
|
||||||
|
|
||||||
TString myUnitDt; //!< Defines unit for the time for the MED TimeStamp
|
TString myUnitDt; //!< Defines unit for the time for the MED TimeStamp
|
||||||
//! Get unit of time for the MED TimeStamp
|
//! Get unit of time for the MED TimeStamp
|
||||||
@ -536,11 +536,10 @@ namespace MED
|
|||||||
//! Set unit of time for the MED TimeStamp
|
//! Set unit of time for the MED TimeStamp
|
||||||
virtual void SetUnitDt(const std::string& theValue) = 0;
|
virtual void SetUnitDt(const std::string& theValue) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! The class represents MED Profile entity
|
//! The class represents MED Profile entity
|
||||||
struct MEDWRAPPER_EXPORT TProfileInfo:
|
struct MEDWRAPPER_EXPORT TProfileInfo:
|
||||||
virtual TNameInfo
|
virtual TNameInfo
|
||||||
{
|
{
|
||||||
typedef std::string TKey;
|
typedef std::string TKey;
|
||||||
@ -548,9 +547,9 @@ namespace MED
|
|||||||
|
|
||||||
EModeProfil myMode; //!< Keeps mode for the MED Profile
|
EModeProfil myMode; //!< Keeps mode for the MED Profile
|
||||||
//! Find out what mode of MED Profile is used
|
//! Find out what mode of MED Profile is used
|
||||||
EModeProfil GetMode() const { return myMode;}
|
EModeProfil GetMode() const { return myMode; }
|
||||||
//! Set mode for the MED Profile
|
//! Set mode for the MED Profile
|
||||||
void SetMode(EModeProfil theMode) { myMode = theMode;}
|
void SetMode(EModeProfil theMode) { myMode = theMode; }
|
||||||
|
|
||||||
PElemNum myElemNum; //!< Keeps sequence of cell by its number which belong to the profile
|
PElemNum myElemNum; //!< Keeps sequence of cell by its number which belong to the profile
|
||||||
//! Get number of mesh elelemts by its order number
|
//! Get number of mesh elelemts by its order number
|
||||||
@ -559,17 +558,16 @@ namespace MED
|
|||||||
void SetElemNum(TInt theId, TInt theVal);
|
void SetElemNum(TInt theId, TInt theVal);
|
||||||
|
|
||||||
//! Find out if the MED Profile defined
|
//! Find out if the MED Profile defined
|
||||||
bool IsPresent() const { return GetName() != "";}
|
bool IsPresent() const { return GetName() != ""; }
|
||||||
|
|
||||||
//! Find out size of the MED Profile
|
//! Find out size of the MED Profile
|
||||||
TInt GetSize() const { return (TInt)myElemNum->size();}
|
TInt GetSize() const { return (TInt)myElemNum->size(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! The class is a helper one. It provide safe and flexible way to get access to values for a MED TimeStamp
|
//! The class is a helper one. It provide safe and flexible way to get access to values for a MED TimeStamp
|
||||||
struct MEDWRAPPER_EXPORT TMeshValueBase:
|
struct MEDWRAPPER_EXPORT TMeshValueBase:
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
TInt myNbElem;
|
TInt myNbElem;
|
||||||
TInt myNbComp;
|
TInt myNbComp;
|
||||||
@ -588,19 +586,19 @@ namespace MED
|
|||||||
//! Returns size of the value container
|
//! Returns size of the value container
|
||||||
size_t
|
size_t
|
||||||
GetSize() const;
|
GetSize() const;
|
||||||
|
|
||||||
//! Returns MED interpetation of the value size
|
//! Returns MED interpetation of the value size
|
||||||
size_t
|
size_t
|
||||||
GetNbVal() const;
|
GetNbVal() const;
|
||||||
|
|
||||||
//! Returns number of Gauss Points bounded with the value
|
//! Returns number of Gauss Points bounded with the value
|
||||||
size_t
|
size_t
|
||||||
GetNbGauss() const;
|
GetNbGauss() const;
|
||||||
|
|
||||||
//! Returns step inside of the data array
|
//! Returns step inside of the data array
|
||||||
size_t
|
size_t
|
||||||
GetStep() const;
|
GetStep() const;
|
||||||
|
|
||||||
//! Returns bare pointer on the internal value representation
|
//! Returns bare pointer on the internal value representation
|
||||||
virtual
|
virtual
|
||||||
unsigned char*
|
unsigned char*
|
||||||
@ -611,17 +609,17 @@ namespace MED
|
|||||||
//! The class is a helper one. It provide safe and flexible way to get access to values for a MED TimeStamp
|
//! The class is a helper one. It provide safe and flexible way to get access to values for a MED TimeStamp
|
||||||
template<class TValueType>
|
template<class TValueType>
|
||||||
struct TTMeshValue:
|
struct TTMeshValue:
|
||||||
virtual TMeshValueBase
|
virtual TMeshValueBase
|
||||||
{
|
{
|
||||||
typedef TValueType TValue;
|
typedef TValueType TValue;
|
||||||
typedef typename TValueType::value_type TElement;
|
typedef typename TValueType::value_type TElement;
|
||||||
|
|
||||||
typedef TSlice<TElement> TValueSlice;
|
typedef TSlice<TElement> TValueSlice;
|
||||||
typedef TCSlice<TElement> TCValueSlice;
|
typedef TCSlice<TElement> TCValueSlice;
|
||||||
|
|
||||||
typedef TVector<TCValueSlice> TCValueSliceArr;
|
typedef TVector<TCValueSlice> TCValueSliceArr;
|
||||||
typedef TVector<TValueSlice> TValueSliceArr;
|
typedef TVector<TValueSlice> TValueSliceArr;
|
||||||
|
|
||||||
TValue myValue;
|
TValue myValue;
|
||||||
|
|
||||||
//! Initialize the class
|
//! Initialize the class
|
||||||
@ -682,7 +680,7 @@ namespace MED
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Iteration through Gauss Points by their components
|
//! Iteration through Gauss Points by their components
|
||||||
TValueSliceArr
|
TValueSliceArr
|
||||||
GetGaussValueSliceArr(TInt theElemId)
|
GetGaussValueSliceArr(TInt theElemId)
|
||||||
{
|
{
|
||||||
TValueSliceArr aValueSliceArr(myNbGauss);
|
TValueSliceArr aValueSliceArr(myNbGauss);
|
||||||
@ -726,7 +724,7 @@ namespace MED
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Iteration through components by corresponding Gauss Points
|
//! Iteration through components by corresponding Gauss Points
|
||||||
TValueSliceArr
|
TValueSliceArr
|
||||||
GetCompValueSliceArr(TInt theElemId)
|
GetCompValueSliceArr(TInt theElemId)
|
||||||
{
|
{
|
||||||
if(GetModeSwitch() == eFULL_INTERLACE){
|
if(GetModeSwitch() == eFULL_INTERLACE){
|
||||||
@ -750,18 +748,19 @@ namespace MED
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
typedef TTMeshValue<TFloatVector> TFloatMeshValue;
|
typedef TTMeshValue<TFloatVector> TFloatMeshValue;
|
||||||
typedef TTMeshValue<TIntVector> TIntMeshValue;
|
typedef TTMeshValue<TIntVector> TIntMeshValue;
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
// Backward compatibility declarations
|
// Backward compatibility declarations
|
||||||
typedef TFloatVector TValue;
|
typedef TFloatVector TValue;
|
||||||
typedef TSlice<TFloat> TValueSlice;
|
typedef TSlice<TFloat> TValueSlice;
|
||||||
typedef TCSlice<TFloat> TCValueSlice;
|
typedef TCSlice<TFloat> TCValueSlice;
|
||||||
|
|
||||||
typedef TVector<TCValueSlice> TCValueSliceArr;
|
typedef TVector<TCValueSlice> TCValueSliceArr;
|
||||||
typedef TVector<TValueSlice> TValueSliceArr;
|
typedef TVector<TValueSlice> TValueSliceArr;
|
||||||
|
|
||||||
typedef TFloatMeshValue TMeshValue;
|
typedef TFloatMeshValue TMeshValue;
|
||||||
typedef std::map<EGeometrieElement,TMeshValue> TGeom2Value;
|
typedef std::map<EGeometrieElement,TMeshValue> TGeom2Value;
|
||||||
|
|
||||||
@ -769,61 +768,61 @@ namespace MED
|
|||||||
typedef std::map<EGeometrieElement,PProfileInfo> TGeom2Profile;
|
typedef std::map<EGeometrieElement,PProfileInfo> TGeom2Profile;
|
||||||
typedef std::set<EGeometrieElement> TGeom;
|
typedef std::set<EGeometrieElement> TGeom;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! The class is a base class for MED TimeStamp values holder
|
//! The class is a base class for MED TimeStamp values holder
|
||||||
struct MEDWRAPPER_EXPORT TTimeStampValueBase:
|
struct MEDWRAPPER_EXPORT TTimeStampValueBase:
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
//! A reference to correspondig MED TimeStamp
|
//! A reference to correspondig MED TimeStamp
|
||||||
PTimeStampInfo myTimeStampInfo;
|
PTimeStampInfo myTimeStampInfo;
|
||||||
//!< Get a reference to correspondig MED TimeStamp
|
//!< Get a reference to correspondig MED TimeStamp
|
||||||
const PTimeStampInfo& GetTimeStampInfo() const { return myTimeStampInfo;}
|
const PTimeStampInfo& GetTimeStampInfo() const { return myTimeStampInfo; }
|
||||||
|
|
||||||
//! Keeps set of MED EGeometrieElement which contains values for the timestamp
|
//! Keeps set of MED EGeometrieElement which contains values for the timestamp
|
||||||
TGeomSet myGeomSet;
|
TGeomSet myGeomSet;
|
||||||
const TGeomSet& GetGeomSet() const { return myGeomSet;}
|
const TGeomSet& GetGeomSet() const { return myGeomSet; }
|
||||||
|
|
||||||
//! Keeps map of MED Profiles per geometric type
|
//! Keeps map of MED Profiles per geometric type
|
||||||
TGeom2Profile myGeom2Profile;
|
TGeom2Profile myGeom2Profile;
|
||||||
//! Gets a map of MED Profiles per geometric type
|
//! Gets a map of MED Profiles per geometric type
|
||||||
const TGeom2Profile& GetGeom2Profile() const { return myGeom2Profile;}
|
const TGeom2Profile& GetGeom2Profile() const { return myGeom2Profile; }
|
||||||
|
|
||||||
//! Gets type of the champ
|
//! Gets type of the champ
|
||||||
virtual
|
virtual
|
||||||
ETypeChamp
|
ETypeChamp
|
||||||
GetTypeChamp() const = 0;
|
GetTypeChamp() const = 0;
|
||||||
|
|
||||||
//! Allocates values for the given geometry
|
//! Allocates values for the given geometry
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
AllocateValue(EGeometrieElement theGeom,
|
AllocateValue(EGeometrieElement theGeom,
|
||||||
TInt theNbElem,
|
TInt theNbElem,
|
||||||
TInt theNbGauss,
|
TInt theNbGauss,
|
||||||
TInt theNbComp,
|
TInt theNbComp,
|
||||||
EModeSwitch theMode = eFULL_INTERLACE) = 0;
|
EModeSwitch theMode = eFULL_INTERLACE) = 0;
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
size_t
|
size_t
|
||||||
GetValueSize(EGeometrieElement theGeom) const = 0;
|
GetValueSize(EGeometrieElement theGeom) const = 0;
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
size_t
|
size_t
|
||||||
GetNbVal(EGeometrieElement theGeom) const = 0;
|
GetNbVal(EGeometrieElement theGeom) const = 0;
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
size_t
|
size_t
|
||||||
GetNbGauss(EGeometrieElement theGeom) const = 0;
|
GetNbGauss(EGeometrieElement theGeom) const = 0;
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
unsigned char*
|
unsigned char*
|
||||||
GetValuePtr(EGeometrieElement theGeom) = 0;
|
GetValuePtr(EGeometrieElement theGeom) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
//! The class implements a container for MED TimeStamp values
|
//! The class implements a container for MED TimeStamp values
|
||||||
template<class TMeshValueType>
|
template<class TMeshValueType>
|
||||||
struct TTimeStampValue:
|
struct TTimeStampValue:
|
||||||
virtual TTimeStampValueBase
|
virtual TTimeStampValueBase
|
||||||
{
|
{
|
||||||
typedef TMeshValueType TTMeshValue;
|
typedef TMeshValueType TTMeshValue;
|
||||||
typedef SharedPtr<TMeshValueType> PTMeshValue;
|
typedef SharedPtr<TMeshValueType> PTMeshValue;
|
||||||
@ -833,7 +832,7 @@ namespace MED
|
|||||||
ETypeChamp myTypeChamp; //<! Keeps type of the champ
|
ETypeChamp myTypeChamp; //<! Keeps type of the champ
|
||||||
|
|
||||||
//! Gets type of the champ
|
//! Gets type of the champ
|
||||||
virtual
|
virtual
|
||||||
ETypeChamp
|
ETypeChamp
|
||||||
GetTypeChamp() const
|
GetTypeChamp() const
|
||||||
{
|
{
|
||||||
@ -843,14 +842,14 @@ namespace MED
|
|||||||
//! Keeps map of MED TimeStamp values per geometric type (const version)
|
//! Keeps map of MED TimeStamp values per geometric type (const version)
|
||||||
TTGeom2Value myGeom2Value;
|
TTGeom2Value myGeom2Value;
|
||||||
|
|
||||||
const TTGeom2Value&
|
const TTGeom2Value&
|
||||||
GetGeom2Value() const
|
GetGeom2Value() const
|
||||||
{
|
{
|
||||||
return myGeom2Value;
|
return myGeom2Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Gets MED TimeStamp values for the given geometric type (const version)
|
//! Gets MED TimeStamp values for the given geometric type (const version)
|
||||||
const PTMeshValue&
|
const PTMeshValue&
|
||||||
GetMeshValuePtr(EGeometrieElement theGeom) const
|
GetMeshValuePtr(EGeometrieElement theGeom) const
|
||||||
{
|
{
|
||||||
typename TTGeom2Value::const_iterator anIter = myGeom2Value.find(theGeom);
|
typename TTGeom2Value::const_iterator anIter = myGeom2Value.find(theGeom);
|
||||||
@ -860,7 +859,7 @@ namespace MED
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Gets MED TimeStamp values for the given geometric type
|
//! Gets MED TimeStamp values for the given geometric type
|
||||||
PTMeshValue&
|
PTMeshValue&
|
||||||
GetMeshValuePtr(EGeometrieElement theGeom)
|
GetMeshValuePtr(EGeometrieElement theGeom)
|
||||||
{
|
{
|
||||||
myGeomSet.insert(theGeom);
|
myGeomSet.insert(theGeom);
|
||||||
@ -872,21 +871,20 @@ namespace MED
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Gets MED TimeStamp values for the given geometric type (const version)
|
//! Gets MED TimeStamp values for the given geometric type (const version)
|
||||||
const TTMeshValue&
|
const TTMeshValue&
|
||||||
GetMeshValue(EGeometrieElement theGeom) const
|
GetMeshValue(EGeometrieElement theGeom) const
|
||||||
{
|
{
|
||||||
return *(this->GetMeshValuePtr(theGeom));
|
return *(this->GetMeshValuePtr(theGeom));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Gets MED TimeStamp values for the given geometric type
|
//! Gets MED TimeStamp values for the given geometric type
|
||||||
TTMeshValue&
|
TTMeshValue&
|
||||||
GetMeshValue(EGeometrieElement theGeom)
|
GetMeshValue(EGeometrieElement theGeom)
|
||||||
{
|
{
|
||||||
return *(this->GetMeshValuePtr(theGeom));
|
return *(this->GetMeshValuePtr(theGeom));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef TTimeStampValue<TFloatMeshValue> TFloatTimeStampValue;
|
typedef TTimeStampValue<TFloatMeshValue> TFloatTimeStampValue;
|
||||||
typedef SharedPtr<TFloatTimeStampValue> PFloatTimeStampValue;
|
typedef SharedPtr<TFloatTimeStampValue> PFloatTimeStampValue;
|
||||||
@ -896,11 +894,10 @@ namespace MED
|
|||||||
|
|
||||||
typedef TTimeStampValue<TIntMeshValue> TIntTimeStampValue;
|
typedef TTimeStampValue<TIntMeshValue> TIntTimeStampValue;
|
||||||
typedef SharedPtr<TIntTimeStampValue> PIntTimeStampValue;
|
typedef SharedPtr<TIntTimeStampValue> PIntTimeStampValue;
|
||||||
|
|
||||||
PIntTimeStampValue MEDWRAPPER_EXPORT
|
PIntTimeStampValue MEDWRAPPER_EXPORT
|
||||||
CastToIntTimeStampValue(const PTimeStampValueBase& theTimeStampValue);
|
CastToIntTimeStampValue(const PTimeStampValueBase& theTimeStampValue);
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<class TMeshValueTypeFrom, class TMeshValueTypeTo>
|
template<class TMeshValueTypeFrom, class TMeshValueTypeTo>
|
||||||
void
|
void
|
||||||
@ -917,8 +914,8 @@ namespace MED
|
|||||||
const EGeometrieElement& aGeom = anIter->first;
|
const EGeometrieElement& aGeom = anIter->first;
|
||||||
const typename TimeStampValueTypeFrom::TTMeshValue& aMeshValue = *anIter->second;
|
const typename TimeStampValueTypeFrom::TTMeshValue& aMeshValue = *anIter->second;
|
||||||
typename TimeStampValueTypeTo::TTMeshValue& aMeshValue2 = theTimeStampValueTo->GetMeshValue(aGeom);
|
typename TimeStampValueTypeTo::TTMeshValue& aMeshValue2 = theTimeStampValueTo->GetMeshValue(aGeom);
|
||||||
aMeshValue2.Allocate(aMeshValue.myNbElem,
|
aMeshValue2.Allocate(aMeshValue.myNbElem,
|
||||||
aMeshValue.myNbGauss,
|
aMeshValue.myNbGauss,
|
||||||
aMeshValue.myNbComp,
|
aMeshValue.myNbComp,
|
||||||
aMeshValue.myModeSwitch);
|
aMeshValue.myModeSwitch);
|
||||||
const typename TimeStampValueTypeFrom::TTMeshValue::TValue& aValue = aMeshValue.myValue;
|
const typename TimeStampValueTypeFrom::TTMeshValue::TValue& aValue = aMeshValue.myValue;
|
||||||
@ -929,6 +926,7 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
template<class TMeshValueType>
|
template<class TMeshValueType>
|
||||||
void
|
void
|
||||||
CopyTimeStampValue(SharedPtr<TTimeStampValue<TMeshValueType> > theTimeStampValueFrom,
|
CopyTimeStampValue(SharedPtr<TTimeStampValue<TMeshValueType> > theTimeStampValueFrom,
|
||||||
@ -948,7 +946,7 @@ namespace MED
|
|||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
inline
|
inline
|
||||||
void
|
void
|
||||||
CopyTimeStampValueBase(const PTimeStampValueBase& theValueFrom,
|
CopyTimeStampValueBase(const PTimeStampValueBase& theValueFrom,
|
||||||
const PTimeStampValueBase& theValueTo)
|
const PTimeStampValueBase& theValueTo)
|
||||||
{
|
{
|
||||||
if(theValueFrom->GetTypeChamp() == theValueTo->GetTypeChamp()){
|
if(theValueFrom->GetTypeChamp() == theValueTo->GetTypeChamp()){
|
||||||
@ -964,23 +962,22 @@ namespace MED
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
// Backward compatibility declarations
|
// Backward compatibility declarations
|
||||||
typedef TFloatTimeStampValue TTimeStampVal;
|
typedef TFloatTimeStampValue TTimeStampVal;
|
||||||
typedef PFloatTimeStampValue PTimeStampVal;
|
typedef PFloatTimeStampValue PTimeStampVal;
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
typedef std::map<TInt,TFloatVector> TIndexes;
|
typedef std::map<TInt,TFloatVector> TIndexes;
|
||||||
typedef std::map<TInt,TString> TNames;
|
typedef std::map<TInt,TString> TNames;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------
|
||||||
//! Define a base class which represents MED Grille (structured mesh)
|
//! Define a base class which represents MED Grille (structured mesh)
|
||||||
struct MEDWRAPPER_EXPORT TGrilleInfo:
|
struct MEDWRAPPER_EXPORT TGrilleInfo:
|
||||||
virtual TModeSwitchInfo
|
virtual TModeSwitchInfo
|
||||||
{
|
{
|
||||||
|
|
||||||
PMeshInfo myMeshInfo;
|
PMeshInfo myMeshInfo;
|
||||||
const PMeshInfo& GetMeshInfo() const { return myMeshInfo;}
|
const PMeshInfo& GetMeshInfo() const { return myMeshInfo; }
|
||||||
|
|
||||||
TNodeCoord myCoord; //!< Contains all nodal coordinates, now used only for eGRILLE_STANDARD
|
TNodeCoord myCoord; //!< Contains all nodal coordinates, now used only for eGRILLE_STANDARD
|
||||||
//! Gives coordinates for mesh nodes (const version)
|
//! Gives coordinates for mesh nodes (const version)
|
||||||
@ -999,8 +996,6 @@ namespace MED
|
|||||||
//!Sets grille type
|
//!Sets grille type
|
||||||
void SetGrilleType(EGrilleType theGrilleType);
|
void SetGrilleType(EGrilleType theGrilleType);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TString myCoordNames; //!< Contains names for the coordinate dimensions
|
TString myCoordNames; //!< Contains names for the coordinate dimensions
|
||||||
//! Get name of the coordinate dimension by its order number
|
//! Get name of the coordinate dimension by its order number
|
||||||
virtual std::string GetCoordName(TInt theId) const = 0 ;
|
virtual std::string GetCoordName(TInt theId) const = 0 ;
|
||||||
@ -1013,7 +1008,6 @@ namespace MED
|
|||||||
//! Set name of unit for the coordinate dimension by its order number
|
//! Set name of unit for the coordinate dimension by its order number
|
||||||
virtual void SetCoordUnit(TInt theId, const std::string& theValue) = 0;
|
virtual void SetCoordUnit(TInt theId, const std::string& theValue) = 0;
|
||||||
|
|
||||||
|
|
||||||
//! Map of index of axes and Table of indexes for certain axe, now used for eGRILLE_CARTESIENNE and eGRILLE_POLAIRE
|
//! Map of index of axes and Table of indexes for certain axe, now used for eGRILLE_CARTESIENNE and eGRILLE_POLAIRE
|
||||||
TIndexes myIndixes;
|
TIndexes myIndixes;
|
||||||
//!Gets a map of Tables (const version)
|
//!Gets a map of Tables (const version)
|
||||||
@ -1026,7 +1020,7 @@ namespace MED
|
|||||||
TFloatVector& GetIndexes(TInt theAxisNumber);
|
TFloatVector& GetIndexes(TInt theAxisNumber);
|
||||||
//!Gets a number of indices per axe
|
//!Gets a number of indices per axe
|
||||||
TInt GetNbIndexes(TInt theAxisNumber);
|
TInt GetNbIndexes(TInt theAxisNumber);
|
||||||
|
|
||||||
TInt GetNbNodes();//! Return count of all points
|
TInt GetNbNodes();//! Return count of all points
|
||||||
TInt GetNbCells();//! Return count of all cells
|
TInt GetNbCells();//! Return count of all cells
|
||||||
TInt GetNbSubCells();//! Return count of all entities of <mesh dimension-1>
|
TInt GetNbSubCells();//! Return count of all entities of <mesh dimension-1>
|
||||||
@ -1045,37 +1039,34 @@ namespace MED
|
|||||||
TIntVector GetGrilleStructure();
|
TIntVector GetGrilleStructure();
|
||||||
//!Sets the grille structure of theAxis axe to theNb.
|
//!Sets the grille structure of theAxis axe to theNb.
|
||||||
void SetGrilleStructure(TInt theAxis,TInt theNb);
|
void SetGrilleStructure(TInt theAxis,TInt theNb);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*Defines sequence MED Family indexes for corresponding mesh entites
|
*Defines sequence MED Family indexes for corresponding mesh entites
|
||||||
*/
|
*/
|
||||||
TElemNum myFamNum;
|
TElemNum myFamNum;
|
||||||
//! Get number of a MED FAMILY by order number of the mesh element
|
//! Get number of a MED FAMILY by order number of the mesh element
|
||||||
TInt GetFamNum(TInt theId) const;
|
TInt GetFamNum(TInt theId) const;
|
||||||
//! Set number of a MED FAMILY for the mesh element with the order number
|
//! Set number of a MED FAMILY for the mesh element with the order number
|
||||||
void SetFamNum(TInt theId, TInt theVal);
|
void SetFamNum(TInt theId, TInt theVal);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*Defines sequence MED Family indexes for sub entites
|
*Defines sequence MED Family indexes for sub entites
|
||||||
*/
|
*/
|
||||||
TElemNum myFamSubNum;
|
TElemNum myFamSubNum;
|
||||||
//! Get number of a MED FAMILY by order number of sub element
|
//! Get number of a MED FAMILY by order number of sub element
|
||||||
TInt GetFamSubNum(TInt theId) const;
|
TInt GetFamSubNum(TInt theId) const;
|
||||||
//! Set number of a MED FAMILY for theId-th sub element
|
//! Set number of a MED FAMILY for theId-th sub element
|
||||||
void SetFamSubNum(TInt theId, TInt theVal);
|
void SetFamSubNum(TInt theId, TInt theVal);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*Defines sequence MED Family indexes for corresponding mesh nodes
|
*Defines sequence MED Family indexes for corresponding mesh nodes
|
||||||
*/
|
*/
|
||||||
TElemNum myFamNumNode;
|
TElemNum myFamNumNode;
|
||||||
//! Get number of a MED FAMILY by order number of the mesh node
|
//! Get number of a MED FAMILY by order number of the mesh node
|
||||||
TInt GetFamNumNode(TInt theId) const;
|
TInt GetFamNumNode(TInt theId) const;
|
||||||
//! Set number of a MED FAMILY for the mesh node with the order number
|
//! Set number of a MED FAMILY for the mesh node with the order number
|
||||||
void SetFamNumNode(TInt theId, TInt theVal);
|
void SetFamNumNode(TInt theId, TInt theVal);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_Structures_HeaderFile
|
@ -19,6 +19,7 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_TStructures_HeaderFile
|
#ifndef MED_TStructures_HeaderFile
|
||||||
#define MED_TStructures_HeaderFile
|
#define MED_TStructures_HeaderFile
|
||||||
|
|
||||||
@ -91,12 +92,11 @@ namespace MED
|
|||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTNameInfo: virtual TNameInfo
|
struct TTNameInfo: virtual TNameInfo
|
||||||
{
|
{
|
||||||
TTNameInfo(const std::string& theValue)
|
TTNameInfo(const std::string& theValue)
|
||||||
{
|
{
|
||||||
myName.resize(GetNOMLength<eVersion>()+1);
|
myName.resize(GetNOMLength()+1);
|
||||||
SetName(theValue);
|
SetName(theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,32 +104,30 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetName() const
|
GetName() const
|
||||||
{
|
{
|
||||||
return GetString(0, GetNOMLength<eVersion>(), myName);
|
return GetString(0, GetNOMLength(), myName);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetName(const std::string& theValue)
|
SetName(const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(0, GetNOMLength<eVersion>(), myName, theValue);
|
SetString(0, GetNOMLength(), myName, theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetName(const TString& theValue)
|
SetName(const TString& theValue)
|
||||||
{
|
{
|
||||||
SetString(0, GetNOMLength<eVersion>(), myName, theValue);
|
SetString(0, GetNOMLength(), myName, theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTMeshInfo:
|
struct TTMeshInfo:
|
||||||
virtual TMeshInfo,
|
virtual TMeshInfo,
|
||||||
virtual TTNameInfo<eVersion>
|
virtual TTNameInfo
|
||||||
{
|
{
|
||||||
typedef TTNameInfo<eVersion> TNameInfoBase;
|
typedef TTNameInfo TNameInfoBase;
|
||||||
|
|
||||||
TTMeshInfo(const PMeshInfo& theInfo):
|
TTMeshInfo(const PMeshInfo& theInfo):
|
||||||
TNameInfoBase(theInfo->GetName())
|
TNameInfoBase(theInfo->GetName())
|
||||||
@ -138,7 +136,7 @@ namespace MED
|
|||||||
mySpaceDim = theInfo->GetSpaceDim();
|
mySpaceDim = theInfo->GetSpaceDim();
|
||||||
myType = theInfo->GetType();
|
myType = theInfo->GetType();
|
||||||
|
|
||||||
myDesc.resize(GetDESCLength<eVersion>()+1);
|
myDesc.resize(GetDESCLength()+1);
|
||||||
SetDesc(theInfo->GetDesc());
|
SetDesc(theInfo->GetDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,7 +150,7 @@ namespace MED
|
|||||||
mySpaceDim = theSpaceDim;
|
mySpaceDim = theSpaceDim;
|
||||||
myType = theType;
|
myType = theType;
|
||||||
|
|
||||||
myDesc.resize(GetDESCLength<eVersion>()+1);
|
myDesc.resize(GetDESCLength()+1);
|
||||||
SetDesc(theDesc);
|
SetDesc(theDesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,25 +158,23 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetDesc() const
|
GetDesc() const
|
||||||
{
|
{
|
||||||
return GetString(0, GetDESCLength<eVersion>(), myDesc);
|
return GetString(0, GetDESCLength(), myDesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetDesc(const std::string& theValue)
|
SetDesc(const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(0, GetDESCLength<eVersion>(), myDesc, theValue);
|
SetString(0, GetDESCLength(), myDesc, theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTFamilyInfo:
|
struct TTFamilyInfo:
|
||||||
virtual TFamilyInfo,
|
virtual TFamilyInfo,
|
||||||
virtual TTNameInfo<eVersion>
|
virtual TTNameInfo
|
||||||
{
|
{
|
||||||
typedef TTNameInfo<eVersion> TNameInfoBase;
|
typedef TTNameInfo TNameInfoBase;
|
||||||
|
|
||||||
TTFamilyInfo(const PMeshInfo& theMeshInfo, const PFamilyInfo& theInfo):
|
TTFamilyInfo(const PMeshInfo& theMeshInfo, const PFamilyInfo& theInfo):
|
||||||
TNameInfoBase(theInfo->GetName())
|
TNameInfoBase(theInfo->GetName())
|
||||||
@ -188,7 +184,7 @@ namespace MED
|
|||||||
myId = theInfo->GetId();
|
myId = theInfo->GetId();
|
||||||
|
|
||||||
myNbGroup = theInfo->GetNbGroup();
|
myNbGroup = theInfo->GetNbGroup();
|
||||||
myGroupNames.resize(myNbGroup*GetLNOMLength<eVersion>()+1);
|
myGroupNames.resize(myNbGroup*GetLNOMLength()+1);
|
||||||
if(myNbGroup){
|
if(myNbGroup){
|
||||||
for(TInt anId = 0; anId < myNbGroup; anId++){
|
for(TInt anId = 0; anId < myNbGroup; anId++){
|
||||||
SetGroupName(anId,theInfo->GetGroupName(anId));
|
SetGroupName(anId,theInfo->GetGroupName(anId));
|
||||||
@ -198,7 +194,7 @@ namespace MED
|
|||||||
myNbAttr = theInfo->GetNbAttr();
|
myNbAttr = theInfo->GetNbAttr();
|
||||||
myAttrId.resize(myNbAttr);
|
myAttrId.resize(myNbAttr);
|
||||||
myAttrVal.resize(myNbAttr);
|
myAttrVal.resize(myNbAttr);
|
||||||
myAttrDesc.resize(myNbAttr*GetDESCLength<eVersion>()+1);
|
myAttrDesc.resize(myNbAttr*GetDESCLength()+1);
|
||||||
if(myNbAttr){
|
if(myNbAttr){
|
||||||
for(TInt anId = 0; anId < myNbAttr; anId++){
|
for(TInt anId = 0; anId < myNbAttr; anId++){
|
||||||
SetAttrDesc(anId,theInfo->GetAttrDesc(anId));
|
SetAttrDesc(anId,theInfo->GetAttrDesc(anId));
|
||||||
@ -220,12 +216,12 @@ namespace MED
|
|||||||
myId = theId;
|
myId = theId;
|
||||||
|
|
||||||
myNbGroup = theNbGroup;
|
myNbGroup = theNbGroup;
|
||||||
myGroupNames.resize(theNbGroup*GetLNOMLength<eVersion>()+1);
|
myGroupNames.resize(theNbGroup*GetLNOMLength()+1);
|
||||||
|
|
||||||
myNbAttr = theNbAttr;
|
myNbAttr = theNbAttr;
|
||||||
myAttrId.resize(theNbAttr);
|
myAttrId.resize(theNbAttr);
|
||||||
myAttrVal.resize(theNbAttr);
|
myAttrVal.resize(theNbAttr);
|
||||||
myAttrDesc.resize(theNbAttr*GetDESCLength<eVersion>()+1);
|
myAttrDesc.resize(theNbAttr*GetDESCLength()+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TTFamilyInfo(const PMeshInfo& theMeshInfo,
|
TTFamilyInfo(const PMeshInfo& theMeshInfo,
|
||||||
@ -242,7 +238,7 @@ namespace MED
|
|||||||
myId = theId;
|
myId = theId;
|
||||||
|
|
||||||
myNbGroup = (TInt)theGroupNames.size();
|
myNbGroup = (TInt)theGroupNames.size();
|
||||||
myGroupNames.resize(myNbGroup*GetLNOMLength<eVersion>()+1);
|
myGroupNames.resize(myNbGroup*GetLNOMLength()+1);
|
||||||
if(myNbGroup){
|
if(myNbGroup){
|
||||||
TStringSet::const_iterator anIter = theGroupNames.begin();
|
TStringSet::const_iterator anIter = theGroupNames.begin();
|
||||||
for(TInt anId = 0; anIter != theGroupNames.end(); anIter++, anId++){
|
for(TInt anId = 0; anIter != theGroupNames.end(); anIter++, anId++){
|
||||||
@ -254,7 +250,7 @@ namespace MED
|
|||||||
myNbAttr = (TInt)theAttrDescs.size();
|
myNbAttr = (TInt)theAttrDescs.size();
|
||||||
myAttrId.resize(myNbAttr);
|
myAttrId.resize(myNbAttr);
|
||||||
myAttrVal.resize(myNbAttr);
|
myAttrVal.resize(myNbAttr);
|
||||||
myAttrDesc.resize(myNbAttr*GetDESCLength<eVersion>()+1);
|
myAttrDesc.resize(myNbAttr*GetDESCLength()+1);
|
||||||
if(myNbAttr){
|
if(myNbAttr){
|
||||||
for(TInt anId = 0, anEnd = (TInt)theAttrDescs.size(); anId < anEnd; anId++){
|
for(TInt anId = 0, anEnd = (TInt)theAttrDescs.size(); anId < anEnd; anId++){
|
||||||
SetAttrDesc(anId,theAttrDescs[anId]);
|
SetAttrDesc(anId,theAttrDescs[anId]);
|
||||||
@ -268,34 +264,32 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetGroupName(TInt theId) const
|
GetGroupName(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId, GetLNOMLength<eVersion>(), myGroupNames);
|
return GetString(theId, GetLNOMLength(), myGroupNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetGroupName(TInt theId, const std::string& theValue)
|
SetGroupName(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId, GetLNOMLength<eVersion>(), myGroupNames, theValue);
|
SetString(theId, GetLNOMLength(), myGroupNames, theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
std::string
|
std::string
|
||||||
GetAttrDesc(TInt theId) const
|
GetAttrDesc(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId, GetDESCLength<eVersion>(), myAttrDesc);
|
return GetString(theId, GetDESCLength(), myAttrDesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetAttrDesc(TInt theId, const std::string& theValue)
|
SetAttrDesc(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId, GetDESCLength<eVersion>(), myAttrDesc, theValue);
|
SetString(theId, GetDESCLength(), myAttrDesc, theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTElemInfo: virtual TElemInfo
|
struct TTElemInfo: virtual TElemInfo
|
||||||
{
|
{
|
||||||
TTElemInfo(const PMeshInfo& theMeshInfo, const PElemInfo& theInfo)
|
TTElemInfo(const PMeshInfo& theMeshInfo, const PElemInfo& theInfo)
|
||||||
@ -314,7 +308,7 @@ namespace MED
|
|||||||
|
|
||||||
myIsElemNames = theInfo->IsElemNames();
|
myIsElemNames = theInfo->IsElemNames();
|
||||||
if(theInfo->IsElemNames())
|
if(theInfo->IsElemNames())
|
||||||
myElemNames.reset(new TString(myNbElem*GetPNOMLength<eVersion>() + 1));
|
myElemNames.reset(new TString(myNbElem*GetPNOMLength() + 1));
|
||||||
else
|
else
|
||||||
myElemNames.reset(new TString());
|
myElemNames.reset(new TString());
|
||||||
|
|
||||||
@ -354,7 +348,7 @@ namespace MED
|
|||||||
|
|
||||||
myIsElemNames = theIsElemNames;
|
myIsElemNames = theIsElemNames;
|
||||||
if(theIsElemNames)
|
if(theIsElemNames)
|
||||||
myElemNames.reset(new TString(theNbElem*GetPNOMLength<eVersion>() + 1));
|
myElemNames.reset(new TString(theNbElem*GetPNOMLength() + 1));
|
||||||
else
|
else
|
||||||
myElemNames.reset(new TString());
|
myElemNames.reset(new TString());
|
||||||
}
|
}
|
||||||
@ -379,7 +373,7 @@ namespace MED
|
|||||||
|
|
||||||
myIsElemNames = theElemNames.size()? eVRAI: eFAUX;
|
myIsElemNames = theElemNames.size()? eVRAI: eFAUX;
|
||||||
if(myIsElemNames)
|
if(myIsElemNames)
|
||||||
myElemNames.reset(new TString(theNbElem*GetPNOMLength<eVersion>() + 1));
|
myElemNames.reset(new TString(theNbElem*GetPNOMLength() + 1));
|
||||||
else
|
else
|
||||||
myElemNames.reset(new TString());
|
myElemNames.reset(new TString());
|
||||||
|
|
||||||
@ -404,25 +398,23 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetElemName(TInt theId) const
|
GetElemName(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(), *myElemNames);
|
return GetString(theId,GetPNOMLength(), *myElemNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetElemName(TInt theId, const std::string& theValue)
|
SetElemName(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(), *myElemNames, theValue);
|
SetString(theId,GetPNOMLength(), *myElemNames, theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTNodeInfo:
|
struct TTNodeInfo:
|
||||||
virtual TNodeInfo,
|
virtual TNodeInfo,
|
||||||
virtual TTElemInfo<eVersion>
|
virtual TTElemInfo
|
||||||
{
|
{
|
||||||
typedef TTElemInfo<eVersion> TElemInfoBase;
|
typedef TTElemInfo TElemInfoBase;
|
||||||
|
|
||||||
TTNodeInfo(const PMeshInfo& theMeshInfo, const PNodeInfo& theInfo):
|
TTNodeInfo(const PMeshInfo& theMeshInfo, const PNodeInfo& theInfo):
|
||||||
TNodeInfo(theInfo),
|
TNodeInfo(theInfo),
|
||||||
@ -436,11 +428,11 @@ namespace MED
|
|||||||
|
|
||||||
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
||||||
|
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
||||||
SetCoordName(anId,theInfo->GetCoordName(anId));
|
SetCoordName(anId,theInfo->GetCoordName(anId));
|
||||||
|
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
||||||
SetCoordUnit(anId,theInfo->GetCoordUnit(anId));
|
SetCoordUnit(anId,theInfo->GetCoordUnit(anId));
|
||||||
}
|
}
|
||||||
@ -461,9 +453,9 @@ namespace MED
|
|||||||
|
|
||||||
myCoord.reset(new TNodeCoord(theNbElem * theMeshInfo->mySpaceDim));
|
myCoord.reset(new TNodeCoord(theNbElem * theMeshInfo->mySpaceDim));
|
||||||
|
|
||||||
myCoordUnits.resize(theMeshInfo->mySpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordUnits.resize(theMeshInfo->mySpaceDim*GetPNOMLength()+1);
|
||||||
|
|
||||||
myCoordNames.resize(theMeshInfo->mySpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordNames.resize(theMeshInfo->mySpaceDim*GetPNOMLength()+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -489,12 +481,12 @@ namespace MED
|
|||||||
|
|
||||||
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
||||||
|
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
if(!theCoordNames.empty())
|
if(!theCoordNames.empty())
|
||||||
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
||||||
SetCoordName(anId,theCoordNames[anId]);
|
SetCoordName(anId,theCoordNames[anId]);
|
||||||
|
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>() + 1);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength() + 1);
|
||||||
if(!theCoordUnits.empty())
|
if(!theCoordUnits.empty())
|
||||||
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
for(TInt anId = 0; anId < aSpaceDim; anId++)
|
||||||
SetCoordUnit(anId, theCoordUnits[anId]);
|
SetCoordUnit(anId, theCoordUnits[anId]);
|
||||||
@ -504,38 +496,37 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetCoordName(TInt theId) const
|
GetCoordName(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(),myCoordNames);
|
return GetString(theId,GetPNOMLength(),myCoordNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetCoordName(TInt theId, const std::string& theValue)
|
SetCoordName(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(),myCoordNames,theValue);
|
SetString(theId,GetPNOMLength(),myCoordNames,theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
std::string
|
std::string
|
||||||
GetCoordUnit(TInt theId) const
|
GetCoordUnit(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(),myCoordUnits);
|
return GetString(theId,GetPNOMLength(),myCoordUnits);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetCoordUnit(TInt theId, const std::string& theValue)
|
SetCoordUnit(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(),myCoordUnits,theValue);
|
SetString(theId,GetPNOMLength(),myCoordUnits,theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTPolygoneInfo:
|
struct TTPolygoneInfo:
|
||||||
virtual TPolygoneInfo,
|
virtual TPolygoneInfo,
|
||||||
virtual TTElemInfo<eVersion>
|
virtual TTElemInfo
|
||||||
{
|
{
|
||||||
typedef TTElemInfo<eVersion> TElemInfoBase;
|
typedef TTElemInfo TElemInfoBase;
|
||||||
|
|
||||||
TTPolygoneInfo(const PMeshInfo& theMeshInfo, const PPolygoneInfo& theInfo):
|
TTPolygoneInfo(const PMeshInfo& theMeshInfo, const PPolygoneInfo& theInfo):
|
||||||
TElemInfoBase(theMeshInfo,theInfo)
|
TElemInfoBase(theMeshInfo,theInfo)
|
||||||
@ -597,12 +588,11 @@ namespace MED
|
|||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTPolyedreInfo:
|
struct TTPolyedreInfo:
|
||||||
virtual TPolyedreInfo,
|
virtual TPolyedreInfo,
|
||||||
virtual TTElemInfo<eVersion>
|
virtual TTElemInfo
|
||||||
{
|
{
|
||||||
typedef TTElemInfo<eVersion> TElemInfoBase;
|
typedef TTElemInfo TElemInfoBase;
|
||||||
|
|
||||||
TTPolyedreInfo(const PMeshInfo& theMeshInfo, const PPolyedreInfo& theInfo):
|
TTPolyedreInfo(const PMeshInfo& theMeshInfo, const PPolyedreInfo& theInfo):
|
||||||
TElemInfoBase(theMeshInfo,theInfo)
|
TElemInfoBase(theMeshInfo,theInfo)
|
||||||
@ -669,12 +659,11 @@ namespace MED
|
|||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTCellInfo:
|
struct TTCellInfo:
|
||||||
virtual TCellInfo,
|
virtual TCellInfo,
|
||||||
virtual TTElemInfo<eVersion>
|
virtual TTElemInfo
|
||||||
{
|
{
|
||||||
typedef TTElemInfo<eVersion> TElemInfoBase;
|
typedef TTElemInfo TElemInfoBase;
|
||||||
|
|
||||||
TTCellInfo(const PMeshInfo& theMeshInfo, const PCellInfo& theInfo):
|
TTCellInfo(const PMeshInfo& theMeshInfo, const PCellInfo& theInfo):
|
||||||
TElemInfoBase(theMeshInfo,theInfo)
|
TElemInfoBase(theMeshInfo,theInfo)
|
||||||
@ -684,7 +673,7 @@ namespace MED
|
|||||||
myConnMode = theInfo->GetConnMode();
|
myConnMode = theInfo->GetConnMode();
|
||||||
|
|
||||||
TInt aConnDim = GetNbNodes(myGeom);
|
TInt aConnDim = GetNbNodes(myGeom);
|
||||||
TInt aNbConn = GetNbConn<eVersion>(myGeom, myEntity, myMeshInfo->myDim);
|
TInt aNbConn = GetNbConn(myGeom, myEntity, myMeshInfo->myDim);
|
||||||
myConn.reset(new TElemNum(myNbElem * aNbConn));
|
myConn.reset(new TElemNum(myNbElem * aNbConn));
|
||||||
for(TInt anElemId = 0; anElemId < myNbElem; anElemId++){
|
for(TInt anElemId = 0; anElemId < myNbElem; anElemId++){
|
||||||
TConnSlice aConnSlice = GetConnSlice(anElemId);
|
TConnSlice aConnSlice = GetConnSlice(anElemId);
|
||||||
@ -713,7 +702,7 @@ namespace MED
|
|||||||
myGeom = theGeom;
|
myGeom = theGeom;
|
||||||
|
|
||||||
myConnMode = theConnMode;
|
myConnMode = theConnMode;
|
||||||
TInt aNbConn = GetNbConn<eVersion>(theGeom, myEntity, theMeshInfo->myDim);
|
TInt aNbConn = GetNbConn(theGeom, myEntity, theMeshInfo->myDim);
|
||||||
myConn.reset(new TElemNum(theNbElem * aNbConn));
|
myConn.reset(new TElemNum(theNbElem * aNbConn));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -738,7 +727,7 @@ namespace MED
|
|||||||
|
|
||||||
myConnMode = theConnMode;
|
myConnMode = theConnMode;
|
||||||
TInt aConnDim = GetNbNodes(myGeom);
|
TInt aConnDim = GetNbNodes(myGeom);
|
||||||
TInt aNbConn = GetNbConn<eVersion>(myGeom, myEntity, myMeshInfo->myDim);
|
TInt aNbConn = GetNbConn(myGeom, myEntity, myMeshInfo->myDim);
|
||||||
myConn.reset(new TElemNum(myNbElem * aNbConn));
|
myConn.reset(new TElemNum(myNbElem * aNbConn));
|
||||||
for(TInt anElemId = 0; anElemId < myNbElem; anElemId++){
|
for(TInt anElemId = 0; anElemId < myNbElem; anElemId++){
|
||||||
TConnSlice aConnSlice = GetConnSlice(anElemId);
|
TConnSlice aConnSlice = GetConnSlice(anElemId);
|
||||||
@ -752,18 +741,17 @@ namespace MED
|
|||||||
TInt
|
TInt
|
||||||
GetConnDim() const
|
GetConnDim() const
|
||||||
{
|
{
|
||||||
return GetNbConn<eVersion>(myGeom, myEntity, myMeshInfo->myDim);
|
return GetNbConn(myGeom, myEntity, myMeshInfo->myDim);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTBallInfo:
|
struct TTBallInfo:
|
||||||
virtual TBallInfo,
|
virtual TBallInfo,
|
||||||
virtual TTCellInfo<eVersion>
|
virtual TTCellInfo
|
||||||
{
|
{
|
||||||
typedef TTCellInfo<eVersion> TCellInfoBase;
|
typedef TTCellInfo TCellInfoBase;
|
||||||
|
|
||||||
TTBallInfo(const PMeshInfo& theMeshInfo, const PBallInfo& theInfo):
|
TTBallInfo(const PMeshInfo& theMeshInfo, const PBallInfo& theInfo):
|
||||||
TCellInfoBase::TElemInfoBase(theMeshInfo, theInfo),
|
TCellInfoBase::TElemInfoBase(theMeshInfo, theInfo),
|
||||||
@ -816,12 +804,11 @@ namespace MED
|
|||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTFieldInfo:
|
struct TTFieldInfo:
|
||||||
virtual TFieldInfo,
|
virtual TFieldInfo,
|
||||||
virtual TTNameInfo<eVersion>
|
virtual TTNameInfo
|
||||||
{
|
{
|
||||||
typedef TTNameInfo<eVersion> TNameInfoBase;
|
typedef TTNameInfo TNameInfoBase;
|
||||||
|
|
||||||
TTFieldInfo(const PMeshInfo& theMeshInfo, const PFieldInfo& theInfo):
|
TTFieldInfo(const PMeshInfo& theMeshInfo, const PFieldInfo& theInfo):
|
||||||
TNameInfoBase(theInfo->GetName())
|
TNameInfoBase(theInfo->GetName())
|
||||||
@ -829,12 +816,12 @@ namespace MED
|
|||||||
myMeshInfo = theMeshInfo;
|
myMeshInfo = theMeshInfo;
|
||||||
|
|
||||||
myNbComp = theInfo->GetNbComp();
|
myNbComp = theInfo->GetNbComp();
|
||||||
myCompNames.resize(myNbComp*GetPNOMLength<eVersion>()+1);
|
myCompNames.resize(myNbComp*GetPNOMLength()+1);
|
||||||
for(TInt anId = 0; anId < myNbComp; anId++){
|
for(TInt anId = 0; anId < myNbComp; anId++){
|
||||||
SetCompName(anId,theInfo->GetCompName(anId));
|
SetCompName(anId,theInfo->GetCompName(anId));
|
||||||
}
|
}
|
||||||
|
|
||||||
myUnitNames.resize(myNbComp*GetPNOMLength<eVersion>()+1);
|
myUnitNames.resize(myNbComp*GetPNOMLength()+1);
|
||||||
for(TInt anId = 0; anId < myNbComp; anId++){
|
for(TInt anId = 0; anId < myNbComp; anId++){
|
||||||
SetUnitName(anId,theInfo->GetUnitName(anId));
|
SetUnitName(anId,theInfo->GetUnitName(anId));
|
||||||
}
|
}
|
||||||
@ -856,8 +843,8 @@ namespace MED
|
|||||||
myMeshInfo = theMeshInfo;
|
myMeshInfo = theMeshInfo;
|
||||||
|
|
||||||
myNbComp = theNbComp;
|
myNbComp = theNbComp;
|
||||||
myCompNames.resize(theNbComp*GetPNOMLength<eVersion>()+1);
|
myCompNames.resize(theNbComp*GetPNOMLength()+1);
|
||||||
myUnitNames.resize(theNbComp*GetPNOMLength<eVersion>()+1);
|
myUnitNames.resize(theNbComp*GetPNOMLength()+1);
|
||||||
|
|
||||||
myType = theType;
|
myType = theType;
|
||||||
|
|
||||||
@ -869,39 +856,37 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetCompName(TInt theId) const
|
GetCompName(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(),myCompNames);
|
return GetString(theId,GetPNOMLength(),myCompNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetCompName(TInt theId, const std::string& theValue)
|
SetCompName(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(),myCompNames,theValue);
|
SetString(theId,GetPNOMLength(),myCompNames,theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
std::string
|
std::string
|
||||||
GetUnitName(TInt theId) const
|
GetUnitName(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(),myUnitNames);
|
return GetString(theId,GetPNOMLength(),myUnitNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetUnitName(TInt theId, const std::string& theValue)
|
SetUnitName(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(),myUnitNames,theValue);
|
SetString(theId,GetPNOMLength(),myUnitNames,theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTGaussInfo:
|
struct TTGaussInfo:
|
||||||
virtual TGaussInfo,
|
virtual TGaussInfo,
|
||||||
virtual TTNameInfo<eVersion>
|
virtual TTNameInfo
|
||||||
{
|
{
|
||||||
typedef TTNameInfo<eVersion> TNameInfoBase;
|
typedef TTNameInfo TNameInfoBase;
|
||||||
|
|
||||||
TTGaussInfo(const TGaussInfo::TInfo& theInfo,
|
TTGaussInfo(const TGaussInfo::TInfo& theInfo,
|
||||||
EModeSwitch theMode):
|
EModeSwitch theMode):
|
||||||
@ -919,9 +904,7 @@ namespace MED
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTTimeStampInfo: virtual TTimeStampInfo
|
struct TTTimeStampInfo: virtual TTimeStampInfo
|
||||||
{
|
{
|
||||||
TTTimeStampInfo(const PFieldInfo& theFieldInfo, const PTimeStampInfo& theInfo)
|
TTTimeStampInfo(const PFieldInfo& theFieldInfo, const PTimeStampInfo& theInfo)
|
||||||
@ -935,7 +918,7 @@ namespace MED
|
|||||||
myNumOrd = theInfo->GetNumOrd();
|
myNumOrd = theInfo->GetNumOrd();
|
||||||
myDt = theInfo->GetDt();
|
myDt = theInfo->GetDt();
|
||||||
|
|
||||||
myUnitDt.resize(GetPNOMLength<eVersion>()+1);
|
myUnitDt.resize(GetPNOMLength()+1);
|
||||||
SetUnitDt(theInfo->GetUnitDt());
|
SetUnitDt(theInfo->GetUnitDt());
|
||||||
|
|
||||||
myGeom2NbGauss = theInfo->myGeom2NbGauss;
|
myGeom2NbGauss = theInfo->myGeom2NbGauss;
|
||||||
@ -961,7 +944,7 @@ namespace MED
|
|||||||
myNumOrd = theNumDt;
|
myNumOrd = theNumDt;
|
||||||
myDt = theDt;
|
myDt = theDt;
|
||||||
|
|
||||||
myUnitDt.resize(GetPNOMLength<eVersion>()+1);
|
myUnitDt.resize(GetPNOMLength()+1);
|
||||||
SetUnitDt(theUnitDt);
|
SetUnitDt(theUnitDt);
|
||||||
|
|
||||||
myGeom2NbGauss = theGeom2NbGauss;
|
myGeom2NbGauss = theGeom2NbGauss;
|
||||||
@ -972,25 +955,23 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetUnitDt() const
|
GetUnitDt() const
|
||||||
{
|
{
|
||||||
return GetString(0,GetPNOMLength<eVersion>(),myUnitDt);
|
return GetString(0,GetPNOMLength(),myUnitDt);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetUnitDt(const std::string& theValue)
|
SetUnitDt(const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(0,GetPNOMLength<eVersion>(),myUnitDt,theValue);
|
SetString(0,GetPNOMLength(),myUnitDt,theValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTProfileInfo:
|
struct TTProfileInfo:
|
||||||
virtual TProfileInfo,
|
virtual TProfileInfo,
|
||||||
virtual TTNameInfo<eVersion>
|
virtual TTNameInfo
|
||||||
{
|
{
|
||||||
typedef TTNameInfo<eVersion> TNameInfoBase;
|
typedef TTNameInfo TNameInfoBase;
|
||||||
|
|
||||||
TTProfileInfo(const TProfileInfo::TInfo& theInfo,
|
TTProfileInfo(const TProfileInfo::TInfo& theInfo,
|
||||||
EModeProfil theMode):
|
EModeProfil theMode):
|
||||||
@ -1002,9 +983,8 @@ namespace MED
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion, class TMeshValueType>
|
template<class TMeshValueType>
|
||||||
struct TTTimeStampValue: virtual TTimeStampValue<TMeshValueType>
|
struct TTTimeStampValue: virtual TTimeStampValue<TMeshValueType>
|
||||||
{
|
{
|
||||||
TTTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
TTTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
|
||||||
@ -1097,7 +1077,6 @@ namespace MED
|
|||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
template<EVersion eVersion>
|
|
||||||
struct TTGrilleInfo:
|
struct TTGrilleInfo:
|
||||||
virtual TGrilleInfo
|
virtual TGrilleInfo
|
||||||
{
|
{
|
||||||
@ -1134,11 +1113,11 @@ namespace MED
|
|||||||
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
||||||
if(type == eGRILLE_STANDARD){
|
if(type == eGRILLE_STANDARD){
|
||||||
myCoord.resize(aSpaceDim*nnoeuds);
|
myCoord.resize(aSpaceDim*nnoeuds);
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
} else { //if(type == eGRILLE_CARTESIENNE){
|
} else { //if(type == eGRILLE_CARTESIENNE){
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+aSpaceDim);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+aSpaceDim);
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+aSpaceDim);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+aSpaceDim);
|
||||||
}
|
}
|
||||||
myGrilleStructure.resize(aSpaceDim);
|
myGrilleStructure.resize(aSpaceDim);
|
||||||
myFamNumNode.resize(nnoeuds);
|
myFamNumNode.resize(nnoeuds);
|
||||||
@ -1150,11 +1129,11 @@ namespace MED
|
|||||||
myMeshInfo = theMeshInfo;
|
myMeshInfo = theMeshInfo;
|
||||||
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
||||||
if(type == eGRILLE_STANDARD){
|
if(type == eGRILLE_STANDARD){
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
} else {// if(type == eGRILLE_CARTESIENNE){
|
} else {// if(type == eGRILLE_CARTESIENNE){
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+aSpaceDim);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+aSpaceDim);
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+aSpaceDim);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+aSpaceDim);
|
||||||
}
|
}
|
||||||
myGrilleStructure.resize(aSpaceDim);
|
myGrilleStructure.resize(aSpaceDim);
|
||||||
}
|
}
|
||||||
@ -1167,11 +1146,11 @@ namespace MED
|
|||||||
|
|
||||||
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
TInt aSpaceDim = theMeshInfo->GetSpaceDim();
|
||||||
if(type == eGRILLE_STANDARD){
|
if(type == eGRILLE_STANDARD){
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+1);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+1);
|
||||||
} else {// if(type == eGRILLE_CARTESIENNE){
|
} else {// if(type == eGRILLE_CARTESIENNE){
|
||||||
myCoordNames.resize(aSpaceDim*GetPNOMLength<eVersion>()+aSpaceDim);
|
myCoordNames.resize(aSpaceDim*GetPNOMLength()+aSpaceDim);
|
||||||
myCoordUnits.resize(aSpaceDim*GetPNOMLength<eVersion>()+aSpaceDim);
|
myCoordUnits.resize(aSpaceDim*GetPNOMLength()+aSpaceDim);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(type != eGRILLE_STANDARD)
|
if(type != eGRILLE_STANDARD)
|
||||||
@ -1185,31 +1164,30 @@ namespace MED
|
|||||||
std::string
|
std::string
|
||||||
GetCoordName(TInt theId) const
|
GetCoordName(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(),myCoordNames);
|
return GetString(theId,GetPNOMLength(),myCoordNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetCoordName(TInt theId, const std::string& theValue)
|
SetCoordName(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(),myCoordNames,theValue);
|
SetString(theId,GetPNOMLength(),myCoordNames,theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
std::string
|
std::string
|
||||||
GetCoordUnit(TInt theId) const
|
GetCoordUnit(TInt theId) const
|
||||||
{
|
{
|
||||||
return GetString(theId,GetPNOMLength<eVersion>(),myCoordUnits);
|
return GetString(theId,GetPNOMLength(),myCoordUnits);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
void
|
void
|
||||||
SetCoordUnit(TInt theId, const std::string& theValue)
|
SetCoordUnit(TInt theId, const std::string& theValue)
|
||||||
{
|
{
|
||||||
SetString(theId,GetPNOMLength<eVersion>(),myCoordUnits,theValue);
|
SetString(theId,GetPNOMLength(),myCoordUnits,theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // MED_TStructures_HeaderFile
|
55
src/MEDWrapper/Factory/MED_WrapperFactory.hxx → src/MEDWrapper/MED_Utilities.cxx
Executable file → Normal file
55
src/MEDWrapper/Factory/MED_WrapperFactory.hxx → src/MEDWrapper/MED_Utilities.cxx
Executable file → Normal file
@ -19,28 +19,41 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
// File : MED_WrapperFactory.hxx
|
|
||||||
// Author : Alexander A. BORODIN
|
|
||||||
//
|
|
||||||
#ifndef _MED_WrapperFactory_HXX_
|
|
||||||
#define _MED_WrapperFactory_HXX_
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#include "MED_Utilities.hxx"
|
||||||
#if defined MEDWRAPPER_FACTORY_EXPORTS || defined MEDWrapper_EXPORTS
|
#include "MED_Common.hxx"
|
||||||
#if defined WIN32
|
|
||||||
#define MEDWRAPPER_FACTORY_EXPORT __declspec( dllexport )
|
#ifdef _DEBUG_
|
||||||
#else
|
static int MYDEBUG = 0;
|
||||||
#define MEDWRAPPER_FACTORY_EXPORT
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if defined WIN32
|
|
||||||
#define MEDWRAPPER_FACTORY_EXPORT __declspec( dllimport )
|
|
||||||
#else
|
|
||||||
#define MEDWRAPPER_FACTORY_EXPORT
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
#define MEDWRAPPER_FACTORY_EXPORT
|
static int MYDEBUG = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
int MED::PrefixPrinter::myCounter = 0;
|
||||||
|
|
||||||
|
MED::PrefixPrinter::PrefixPrinter(bool theIsActive):
|
||||||
|
myIsActive(theIsActive)
|
||||||
|
{
|
||||||
|
if(myIsActive)
|
||||||
|
myCounter++;
|
||||||
|
MSG(MYDEBUG,"MED::PrefixPrinter::PrefixPrinter(...)- "<<myCounter);
|
||||||
|
}
|
||||||
|
|
||||||
|
MED::PrefixPrinter::~PrefixPrinter()
|
||||||
|
{
|
||||||
|
if(myIsActive){
|
||||||
|
myCounter--;
|
||||||
|
if(myCounter < 0)
|
||||||
|
EXCEPTION(std::runtime_error,"PrefixPrinter::~PrefixPrinter() - myCounter("<<myCounter<<") < 0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string MED::PrefixPrinter::GetPrefix()
|
||||||
|
{
|
||||||
|
if(myCounter){
|
||||||
|
if(myCounter < 0)
|
||||||
|
EXCEPTION(std::runtime_error,"PrefixPrinter::~PrefixPrinter() - myCounter("<<myCounter<<") < 0");
|
||||||
|
return std::string(myCounter*2,' ');
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
@ -19,18 +19,18 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_Utilities_HeaderFile
|
#ifndef MED_Utilities_HeaderFile
|
||||||
#define MED_Utilities_HeaderFile
|
#define MED_Utilities_HeaderFile
|
||||||
|
|
||||||
#include "MED_WrapperBase.hxx"
|
#include "MED_WrapperDef.hxx"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
class MEDWRAPPER_EXPORT PrefixPrinter
|
class MEDWRAPPER_EXPORT PrefixPrinter
|
||||||
@ -51,14 +51,13 @@ namespace MED
|
|||||||
#define INITMSGA(deb,lev,msg) MED::PrefixPrinter aPrefixPrinter_##lev(deb); BEGMSG(deb,msg)
|
#define INITMSGA(deb,lev,msg) MED::PrefixPrinter aPrefixPrinter_##lev(deb); BEGMSG(deb,msg)
|
||||||
#define INITMSG(deb,msg) INITMSGA(deb,,msg)
|
#define INITMSG(deb,msg) INITMSGA(deb,,msg)
|
||||||
#define ADDMSG(deb,msg) if(deb) std::cout<<msg
|
#define ADDMSG(deb,msg) if(deb) std::cout<<msg
|
||||||
#else
|
#else // _DEBUG_
|
||||||
#define MSG(deb,msg)
|
#define MSG(deb,msg)
|
||||||
#define BEGMSG(deb,msg)
|
#define BEGMSG(deb,msg)
|
||||||
#define INITMSGA(deb,lev,msg)
|
#define INITMSGA(deb,lev,msg)
|
||||||
#define INITMSG(deb,msg)
|
#define INITMSG(deb,msg)
|
||||||
#define ADDMSG(deb,msg)
|
#define ADDMSG(deb,msg)
|
||||||
#endif
|
#endif // _DEBUG_
|
||||||
|
|
||||||
|
|
||||||
#ifndef EXCEPTION
|
#ifndef EXCEPTION
|
||||||
|
|
||||||
@ -68,6 +67,6 @@ namespace MED
|
|||||||
throw TYPE(aStream.str().c_str());\
|
throw TYPE(aStream.str().c_str());\
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // EXCEPTION
|
||||||
|
|
||||||
#endif
|
#endif // MED_Utilities_HeaderFile
|
@ -19,6 +19,7 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef MED_Vector_HeaderFile
|
#ifndef MED_Vector_HeaderFile
|
||||||
#define MED_Vector_HeaderFile
|
#define MED_Vector_HeaderFile
|
||||||
|
|
||||||
@ -31,8 +32,7 @@
|
|||||||
|
|
||||||
namespace MED
|
namespace MED
|
||||||
{
|
{
|
||||||
|
//! Main purpose to introduce the class was to customize operator []
|
||||||
//! Main purpose to introduce the class was to customize operator []
|
|
||||||
template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
|
template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
|
||||||
class TVector : public std::vector<_Tp, _Alloc>
|
class TVector : public std::vector<_Tp, _Alloc>
|
||||||
{
|
{
|
||||||
@ -68,15 +68,15 @@ namespace MED
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit
|
explicit
|
||||||
TVector(const allocator_type& __a = allocator_type()):
|
TVector(const allocator_type& __a = allocator_type()):
|
||||||
superclass(__a)
|
superclass(__a)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
TVector(size_type __n, const value_type& __val,
|
TVector(size_type __n, const value_type& __val,
|
||||||
const allocator_type& __a = allocator_type()):
|
const allocator_type& __a = allocator_type()):
|
||||||
superclass(__n, __val, __a)
|
superclass(__n, __val, __a)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
explicit
|
explicit
|
||||||
TVector(size_type __n):
|
TVector(size_type __n):
|
||||||
superclass(__n)
|
superclass(__n)
|
||||||
@ -144,9 +144,8 @@ namespace MED
|
|||||||
return get_value(__n);
|
return get_value(__n);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef MED_TVECTOR_CHECK_RANGE
|
#undef MED_TVECTOR_CHECK_RANGE
|
||||||
|
|
||||||
#endif
|
#endif // MED_Vector_HeaderFile
|
4053
src/MEDWrapper/MED_Wrapper.cxx
Normal file
4053
src/MEDWrapper/MED_Wrapper.cxx
Normal file
File diff suppressed because it is too large
Load Diff
1027
src/MEDWrapper/MED_Wrapper.hxx
Normal file
1027
src/MEDWrapper/MED_Wrapper.hxx
Normal file
File diff suppressed because it is too large
Load Diff
@ -19,28 +19,18 @@
|
|||||||
//
|
//
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
//
|
//
|
||||||
// File : MED_WrapperBase.hxx
|
|
||||||
// Author : Alexander A. BORODIN
|
#ifndef MED_WrapperDef_HeaderFile
|
||||||
//
|
#define MED_WrapperDef_HeaderFile
|
||||||
#ifndef _MED_WrapperBase_HXX_
|
|
||||||
#define _MED_WrapperBase_HXX_
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#if defined MEDWRAPPER_BASE_EXPORTS || defined MEDWrapperBase_EXPORTS
|
# if defined(MEDWRAPPER_EXPORTS) || defined(MEDWrapper_EXPORTS)
|
||||||
#if defined WIN32
|
# define MEDWRAPPER_EXPORT __declspec( dllexport )
|
||||||
#define MEDWRAPPER_EXPORT __declspec( dllexport )
|
# else
|
||||||
#else
|
# define MEDWRAPPER_EXPORT __declspec( dllimport )
|
||||||
#define MEDWRAPPER_EXPORT
|
# endif // WIN32
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if defined WIN32
|
|
||||||
#define MEDWRAPPER_EXPORT __declspec( dllimport )
|
|
||||||
#else
|
|
||||||
#define MEDWRAPPER_EXPORT
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
#define MEDWRAPPER_EXPORT
|
# define MEDWRAPPER_EXPORT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif // MED_WrapperDef_HeaderFile
|
@ -1,63 +0,0 @@
|
|||||||
# Copyright (C) 2012-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
#
|
|
||||||
# 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, 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
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public
|
|
||||||
# License along with this library; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
#
|
|
||||||
|
|
||||||
# --- options ---
|
|
||||||
# additional include directories
|
|
||||||
INCLUDE_DIRECTORIES(
|
|
||||||
${MEDFILE_INCLUDE_DIRS}
|
|
||||||
${HDF5_INCLUDE_DIRS}
|
|
||||||
${Boost_INCLUDE_DIRS}
|
|
||||||
${KERNEL_INCLUDE_DIRS}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../Base
|
|
||||||
)
|
|
||||||
|
|
||||||
# additional preprocessor / compiler flags
|
|
||||||
ADD_DEFINITIONS(
|
|
||||||
${HDF5_DEFINITIONS}
|
|
||||||
${BOOST_DEFINITIONS}
|
|
||||||
)
|
|
||||||
|
|
||||||
SET(_link_LIBRARIES
|
|
||||||
${HDF5_LIBS}
|
|
||||||
${MEDFILE_C_LIBRARIES}
|
|
||||||
${Boost_LIBRARIES}
|
|
||||||
MEDWrapperBase
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- headers ---
|
|
||||||
|
|
||||||
# header files / no moc processing
|
|
||||||
SET(MEDWrapper_V2_2_HEADERS
|
|
||||||
MED_V2_2_Wrapper.hxx
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- sources ---
|
|
||||||
|
|
||||||
# sources / static
|
|
||||||
SET(MEDWrapper_V2_2_SOURCES
|
|
||||||
MED_V2_2_Wrapper.cxx
|
|
||||||
)
|
|
||||||
|
|
||||||
# --- rules ---
|
|
||||||
|
|
||||||
ADD_LIBRARY(MEDWrapper_V2_2 ${MEDWrapper_V2_2_SOURCES})
|
|
||||||
TARGET_LINK_LIBRARIES(MEDWrapper_V2_2 ${_link_LIBRARIES})
|
|
||||||
INSTALL(TARGETS MEDWrapper_V2_2 EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
|
|
||||||
|
|
||||||
INSTALL(FILES ${MEDWrapper_V2_2_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
|
|
File diff suppressed because it is too large
Load Diff
@ -1,489 +0,0 @@
|
|||||||
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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, 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
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
#ifndef MED_V2_2_Wrapper_HeaderFile
|
|
||||||
#define MED_V2_2_Wrapper_HeaderFile
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#if defined MEDWRAPPER_V2_2_EXPORTS || defined MEDWrapper_V2_2_EXPORTS
|
|
||||||
#if defined WIN32
|
|
||||||
#define MED_V22_WRAPPER_EXPORT __declspec( dllexport )
|
|
||||||
#else
|
|
||||||
#define MED_V22_WRAPPER_EXPORT
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if defined WIN32
|
|
||||||
#define MED_V22_WRAPPER_EXPORT __declspec( dllimport )
|
|
||||||
#else
|
|
||||||
#define MED_V22_WRAPPER_EXPORT
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define MED_V22_WRAPPER_EXPORT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "MED_Structures.hxx"
|
|
||||||
#include "MED_TWrapper.hxx"
|
|
||||||
|
|
||||||
namespace MED
|
|
||||||
{
|
|
||||||
template<>
|
|
||||||
TInt MED_V22_WRAPPER_EXPORT
|
|
||||||
GetDESCLength<eV2_2>();
|
|
||||||
|
|
||||||
template<>
|
|
||||||
TInt MED_V22_WRAPPER_EXPORT
|
|
||||||
GetIDENTLength<eV2_2>();
|
|
||||||
|
|
||||||
template<>
|
|
||||||
TInt MED_V22_WRAPPER_EXPORT
|
|
||||||
GetNOMLength<eV2_2>();
|
|
||||||
|
|
||||||
template<>
|
|
||||||
TInt MED_V22_WRAPPER_EXPORT
|
|
||||||
GetLNOMLength<eV2_2>();
|
|
||||||
|
|
||||||
template<>
|
|
||||||
TInt MED_V22_WRAPPER_EXPORT
|
|
||||||
GetPNOMLength<eV2_2>();
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void MED_V22_WRAPPER_EXPORT
|
|
||||||
GetVersionRelease<eV2_2>(TInt& majeur, TInt& mineur, TInt& release);
|
|
||||||
|
|
||||||
template<>
|
|
||||||
TInt MED_V22_WRAPPER_EXPORT
|
|
||||||
GetNbConn<eV2_2>(EGeometrieElement typmai,
|
|
||||||
EEntiteMaillage typent,
|
|
||||||
TInt mdim);
|
|
||||||
|
|
||||||
namespace V2_2
|
|
||||||
{
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
class TFile;
|
|
||||||
typedef boost::shared_ptr<TFile> PFile;
|
|
||||||
|
|
||||||
typedef enum {eLECTURE, eLECTURE_ECRITURE, eLECTURE_AJOUT, eCREATION} EModeAcces;
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
class MED_V22_WRAPPER_EXPORT TVWrapper: public MED::TTWrapper<eV2_2>
|
|
||||||
{
|
|
||||||
TVWrapper();
|
|
||||||
TVWrapper(const TVWrapper&);
|
|
||||||
TVWrapper& operator=(const TVWrapper&);
|
|
||||||
|
|
||||||
public:
|
|
||||||
TVWrapper(const std::string& theFileName);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbMeshes(TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetMeshInfo(TInt theMeshId, MED::TMeshInfo&,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetMeshInfo(const MED::TMeshInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void SetMeshInfo(const MED::TMeshInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbFamilies(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbFamAttr(TInt theFamId,
|
|
||||||
const MED::TMeshInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbFamGroup(TInt theFamId,
|
|
||||||
const MED::TMeshInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetFamilyInfo(TInt theFamId,
|
|
||||||
MED::TFamilyInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetFamilyInfo(const MED::TFamilyInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetFamilyInfo(const MED::TFamilyInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetNames(TElemInfo& theInfo,
|
|
||||||
TInt nb,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetNumeration(TElemInfo& theInfo,
|
|
||||||
TInt nb,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetFamilies(TElemInfo& theInfo,
|
|
||||||
TInt nb,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetNames(const TElemInfo& theInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetNames(const TElemInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetNumeration(const TElemInfo& theInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
void
|
|
||||||
SetNumeration(const TElemInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetFamilies(const TElemInfo& theInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
void
|
|
||||||
SetFamilies(const TElemInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbNodes(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
TErr* theErr = NULL)
|
|
||||||
{
|
|
||||||
return GetNbNodes(theMeshInfo,eCOOR,theErr);
|
|
||||||
}
|
|
||||||
|
|
||||||
TInt
|
|
||||||
GetNbNodes(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
ETable theTable,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetNodeInfo(MED::TNodeInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetNodeInfo(const MED::TNodeInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetNodeInfo(const MED::TNodeInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetPolygoneInfo(TPolygoneInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetPolygoneInfo(const TPolygoneInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetPolygoneInfo(const MED::TPolygoneInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbPolygones(const TMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetPolygoneConnSize(const TMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage theEntity,
|
|
||||||
EGeometrieElement theGeom,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetPolyedreInfo(TPolyedreInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetPolyedreInfo(const TPolyedreInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetPolyedreInfo(const MED::TPolyedreInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbPolyedres(const TMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage,
|
|
||||||
EGeometrieElement,
|
|
||||||
EConnectivite,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetPolyedreConnSize(const TMeshInfo& theMeshInfo,
|
|
||||||
TInt& theNbFaces,
|
|
||||||
TInt& theConnSize,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TEntityInfo
|
|
||||||
GetEntityInfo(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbCells(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
EEntiteMaillage,
|
|
||||||
EGeometrieElement,
|
|
||||||
EConnectivite theConnMode = eNOD,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetCellInfo(MED::TCellInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetCellInfo(const MED::TCellInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetCellInfo(const MED::TCellInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
//! Read geom type of MED_BALL structural element
|
|
||||||
EGeometrieElement GetBallGeom(const TMeshInfo& theMeshInfo);
|
|
||||||
|
|
||||||
//! Read number of balls in the Mesh
|
|
||||||
virtual TInt GetNbBalls(const TMeshInfo& theMeshInfo);
|
|
||||||
|
|
||||||
//! Read a MEDWrapped representation of MED_BALL from the MED file
|
|
||||||
virtual void GetBallInfo(TBallInfo& theInfo, TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//! Write a MEDWrapped representation of MED_BALL to the MED file
|
|
||||||
virtual void SetBallInfo(const TBallInfo& theInfo, TErr* theErr);
|
|
||||||
|
|
||||||
//! Write a MEDWrapped representation of MED_BALL to the MED file
|
|
||||||
void SetBallInfo(const TBallInfo& theInfo, EModeAcces theMode, TErr* theErr);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbFields(TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbComp(TInt theFieldId,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetFieldInfo(TInt theFieldId,
|
|
||||||
MED::TFieldInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetFieldInfo(const MED::TFieldInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetFieldInfo(const MED::TFieldInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbGauss(TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TGaussInfo::TInfo
|
|
||||||
GetGaussPreInfo(TInt theId,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetGaussInfo(TInt theId,
|
|
||||||
TGaussInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbProfiles(TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
TProfileInfo::TInfo
|
|
||||||
GetProfilePreInfo(TInt theId,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetProfileInfo(TInt theId,
|
|
||||||
TProfileInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetProfileInfo(const TProfileInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetProfileInfo(const TProfileInfo& theInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
TInt
|
|
||||||
GetNbTimeStamps(const MED::TFieldInfo& theInfo,
|
|
||||||
const MED::TEntityInfo& theEntityInfo,
|
|
||||||
EEntiteMaillage& theEntity,
|
|
||||||
TGeom2Size& theGeom2Size,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetTimeStampInfo(TInt theTimeStampId,
|
|
||||||
MED::TTimeStampInfo& theInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
|
|
||||||
const TMKey2Profile& theMKey2Profile,
|
|
||||||
const TKey2Gauss& theKey2Gauss,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetGrilleInfo(TGrilleInfo& theGrilleInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
SetGrilleInfo(const MED::TGrilleInfo& theGrilleInfo,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
SetGrilleInfo(const MED::TGrilleInfo& theGrilleInfo,
|
|
||||||
EModeAcces theMode,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
virtual
|
|
||||||
void
|
|
||||||
GetGrilleType(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
EGrilleType& type,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
void
|
|
||||||
GetGrilleStruct(const MED::TMeshInfo& theMeshInfo,
|
|
||||||
TIntVector& theStruct,
|
|
||||||
TErr* theErr = NULL);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
PFile myFile;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -27,18 +27,22 @@
|
|||||||
|
|
||||||
int main (int argc, char **argv)
|
int main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
med_idt aFid = MEDfileOpen(argv[1],MED_ACC_RDONLY);
|
if ( argc < 2 )
|
||||||
if(aFid < 0)
|
return -1;
|
||||||
exit(1);
|
|
||||||
|
|
||||||
med_int aMajor, aMinor, aRelease;
|
med_idt fid = MEDfileOpen(argv[1], MED_ACC_RDONLY);
|
||||||
med_err aRet = MEDfileNumVersionRd(aFid,&aMajor,&aMinor,&aRelease);
|
if (fid < 0)
|
||||||
MEDfileClose(aFid);
|
return 1;
|
||||||
if(aRet < 0) {
|
|
||||||
// VSR: simulate med 2.3.6 behavior, med file version is assumed to 2.1
|
med_int major, minor, release;
|
||||||
aMajor=2;
|
med_err aRet = MEDfileNumVersionRd(fid, &major, &minor, &release);
|
||||||
aMinor=aRelease=-1;
|
MEDfileClose(fid);
|
||||||
|
if (aRet < 0) {
|
||||||
|
// VSR: simulate med 2.3.6 behavior, med file version is assumed to be 2.1 or older
|
||||||
|
major = 2;
|
||||||
|
minor = release = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("%d.%d.%d\n",aMajor,aMinor,aRelease);
|
printf("%d.%d.%d\n", major, minor, release);
|
||||||
|
return 0;
|
||||||
}
|
}
|
@ -27,7 +27,7 @@ INCLUDE_DIRECTORIES(
|
|||||||
${Boost_INCLUDE_DIRS}
|
${Boost_INCLUDE_DIRS}
|
||||||
${HDF5_INCLUDE_DIRS}
|
${HDF5_INCLUDE_DIRS}
|
||||||
${PROJECT_SOURCE_DIR}/src/Controls
|
${PROJECT_SOURCE_DIR}/src/Controls
|
||||||
${PROJECT_SOURCE_DIR}/src/MEDWrapper/Base
|
${PROJECT_SOURCE_DIR}/src/MEDWrapper
|
||||||
${PROJECT_SOURCE_DIR}/src/Driver
|
${PROJECT_SOURCE_DIR}/src/Driver
|
||||||
${PROJECT_SOURCE_DIR}/src/DriverDAT
|
${PROJECT_SOURCE_DIR}/src/DriverDAT
|
||||||
${PROJECT_SOURCE_DIR}/src/DriverMED
|
${PROJECT_SOURCE_DIR}/src/DriverMED
|
||||||
|
@ -1376,7 +1376,6 @@ bool SMESH_Mesh::HasDuplicatedGroupNamesMED()
|
|||||||
* \param [in] theAutoGroups - boolean parameter for creating/not creating
|
* \param [in] theAutoGroups - boolean parameter for creating/not creating
|
||||||
* the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
|
* the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
|
||||||
* the typical use is auto_groups=false.
|
* the typical use is auto_groups=false.
|
||||||
* \param [in] theVersion - defines the version of format of MED file, that will be created
|
|
||||||
* \param [in] meshPart - mesh data to export
|
* \param [in] meshPart - mesh data to export
|
||||||
* \param [in] theAutoDimension - if \c true, a space dimension of a MED mesh can be either
|
* \param [in] theAutoDimension - if \c true, a space dimension of a MED mesh can be either
|
||||||
* - 1D if all mesh nodes lie on OX coordinate axis, or
|
* - 1D if all mesh nodes lie on OX coordinate axis, or
|
||||||
@ -1392,7 +1391,6 @@ bool SMESH_Mesh::HasDuplicatedGroupNamesMED()
|
|||||||
void SMESH_Mesh::ExportMED(const char * file,
|
void SMESH_Mesh::ExportMED(const char * file,
|
||||||
const char* theMeshName,
|
const char* theMeshName,
|
||||||
bool theAutoGroups,
|
bool theAutoGroups,
|
||||||
int theVersion,
|
|
||||||
const SMESHDS_Mesh* meshPart,
|
const SMESHDS_Mesh* meshPart,
|
||||||
bool theAutoDimension,
|
bool theAutoDimension,
|
||||||
bool theAddODOnVertices,
|
bool theAddODOnVertices,
|
||||||
@ -1402,7 +1400,7 @@ void SMESH_Mesh::ExportMED(const char * file,
|
|||||||
SMESH_TRY;
|
SMESH_TRY;
|
||||||
|
|
||||||
DriverMED_W_SMESHDS_Mesh myWriter;
|
DriverMED_W_SMESHDS_Mesh myWriter;
|
||||||
myWriter.SetFile ( file, MED::EVersion(theVersion) );
|
myWriter.SetFile ( file );
|
||||||
myWriter.SetMesh ( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS );
|
myWriter.SetMesh ( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS );
|
||||||
myWriter.SetAutoDimension( theAutoDimension );
|
myWriter.SetAutoDimension( theAutoDimension );
|
||||||
myWriter.AddODOnVertices ( theAddODOnVertices );
|
myWriter.AddODOnVertices ( theAddODOnVertices );
|
||||||
@ -1478,7 +1476,7 @@ void SMESH_Mesh::ExportSAUV(const char *file,
|
|||||||
cmd += "from medutilities import my_remove ; my_remove(r'" + medfilename + "')";
|
cmd += "from medutilities import my_remove ; my_remove(r'" + medfilename + "')";
|
||||||
cmd += "\"";
|
cmd += "\"";
|
||||||
system(cmd.c_str());
|
system(cmd.c_str());
|
||||||
ExportMED(medfilename.c_str(), theMeshName, theAutoGroups, /*theVersion=*/1,
|
ExportMED(medfilename.c_str(), theMeshName, theAutoGroups,
|
||||||
/*meshPart=*/NULL, /*theAutoDimension=*/false, /*theAddODOnVertices=*/false,
|
/*meshPart=*/NULL, /*theAutoDimension=*/false, /*theAddODOnVertices=*/false,
|
||||||
/*theAllElemsToGroup=*/true ); // theAllElemsToGroup is for PAL0023413
|
/*theAllElemsToGroup=*/true ); // theAllElemsToGroup is for PAL0023413
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
@ -249,7 +249,6 @@ class SMESH_EXPORT SMESH_Mesh
|
|||||||
void ExportMED(const char * theFile,
|
void ExportMED(const char * theFile,
|
||||||
const char* theMeshName = NULL,
|
const char* theMeshName = NULL,
|
||||||
bool theAutoGroups = true,
|
bool theAutoGroups = true,
|
||||||
int theVersion = 0,
|
|
||||||
const SMESHDS_Mesh* theMeshPart = 0,
|
const SMESHDS_Mesh* theMeshPart = 0,
|
||||||
bool theAutoDimension = false,
|
bool theAutoDimension = false,
|
||||||
bool theAddODOnVertices = false,
|
bool theAddODOnVertices = false,
|
||||||
|
@ -71,8 +71,6 @@ SET(_link_LIBRARIES
|
|||||||
SMESHDS
|
SMESHDS
|
||||||
SMESHControls
|
SMESHControls
|
||||||
MEDWrapper
|
MEDWrapper
|
||||||
MEDWrapperBase
|
|
||||||
MEDWrapper_V2_2
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- headers ---
|
# --- headers ---
|
||||||
|
@ -42,7 +42,7 @@ INCLUDE_DIRECTORIES(
|
|||||||
${PROJECT_SOURCE_DIR}/src/SMESHUtils
|
${PROJECT_SOURCE_DIR}/src/SMESHUtils
|
||||||
${PROJECT_SOURCE_DIR}/src/Controls
|
${PROJECT_SOURCE_DIR}/src/Controls
|
||||||
${PROJECT_SOURCE_DIR}/src/SMESHClient
|
${PROJECT_SOURCE_DIR}/src/SMESHClient
|
||||||
${PROJECT_SOURCE_DIR}/src/MEDWrapper/Base
|
${PROJECT_SOURCE_DIR}/src/MEDWrapper
|
||||||
${PROJECT_BINARY_DIR}
|
${PROJECT_BINARY_DIR}
|
||||||
${PROJECT_BINARY_DIR}/idl
|
${PROJECT_BINARY_DIR}/idl
|
||||||
)
|
)
|
||||||
|
@ -238,8 +238,8 @@ namespace
|
|||||||
}
|
}
|
||||||
else if ( theCommandID == SMESHOp::OpImportSAUV ||
|
else if ( theCommandID == SMESHOp::OpImportSAUV ||
|
||||||
theCommandID == SMESHOp::OpPopupImportSAUV ) {
|
theCommandID == SMESHOp::OpPopupImportSAUV ) {
|
||||||
filter.append( QObject::tr( "SAUV files (*.sauv*)" ) );
|
filter.append( QObject::tr( "SAUV_FILES_FILTER" ) + " (*.sauv *.sauve)" );
|
||||||
filter.append( QObject::tr( "All files (*)" ) );
|
filter.append( QObject::tr( "ALL_FILES_FILTER" ) + " (*)" );
|
||||||
}
|
}
|
||||||
else if ( theCommandID == SMESHOp::OpImportGMF ||
|
else if ( theCommandID == SMESHOp::OpImportGMF ||
|
||||||
theCommandID == SMESHOp::OpPopupImportGMF ) {
|
theCommandID == SMESHOp::OpPopupImportGMF ) {
|
||||||
@ -650,8 +650,7 @@ namespace
|
|||||||
|
|
||||||
// Get parameters of export operation
|
// Get parameters of export operation
|
||||||
|
|
||||||
QString aFilename;
|
QString aFilename;
|
||||||
SMESH::MED_VERSION aFormat = SMESH::MED_V2_2;
|
|
||||||
// Init the parameters with the default values
|
// Init the parameters with the default values
|
||||||
bool aIsASCII_STL = true;
|
bool aIsASCII_STL = true;
|
||||||
bool toCreateGroups = false;
|
bool toCreateGroups = false;
|
||||||
@ -728,27 +727,14 @@ namespace
|
|||||||
}
|
}
|
||||||
else if ( isMED || isSAUV ) // Export to MED or SAUV
|
else if ( isMED || isSAUV ) // Export to MED or SAUV
|
||||||
{
|
{
|
||||||
QMap<QString, SMESH::MED_VERSION> aFilterMap;
|
QStringList filters;
|
||||||
//QString v21 (aMesh->GetVersionString(SMESH::MED_V2_1, 2));
|
|
||||||
if ( isMED ) {
|
if ( isMED ) {
|
||||||
QString v22 (aMesh->GetVersionString(SMESH::MED_V2_2, 2));
|
filters << QObject::tr( "MED_FILES_FILTER" ) + " (*.med)";
|
||||||
//aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( v21 ) + " (*.med)", SMESH::MED_V2_1 );
|
|
||||||
aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( v22 ) + " (*.med)", SMESH::MED_V2_2 );
|
|
||||||
}
|
}
|
||||||
else { // isSAUV
|
else { // isSAUV
|
||||||
aFilterMap.insert("All files (*)", SMESH::MED_V2_1 );
|
filters << QObject::tr( "SAUV_FILES_FILTER" ) + " (*.sauv *.sauve)";
|
||||||
aFilterMap.insert("SAUV files (*.sauv)", SMESH::MED_V2_2 );
|
|
||||||
aFilterMap.insert("SAUV files (*.sauve)", SMESH::MED_V2_1 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList filters;
|
|
||||||
QString aDefaultFilter;
|
|
||||||
QMap<QString, SMESH::MED_VERSION>::const_iterator it = aFilterMap.begin();
|
|
||||||
for ( ; it != aFilterMap.end(); ++it ) {
|
|
||||||
filters.push_back( it.key() );
|
|
||||||
if (it.value() == SMESH::MED_V2_2)
|
|
||||||
aDefaultFilter = it.key();
|
|
||||||
}
|
|
||||||
QStringList checkBoxes;
|
QStringList checkBoxes;
|
||||||
checkBoxes << QObject::tr("SMESH_AUTO_GROUPS") << QObject::tr("SMESH_AUTO_DIM");
|
checkBoxes << QObject::tr("SMESH_AUTO_GROUPS") << QObject::tr("SMESH_AUTO_DIM");
|
||||||
|
|
||||||
@ -761,7 +747,6 @@ namespace
|
|||||||
new SalomeApp_CheckFileDlg ( SMESHGUI::desktop(), false, checkBoxes, true, true, wdgList );
|
new SalomeApp_CheckFileDlg ( SMESHGUI::desktop(), false, checkBoxes, true, true, wdgList );
|
||||||
fd->setWindowTitle( aTitle );
|
fd->setWindowTitle( aTitle );
|
||||||
fd->setNameFilters( filters );
|
fd->setNameFilters( filters );
|
||||||
fd->selectNameFilter( aDefaultFilter );
|
|
||||||
fd->SetChecked( toCreateGroups, 0 );
|
fd->SetChecked( toCreateGroups, 0 );
|
||||||
fd->SetChecked( toFindOutDim, 1 );
|
fd->SetChecked( toFindOutDim, 1 );
|
||||||
if ( !anInitialPath.isEmpty() )
|
if ( !anInitialPath.isEmpty() )
|
||||||
@ -789,34 +774,13 @@ namespace
|
|||||||
aFilename = QString::null;
|
aFilename = QString::null;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
aFormat = aFilterMap[fd->selectedNameFilter()];
|
|
||||||
toOverwrite = fv->isOverwrite();
|
toOverwrite = fv->isOverwrite();
|
||||||
is_ok = true;
|
is_ok = true;
|
||||||
if ( !aFilename.isEmpty() ) {
|
if ( !aFilename.isEmpty() ) {
|
||||||
// med-2.1 does not support poly elements
|
|
||||||
if ( aFormat==SMESH::MED_V2_1 )
|
|
||||||
for( aMeshIter = aMeshList.begin(); aMeshIter != aMeshList.end(); aMeshIter++ ) {
|
|
||||||
SMESH::SMESH_IDSource_var aMeshItem = (*aMeshIter).first;
|
|
||||||
SMESH::long_array_var nbElems = aMeshItem->GetMeshInfo();
|
|
||||||
if ( nbElems[ SMESH::Entity_Polygon ] + nbElems[ SMESH::Entity_Quad_Polygon ] +
|
|
||||||
nbElems[ SMESH::Entity_Polyhedra ] + nbElems[ SMESH::Entity_Quad_Polyhedra ])
|
|
||||||
{
|
|
||||||
int aRet = SUIT_MessageBox::warning(SMESHGUI::desktop(),
|
|
||||||
QObject::tr("SMESH_WRN_WARNING"),
|
|
||||||
QObject::tr("SMESH_EXPORT_MED_V2_1").arg((*aMeshIter).second),
|
|
||||||
QObject::tr("SMESH_BUT_YES"),
|
|
||||||
QObject::tr("SMESH_BUT_NO"), 0, 1);
|
|
||||||
if (aRet != 0) {
|
|
||||||
is_ok = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if( !toOverwrite ) {
|
if( !toOverwrite ) {
|
||||||
// can't append to an existing using other format
|
// can't append to an existing using other format
|
||||||
SMESH::MED_VERSION aVersion = SMESH::MED_V2_1;
|
bool isVersionOk = SMESHGUI::GetSMESHGen()->CheckCompatibility( aFilename.toUtf8().constData() );
|
||||||
bool isVersionOk = SMESHGUI::GetSMESHGen()->GetMEDVersion( aFilename.toUtf8().constData(), aVersion );
|
if ( !isVersionOk ) {
|
||||||
if( !isVersionOk || aVersion != aFormat ) {
|
|
||||||
int aRet = SUIT_MessageBox::warning(SMESHGUI::desktop(),
|
int aRet = SUIT_MessageBox::warning(SMESHGUI::desktop(),
|
||||||
QObject::tr("SMESH_WRN_WARNING"),
|
QObject::tr("SMESH_WRN_WARNING"),
|
||||||
QObject::tr("SMESH_EXPORT_MED_VERSION_COLLISION").arg(aFilename),
|
QObject::tr("SMESH_EXPORT_MED_VERSION_COLLISION").arg(aFilename),
|
||||||
@ -901,11 +865,11 @@ namespace
|
|||||||
const QString& geoAssFields = aFieldList[ aMeshIndex ].second;
|
const QString& geoAssFields = aFieldList[ aMeshIndex ].second;
|
||||||
const bool hasFields = ( fields.length() || !geoAssFields.isEmpty() );
|
const bool hasFields = ( fields.length() || !geoAssFields.isEmpty() );
|
||||||
if ( !hasFields && aMeshOrGroup->_is_equivalent( aMeshItem ))
|
if ( !hasFields && aMeshOrGroup->_is_equivalent( aMeshItem ))
|
||||||
aMeshItem->ExportToMEDX( aFilename.toUtf8().data(), toCreateGroups,
|
aMeshItem->ExportMED( aFilename.toUtf8().data(), toCreateGroups,
|
||||||
aFormat, toOverwrite && aMeshIndex == 0, toFindOutDim );
|
toOverwrite && aMeshIndex == 0, toFindOutDim );
|
||||||
else
|
else
|
||||||
aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups,
|
aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups,
|
||||||
aFormat, toOverwrite && aMeshIndex == 0, toFindOutDim,
|
toOverwrite && aMeshIndex == 0, toFindOutDim,
|
||||||
fields, geoAssFields.toLatin1().data() );
|
fields, geoAssFields.toLatin1().data() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,6 @@
|
|||||||
//
|
//
|
||||||
#include "SMESHGUI_FileInfoDlg.h"
|
#include "SMESHGUI_FileInfoDlg.h"
|
||||||
|
|
||||||
#include "MED_Common.hxx"
|
|
||||||
|
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
@ -11,6 +11,10 @@
|
|||||||
<source>MED_FILES_FILTER</source>
|
<source>MED_FILES_FILTER</source>
|
||||||
<translation>MED files</translation>
|
<translation>MED files</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SAUV_FILES_FILTER</source>
|
||||||
|
<translation>SAUV files</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>IDEAS_FILES_FILTER</source>
|
<source>IDEAS_FILES_FILTER</source>
|
||||||
<translation>IDEAS files</translation>
|
<translation>IDEAS files</translation>
|
||||||
@ -23,10 +27,6 @@
|
|||||||
<source>TEXT_FILES_FILTER</source>
|
<source>TEXT_FILES_FILTER</source>
|
||||||
<translation>TXT files</translation>
|
<translation>TXT files</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>MED_VX_FILES_FILTER</source>
|
|
||||||
<translation>MED %1 files</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>STL_FILES_FILTER</source>
|
<source>STL_FILES_FILTER</source>
|
||||||
<translation>STL files</translation>
|
<translation>STL files</translation>
|
||||||
@ -1764,13 +1764,6 @@ Do you want to continue?</translation>
|
|||||||
<source>SMESH_EXPORT_ONLY_GPOUP</source>
|
<source>SMESH_EXPORT_ONLY_GPOUP</source>
|
||||||
<translation>You are going to export the group without its mesh.
|
<translation>You are going to export the group without its mesh.
|
||||||
Do you want to continue?</translation>
|
Do you want to continue?</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>SMESH_EXPORT_MED_V2_1</source>
|
|
||||||
<translation>During export mesh with name - "%1" to MED 2.1
|
|
||||||
polygons and polyhedrons elements will be missed
|
|
||||||
For correct export use MED 2.2
|
|
||||||
Are you sure want to export to MED 2.1?</translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
|
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
|
||||||
|
@ -11,6 +11,10 @@
|
|||||||
<source>MED_FILES_FILTER</source>
|
<source>MED_FILES_FILTER</source>
|
||||||
<translation>Fichiers MED</translation>
|
<translation>Fichiers MED</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SAUV_FILES_FILTER</source>
|
||||||
|
<translation>Fichiers SAUV</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>IDEAS_FILES_FILTER</source>
|
<source>IDEAS_FILES_FILTER</source>
|
||||||
<translation>Fichiers IDEAS</translation>
|
<translation>Fichiers IDEAS</translation>
|
||||||
@ -23,10 +27,6 @@
|
|||||||
<source>TEXT_FILES_FILTER</source>
|
<source>TEXT_FILES_FILTER</source>
|
||||||
<translation>Fichiers TXT</translation>
|
<translation>Fichiers TXT</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>MED_VX_FILES_FILTER</source>
|
|
||||||
<translation>Fichiers MED %1</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>STL_FILES_FILTER</source>
|
<source>STL_FILES_FILTER</source>
|
||||||
<translation>Fichiers STL</translation>
|
<translation>Fichiers STL</translation>
|
||||||
@ -1748,13 +1748,6 @@ Voulez-vous continuer ?</translation>
|
|||||||
<source>SMESH_EXPORT_ONLY_GPOUP</source>
|
<source>SMESH_EXPORT_ONLY_GPOUP</source>
|
||||||
<translation>Vous allez export le groupe sans son maillage.
|
<translation>Vous allez export le groupe sans son maillage.
|
||||||
Voulez-vous continuer ?</translation>
|
Voulez-vous continuer ?</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>SMESH_EXPORT_MED_V2_1</source>
|
|
||||||
<translation>Les éléments polygonaux et polyèdriques seront omis
|
|
||||||
dans le cas d'exportation du maillage "%1" à MED 2.1
|
|
||||||
Utilisez MED 2.2 pour l'exportation correcte.
|
|
||||||
Voulez-vous effectuer l'exportation à MED 2.1 ?</translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
|
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
|
||||||
|
@ -11,6 +11,10 @@
|
|||||||
<source>MED_FILES_FILTER</source>
|
<source>MED_FILES_FILTER</source>
|
||||||
<translation>MEDファイル</translation>
|
<translation>MEDファイル</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SAUV_FILES_FILTER</source>
|
||||||
|
<translation>SAUVファイル</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>IDEAS_FILES_FILTER</source>
|
<source>IDEAS_FILES_FILTER</source>
|
||||||
<translation>IDEAS ファイル</translation>
|
<translation>IDEAS ファイル</translation>
|
||||||
@ -23,10 +27,6 @@
|
|||||||
<source>TEXT_FILES_FILTER</source>
|
<source>TEXT_FILES_FILTER</source>
|
||||||
<translation>TXT ファイル</translation>
|
<translation>TXT ファイル</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>MED_VX_FILES_FILTER</source>
|
|
||||||
<translation>ファイル MED %1</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>STL_FILES_FILTER</source>
|
<source>STL_FILES_FILTER</source>
|
||||||
<translation>STL ファイル</translation>
|
<translation>STL ファイル</translation>
|
||||||
@ -1731,10 +1731,6 @@
|
|||||||
<source>SMESH_EXPORT_ONLY_GPOUP</source>
|
<source>SMESH_EXPORT_ONLY_GPOUP</source>
|
||||||
<translation>そのメッシュなしでグループのエクスポートをしようとしています。続行しますか?</translation>
|
<translation>そのメッシュなしでグループのエクスポートをしようとしています。続行しますか?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>SMESH_EXPORT_MED_V2_1</source>
|
|
||||||
<translation>多角形、多面体要素は正しいエクスポート用 MED 2.1 MED 2.2 にメッシュ '%' のエクスポートの場合省略されます。MED 2.1 をエクスポートしますか。</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
|
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
|
||||||
<translation>ファイル「%1」MED バージョンは知られていないか、選択したバージョンと一致しません。ファイルを上書きしますか。</translation>
|
<translation>ファイル「%1」MED バージョンは知られていないか、選択したバージョンと一致しません。ファイルを上書きしますか。</translation>
|
||||||
|
@ -31,8 +31,7 @@ INCLUDE_DIRECTORIES(
|
|||||||
${PROJECT_SOURCE_DIR}/src/Controls
|
${PROJECT_SOURCE_DIR}/src/Controls
|
||||||
${PROJECT_SOURCE_DIR}/src/SMDS
|
${PROJECT_SOURCE_DIR}/src/SMDS
|
||||||
${PROJECT_SOURCE_DIR}/src/SMESHDS
|
${PROJECT_SOURCE_DIR}/src/SMESHDS
|
||||||
${PROJECT_SOURCE_DIR}/src/MEDWrapper/Base
|
${PROJECT_SOURCE_DIR}/src/MEDWrapper
|
||||||
${PROJECT_SOURCE_DIR}/src/MEDWrapper/Factory
|
|
||||||
${PROJECT_SOURCE_DIR}/src/Driver
|
${PROJECT_SOURCE_DIR}/src/Driver
|
||||||
${PROJECT_SOURCE_DIR}/src/DriverMED
|
${PROJECT_SOURCE_DIR}/src/DriverMED
|
||||||
${PROJECT_SOURCE_DIR}/src/DriverCGNS
|
${PROJECT_SOURCE_DIR}/src/DriverCGNS
|
||||||
@ -116,7 +115,7 @@ SET(SMESHEngine_HEADERS
|
|||||||
SET(SMESHEngine_SOURCES
|
SET(SMESHEngine_SOURCES
|
||||||
SMESH_Gen_i.cxx
|
SMESH_Gen_i.cxx
|
||||||
SMESH_Gen_i_1.cxx
|
SMESH_Gen_i_1.cxx
|
||||||
SMESH_DumpPython.cxx
|
SMESH_PythonDump.cxx
|
||||||
SMESH_Mesh_i.cxx
|
SMESH_Mesh_i.cxx
|
||||||
SMESH_subMesh_i.cxx
|
SMESH_subMesh_i.cxx
|
||||||
SMESH_MeshEditor_i.cxx
|
SMESH_MeshEditor_i.cxx
|
||||||
|
@ -440,6 +440,18 @@ namespace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _FilterArg( const _AString& theArg )
|
||||||
|
{
|
||||||
|
static std::list<_AString> filteredArgs;
|
||||||
|
static bool initialized = false;
|
||||||
|
if ( !initialized ) {
|
||||||
|
initialized = true;
|
||||||
|
filteredArgs.push_back( "SMESH.MED_V2_1" );
|
||||||
|
filteredArgs.push_back( "SMESH.MED_V2_2" );
|
||||||
|
}
|
||||||
|
return std::find( filteredArgs.begin(), filteredArgs.end(), theArg ) != filteredArgs.end();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -1971,16 +1983,26 @@ void _pyMesh::Process( const Handle(_pyCommand)& theCommand )
|
|||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
else if ( theCommand->MethodStartsFrom( "Export" ))
|
else if ( theCommand->MethodStartsFrom( "Export" ))
|
||||||
{
|
{
|
||||||
if ( method == "ExportToMED" || // ExportToMED() --> ExportMED()
|
if ( method == "ExportToMED" || // ExportToMED() --> ExportMED()
|
||||||
method == "ExportToMEDX" ) // ExportToMEDX() --> ExportMED()
|
method == "ExportToMEDX" || // ExportToMEDX() --> ExportMED()
|
||||||
|
method == "ExportMED" )
|
||||||
{
|
{
|
||||||
theCommand->SetMethod( "ExportMED" );
|
theCommand->SetMethod( "ExportMED" );
|
||||||
if ( theCommand->GetNbArgs() == 5 )
|
// filter out deprecated version parameter
|
||||||
|
vector< _AString > args;
|
||||||
|
for ( int i = 1; i <= theCommand->GetNbArgs(); i++ ) {
|
||||||
|
if ( !_FilterArg( theCommand->GetArg( i ) ) )
|
||||||
|
args.push_back( theCommand->GetArg( i ) );
|
||||||
|
}
|
||||||
|
theCommand->RemoveArgs();
|
||||||
|
for ( uint i = 0; i < args.size(); i++ )
|
||||||
|
theCommand->SetArg( i+1, args[i] );
|
||||||
|
if ( theCommand->GetNbArgs() == 4 )
|
||||||
{
|
{
|
||||||
// ExportToMEDX(...,autoDimension) -> ExportToMEDX(...,meshPart=None,autoDimension)
|
// ExportToMEDX(...,autoDimension) -> ExportToMEDX(...,meshPart=None,autoDimension)
|
||||||
_AString autoDimension = theCommand->GetArg( 5 );
|
_AString autoDimension = theCommand->GetArg( 4 );
|
||||||
theCommand->SetArg( 5, "None" );
|
theCommand->SetArg( 4, "None" );
|
||||||
theCommand->SetArg( 6, autoDimension );
|
theCommand->SetArg( 5, autoDimension );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( method == "ExportCGNS" )
|
else if ( method == "ExportCGNS" )
|
||||||
@ -2006,6 +2028,15 @@ void _pyMesh::Process( const Handle(_pyCommand)& theCommand )
|
|||||||
TCollection_AsciiString newMethod = method;
|
TCollection_AsciiString newMethod = method;
|
||||||
newMethod.Remove( /*where=*/7, /*howmany=*/6 );
|
newMethod.Remove( /*where=*/7, /*howmany=*/6 );
|
||||||
theCommand->SetMethod( newMethod );
|
theCommand->SetMethod( newMethod );
|
||||||
|
// filter out deprecated version parameter
|
||||||
|
vector< _AString > args;
|
||||||
|
for ( int i = 1; i <= theCommand->GetNbArgs(); i++ ) {
|
||||||
|
if ( !_FilterArg( theCommand->GetArg( i ) ) )
|
||||||
|
args.push_back( theCommand->GetArg( i ) );
|
||||||
|
}
|
||||||
|
theCommand->RemoveArgs();
|
||||||
|
for ( uint i = 0; i < args.size(); i++ )
|
||||||
|
theCommand->SetArg( i+1, args[i] );
|
||||||
// make the 1st arg be the last one (or last but three for ExportMED())
|
// make the 1st arg be the last one (or last but three for ExportMED())
|
||||||
_pyID partID = theCommand->GetArg( 1 );
|
_pyID partID = theCommand->GetArg( 1 );
|
||||||
int nbArgs = theCommand->GetNbArgs() - 3 * (newMethod == "ExportMED");
|
int nbArgs = theCommand->GetNbArgs() - 3 * (newMethod == "ExportMED");
|
||||||
|
@ -131,6 +131,7 @@
|
|||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <sstream>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
@ -2943,6 +2944,22 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
|
|||||||
return newMesh._retn();
|
return newMesh._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Get version of MED format being used.
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
char* SMESH_Gen_i::GetMEDFileVersion()
|
||||||
|
{
|
||||||
|
MED::TInt majeur, mineur, release;
|
||||||
|
majeur = mineur = release = 0;
|
||||||
|
MED::GetVersionRelease(majeur, mineur, release);
|
||||||
|
std::ostringstream version;
|
||||||
|
version << majeur << "." << mineur << "." << release;
|
||||||
|
return CORBA::string_dup( version.str().c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* SMESH_Gen_i::GetMEDVersion
|
* SMESH_Gen_i::GetMEDVersion
|
||||||
@ -2950,17 +2967,22 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
|
|||||||
* Get MED version of the file by its name
|
* Get MED version of the file by its name
|
||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
CORBA::Boolean SMESH_Gen_i::GetMEDVersion(const char* theFileName,
|
char* SMESH_Gen_i::GetMEDVersion(const char* theFileName)
|
||||||
SMESH::MED_VERSION& theVersion)
|
|
||||||
{
|
{
|
||||||
theVersion = SMESH::MED_V2_1;
|
std::string version = MED::GetMEDVersion( theFileName );
|
||||||
MED::EVersion aVersion = MED::GetVersionId( theFileName );
|
return CORBA::string_dup( version.c_str() );
|
||||||
switch( aVersion ) {
|
}
|
||||||
case MED::eV2_1 : theVersion = SMESH::MED_V2_1; return true;
|
|
||||||
case MED::eV2_2 : theVersion = SMESH::MED_V2_2; return true;
|
//================================================================================
|
||||||
case MED::eVUnknown : return false;
|
/*!
|
||||||
}
|
* SMESH_Gen_i::CheckCompatibility
|
||||||
return false;
|
*
|
||||||
|
* Check compatibility of file with MED format being used.
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
CORBA::Boolean SMESH_Gen_i::CheckCompatibility(const char* theFileName)
|
||||||
|
{
|
||||||
|
return MED::CheckCompatibility( theFileName );
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -2973,7 +2995,7 @@ CORBA::Boolean SMESH_Gen_i::GetMEDVersion(const char* theFileName,
|
|||||||
SMESH::string_array* SMESH_Gen_i::GetMeshNames(const char* theFileName)
|
SMESH::string_array* SMESH_Gen_i::GetMeshNames(const char* theFileName)
|
||||||
{
|
{
|
||||||
SMESH::string_array_var aResult = new SMESH::string_array();
|
SMESH::string_array_var aResult = new SMESH::string_array();
|
||||||
MED::PWrapper aMed = MED::CrWrapper( theFileName );
|
MED::PWrapper aMed = MED::CrWrapperR( theFileName );
|
||||||
MED::TErr anErr;
|
MED::TErr anErr;
|
||||||
MED::TInt aNbMeshes = aMed->GetNbMeshes( &anErr );
|
MED::TInt aNbMeshes = aMed->GetNbMeshes( &anErr );
|
||||||
if( anErr >= 0 ) {
|
if( anErr >= 0 ) {
|
||||||
|
@ -383,9 +383,14 @@ public:
|
|||||||
CORBA::Double mergeTolerance)
|
CORBA::Double mergeTolerance)
|
||||||
throw ( SALOME::SALOME_Exception );
|
throw ( SALOME::SALOME_Exception );
|
||||||
|
|
||||||
|
// Get version of MED format being used.
|
||||||
|
char* GetMEDFileVersion();
|
||||||
|
|
||||||
// Get MED version of the file by its name
|
// Get MED version of the file by its name
|
||||||
CORBA::Boolean GetMEDVersion(const char* theFileName,
|
char* GetMEDVersion(const char* theFileName);
|
||||||
SMESH::MED_VERSION& theVersion);
|
|
||||||
|
// Check compatibility of file with MED format being used.
|
||||||
|
CORBA::Boolean CheckCompatibility(const char* theFileName);
|
||||||
|
|
||||||
// Get names of meshes defined in file with the specified name
|
// Get names of meshes defined in file with the specified name
|
||||||
SMESH::string_array* GetMeshNames(const char* theFileName);
|
SMESH::string_array* GetMeshNames(const char* theFileName);
|
||||||
|
@ -402,8 +402,8 @@ SMESH_Mesh_i::ImportMEDFile( const char* theFileName, const char* theMeshName )
|
|||||||
CreateGroupServants();
|
CreateGroupServants();
|
||||||
|
|
||||||
int major, minor, release;
|
int major, minor, release;
|
||||||
if( !MED::getMEDVersion( theFileName, major, minor, release ) )
|
major = minor = release = 0;
|
||||||
major = minor = release = -1;
|
MED::GetMEDVersion(theFileName, major, minor, release);
|
||||||
_medFileInfo = new SMESH::MedFileInfo();
|
_medFileInfo = new SMESH::MedFileInfo();
|
||||||
_medFileInfo->fileName = theFileName;
|
_medFileInfo->fileName = theFileName;
|
||||||
_medFileInfo->fileSize = 0;
|
_medFileInfo->fileSize = 0;
|
||||||
@ -443,19 +443,6 @@ SMESH::DriverMED_ReadStatus SMESH_Mesh_i::ImportCGNSFile( const char* theFileNa
|
|||||||
return ConvertDriverMEDReadStatus(status);
|
return ConvertDriverMEDReadStatus(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
|
||||||
/*!
|
|
||||||
* \brief Return string representation of a MED file version comprising nbDigits
|
|
||||||
*/
|
|
||||||
//================================================================================
|
|
||||||
|
|
||||||
char* SMESH_Mesh_i::GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits)
|
|
||||||
{
|
|
||||||
string ver = DriverMED_W_SMESHDS_Mesh::GetVersionString(MED::EVersion(version),
|
|
||||||
nbDigits);
|
|
||||||
return CORBA::string_dup( ver.c_str() );
|
|
||||||
}
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* ImportUNVFile
|
* ImportUNVFile
|
||||||
@ -2973,15 +2960,14 @@ string SMESH_Mesh_i::prepareMeshNameAndGroups(const char* file,
|
|||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief Export to med file
|
* \brief Export to MED file
|
||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
void SMESH_Mesh_i::ExportToMEDX (const char* file,
|
void SMESH_Mesh_i::ExportMED(const char* file,
|
||||||
CORBA::Boolean auto_groups,
|
CORBA::Boolean auto_groups,
|
||||||
SMESH::MED_VERSION theVersion,
|
CORBA::Boolean overwrite,
|
||||||
CORBA::Boolean overwrite,
|
CORBA::Boolean autoDimension)
|
||||||
CORBA::Boolean autoDimension)
|
|
||||||
throw(SALOME::SALOME_Exception)
|
throw(SALOME::SALOME_Exception)
|
||||||
{
|
{
|
||||||
SMESH_TRY;
|
SMESH_TRY;
|
||||||
@ -2989,43 +2975,16 @@ void SMESH_Mesh_i::ExportToMEDX (const char* file,
|
|||||||
_preMeshInfo->FullLoadFromFile();
|
_preMeshInfo->FullLoadFromFile();
|
||||||
|
|
||||||
string aMeshName = prepareMeshNameAndGroups(file, overwrite);
|
string aMeshName = prepareMeshNameAndGroups(file, overwrite);
|
||||||
_impl->ExportMED( file, aMeshName.c_str(), auto_groups, theVersion, 0, autoDimension );
|
_impl->ExportMED( file, aMeshName.c_str(), auto_groups, 0, autoDimension );
|
||||||
|
|
||||||
TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".ExportToMEDX( r'"
|
TPythonDump() << SMESH::SMESH_Mesh_var(_this()) << ".ExportMED( r'"
|
||||||
<< file << "', " << auto_groups << ", "
|
<< file << "', " << auto_groups << ", "
|
||||||
<< theVersion << ", " << overwrite << ", "
|
<< overwrite << ", "
|
||||||
<< autoDimension << " )";
|
<< autoDimension << " )";
|
||||||
|
|
||||||
SMESH_CATCH( SMESH::throwCorbaException );
|
SMESH_CATCH( SMESH::throwCorbaException );
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
|
||||||
/*!
|
|
||||||
* \brief Export a mesh to a med file
|
|
||||||
*/
|
|
||||||
//================================================================================
|
|
||||||
|
|
||||||
void SMESH_Mesh_i::ExportToMED (const char* file,
|
|
||||||
CORBA::Boolean auto_groups,
|
|
||||||
SMESH::MED_VERSION theVersion)
|
|
||||||
throw(SALOME::SALOME_Exception)
|
|
||||||
{
|
|
||||||
ExportToMEDX(file,auto_groups,theVersion,true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//================================================================================
|
|
||||||
/*!
|
|
||||||
* \brief Export a mesh to a med file
|
|
||||||
*/
|
|
||||||
//================================================================================
|
|
||||||
|
|
||||||
void SMESH_Mesh_i::ExportMED (const char* file,
|
|
||||||
CORBA::Boolean auto_groups)
|
|
||||||
throw(SALOME::SALOME_Exception)
|
|
||||||
{
|
|
||||||
ExportToMEDX(file,auto_groups,SMESH::MED_V2_2,true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief Export a mesh to a SAUV file
|
* \brief Export a mesh to a SAUV file
|
||||||
@ -3131,7 +3090,6 @@ void SMESH_Mesh_i::ExportSTL (const char *file, const bool isascii)
|
|||||||
void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
||||||
const char* file,
|
const char* file,
|
||||||
CORBA::Boolean auto_groups,
|
CORBA::Boolean auto_groups,
|
||||||
SMESH::MED_VERSION version,
|
|
||||||
CORBA::Boolean overwrite,
|
CORBA::Boolean overwrite,
|
||||||
CORBA::Boolean autoDimension,
|
CORBA::Boolean autoDimension,
|
||||||
const GEOM::ListOfFields& fields,
|
const GEOM::ListOfFields& fields,
|
||||||
@ -3185,7 +3143,7 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
|||||||
{
|
{
|
||||||
aMeshName = prepareMeshNameAndGroups(file, overwrite);
|
aMeshName = prepareMeshNameAndGroups(file, overwrite);
|
||||||
_impl->ExportMED( file, aMeshName.c_str(), auto_groups,
|
_impl->ExportMED( file, aMeshName.c_str(), auto_groups,
|
||||||
version, 0, autoDimension, /*addODOnVertices=*/have0dField);
|
0, autoDimension, /*addODOnVertices=*/have0dField);
|
||||||
meshDS = _impl->GetMeshDS();
|
meshDS = _impl->GetMeshDS();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -3203,7 +3161,7 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
|||||||
|
|
||||||
SMESH_MeshPartDS* partDS = new SMESH_MeshPartDS( meshPart );
|
SMESH_MeshPartDS* partDS = new SMESH_MeshPartDS( meshPart );
|
||||||
_impl->ExportMED( file, aMeshName.c_str(), auto_groups,
|
_impl->ExportMED( file, aMeshName.c_str(), auto_groups,
|
||||||
version, partDS, autoDimension, /*addODOnVertices=*/have0dField);
|
partDS, autoDimension, /*addODOnVertices=*/have0dField);
|
||||||
meshDS = tmpDSDeleter._obj = partDS;
|
meshDS = tmpDSDeleter._obj = partDS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3229,7 +3187,7 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
|||||||
}
|
}
|
||||||
TPythonDump() << _this() << ".ExportPartToMED( "
|
TPythonDump() << _this() << ".ExportPartToMED( "
|
||||||
<< meshPart << ", r'" << file << "', "
|
<< meshPart << ", r'" << file << "', "
|
||||||
<< auto_groups << ", " << version << ", " << overwrite << ", "
|
<< auto_groups << ", " << overwrite << ", "
|
||||||
<< autoDimension << ", " << goList
|
<< autoDimension << ", " << goList
|
||||||
<< ", '" << ( geomAssocFields ? geomAssocFields : "" ) << "'" << " )";
|
<< ", '" << ( geomAssocFields ? geomAssocFields : "" ) << "'" << " )";
|
||||||
|
|
||||||
|
@ -225,21 +225,11 @@ public:
|
|||||||
* Consider maximum group name length stored in MED file.
|
* Consider maximum group name length stored in MED file.
|
||||||
*/
|
*/
|
||||||
CORBA::Boolean HasDuplicatedGroupNamesMED();
|
CORBA::Boolean HasDuplicatedGroupNamesMED();
|
||||||
/*!
|
|
||||||
* Return string representation of a MED file version comprising nbDigits
|
|
||||||
*/
|
|
||||||
char* GetVersionString(SMESH::MED_VERSION version, CORBA::Short nbDigits);
|
|
||||||
|
|
||||||
void ExportToMEDX( const char* file,
|
void ExportMED( const char* file,
|
||||||
CORBA::Boolean auto_groups,
|
CORBA::Boolean auto_groups,
|
||||||
SMESH::MED_VERSION version,
|
CORBA::Boolean overwrite,
|
||||||
CORBA::Boolean overwrite,
|
CORBA::Boolean autoDimension = true) throw (SALOME::SALOME_Exception);
|
||||||
CORBA::Boolean autoDimension=true) throw (SALOME::SALOME_Exception);
|
|
||||||
void ExportToMED ( const char* file,
|
|
||||||
CORBA::Boolean auto_groups,
|
|
||||||
SMESH::MED_VERSION version ) throw (SALOME::SALOME_Exception);
|
|
||||||
void ExportMED ( const char* file,
|
|
||||||
CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
|
|
||||||
|
|
||||||
void ExportSAUV( const char* file, CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
|
void ExportSAUV( const char* file, CORBA::Boolean auto_groups ) throw (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
@ -256,7 +246,6 @@ public:
|
|||||||
void ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
void ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart,
|
||||||
const char* file,
|
const char* file,
|
||||||
CORBA::Boolean auto_groups,
|
CORBA::Boolean auto_groups,
|
||||||
SMESH::MED_VERSION version,
|
|
||||||
CORBA::Boolean overwrite,
|
CORBA::Boolean overwrite,
|
||||||
CORBA::Boolean autoDim,
|
CORBA::Boolean autoDim,
|
||||||
const GEOM::ListOfFields& fields,
|
const GEOM::ListOfFields& fields,
|
||||||
@ -316,7 +305,7 @@ public:
|
|||||||
CORBA::Long NbPolygons()
|
CORBA::Long NbPolygons()
|
||||||
throw (SALOME::SALOME_Exception);
|
throw (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
CORBA::Long NbPolygonsOfOrder(SMESH::ElementOrder order=SMESH::ORDER_ANY)
|
CORBA::Long NbPolygonsOfOrder(SMESH::ElementOrder order = SMESH::ORDER_ANY)
|
||||||
throw (SALOME::SALOME_Exception);
|
throw (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
CORBA::Long NbVolumes()
|
CORBA::Long NbVolumes()
|
||||||
|
@ -460,10 +460,7 @@ bool SMESH_PreMeshInfo::readMeshInfo()
|
|||||||
{
|
{
|
||||||
_isInfoOk = true;
|
_isInfoOk = true;
|
||||||
|
|
||||||
MED::PWrapper aMed = MED::CrWrapper(_medFileName,true);
|
MED::PWrapper aMed = MED::CrWrapperR(_medFileName);
|
||||||
// if ( aMed->GetVersion() != MED::eV2_2 )
|
|
||||||
// return false;
|
|
||||||
|
|
||||||
MED::PMeshInfo medMeshInfo = aMed->CrMeshInfo(3,3,SMESH_Comment( _meshID ));
|
MED::PMeshInfo medMeshInfo = aMed->CrMeshInfo(3,3,SMESH_Comment( _meshID ));
|
||||||
|
|
||||||
// read nb nodes
|
// read nb nodes
|
||||||
@ -516,7 +513,7 @@ void SMESH_PreMeshInfo::readGroupInfo()
|
|||||||
|
|
||||||
map< int, vector< SMESH_PreMeshInfo* > > famId2grInfo;
|
map< int, vector< SMESH_PreMeshInfo* > > famId2grInfo;
|
||||||
|
|
||||||
MED::PWrapper aMed = MED::CrWrapper(_medFileName,false);
|
MED::PWrapper aMed = MED::CrWrapperR(_medFileName);
|
||||||
MED::PMeshInfo medMeshInfo = aMed->CrMeshInfo(3,3,SMESH_Comment( _meshID ));
|
MED::PMeshInfo medMeshInfo = aMed->CrMeshInfo(3,3,SMESH_Comment( _meshID ));
|
||||||
|
|
||||||
// read families to fill in famId2grInfo
|
// read families to fill in famId2grInfo
|
||||||
|
@ -468,7 +468,6 @@ namespace SMESH
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TPythonDump& TPythonDump:: operator<<(SMESH_Gen_i* theArg)
|
TPythonDump& TPythonDump:: operator<<(SMESH_Gen_i* theArg)
|
||||||
{
|
{
|
||||||
myStream << SMESHGenName(); return *this;
|
myStream << SMESHGenName(); return *this;
|
||||||
@ -484,17 +483,6 @@ namespace SMESH
|
|||||||
myStream << theStr; return *this;
|
myStream << theStr; return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TPythonDump& TPythonDump::operator<<(SMESH::MED_VERSION theVersion)
|
|
||||||
{
|
|
||||||
switch (theVersion) {
|
|
||||||
case SMESH::MED_V2_1: myStream << "SMESH.MED_V2_1"; break;
|
|
||||||
case SMESH::MED_V2_2: myStream << "SMESH.MED_V2_2"; break;
|
|
||||||
default: myStream << theVersion;
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
TPythonDump& TPythonDump::operator<<(const SMESH::AxisStruct & theAxis)
|
TPythonDump& TPythonDump::operator<<(const SMESH::AxisStruct & theAxis)
|
||||||
{
|
{
|
||||||
*this << "SMESH.AxisStruct( "
|
*this << "SMESH.AxisStruct( "
|
@ -200,9 +200,6 @@ namespace SMESH
|
|||||||
TPythonDump&
|
TPythonDump&
|
||||||
operator<<(SMESH_MeshEditor_i* theArg);
|
operator<<(SMESH_MeshEditor_i* theArg);
|
||||||
|
|
||||||
TPythonDump&
|
|
||||||
operator<<(SMESH::MED_VERSION theArg);
|
|
||||||
|
|
||||||
TPythonDump&
|
TPythonDump&
|
||||||
operator<<(const SMESH::AxisStruct & theAxis);
|
operator<<(const SMESH::AxisStruct & theAxis);
|
||||||
|
|
||||||
|
@ -84,6 +84,10 @@ import salome
|
|||||||
from salome.geom import geomBuilder
|
from salome.geom import geomBuilder
|
||||||
|
|
||||||
import SMESH # This is necessary for back compatibility
|
import SMESH # This is necessary for back compatibility
|
||||||
|
import omniORB # back compatibility
|
||||||
|
SMESH.MED_V2_1 = omniORB.EnumItem("MED_V2_1", 0) # back compatibility
|
||||||
|
SMESH.MED_V2_2 = omniORB.EnumItem("MED_V2_2", 1) # back compatibility
|
||||||
|
|
||||||
from SMESH import *
|
from SMESH import *
|
||||||
from salome.smesh.smesh_algorithm import Mesh_Algorithm
|
from salome.smesh.smesh_algorithm import Mesh_Algorithm
|
||||||
|
|
||||||
@ -1839,13 +1843,10 @@ class Mesh(metaclass=MeshMeta):
|
|||||||
|
|
||||||
## Export the mesh in a file in MED format
|
## Export the mesh in a file in MED format
|
||||||
## allowing to overwrite the file if it exists or add the exported data to its contents
|
## allowing to overwrite the file if it exists or add the exported data to its contents
|
||||||
# @param f is the file name
|
# @param fileName is the file name
|
||||||
# @param auto_groups boolean parameter for creating/not creating
|
# @param auto_groups boolean parameter for creating/not creating
|
||||||
# the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
|
# the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
|
||||||
# the typical use is auto_groups=False.
|
# the typical use is auto_groups=False.
|
||||||
# @param version MED format version (MED_V2_1 or MED_V2_2,
|
|
||||||
# the latter meaning any current version). The parameter is
|
|
||||||
# obsolete since MED_V2_1 is no longer supported.
|
|
||||||
# @param overwrite boolean parameter for overwriting/not overwriting the file
|
# @param overwrite boolean parameter for overwriting/not overwriting the file
|
||||||
# @param meshPart a part of mesh (group, sub-mesh) to export instead of the mesh
|
# @param meshPart a part of mesh (group, sub-mesh) to export instead of the mesh
|
||||||
# @param autoDimension if @c True (default), a space dimension of a MED mesh can be either
|
# @param autoDimension if @c True (default), a space dimension of a MED mesh can be either
|
||||||
@ -1861,17 +1862,33 @@ class Mesh(metaclass=MeshMeta):
|
|||||||
# - 'f' stands for "_faces _" field;
|
# - 'f' stands for "_faces _" field;
|
||||||
# - 's' stands for "_solids _" field.
|
# - 's' stands for "_solids _" field.
|
||||||
# @ingroup l2_impexp
|
# @ingroup l2_impexp
|
||||||
def ExportMED(self, f, auto_groups=0, version=MED_V2_2,
|
def ExportMED(self, *args, **kwargs):
|
||||||
overwrite=1, meshPart=None, autoDimension=True, fields=[], geomAssocFields=''):
|
# process positional arguments
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]] # backward compatibility
|
||||||
|
fileName = args[0]
|
||||||
|
auto_groups = args[1] if len(args) > 1 else False
|
||||||
|
overwrite = args[2] if len(args) > 2 else True
|
||||||
|
meshPart = args[3] if len(args) > 3 else None
|
||||||
|
autoDimension = args[4] if len(args) > 4 else True
|
||||||
|
fields = args[5] if len(args) > 5 else []
|
||||||
|
geomAssocFields = args[6] if len(args) > 6 else ''
|
||||||
|
# process keywords arguments
|
||||||
|
auto_groups = kwargs.get("auto_groups", auto_groups)
|
||||||
|
overwrite = kwargs.get("overwrite", overwrite)
|
||||||
|
meshPart = kwargs.get("meshPart", meshPart)
|
||||||
|
autoDimension = kwargs.get("autoDimension", autoDimension)
|
||||||
|
fields = kwargs.get("fields", fields)
|
||||||
|
geomAssocFields = kwargs.get("geomAssocFields", geomAssocFields)
|
||||||
|
# invoke engine's function
|
||||||
if meshPart or fields or geomAssocFields:
|
if meshPart or fields or geomAssocFields:
|
||||||
unRegister = genObjUnRegister()
|
unRegister = genObjUnRegister()
|
||||||
if isinstance( meshPart, list ):
|
if isinstance( meshPart, list ):
|
||||||
meshPart = self.GetIDSource( meshPart, SMESH.ALL )
|
meshPart = self.GetIDSource( meshPart, SMESH.ALL )
|
||||||
unRegister.set( meshPart )
|
unRegister.set( meshPart )
|
||||||
self.mesh.ExportPartToMED( meshPart, f, auto_groups, version, overwrite, autoDimension,
|
self.mesh.ExportPartToMED( meshPart, fileName, auto_groups, overwrite, autoDimension,
|
||||||
fields, geomAssocFields)
|
fields, geomAssocFields)
|
||||||
else:
|
else:
|
||||||
self.mesh.ExportToMEDX(f, auto_groups, version, overwrite, autoDimension)
|
self.mesh.ExportMED(fileName, auto_groups, overwrite, autoDimension)
|
||||||
|
|
||||||
## Export the mesh in a file in SAUV format
|
## Export the mesh in a file in SAUV format
|
||||||
# @param f is the file name
|
# @param f is the file name
|
||||||
@ -1961,10 +1978,7 @@ class Mesh(metaclass=MeshMeta):
|
|||||||
## Deprecated, used only for compatibility! Please, use ExportMED() method instead.
|
## Deprecated, used only for compatibility! Please, use ExportMED() method instead.
|
||||||
# Export the mesh in a file in MED format
|
# Export the mesh in a file in MED format
|
||||||
# allowing to overwrite the file if it exists or add the exported data to its contents
|
# allowing to overwrite the file if it exists or add the exported data to its contents
|
||||||
# @param f the file name
|
# @param fileName the file name
|
||||||
# @param version MED format version (MED_V2_1 or MED_V2_2,
|
|
||||||
# the latter meaning any current version). The parameter is
|
|
||||||
# obsolete since MED_V2_1 is no longer supported.
|
|
||||||
# @param opt boolean parameter for creating/not creating
|
# @param opt boolean parameter for creating/not creating
|
||||||
# the groups Group_On_All_Nodes, Group_On_All_Faces, ...
|
# the groups Group_On_All_Nodes, Group_On_All_Faces, ...
|
||||||
# @param overwrite boolean parameter for overwriting/not overwriting the file
|
# @param overwrite boolean parameter for overwriting/not overwriting the file
|
||||||
@ -1974,8 +1988,49 @@ class Mesh(metaclass=MeshMeta):
|
|||||||
# - 3D in the rest cases.<br>
|
# - 3D in the rest cases.<br>
|
||||||
# If @a autoDimension is @c False, the space dimension is always 3.
|
# If @a autoDimension is @c False, the space dimension is always 3.
|
||||||
# @ingroup l2_impexp
|
# @ingroup l2_impexp
|
||||||
def ExportToMED(self, f, version=MED_V2_2, opt=0, overwrite=1, autoDimension=True):
|
def ExportToMED(self, *args, **kwargs):
|
||||||
self.mesh.ExportToMEDX(f, opt, version, overwrite, autoDimension)
|
print("WARNING: ExportToMED() is deprecated, use ExportMED() instead")
|
||||||
|
# process positional arguments
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]] # backward compatibility
|
||||||
|
fileName = args[0]
|
||||||
|
auto_groups = args[1] if len(args) > 1 else False
|
||||||
|
overwrite = args[2] if len(args) > 2 else True
|
||||||
|
autoDimension = args[3] if len(args) > 3 else True
|
||||||
|
# process keywords arguments
|
||||||
|
auto_groups = kwargs.get("opt", auto_groups) # old keyword name
|
||||||
|
auto_groups = kwargs.get("auto_groups", auto_groups) # new keyword name
|
||||||
|
overwrite = kwargs.get("overwrite", overwrite)
|
||||||
|
autoDimension = kwargs.get("autoDimension", autoDimension)
|
||||||
|
# invoke engine's function
|
||||||
|
self.mesh.ExportMED(fileName, auto_groups, overwrite, autoDimension)
|
||||||
|
|
||||||
|
## Deprecated, used only for compatibility! Please, use ExportMED() method instead.
|
||||||
|
# Export the mesh in a file in MED format
|
||||||
|
# allowing to overwrite the file if it exists or add the exported data to its contents
|
||||||
|
# @param fileName the file name
|
||||||
|
# @param opt boolean parameter for creating/not creating
|
||||||
|
# the groups Group_On_All_Nodes, Group_On_All_Faces, ...
|
||||||
|
# @param overwrite boolean parameter for overwriting/not overwriting the file
|
||||||
|
# @param autoDimension if @c True (default), a space dimension of a MED mesh can be either
|
||||||
|
# - 1D if all mesh nodes lie on OX coordinate axis, or
|
||||||
|
# - 2D if all mesh nodes lie on XOY coordinate plane, or
|
||||||
|
# - 3D in the rest cases.<br>
|
||||||
|
# If @a autoDimension is @c False, the space dimension is always 3.
|
||||||
|
# @ingroup l2_impexp
|
||||||
|
def ExportToMEDX(self, *args, **kwargs):
|
||||||
|
print("WARNING: ExportToMEDX() is deprecated, use ExportMED() instead")
|
||||||
|
# process positional arguments
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]] # backward compatibility
|
||||||
|
fileName = args[0]
|
||||||
|
auto_groups = args[1] if len(args) > 1 else False
|
||||||
|
overwrite = args[2] if len(args) > 2 else True
|
||||||
|
autoDimension = args[3] if len(args) > 3 else True
|
||||||
|
# process keywords arguments
|
||||||
|
auto_groups = kwargs.get("auto_groups", auto_groups)
|
||||||
|
overwrite = kwargs.get("overwrite", overwrite)
|
||||||
|
autoDimension = kwargs.get("autoDimension", autoDimension)
|
||||||
|
# invoke engine's function
|
||||||
|
self.mesh.ExportMED(fileName, auto_groups, overwrite, autoDimension)
|
||||||
|
|
||||||
# Operations with groups:
|
# Operations with groups:
|
||||||
# ----------------------
|
# ----------------------
|
||||||
@ -5121,7 +5176,25 @@ class meshProxy(SMESH._objref_SMESH_Mesh):
|
|||||||
def CreateDimGroup(self,*args): # 2 args added: nbCommonNodes, underlyingOnly
|
def CreateDimGroup(self,*args): # 2 args added: nbCommonNodes, underlyingOnly
|
||||||
if len( args ) == 3:
|
if len( args ) == 3:
|
||||||
args += SMESH.ALL_NODES, True
|
args += SMESH.ALL_NODES, True
|
||||||
return SMESH._objref_SMESH_Mesh.CreateDimGroup( self, *args )
|
return SMESH._objref_SMESH_Mesh.CreateDimGroup(self, *args)
|
||||||
|
def ExportToMEDX(self, *args): # function removed
|
||||||
|
print("WARNING: ExportToMEDX() is deprecated, use ExportMED() instead")
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]]
|
||||||
|
SMESH._objref_SMESH_Mesh.ExportMED(self, *args)
|
||||||
|
def ExportToMED(self, *args): # function removed
|
||||||
|
print("WARNING: ExportToMED() is deprecated, use ExportMED() instead")
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]]
|
||||||
|
while len(args) < 4: # !!!! nb of parameters for ExportToMED IDL's method
|
||||||
|
args.append(True)
|
||||||
|
SMESH._objref_SMESH_Mesh.ExportMED(self, *args)
|
||||||
|
def ExportPartToMED(self, *args): # 'version' parameter removed
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]]
|
||||||
|
SMESH._objref_SMESH_Mesh.ExportPartToMED(self, *args)
|
||||||
|
def ExportMED(self, *args): # signature of method changed
|
||||||
|
args = [i for i in args if i not in [SMESH.MED_V2_1, SMESH.MED_V2_2]]
|
||||||
|
while len(args) < 4: # !!!! nb of parameters for ExportToMED IDL's method
|
||||||
|
args.append(True)
|
||||||
|
SMESH._objref_SMESH_Mesh.ExportMED(self, *args)
|
||||||
pass
|
pass
|
||||||
omniORB.registerObjref(SMESH._objref_SMESH_Mesh._NP_RepositoryId, meshProxy)
|
omniORB.registerObjref(SMESH._objref_SMESH_Mesh._NP_RepositoryId, meshProxy)
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ def cube3D(L, N, outFile):
|
|||||||
aFilter_1.SetMesh(Maillage_1.GetMesh())
|
aFilter_1.SetMesh(Maillage_1.GetMesh())
|
||||||
FACE_temp = Maillage_1.GroupOnFilter( SMESH.FACE, noms[cont], aFilter_1 )
|
FACE_temp = Maillage_1.GroupOnFilter( SMESH.FACE, noms[cont], aFilter_1 )
|
||||||
|
|
||||||
Maillage_1.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
Maillage_1.ExportMED(outFile)
|
||||||
|
|
||||||
#if salome.sg.hasDesktop():
|
#if salome.sg.hasDesktop():
|
||||||
#salome.sg.updateObjBrowser(True)
|
#salome.sg.updateObjBrowser(True)
|
||||||
@ -191,7 +191,7 @@ def cube2D(L, N, outFile):
|
|||||||
aFilter_1.SetMesh(Maillage_1.GetMesh())
|
aFilter_1.SetMesh(Maillage_1.GetMesh())
|
||||||
EDGE_temp = Maillage_1.GroupOnFilter( SMESH.EDGE, noms[cont], aFilter_1 )
|
EDGE_temp = Maillage_1.GroupOnFilter( SMESH.EDGE, noms[cont], aFilter_1 )
|
||||||
|
|
||||||
Maillage_1.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
Maillage_1.ExportMED(outFile)
|
||||||
|
|
||||||
#if salome.sg.hasDesktop():
|
#if salome.sg.hasDesktop():
|
||||||
#salome.sg.updateObjBrowser(True)
|
#salome.sg.updateObjBrowser(True)
|
||||||
|
@ -189,10 +189,10 @@ def generate(data_demi_grand_axe, data_centre, data_normale,
|
|||||||
Maillage=uF.meshCrack(FACE_FISSURE, minSize, maxSize, chordal, dim)
|
Maillage=uF.meshCrack(FACE_FISSURE, minSize, maxSize, chordal, dim)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Maillage.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
Maillage.ExportMED(outFile)
|
||||||
smesh.SetName(Maillage.GetMesh(), 'MAILLAGE_FISSURE')
|
smesh.SetName(Maillage.GetMesh(), 'MAILLAGE_FISSURE')
|
||||||
except:
|
except:
|
||||||
print('ExportToMEDX() failed. Invalid file name?')
|
print('ExportMED() failed. Invalid file name?')
|
||||||
|
|
||||||
|
|
||||||
## Set names of Mesh objects
|
## Set names of Mesh objects
|
||||||
|
@ -228,7 +228,7 @@ def generateCustom(crack, outFile):
|
|||||||
else:
|
else:
|
||||||
Group_1 = Maillage_1.CreateEmptyGroup( SMESH.NODE, 'crack' )
|
Group_1 = Maillage_1.CreateEmptyGroup( SMESH.NODE, 'crack' )
|
||||||
nbAdd = Group_1.AddFrom( Maillage_1.GetMesh() )
|
nbAdd = Group_1.AddFrom( Maillage_1.GetMesh() )
|
||||||
Maillage_1.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
Maillage_1.ExportMED(outFile)
|
||||||
return(True)
|
return(True)
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,10 +216,10 @@ def generate(data_longueur,data_largeur,data_centre,
|
|||||||
Maillage=uF.meshCrack(FACE_FISSURE, minSize, maxSize, chordal, dim)
|
Maillage=uF.meshCrack(FACE_FISSURE, minSize, maxSize, chordal, dim)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Maillage.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
Maillage.ExportMED(outFile)
|
||||||
smesh.SetName(Maillage.GetMesh(), 'MAILLAGE_FISSURE')
|
smesh.SetName(Maillage.GetMesh(), 'MAILLAGE_FISSURE')
|
||||||
except:
|
except:
|
||||||
print('ExportToMEDX() failed. Invalid file name?')
|
print('ExportMED() failed. Invalid file name?')
|
||||||
|
|
||||||
|
|
||||||
if salome.sg.hasDesktop():
|
if salome.sg.hasDesktop():
|
||||||
|
@ -57,10 +57,10 @@ def generate(data_rayon,data_centre,outFile):
|
|||||||
Maillage=uF.meshCrack(FACE_FISSURE, minSize, maxSize, chordal, dim=3)
|
Maillage=uF.meshCrack(FACE_FISSURE, minSize, maxSize, chordal, dim=3)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Maillage.ExportMED( outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
Maillage.ExportMED(outFile)
|
||||||
smesh.SetName(Maillage.GetMesh(), 'MAILLAGE_FISSURE')
|
smesh.SetName(Maillage.GetMesh(), 'MAILLAGE_FISSURE')
|
||||||
except:
|
except:
|
||||||
print('ExportToMEDX() failed. Invalid file name?')
|
print('ExportMED() failed. Invalid file name?')
|
||||||
|
|
||||||
|
|
||||||
## Set names of Mesh objects
|
## Set names of Mesh objects
|
||||||
|
@ -233,7 +233,7 @@ def extendElsets(meshFile, outFile=None):
|
|||||||
if len(front)==0: crackOnly=False
|
if len(front)==0: crackOnly=False
|
||||||
|
|
||||||
if crackOnly:
|
if crackOnly:
|
||||||
mesh.ExportMED(outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
mesh.ExportMED(outFile)
|
||||||
return('crack')
|
return('crack')
|
||||||
|
|
||||||
# Propagates color using elem connectivity
|
# Propagates color using elem connectivity
|
||||||
@ -304,7 +304,7 @@ def extendElsets(meshFile, outFile=None):
|
|||||||
mesh.MakeGroupByIds('Extended_side%d' %n ,SMESH.EDGE,grElemList[2][n])
|
mesh.MakeGroupByIds('Extended_side%d' %n ,SMESH.EDGE,grElemList[2][n])
|
||||||
|
|
||||||
if outFile==None: outFile=meshFile
|
if outFile==None: outFile=meshFile
|
||||||
mesh.ExportMED(outFile, 0, SMESH.MED_V2_2, 1, None ,1)
|
mesh.ExportMED(outFile)
|
||||||
return(True)
|
return(True)
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ Quadrangle_2D = boite.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
|||||||
Hexa_3D = boite.Hexahedron(algo=smeshBuilder.Hexa)
|
Hexa_3D = boite.Hexahedron(algo=smeshBuilder.Hexa)
|
||||||
isDone = boite.Compute()
|
isDone = boite.Compute()
|
||||||
smesh.SetName(boite, 'boite')
|
smesh.SetName(boite, 'boite')
|
||||||
boite.ExportMED( r'boite.med', 0, SMESH.MED_V2_2, 1 )
|
boite.ExportMED(r'boite.med')
|
||||||
|
|
||||||
## set object names
|
## set object names
|
||||||
smesh.SetName(boite.GetMesh(), 'boite')
|
smesh.SetName(boite.GetMesh(), 'boite')
|
||||||
|
@ -328,7 +328,7 @@ def construitFissureGenerale(maillagesSains,
|
|||||||
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FACE2' )
|
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FACE2' )
|
||||||
|
|
||||||
logging.info("export maillage fini")
|
logging.info("export maillage fini")
|
||||||
maillageComplet.ExportMED( fichierMaillageFissure, 0, SMESH.MED_V2_2, 1 )
|
maillageComplet.ExportMED(fichierMaillageFissure)
|
||||||
putName(maillageComplet, nomFicFissure)
|
putName(maillageComplet, nomFicFissure)
|
||||||
logging.info("fichier maillage fissure %s", fichierMaillageFissure)
|
logging.info("fichier maillage fissure %s", fichierMaillageFissure)
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure,
|
|||||||
[origShapes, verticesShapes, dmoyen] = \
|
[origShapes, verticesShapes, dmoyen] = \
|
||||||
creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut, nomZones, coordsNoeudsFissure)
|
creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut, nomZones, coordsNoeudsFissure)
|
||||||
|
|
||||||
maillageSain.ExportMED( fichierMaillageSain, 0, SMESH.MED_V2_2, 1 )
|
maillageSain.ExportMED(fichierMaillageSain)
|
||||||
logging.debug("fichier maillage sain %s", fichierMaillageSain)
|
logging.debug("fichier maillage sain %s", fichierMaillageSain)
|
||||||
[maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges] = \
|
[maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges] = \
|
||||||
peauInterne(fichierMaillageSain, shapeDefaut, nomZones)
|
peauInterne(fichierMaillageSain, shapeDefaut, nomZones)
|
||||||
|
@ -189,7 +189,7 @@ def insereFissureElliptique(geometriesSaines, maillagesSains,
|
|||||||
|
|
||||||
if step == 18:
|
if step == 18:
|
||||||
return None
|
return None
|
||||||
maillageComplet.ExportMED( fichierMaillageFissure, 0, SMESH.MED_V2_2, 1 )
|
maillageComplet.ExportMED(fichierMaillageFissure)
|
||||||
putName(maillageComplet, nomFicFissure)
|
putName(maillageComplet, nomFicFissure)
|
||||||
logging.info("fichier maillage fissure : %s", fichierMaillageFissure)
|
logging.info("fichier maillage fissure : %s", fichierMaillageFissure)
|
||||||
|
|
||||||
|
@ -1373,7 +1373,7 @@ def insereFissureGenerale(maillagesSains,
|
|||||||
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FACE2' )
|
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FACE2' )
|
||||||
|
|
||||||
logging.info("export maillage fini")
|
logging.info("export maillage fini")
|
||||||
maillageComplet.ExportMED( fichierMaillageFissure, 0, SMESH.MED_V2_2, 1 )
|
maillageComplet.ExportMED(fichierMaillageFissure)
|
||||||
putName(maillageComplet, nomFicFissure)
|
putName(maillageComplet, nomFicFissure)
|
||||||
logging.info("fichier maillage fissure %s", fichierMaillageFissure)
|
logging.info("fichier maillage fissure %s", fichierMaillageFissure)
|
||||||
|
|
||||||
|
@ -649,7 +649,7 @@ def insereFissureLongue(geometriesSaines, maillagesSains,
|
|||||||
#isDone = maillageComplet.ReorientObject( grps[0] )
|
#isDone = maillageComplet.ReorientObject( grps[0] )
|
||||||
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FACE2' )
|
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FACE2' )
|
||||||
|
|
||||||
maillageComplet.ExportMED( fichierMaillageFissure, 0, SMESH.MED_V2_2, 1 )
|
maillageComplet.ExportMED(fichierMaillageFissure)
|
||||||
putName(maillageComplet, nomFicFissure)
|
putName(maillageComplet, nomFicFissure)
|
||||||
logging.info("fichier maillage fissure %s", fichierMaillageFissure)
|
logging.info("fichier maillage fissure %s", fichierMaillageFissure)
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
|||||||
Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
|
Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
|
||||||
isDone = Mesh_1.Compute()
|
isDone = Mesh_1.Compute()
|
||||||
smesh.SetName(Mesh_1, 'Mesh_1')
|
smesh.SetName(Mesh_1, 'Mesh_1')
|
||||||
Mesh_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/CubeAngle.med"), 0, SMESH.MED_V2_2, 1 )
|
Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/CubeAngle.med"))
|
||||||
|
|
||||||
## set object names
|
## set object names
|
||||||
smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
|
smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
|
||||||
|
@ -122,7 +122,7 @@ smesh.SetName(ENCASTR_1, 'ENCASTR')
|
|||||||
smesh.SetName(cubeFin_1.GetMesh(), 'cubeFin')
|
smesh.SetName(cubeFin_1.GetMesh(), 'cubeFin')
|
||||||
smesh.SetName(Nb_Segments_1, 'Nb. Segments_1')
|
smesh.SetName(Nb_Segments_1, 'Nb. Segments_1')
|
||||||
|
|
||||||
cubeFin_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/cubeFin.med"), 0, SMESH.MED_V2_2, 1 )
|
cubeFin_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/cubeFin.med"))
|
||||||
|
|
||||||
if salome.sg.hasDesktop():
|
if salome.sg.hasDesktop():
|
||||||
salome.sg.updateObjBrowser()
|
salome.sg.updateObjBrowser()
|
||||||
|
@ -144,7 +144,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(6,[],[ ])
|
|||||||
Nb_Segments_3.SetDistrType( 0 )
|
Nb_Segments_3.SetDistrType( 0 )
|
||||||
isDone = CylindreSain_1.Compute()
|
isDone = CylindreSain_1.Compute()
|
||||||
smesh.SetName(CylindreSain_1, 'CylindreSain')
|
smesh.SetName(CylindreSain_1, 'CylindreSain')
|
||||||
CylindreSain_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests//CylindreSain.med"), 0, SMESH.MED_V2_2, 1 )
|
CylindreSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests//CylindreSain.med"))
|
||||||
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
||||||
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ status = Disque_1.AddHypothesis(Nb_Segments_2,Compound_4)
|
|||||||
Quadrangle_2D = Disque_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
Quadrangle_2D = Disque_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
||||||
isDone = Disque_1.Compute()
|
isDone = Disque_1.Compute()
|
||||||
smesh.SetName(Disque_1, 'Disque')
|
smesh.SetName(Disque_1, 'Disque')
|
||||||
Disque_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/disque.med"), 0, SMESH.MED_V2_2, 1 )
|
Disque_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/disque.med"))
|
||||||
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
||||||
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(25)
|
|||||||
Nb_Segments_3.SetDistrType( 0 )
|
Nb_Segments_3.SetDistrType( 0 )
|
||||||
isDone = EprouvetteCourbe_1.Compute()
|
isDone = EprouvetteCourbe_1.Compute()
|
||||||
smesh.SetName(EprouvetteCourbe_1, 'EprouvetteCourbe')
|
smesh.SetName(EprouvetteCourbe_1, 'EprouvetteCourbe')
|
||||||
EprouvetteCourbe_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbe.med"), 0, SMESH.MED_V2_2, 1 )
|
EprouvetteCourbe_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbe.med"))
|
||||||
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
||||||
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(10,[],[ ])
|
|||||||
Nb_Segments_3.SetDistrType( 0 )
|
Nb_Segments_3.SetDistrType( 0 )
|
||||||
isDone = eprouvetteDroite_1.Compute()
|
isDone = eprouvetteDroite_1.Compute()
|
||||||
smesh.SetName(eprouvetteDroite_1, 'eprouvetteDroite')
|
smesh.SetName(eprouvetteDroite_1, 'eprouvetteDroite')
|
||||||
eprouvetteDroite_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/eprouvetteDroite.med"), 0, SMESH.MED_V2_2, 1 )
|
eprouvetteDroite_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/eprouvetteDroite.med"))
|
||||||
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
||||||
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ Nb_Segments_3 = Regular_1D_2.NumberOfSegments(5,[],[ ])
|
|||||||
Nb_Segments_3.SetDistrType( 0 )
|
Nb_Segments_3.SetDistrType( 0 )
|
||||||
isDone = objetSain_1.Compute()
|
isDone = objetSain_1.Compute()
|
||||||
smesh.SetName(objetSain_1, 'objetSain')
|
smesh.SetName(objetSain_1, 'objetSain')
|
||||||
objetSain_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheSain.med"), 0, SMESH.MED_V2_2, 1 )
|
objetSain_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheSain.med"))
|
||||||
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
SubMesh_1 = Regular_1D_1.GetSubMesh()
|
||||||
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
SubMesh_2 = Regular_1D_2.GetSubMesh()
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ Quadrangle_2D = Mesh_1.Quadrangle(algo=smeshBuilder.QUADRANGLE)
|
|||||||
Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
|
Hexa_3D = Mesh_1.Hexahedron(algo=smeshBuilder.Hexa)
|
||||||
isDone = Mesh_1.Compute()
|
isDone = Mesh_1.Compute()
|
||||||
smesh.SetName(Mesh_1, 'Mesh_1')
|
smesh.SetName(Mesh_1, 'Mesh_1')
|
||||||
Mesh_1.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/boiteSaine.med"), 0, SMESH.MED_V2_2, 1 )
|
Mesh_1.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/boiteSaine.med"))
|
||||||
|
|
||||||
## set object names
|
## set object names
|
||||||
smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
|
smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1')
|
||||||
|
@ -192,7 +192,7 @@ visHex80 = smesh.CopyMesh( coupe_vis_1, 'visHex80', 1, 0)
|
|||||||
[ tige_2, section_2, tige_haute_2, rond_2, tete_2, section_tete_2, conge_2, appui_2, p_imp_2, tige_rotated, tige_top, section_rotated, section_top, tige_haute_rotated, tige_haute_top, rond_rotated, rond_top, tete_rotated, tete_top, section_tete_rotated, section_tete_top, conge_rotated, conge_top, appui_rotated, appui_top, p_imp_rotated, p_imp_top ] = visHex80.GetGroups()
|
[ tige_2, section_2, tige_haute_2, rond_2, tete_2, section_tete_2, conge_2, appui_2, p_imp_2, tige_rotated, tige_top, section_rotated, section_top, tige_haute_rotated, tige_haute_top, rond_rotated, rond_top, tete_rotated, tete_top, section_tete_rotated, section_tete_top, conge_rotated, conge_top, appui_rotated, appui_top, p_imp_rotated, p_imp_top ] = visHex80.GetGroups()
|
||||||
Sub_mesh_1 = Regular_1D_1.GetSubMesh()
|
Sub_mesh_1 = Regular_1D_1.GetSubMesh()
|
||||||
Sub_mesh_2 = Regular_1D_2.GetSubMesh()
|
Sub_mesh_2 = Regular_1D_2.GetSubMesh()
|
||||||
visHex80.ExportMED( os.path.join(gmu.pathBloc, "materielCasTests/visSain.med"), 0, SMESH.MED_V2_2, 1 )
|
visHex80.ExportMED(os.path.join(gmu.pathBloc, "materielCasTests/visSain.med"))
|
||||||
|
|
||||||
|
|
||||||
## Set names of Mesh objects
|
## Set names of Mesh objects
|
||||||
|
@ -211,7 +211,7 @@ class PluginDialog(QDialog):
|
|||||||
name. This returns the filename.
|
name. This returns the filename.
|
||||||
'''
|
'''
|
||||||
filename=str("/tmp/padder_inputfile_"+meshName+".med")
|
filename=str("/tmp/padder_inputfile_"+meshName+".med")
|
||||||
meshObject.ExportToMEDX( filename, 0, SMESH.MED_V2_2, 1, 1 )
|
meshObject.ExportMED(filename, False, True, True)
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user