Nektar++
LibUtilities.cpp
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: LibUtilities.cpp
4//
5// For more information, please see: http://www.nektar.info
6//
7// The MIT License
8//
9// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10// Department of Aeronautics, Imperial College London (UK), and Scientific
11// Computing and Imaging Institute, University of Utah (USA).
12//
13// Permission is hereby granted, free of charge, to any person obtaining a
14// copy of this software and associated documentation files (the "Software"),
15// to deal in the Software without restriction, including without limitation
16// the rights to use, copy, modify, merge, publish, distribute, sublicense,
17// and/or sell copies of the Software, and to permit persons to whom the
18// Software is furnished to do so, subject to the following conditions:
19//
20// The above copyright notice and this permission notice shall be included
21// in all copies or substantial portions of the Software.
22//
23// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29// DEALINGS IN THE SOFTWARE.
30//
31// Description: Python wrapper for LibUtilities classes.
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#include <sstream>
36
38
41
42void export_Basis();
43void export_Comm();
45void export_Equation();
46void export_Points();
48void export_ShapeType();
49void export_Comm();
52
53template <typename T> void export_NekMatrix();
54
55PyObject *NekErrorType = nullptr;
56std::stringstream errorStream;
57
59
60PyObject *CreateExceptionClass(const char *name,
61 PyObject *baseTypeObj = PyExc_Exception)
62{
63 std::string qualifiedName0 = std::string("NekPy.LibUtilities.") + name;
64
65 PyObject *typeObj = PyErr_NewException(
66 const_cast<char *>(qualifiedName0.c_str()), baseTypeObj, nullptr);
67
68 if (!typeObj)
69 {
70 py::throw_error_already_set();
71 }
72
73 py::scope().attr(name) = py::handle<>(py::borrowed(typeObj));
74 return typeObj;
75}
76
78{
79 PyErr_SetString(NekErrorType, e.what());
80}
81
82BOOST_PYTHON_MODULE(_LibUtilities)
83{
84 np::initialize();
85
86 // Register the NekError exception.
88 py::register_exception_translator<NekError>(&TranslateNekError);
89
90 // Set a stringstream as an error sink to avoid duplicate output.
92
99 export_SharedArray<double>();
100 export_SharedArray<const double>();
101 export_SharedArray<Array<OneD, double>>();
102 export_SharedArray<const Array<OneD, double>>();
104 export_Comm();
107}
void export_Comm()
Export for Comm communicator.
void export_Basis()
Basis exports.
PyObject * NekErrorType
void TranslateNekError(NekError const &e)
void export_Equation()
Nektar::ErrorUtil::NekError NekError
BOOST_PYTHON_MODULE(_LibUtilities)
PyObject * CreateExceptionClass(const char *name, PyObject *baseTypeObj=PyExc_Exception)
void export_ShapeType()
Export for ShapeType enumeration.
Definition: ShapeType.cpp:44
std::stringstream errorStream
void export_NekMatrix()
Definition: NekMatrix.cpp:92
void export_Points()
Points exports.
void export_TimeIntegrationSchemeOperators()
void export_SessionReader()
SessionReader exports.
template void export_NekMatrix< double >()
static void SetErrorStream(std::ostream &o)
Definition: ErrorUtil.hpp:71