Skip to content
Snippets Groups Projects
Commit bc000c7f authored by Spencer Sherwin's avatar Spencer Sherwin
Browse files

Merge branch 'feature/meshgraph-io' into 'master'

Separate MeshGraph input/output functions into a new class

See merge request nektar/nektar!1778
parents d4a32a6a 202bbde0
No related branches found
No related tags found
No related merge requests found
Showing
with 117 additions and 75 deletions
......@@ -34,8 +34,7 @@
#include <LibUtilities/Python/NekPyConfig.hpp>
#include <SpatialDomains/MeshGraph.h>
#include <SpatialDomains/MeshGraphXml.h>
#include <SpatialDomains/MeshGraphXmlCompressed.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <SpatialDomains/Movement/Movement.h>
#include <boost/python/suite/indexing/map_indexing_suite.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
......@@ -43,16 +42,6 @@
using namespace Nektar;
using namespace Nektar::SpatialDomains;
/*
* @brief Lightweight wrapper around MeshGraph::Read to avoid wrapping
* DomainRange struct.
*/
MeshGraphSharedPtr MeshGraph_Read(
const LibUtilities::SessionReaderSharedPtr &session)
{
return MeshGraph::Read(session);
}
/*
* @brief Simple wrapper to build Composite objects from lists of
* Geometry objects.
......@@ -69,29 +58,6 @@ CompositeSharedPtr Composite_Init(py::list geometries)
return composite;
}
/*
* @brief Wrapper to construct MeshGraphXml object, initialising mesh
* and spatial dimensions.
*/
std::shared_ptr<MeshGraph> MeshGraphXml_Init(int meshDim, int spatialDim)
{
auto result = MeshGraphXml::create();
result->Empty(meshDim, spatialDim);
return result;
}
/*
* @brief Wrapper to construct MeshGraphXmlCompressed object, initialising mesh
* and spatial dimensions.
*/
std::shared_ptr<MeshGraph> MeshGraphXmlCompressed_Init(int meshDim,
int spatialDim)
{
auto result = MeshGraphXmlCompressed::create();
result->Empty(meshDim, spatialDim);
return result;
}
/**
* @brief MeshGraph exports.
*/
......@@ -130,17 +96,16 @@ void export_MeshGraph()
.def(py::map_indexing_suite<std::map<int, CompositeMap>, true>());
py::class_<MeshGraph, std::shared_ptr<MeshGraph>, boost::noncopyable>(
"MeshGraph", py::no_init)
"MeshGraph", py::init<>())
.def("Read", MeshGraph_Read)
.staticmethod("Read")
.def("Write", &MeshGraph::WriteGeometry, py::default_call_policies(),
(py::arg("outfile"), py::arg("defaultExp") = false,
py::arg("metadata") = LibUtilities::NullFieldMetaDataMap))
.def("Empty", &MeshGraph::Empty)
.def("GetMeshDimension", &MeshGraph::GetMeshDimension)
.def("GetSpaceDimension", &MeshGraph::GetSpaceDimension)
.def("SetMeshDimension", &MeshGraph::SetMeshDimension)
.def("SetSpaceDimension", &MeshGraph::SetSpaceDimension)
.def("GetAllPointGeoms", &MeshGraph::GetAllPointGeoms,
py::return_internal_reference<>())
.def("GetAllSegGeoms", &MeshGraph::GetAllSegGeoms,
......@@ -178,14 +143,4 @@ void export_MeshGraph()
&MeshGraph::SetExpansionInfoToNumModes)
.def("SetExpansionInfosToPointOrder",
&MeshGraph::SetExpansionInfoToPointOrder);
py::class_<MeshGraphXml, py::bases<MeshGraph>,
std::shared_ptr<MeshGraphXml>, boost::noncopyable>(
"MeshGraphXml", py::no_init)
.def("__init__", py::make_constructor(&MeshGraphXml_Init));
py::class_<MeshGraphXmlCompressed, py::bases<MeshGraphXml>,
std::shared_ptr<MeshGraphXmlCompressed>, boost::noncopyable>(
"MeshGraphXmlCompressed", py::no_init)
.def("__init__", py::make_constructor(&MeshGraphXmlCompressed_Init));
}
////////////////////////////////////////////////////////////////////////////////
//
// File: MeshGraphIO.cpp
//
// For more information, please see: http://www.nektar.info/
//
// The MIT License
//
// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
// Department of Aeronautics, Imperial College London (UK), and Scientific
// Computing and Imaging Institute, University of Utah (USA).
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// Description: Python wrapper for MeshGraphIO.
//
////////////////////////////////////////////////////////////////////////////////
#include <LibUtilities/Python/NekPyConfig.hpp>
#include <SpatialDomains/MeshGraphIO.h>
using namespace Nektar;
using namespace Nektar::SpatialDomains;
/*
* @brief Lightweight wrapper around MeshGraph::Read to avoid wrapping
* DomainRange struct.
*/
MeshGraphSharedPtr MeshGraphIO_Read(
const LibUtilities::SessionReaderSharedPtr &session)
{
return MeshGraphIO::Read(session);
}
MeshGraphIOSharedPtr MeshGraphIO_Create(std::string ioType)
{
return GetMeshGraphIOFactory().CreateInstance(ioType);
}
void export_MeshGraphIO()
{
py::class_<MeshGraphIO, std::shared_ptr<MeshGraphIO>, boost::noncopyable>(
"MeshGraphIO", py::no_init)
.def("Write", &MeshGraphIO::WriteGeometry, py::default_call_policies(),
(py::arg("outfile"), py::arg("defaultExp") = false,
py::arg("metadata") = LibUtilities::NullFieldMetaDataMap))
.def("SetMeshGraph", &MeshGraphIO::SetMeshGraph)
.def("Read", MeshGraphIO_Read)
.staticmethod("Read")
.def("Create", MeshGraphIO_Create)
.staticmethod("Create");
}
......@@ -37,6 +37,7 @@
void export_Geometry();
void export_Curve();
void export_MeshGraph();
void export_MeshGraphIO();
void export_GeomElements();
void export_Zones();
void export_Interfaces();
......@@ -49,6 +50,7 @@ BOOST_PYTHON_MODULE(_SpatialDomains)
export_Geometry();
export_Curve();
export_MeshGraph();
export_MeshGraphIO();
export_GeomElements();
export_Zones();
export_Interfaces();
......
......@@ -36,6 +36,7 @@
#include <MultiRegions/ContField.h>
#include <MultiRegions/MultiRegions.hpp>
#include <SpatialDomains/MeshGraphIO.h>
#include <boost/test/unit_test.hpp>
......@@ -204,7 +205,7 @@ void setupContFieldSolve(fs::path &ph,
// Read Session, MeshGraph and create ContField
Session = LibUtilities::SessionReader::CreateInstance(argc, argv);
SpatialDomains::MeshGraphSharedPtr Graph =
SpatialDomains::MeshGraph::Read(Session);
SpatialDomains::MeshGraphIO::Read(Session);
Exp = MemoryManager<MultiRegions::ContField>::AllocateSharedPtr(
Session, Graph, Session->GetVariable(0));
Fce = MemoryManager<MultiRegions::ContField>::AllocateSharedPtr(*Exp);
......
......@@ -36,6 +36,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <LibUtilities/BasicUtils/Timer.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -59,7 +60,7 @@ int main(int argc, char *argv[])
LIKWID_MARKER_REGISTER("IProductWRTDerivBase_coll");
// Create MeshGraph
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -34,6 +34,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -52,7 +53,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -34,6 +34,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -52,7 +53,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -35,6 +35,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SolverUtils/EquationSystem.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <LibUtilities/BasicUtils/Timer.h>
......@@ -55,7 +56,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -57,7 +57,7 @@
#include <LibUtilities/BasicUtils/SharedArray.hpp>
#include <LibUtilities/Memory/NekMemoryManager.hpp>
#include <SpatialDomains/MeshGraph.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <SolverUtils/SolverUtilsDeclspec.h>
......@@ -361,7 +361,7 @@ int main(int argc, char *argv[])
// Read in mesh from input file and create an object of class MeshGraph
SpatialDomains::MeshGraphSharedPtr graphShPt =
SpatialDomains::MeshGraph::Read(vSession);
SpatialDomains::MeshGraphIO::Read(vSession);
int expdim = graphShPt->GetMeshDimension();
......
......@@ -56,7 +56,7 @@
#include <LibUtilities/Memory/NekMemoryManager.hpp>
#include <MultiRegions/ContField.h>
#include <SpatialDomains/MeshGraph.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <SolverUtils/SolverUtilsDeclspec.h>
......@@ -124,7 +124,7 @@ int main(int argc, char *argv[])
LibUtilities::SessionReaderSharedPtr vSession =
LibUtilities::SessionReader::CreateInstance(argc, argv);
SpatialDomains::MeshGraphSharedPtr graphShPt =
SpatialDomains::MeshGraph::Read(vSession);
SpatialDomains::MeshGraphIO::Read(vSession);
fname = vSession->GetSessionName() + ".cfs";
......
......@@ -54,7 +54,7 @@
#include <LibUtilities/Memory/NekMemoryManager.hpp>
#include <MultiRegions/ContField.h>
#include <SpatialDomains/MeshGraph.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <SolverUtils/SolverUtilsDeclspec.h>
......@@ -99,7 +99,7 @@ int main(int argc, char *argv[])
LibUtilities::SessionReaderSharedPtr vSession =
LibUtilities::SessionReader::CreateInstance(3, argv);
SpatialDomains::MeshGraphSharedPtr graphShPt =
SpatialDomains::MeshGraph::Read(vSession);
SpatialDomains::MeshGraphIO::Read(vSession);
std::string m_ViscosityType;
......
......@@ -35,7 +35,7 @@
#include <LibUtilities/BasicUtils/FieldIO.h>
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <MultiRegions/ContField.h>
#include <SpatialDomains/MeshGraph.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -55,7 +55,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Read the geometry and the expansion information
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create Field I/O object.
fld = LibUtilities::FieldIO::CreateDefault(session);
......
......@@ -40,7 +40,7 @@
#include <LibUtilities/TimeIntegration/TimeIntegrationSchemeOperators.h>
#include <MultiRegions/ContField.h>
#include <SpatialDomains/MeshGraph.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -85,7 +85,7 @@ Diffusion::Diffusion(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Read the geometry and the expansion information
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create Field I/O object.
fld = LibUtilities::FieldIO::CreateDefault(session);
......
......@@ -41,6 +41,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <MultiRegions/AssemblyMap/AssemblyMapDG.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <boost/math/special_functions/spherical_harmonic.hpp>
using namespace std;
......@@ -875,7 +876,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -35,6 +35,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -53,7 +54,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -34,6 +34,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
using namespace std;
using namespace Nektar;
......@@ -52,7 +53,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -34,6 +34,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <LibUtilities/BasicUtils/Timer.h>
......@@ -54,7 +55,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -37,6 +37,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <IncNavierStokesSolver/AdvectionTerms/NavierStokesAdvection.h>
#include <IncNavierStokesSolver/EquationSystems/IncNavierStokes.h>
......@@ -65,7 +66,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
......@@ -37,6 +37,7 @@
#include <LibUtilities/BasicUtils/SessionReader.h>
#include <SolverUtils/Driver.h>
#include <SpatialDomains/MeshGraphIO.h>
#include <IncNavierStokesSolver/EquationSystems/IncNavierStokes.h>
......@@ -65,7 +66,7 @@ int main(int argc, char *argv[])
session = LibUtilities::SessionReader::CreateInstance(argc, argv);
// Create MeshGraph.
graph = SpatialDomains::MeshGraph::Read(session);
graph = SpatialDomains::MeshGraphIO::Read(session);
// Create driver
session->LoadSolverInfo("Driver", vDriverModule, "Standard");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment