Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Core/Mesh/CommandExportBlocksForCGNS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ namespace Mgx3D {
namespace Mesh {
/*----------------------------------------------------------------------------*/
CommandExportBlocksForCGNS::
CommandExportBlocksForCGNS(Internal::Context& context, const std::string& fileName)
CommandExportBlocksForCGNS(Internal::Context& context, int dim, const std::string& fileName)
: Internal::CommandInternal(context, "Export CGNS total")
, m_impl(context,fileName)
, m_impl(context,fileName, dim)
{
}

Expand Down
325 changes: 297 additions & 28 deletions src/Core/Mesh/ExportBlocksCGNSImplementation.cpp

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/Core/Mesh/MeshManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -610,14 +610,14 @@ CommandMeshExplorer* MeshManager::endExplorer(CommandMeshExplorer* oldExplo, boo
return command;
}
/*----------------------------------------------------------------------------*/
Internal::M3DCommandResult* MeshManager::exportBlocksForCGNS(const std::string& n)
Internal::M3DCommandResult* MeshManager::exportBlocksForCGNS(int dim, const std::string& n)
{
#ifdef _DEBUG2
std::cout<<"exportBlocks"<<std::endl;
#endif

//creation de la commande d'exportation
CommandExportBlocksForCGNS *command = new CommandExportBlocksForCGNS(getContext(), n);
CommandExportBlocksForCGNS *command = new CommandExportBlocksForCGNS(getContext(), dim, n);

// trace dans le script
TkUtil::UTF8String cmd (TkUtil::Charset::UTF_8);
Expand Down
2 changes: 1 addition & 1 deletion src/Core/protected/Mesh/CommandExportBlocksForCGNS.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class CommandExportBlocksForCGNS: public Internal::CommandInternal{
* \param context le contexte
* \param fileName le nom du fichier de sortie
*/
CommandExportBlocksForCGNS(Internal::Context& context, const std::string &fileName);
CommandExportBlocksForCGNS(Internal::Context& context, int dim, const std::string &fileName);

/*------------------------------------------------------------------------*/
/** \brief Destructeur
Expand Down
8 changes: 7 additions & 1 deletion src/Core/protected/Mesh/ExportBlocksCGNSImplementation.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace Mgx3D {
* \param c le contexte
* \param n le nom du fichier dans lequel se fait l'exportation
*/
ExportBlocksCGNSImplementation(Internal::Context& c, const std::string& filename);
ExportBlocksCGNSImplementation(Internal::Context& c, const std::string& filename, int dim);

/*------------------------------------------------------------------------*/
/** \brief Destructeur
Expand All @@ -40,7 +40,13 @@ namespace Mgx3D {
*/
void perform(Internal::InfoCommand* icmd);


private:
void perform2D();
void perform3D();

private:
int m_dim;

/// contexte d'exécution
Internal::Context& m_context;
Expand Down
2 changes: 1 addition & 1 deletion src/Core/protected/Mesh/MeshManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class MeshManager final : public Internal::CommandCreator {
*
* \param n le nom du ficher dans lequel on exporte
*/
Mgx3D::Internal::M3DCommandResult* exportBlocksForCGNS(const std::string& n);
Mgx3D::Internal::M3DCommandResult* exportBlocksForCGNS(int dim,const std::string& n);
SET_SWIG_COMPLETABLE_METHOD(exportBlocksForCGNS)

/*------------------------------------------------------------------------*/
Expand Down
50 changes: 43 additions & 7 deletions test_link/test_export_cgns.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os
import pyMagix3D as Mgx3D

def test_export_box(capfd):
def test_export_demicyl_3d(capfd):
ctx = Mgx3D.getStdContext()
ctx.clearSession() # Clean the session after the previous test

Expand All @@ -14,10 +14,10 @@ def test_export_box(capfd):
ctx.getTopoManager().splitAllBlocks ("Ar0176",.5)
ctx.getTopoManager().splitAllBlocks ("Ar0175",.5)
ctx.getTopoManager ( ).destroy (["Bl0075","Bl0076","Bl0077","Bl0078","Bl0079","Bl0080","Bl0081","Bl0082","Bl0091","Bl0092","Bl0093","Bl0094","Bl0095","Bl0096","Bl0097","Bl0098","Bl0099","Bl0100","Bl0101","Bl0102","Bl0115","Bl0116","Bl0117","Bl0118","Bl0119","Bl0120","Bl0121","Bl0122","Bl0131","Bl0132","Bl0133","Bl0134","Bl0135","Bl0136","Bl0137","Bl0138","Bl0139","Bl0140","Bl0141","Bl0142","Bl0083","Bl0084","Bl0085","Bl0086","Bl0123","Bl0124","Bl0125","Bl0126"], True)
ctx.getTopoManager().addToGroup (["Fa0393", "Fa0392", "Fa0285", "Fa0284", "Fa0395", "Fa0394", "Fa0287", "Fa0286", "Fa0279", "Fa0280", "Fa0387", "Fa0388", "Fa0278", "Fa0277", "Fa0386", "Fa0385"], 2, "Paroi")
ctx.getTopoManager().addToGroup (["Fa0295", "Fa0294", "Fa0403", "Fa0402", "Fa0353", "Fa0352", "Fa0461", "Fa0460", "Fa0345", "Fa0344", "Fa0453", "Fa0452", "Fa0329", "Fa0330", "Fa0437", "Fa0438"], 2, "Farfield")
ctx.getTopoManager().addToGroup (["Fa0096", "Fa0097", "Fa0136", "Fa0137", "Fa0129", "Fa0130", "Fa0125", "Fa0124", "Fa0094", "Fa0095", "Fa0134", "Fa0135", "Fa0128", "Fa0127", "Fa0122", "Fa0123"], 2, "Sortie")
ctx.getTopoManager().addToGroup (["Fa0360", "Fa0369", "Fa0359", "Fa0368", "Fa0252", "Fa0261", "Fa0251", "Fa0260", "Fa0327", "Fa0322", "Fa0326", "Fa0321", "Fa0435", "Fa0430", "Fa0434", "Fa0429"], 2, "Symetrie")
ctx.getTopoManager().addToGroup (["Fa0393", "Fa0392", "Fa0285", "Fa0284", "Fa0395", "Fa0394", "Fa0287", "Fa0286", "Fa0279", "Fa0280", "Fa0387", "Fa0388", "Fa0278", "Fa0277", "Fa0386", "Fa0385"], 2, "Paroi_cgns")
ctx.getTopoManager().addToGroup (["Fa0295", "Fa0294", "Fa0403", "Fa0402", "Fa0353", "Fa0352", "Fa0461", "Fa0460", "Fa0345", "Fa0344", "Fa0453", "Fa0452", "Fa0329", "Fa0330", "Fa0437", "Fa0438"], 2, "Farfield_cgns")
ctx.getTopoManager().addToGroup (["Fa0096", "Fa0097", "Fa0136", "Fa0137", "Fa0129", "Fa0130", "Fa0125", "Fa0124", "Fa0094", "Fa0095", "Fa0134", "Fa0135", "Fa0128", "Fa0127", "Fa0122", "Fa0123"], 2, "Sortie_cgns")
ctx.getTopoManager().addToGroup (["Fa0360", "Fa0369", "Fa0359", "Fa0368", "Fa0252", "Fa0261", "Fa0251", "Fa0260", "Fa0327", "Fa0322", "Fa0326", "Fa0321", "Fa0435", "Fa0430", "Fa0434", "Fa0429"], 2, "Symetrie_cgns")
emp = Mgx3D.EdgeMeshingPropertyUniform(10)
ctx.getTopoManager().setParallelMeshingProperty (emp,"Ar0363")
emp = Mgx3D.EdgeMeshingPropertyUniform(10)
Expand All @@ -27,9 +27,45 @@ def test_export_box(capfd):
emp = Mgx3D.EdgeMeshingPropertyUniform(10)
ctx.getTopoManager().setParallelMeshingProperty (emp,"Ar0270")
ctx.getMeshManager().newAllBlocksMesh()
ctx.getMeshManager().exportBlocksForCGNS(cgnsfilename)
ctx.getMeshManager().exportBlocksForCGNS(3, cgnsfilename)

assert os.path.exists(cgnsfilename)
assert os.path.getsize(cgnsfilename) > 0
out, err = capfd.readouterr()
assert len(err) == 0
assert len(err) == 0



def test_export_quad_2d(capfd):
ctx = Mgx3D.getStdContext()
ctx.clearSession() # Clean the session after the previous test

cgnsfilename = "quadOGrid.cgns"
ctx.getGeomManager().newVertex (Mgx3D.Point(0, 0, 0))
ctx.getGeomManager().newVertex (Mgx3D.Point(1, 0, 0))
ctx.getGeomManager().newVertex (Mgx3D.Point(1, 1, 0))
ctx.getGeomManager().newVertex (Mgx3D.Point(0, 1, 0))
ctx.getGeomManager().newSegment("Pt0000", "Pt0001")
ctx.getGeomManager().newSegment("Pt0001", "Pt0002")
ctx.getGeomManager().newSegment("Pt0002", "Pt0003")
ctx.getGeomManager().newSegment("Pt0003", "Pt0000")
ctx.getGeomManager ( ).newPlanarSurface (["Crb0000","Crb0001","Crb0002","Crb0003"], "")
ctx.getGeomManager().addToGroup (["Surf0000"], 2, "face_cgns")
ctx.getGeomManager().addToGroup (["Crb0002"], 1, "haut_cgns")
ctx.getGeomManager().addToGroup (["Crb0000"], 1, "bad_cgns")
ctx.getGeomManager().addToGroup (["Crb0003"], 1, "gauche_cgns")
ctx.getGeomManager().addToGroup (["Crb0001"], 1, "droite_cgns")
ctx.getTopoManager().newStructuredTopoOnGeometry ("Surf0000")
emp = Mgx3D.EdgeMeshingPropertyUniform(5)
ctx.getTopoManager().setMeshingProperty (emp, ["Ar0001","Ar0003"])
ctx.getTopoManager ( ).splitFacesWithOgrid (["Fa0000"], ["Ar0002","Ar0003"], .1, 10)
ctx.getTopoManager ( ).setGeomAssociation (["Ar0009"], "Crb0002", True)
ctx.getTopoManager ( ).setGeomAssociation (["Ar0010"], "Crb0003", True)
ctx.getTopoManager().addToGroup (["Ar0005", "Ar0008", "Ar0007"], 1, "milieu_cgns")
ctx.getMeshManager().newAllFacesMesh()
ctx.getMeshManager().exportBlocksForCGNS(2,cgnsfilename)

assert os.path.exists(cgnsfilename)
assert os.path.getsize(cgnsfilename) > 0
out, err = capfd.readouterr()
assert len(err) == 0