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
37#include <sstream>
38
39void export_Basis();
40void export_Comm();
42void export_Equation();
43void export_Points();
45void export_ShapeType();
46void export_Comm();
47
48template <typename T> void export_SharedArray();
49
50template <typename T> void export_NekMatrix();
51
52PyObject *NekErrorType = nullptr;
53std::stringstream errorStream;
54
56
57PyObject *CreateExceptionClass(const char *name,
58 PyObject *baseTypeObj = PyExc_Exception)
59{
60 std::string qualifiedName0 = std::string("NekPy.LibUtilities.") + name;
61
62 PyObject *typeObj = PyErr_NewException(
63 const_cast<char *>(qualifiedName0.c_str()), baseTypeObj, nullptr);
64
65 if (!typeObj)
66 {
67 py::throw_error_already_set();
68 }
69
70 py::scope().attr(name) = py::handle<>(py::borrowed(typeObj));
71 return typeObj;
72}
73
75{
76 PyErr_SetString(NekErrorType, e.what());
77}
78
79BOOST_PYTHON_MODULE(_LibUtilities)
80{
81 np::initialize();
82
83 // Register the NekError exception.
85 py::register_exception_translator<NekError>(&TranslateNekError);
86
87 // Set a stringstream as an error sink to avoid duplicate output.
89
99}
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_SharedArray()
void export_SessionReader()
SessionReader exports.
template void export_NekMatrix< double >()
template void export_SharedArray< double >()
static void SetErrorStream(std::ostream &o)
Definition: ErrorUtil.hpp:71