diff --git a/CMakeLists.txt b/CMakeLists.txt index 786a1693f722d04dffbc278edb47935b944b1a4f..c3c76f7ca28930cb367ccc36da5340418f1bb9ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ set(XdmfSources XdmfItem XdmfObject XdmfTopology + XdmfTopologyType XdmfVisitor ) diff --git a/Xdmf.i b/Xdmf.i index ebe11ad9e51e84cc51167b19a0832ad4afd0f24a..860131df6de49b77dc90b0b988f0a4c4d9909ccb 100644 --- a/Xdmf.i +++ b/Xdmf.i @@ -33,6 +33,7 @@ namespace boost { #include #include #include + #include #include %} @@ -48,3 +49,4 @@ namespace boost { %include XdmfGeometryType.hpp %include XdmfGrid.hpp %include XdmfTopology.hpp +%include XdmfTopologyType.hpp diff --git a/Xdmf.py b/Xdmf.py index 7a308ca62acea73d30f580d99480ba10155ba85d..836e043b139ba01d413e6fb7ce6d2b8236297a12 100644 --- a/Xdmf.py +++ b/Xdmf.py @@ -552,6 +552,32 @@ def XdmfGrid_New(): return _Xdmf.XdmfGrid_New() XdmfGrid_New = _Xdmf.XdmfGrid_New +class XdmfTopology(XdmfItem): + __swig_setmethods__ = {} + for _s in [XdmfItem]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{})) + __setattr__ = lambda self, name, value: _swig_setattr(self, XdmfTopology, name, value) + __swig_getmethods__ = {} + for _s in [XdmfItem]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{})) + __getattr__ = lambda self, name: _swig_getattr(self, XdmfTopology, name) + def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined") + __repr__ = _swig_repr + __swig_getmethods__["New"] = lambda x: _Xdmf.XdmfTopology_New + if _newclass:New = staticmethod(_Xdmf.XdmfTopology_New) + def getTopologyType(self): return _Xdmf.XdmfTopology_getTopologyType(self) + def setTopologyType(self, *args): return _Xdmf.XdmfTopology_setTopologyType(self, *args) + def getNumberElements(self): return _Xdmf.XdmfTopology_getNumberElements(self) + def setNumberElements(self, *args): return _Xdmf.XdmfTopology_setNumberElements(self, *args) + def getTopologyTypeAsString(self): return _Xdmf.XdmfTopology_getTopologyTypeAsString(self) + def getNodesPerElement(self): return _Xdmf.XdmfTopology_getNodesPerElement(self) + def printSelf(self): return _Xdmf.XdmfTopology_printSelf(self) + def write(self, *args): return _Xdmf.XdmfTopology_write(self, *args) +XdmfTopology_swigregister = _Xdmf.XdmfTopology_swigregister +XdmfTopology_swigregister(XdmfTopology) + +def XdmfTopology_New(): + return _Xdmf.XdmfTopology_New() +XdmfTopology_New = _Xdmf.XdmfTopology_New + class XdmfTopologyType(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, XdmfTopologyType, name, value) @@ -721,31 +747,5 @@ def XdmfTopologyType_ThreeDCoRectMesh(): return _Xdmf.XdmfTopologyType_ThreeDCoRectMesh() XdmfTopologyType_ThreeDCoRectMesh = _Xdmf.XdmfTopologyType_ThreeDCoRectMesh -class XdmfTopology(XdmfItem): - __swig_setmethods__ = {} - for _s in [XdmfItem]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{})) - __setattr__ = lambda self, name, value: _swig_setattr(self, XdmfTopology, name, value) - __swig_getmethods__ = {} - for _s in [XdmfItem]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{})) - __getattr__ = lambda self, name: _swig_getattr(self, XdmfTopology, name) - def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined") - __repr__ = _swig_repr - __swig_getmethods__["New"] = lambda x: _Xdmf.XdmfTopology_New - if _newclass:New = staticmethod(_Xdmf.XdmfTopology_New) - def getTopologyType(self): return _Xdmf.XdmfTopology_getTopologyType(self) - def setTopologyType(self, *args): return _Xdmf.XdmfTopology_setTopologyType(self, *args) - def getNumberElements(self): return _Xdmf.XdmfTopology_getNumberElements(self) - def setNumberElements(self, *args): return _Xdmf.XdmfTopology_setNumberElements(self, *args) - def getTopologyTypeAsString(self): return _Xdmf.XdmfTopology_getTopologyTypeAsString(self) - def getNodesPerElement(self): return _Xdmf.XdmfTopology_getNodesPerElement(self) - def printSelf(self): return _Xdmf.XdmfTopology_printSelf(self) - def write(self, *args): return _Xdmf.XdmfTopology_write(self, *args) -XdmfTopology_swigregister = _Xdmf.XdmfTopology_swigregister -XdmfTopology_swigregister(XdmfTopology) - -def XdmfTopology_New(): - return _Xdmf.XdmfTopology_New() -XdmfTopology_New = _Xdmf.XdmfTopology_New - diff --git a/XdmfGeometryType.hpp b/XdmfGeometryType.hpp index 5e1807548d33dfb0dcd354972cef71236b76d57f..a019d7d0a025615a142903b148cd8dcc60f6589b 100644 --- a/XdmfGeometryType.hpp +++ b/XdmfGeometryType.hpp @@ -72,4 +72,4 @@ private: std::string mName; }; -#endif /* XDMFATTRIBUTETYPE_HPP_ */ +#endif /* XDMFGEOMETRYTYPE_HPP_ */ diff --git a/XdmfPython.cpp b/XdmfPython.cpp index 1a0136df48cbebf60ff79be2a93df796d3ba6258..5b8609c92dc366d847d8c5c20d2adf304607f4ff 100644 --- a/XdmfPython.cpp +++ b/XdmfPython.cpp @@ -3314,6 +3314,7 @@ SWIG_From_unsigned_SS_int (unsigned int value) #include #include #include + #include #include @@ -8276,6 +8277,240 @@ SWIGINTERN PyObject *XdmfGrid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObj return SWIG_Py_Void(); } +SWIGINTERN PyObject *_wrap_XdmfTopology_New(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< XdmfTopology > result; + + if (!PyArg_ParseTuple(args,(char *)":XdmfTopology_New")) SWIG_fail; + result = XdmfTopology::New(); + resultobj = SWIG_NewPointerObj((new boost::shared_ptr< XdmfTopology >(static_cast< const boost::shared_ptr< XdmfTopology >& >(result))), SWIGTYPE_p_boost__shared_ptrT_XdmfTopology_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_getTopologyType(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + SwigValueWrapper< XdmfTopologyType > result; + + if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getTopologyType",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getTopologyType" "', argument " "1"" of type '" "XdmfTopology const *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + result = ((XdmfTopology const *)arg1)->getTopologyType(); + resultobj = SWIG_NewPointerObj((new XdmfTopologyType(static_cast< const XdmfTopologyType& >(result))), SWIGTYPE_p_XdmfTopologyType, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_setTopologyType(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + XdmfTopologyType *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:XdmfTopology_setTopologyType",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_setTopologyType" "', argument " "1"" of type '" "XdmfTopology *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_XdmfTopologyType, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "XdmfTopology_setTopologyType" "', argument " "2"" of type '" "XdmfTopologyType const &""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "XdmfTopology_setTopologyType" "', argument " "2"" of type '" "XdmfTopologyType const &""'"); + } + arg2 = reinterpret_cast< XdmfTopologyType * >(argp2); + (arg1)->setTopologyType((XdmfTopologyType const &)*arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_getNumberElements(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getNumberElements",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getNumberElements" "', argument " "1"" of type '" "XdmfTopology const *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + result = (int)((XdmfTopology const *)arg1)->getNumberElements(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_setNumberElements(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + int *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:XdmfTopology_setNumberElements",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_setNumberElements" "', argument " "1"" of type '" "XdmfTopology *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_int, 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "XdmfTopology_setNumberElements" "', argument " "2"" of type '" "int &""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "XdmfTopology_setNumberElements" "', argument " "2"" of type '" "int &""'"); + } + arg2 = reinterpret_cast< int * >(argp2); + (arg1)->setNumberElements(*arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_getTopologyTypeAsString(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + std::string result; + + if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getTopologyTypeAsString",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getTopologyTypeAsString" "', argument " "1"" of type '" "XdmfTopology const *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + result = ((XdmfTopology const *)arg1)->getTopologyTypeAsString(); + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_getNodesPerElement(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getNodesPerElement",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getNodesPerElement" "', argument " "1"" of type '" "XdmfTopology const *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + result = (int)((XdmfTopology const *)arg1)->getNodesPerElement(); + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_printSelf(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + std::string result; + + if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_printSelf",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_printSelf" "', argument " "1"" of type '" "XdmfTopology const *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + result = ((XdmfTopology const *)arg1)->printSelf(); + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_XdmfTopology_write(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + XdmfTopology *arg1 = (XdmfTopology *) 0 ; + boost::shared_ptr< XdmfVisitor > arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:XdmfTopology_write",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_write" "', argument " "1"" of type '" "XdmfTopology const *""'"); + } + arg1 = reinterpret_cast< XdmfTopology * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_XdmfVisitor_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "XdmfTopology_write" "', argument " "2"" of type '" "boost::shared_ptr< XdmfVisitor >""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "XdmfTopology_write" "', argument " "2"" of type '" "boost::shared_ptr< XdmfVisitor >""'"); + } else { + boost::shared_ptr< XdmfVisitor > * temp = reinterpret_cast< boost::shared_ptr< XdmfVisitor > * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + ((XdmfTopology const *)arg1)->write(arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *XdmfTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_XdmfTopology, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + SWIGINTERN PyObject *_wrap_XdmfTopologyType_NoTopologyType(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; SwigValueWrapper< XdmfTopologyType > result; @@ -8786,240 +9021,6 @@ SWIGINTERN PyObject *XdmfTopologyType_swigregister(PyObject *SWIGUNUSEDPARM(self return SWIG_Py_Void(); } -SWIGINTERN PyObject *_wrap_XdmfTopology_New(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - boost::shared_ptr< XdmfTopology > result; - - if (!PyArg_ParseTuple(args,(char *)":XdmfTopology_New")) SWIG_fail; - result = XdmfTopology::New(); - resultobj = SWIG_NewPointerObj((new boost::shared_ptr< XdmfTopology >(static_cast< const boost::shared_ptr< XdmfTopology >& >(result))), SWIGTYPE_p_boost__shared_ptrT_XdmfTopology_t, SWIG_POINTER_OWN | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_getTopologyType(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - SwigValueWrapper< XdmfTopologyType > result; - - if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getTopologyType",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getTopologyType" "', argument " "1"" of type '" "XdmfTopology const *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - result = ((XdmfTopology const *)arg1)->getTopologyType(); - resultobj = SWIG_NewPointerObj((new XdmfTopologyType(static_cast< const XdmfTopologyType& >(result))), SWIGTYPE_p_XdmfTopologyType, SWIG_POINTER_OWN | 0 ); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_setTopologyType(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - XdmfTopologyType *arg2 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"OO:XdmfTopology_setTopologyType",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_setTopologyType" "', argument " "1"" of type '" "XdmfTopology *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_XdmfTopologyType, 0 | 0); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "XdmfTopology_setTopologyType" "', argument " "2"" of type '" "XdmfTopologyType const &""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "XdmfTopology_setTopologyType" "', argument " "2"" of type '" "XdmfTopologyType const &""'"); - } - arg2 = reinterpret_cast< XdmfTopologyType * >(argp2); - (arg1)->setTopologyType((XdmfTopologyType const &)*arg2); - resultobj = SWIG_Py_Void(); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_getNumberElements(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - int result; - - if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getNumberElements",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getNumberElements" "', argument " "1"" of type '" "XdmfTopology const *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - result = (int)((XdmfTopology const *)arg1)->getNumberElements(); - resultobj = SWIG_From_int(static_cast< int >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_setNumberElements(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - int *arg2 = 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 = 0 ; - int res2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"OO:XdmfTopology_setNumberElements",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_setNumberElements" "', argument " "1"" of type '" "XdmfTopology *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_int, 0 ); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "XdmfTopology_setNumberElements" "', argument " "2"" of type '" "int &""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "XdmfTopology_setNumberElements" "', argument " "2"" of type '" "int &""'"); - } - arg2 = reinterpret_cast< int * >(argp2); - (arg1)->setNumberElements(*arg2); - resultobj = SWIG_Py_Void(); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_getTopologyTypeAsString(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - std::string result; - - if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getTopologyTypeAsString",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getTopologyTypeAsString" "', argument " "1"" of type '" "XdmfTopology const *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - result = ((XdmfTopology const *)arg1)->getTopologyTypeAsString(); - resultobj = SWIG_From_std_string(static_cast< std::string >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_getNodesPerElement(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - int result; - - if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_getNodesPerElement",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_getNodesPerElement" "', argument " "1"" of type '" "XdmfTopology const *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - result = (int)((XdmfTopology const *)arg1)->getNodesPerElement(); - resultobj = SWIG_From_int(static_cast< int >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_printSelf(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - void *argp1 = 0 ; - int res1 = 0 ; - PyObject * obj0 = 0 ; - std::string result; - - if (!PyArg_ParseTuple(args,(char *)"O:XdmfTopology_printSelf",&obj0)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_printSelf" "', argument " "1"" of type '" "XdmfTopology const *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - result = ((XdmfTopology const *)arg1)->printSelf(); - resultobj = SWIG_From_std_string(static_cast< std::string >(result)); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *_wrap_XdmfTopology_write(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - XdmfTopology *arg1 = (XdmfTopology *) 0 ; - boost::shared_ptr< XdmfVisitor > arg2 ; - void *argp1 = 0 ; - int res1 = 0 ; - void *argp2 ; - int res2 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - - if (!PyArg_ParseTuple(args,(char *)"OO:XdmfTopology_write",&obj0,&obj1)) SWIG_fail; - res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_XdmfTopology, 0 | 0 ); - if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XdmfTopology_write" "', argument " "1"" of type '" "XdmfTopology const *""'"); - } - arg1 = reinterpret_cast< XdmfTopology * >(argp1); - { - res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_XdmfVisitor_t, 0 | 0); - if (!SWIG_IsOK(res2)) { - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "XdmfTopology_write" "', argument " "2"" of type '" "boost::shared_ptr< XdmfVisitor >""'"); - } - if (!argp2) { - SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "XdmfTopology_write" "', argument " "2"" of type '" "boost::shared_ptr< XdmfVisitor >""'"); - } else { - boost::shared_ptr< XdmfVisitor > * temp = reinterpret_cast< boost::shared_ptr< XdmfVisitor > * >(argp2); - arg2 = *temp; - if (SWIG_IsNewObj(res2)) delete temp; - } - } - ((XdmfTopology const *)arg1)->write(arg2); - resultobj = SWIG_Py_Void(); - return resultobj; -fail: - return NULL; -} - - -SWIGINTERN PyObject *XdmfTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; - SWIG_TypeNewClientData(SWIGTYPE_p_XdmfTopology, SWIG_NewClientData(obj)); - return SWIG_Py_Void(); -} - static PyMethodDef SwigMethods[] = { { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, { (char *)"delete_SwigPyIterator", _wrap_delete_SwigPyIterator, METH_VARARGS, NULL}, @@ -9194,6 +9195,16 @@ static PyMethodDef SwigMethods[] = { { (char *)"XdmfGrid_printSelf", _wrap_XdmfGrid_printSelf, METH_VARARGS, NULL}, { (char *)"XdmfGrid_write", _wrap_XdmfGrid_write, METH_VARARGS, NULL}, { (char *)"XdmfGrid_swigregister", XdmfGrid_swigregister, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_New", _wrap_XdmfTopology_New, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_getTopologyType", _wrap_XdmfTopology_getTopologyType, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_setTopologyType", _wrap_XdmfTopology_setTopologyType, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_getNumberElements", _wrap_XdmfTopology_getNumberElements, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_setNumberElements", _wrap_XdmfTopology_setNumberElements, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_getTopologyTypeAsString", _wrap_XdmfTopology_getTopologyTypeAsString, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_getNodesPerElement", _wrap_XdmfTopology_getNodesPerElement, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_printSelf", _wrap_XdmfTopology_printSelf, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_write", _wrap_XdmfTopology_write, METH_VARARGS, NULL}, + { (char *)"XdmfTopology_swigregister", XdmfTopology_swigregister, METH_VARARGS, NULL}, { (char *)"XdmfTopologyType_NoTopologyType", _wrap_XdmfTopologyType_NoTopologyType, METH_VARARGS, NULL}, { (char *)"XdmfTopologyType_Polyvertex", _wrap_XdmfTopologyType_Polyvertex, METH_VARARGS, NULL}, { (char *)"XdmfTopologyType_Polyline", _wrap_XdmfTopologyType_Polyline, METH_VARARGS, NULL}, @@ -9226,16 +9237,6 @@ static PyMethodDef SwigMethods[] = { { (char *)"new_XdmfTopologyType", _wrap_new_XdmfTopologyType, METH_VARARGS, NULL}, { (char *)"delete_XdmfTopologyType", _wrap_delete_XdmfTopologyType, METH_VARARGS, NULL}, { (char *)"XdmfTopologyType_swigregister", XdmfTopologyType_swigregister, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_New", _wrap_XdmfTopology_New, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_getTopologyType", _wrap_XdmfTopology_getTopologyType, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_setTopologyType", _wrap_XdmfTopology_setTopologyType, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_getNumberElements", _wrap_XdmfTopology_getNumberElements, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_setNumberElements", _wrap_XdmfTopology_setNumberElements, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_getTopologyTypeAsString", _wrap_XdmfTopology_getTopologyTypeAsString, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_getNodesPerElement", _wrap_XdmfTopology_getNodesPerElement, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_printSelf", _wrap_XdmfTopology_printSelf, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_write", _wrap_XdmfTopology_write, METH_VARARGS, NULL}, - { (char *)"XdmfTopology_swigregister", XdmfTopology_swigregister, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; diff --git a/XdmfTopology.cpp b/XdmfTopology.cpp index 8b768b19bac0e11223e0949719b2bbd1ff91a7ee..1a945ca66ade83130b5564acd8d73013bd908159 100644 --- a/XdmfTopology.cpp +++ b/XdmfTopology.cpp @@ -8,160 +8,6 @@ #include "XdmfTopology.hpp" #include "XdmfVisitor.hpp" -// Supported XdmfTopologyTypes -XdmfTopologyType XdmfTopologyType::NoTopologyType() -{ - return XdmfTopologyType(0, "NoTopology", NoCellType); -} - -XdmfTopologyType XdmfTopologyType::Polyvertex() -{ - return XdmfTopologyType(1, "Polyvertex", Linear); -} - -XdmfTopologyType XdmfTopologyType::Polyline() -{ - return XdmfTopologyType(1, "Polyline", Linear); -} - -XdmfTopologyType XdmfTopologyType::Polygon(const int& nodesPerElement) -{ - return XdmfTopologyType(nodesPerElement, "Polygon", Linear); -} - -XdmfTopologyType XdmfTopologyType::Triangle() -{ - return XdmfTopologyType(3, "Triangle", Linear); -} - -XdmfTopologyType XdmfTopologyType::Quadrilateral() -{ - return XdmfTopologyType(4, "Quadrilateral", Linear); -} - -XdmfTopologyType XdmfTopologyType::Tetrahedron() -{ - return XdmfTopologyType(4, "Tetrahedron", Linear); -} - -XdmfTopologyType XdmfTopologyType::Pyramid() -{ - return XdmfTopologyType(5, "Pyramid", Linear); -} - -XdmfTopologyType XdmfTopologyType::Wedge() -{ - return XdmfTopologyType(6, "Wedge", Linear); -} - -XdmfTopologyType XdmfTopologyType::Hexahedron() -{ - return XdmfTopologyType(8, "Hexahedron", Linear); -} - -XdmfTopologyType XdmfTopologyType::Edge_3() -{ - return XdmfTopologyType(3, "Edge_3", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Triangle_6() -{ - return XdmfTopologyType(6, "Triangle_6", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Quadrilateral_8() -{ - return XdmfTopologyType(8, "Quadrilateral_8", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Tetrahedron_10() -{ - return XdmfTopologyType(10, "Tetrahedron_10", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Pyramid_13() -{ - return XdmfTopologyType(13, "Pyramid_13", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Wedge_15() -{ - return XdmfTopologyType(15, "Wedge_15", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Hexahedron_20() -{ - return XdmfTopologyType(20, "Hexahedron_20", Quadratic); -} - -XdmfTopologyType XdmfTopologyType::Mixed() -{ - return XdmfTopologyType(0, "Mixed", Arbitrary); -} - -XdmfTopologyType XdmfTopologyType::TwoDSMesh() -{ - return XdmfTopologyType(1, "2DSMesh", Structured); -} - -XdmfTopologyType XdmfTopologyType::TwoDRectMesh() -{ - return XdmfTopologyType(1, "2DRectMesh", Structured); -} - -XdmfTopologyType XdmfTopologyType::TwoDCoRectMesh() -{ - return XdmfTopologyType(1, "2DCoRectMesh", Structured); -} - -XdmfTopologyType XdmfTopologyType::ThreeDSMesh() -{ - return XdmfTopologyType(1, "3DSMesh", Structured); -} - -XdmfTopologyType XdmfTopologyType::ThreeDRectMesh() -{ - return XdmfTopologyType(1, "3DRectMesh", Structured); -} - -XdmfTopologyType XdmfTopologyType::ThreeDCoRectMesh() -{ - return XdmfTopologyType(1, "3DCoRectMesh", Structured); -} - -XdmfTopologyType::XdmfTopologyType(const XdmfTopologyType& topType): - mNodesPerElement(topType.mNodesPerElement), - mName(topType.mName), - mCellType(topType.mCellType) -{ -} - -XdmfTopologyType& XdmfTopologyType::operator=(const XdmfTopologyType& topType) -{ - if(this != &topType) - { - mNodesPerElement = topType.mNodesPerElement; - mName = topType.mName; - mCellType = topType.mCellType; - } - return *this; -} - -int XdmfTopologyType::getNodesPerElement() const -{ - return mNodesPerElement; -} - -std::string XdmfTopologyType::getName() const -{ - return mName; -} - -XdmfTopologyType::CellType XdmfTopologyType::getCellType() const -{ - return mCellType; -} - XdmfTopology::XdmfTopology() : mTopologyType(XdmfTopologyType::NoTopologyType()), mNumberElements(0) diff --git a/XdmfTopology.hpp b/XdmfTopology.hpp index 4be015437c0cf237871240f9441cf4dd37a381ce..8d6249c93bd0edf5c9d3a071b4b8db4659588c55 100644 --- a/XdmfTopology.hpp +++ b/XdmfTopology.hpp @@ -10,105 +10,7 @@ // Includes #include "XdmfItem.hpp" - -class XdmfTopologyType { - -public: - - enum CellType { - NoCellType, Linear, Quadratic, Arbitrary, Structured - }; - - // Supported Xdmf Topology Types - static XdmfTopologyType NoTopologyType(); - static XdmfTopologyType Polyvertex(); - static XdmfTopologyType Polyline(); - static XdmfTopologyType Polygon(const int&); - static XdmfTopologyType Triangle(); - static XdmfTopologyType Quadrilateral(); - static XdmfTopologyType Tetrahedron(); - static XdmfTopologyType Pyramid(); - static XdmfTopologyType Wedge(); - static XdmfTopologyType Hexahedron(); - static XdmfTopologyType Edge_3(); - static XdmfTopologyType Triangle_6(); - static XdmfTopologyType Quadrilateral_8(); - static XdmfTopologyType Tetrahedron_10(); - static XdmfTopologyType Pyramid_13(); - static XdmfTopologyType Wedge_15(); - static XdmfTopologyType Hexahedron_20(); - static XdmfTopologyType Mixed(); - static XdmfTopologyType TwoDSMesh(); - static XdmfTopologyType TwoDRectMesh(); - static XdmfTopologyType TwoDCoRectMesh(); - static XdmfTopologyType ThreeDSMesh(); - static XdmfTopologyType ThreeDRectMesh(); - static XdmfTopologyType ThreeDCoRectMesh(); - - /** - * Get the number of nodes per element associated with this topology type. - * - * @return an int containing number of nodes per element. - */ - int getNodesPerElement() const; - - /** - * Get the name of this topology type - * - * @return a string containing the name. - */ - std::string getName() const; - - /** - * Get the cell type associated with this topology type - * - * @return a CellType containing the cell type. - */ - CellType getCellType() const; - - /* - * Compare two XdmfTopology types for equality. - * - * @param an XdmfTopologyType to compare equality to. - * @return true iff the XdmfTopologyTypes are equal. - */ - bool operator==(const XdmfTopologyType& top) const - { - return mNodesPerElement == top.mNodesPerElement && mName.compare(top.mName) == 0 && mCellType == top.mCellType; - } - - /** - * Compare two XdmfTopology types for inequality - * - * @param XdmfTopologyType to compare inequality to. - * @return true iff the XdmfTopologyTypes are not equal. - */ - bool operator!=(const XdmfTopologyType& top) const - { - return !this->operator ==(top); - } - - XdmfTopologyType(const XdmfTopologyType&); - XdmfTopologyType& operator=(const XdmfTopologyType&); - -protected: - - /** - * Protected constructor for XdmfTopologyType. The constructor is protected because all topology types supported - * by Xdmf should be accessed through more specific static methods that construct XdmfTopologyType - i.e. XdmfTopologyType::Tetrahedron() - */ - XdmfTopologyType(const int& nodesPerElement, const std::string& name, const CellType& cellType) : - mNodesPerElement(nodesPerElement), - mName(name), - mCellType(cellType) - {}; - -private: - - int mNodesPerElement; - std::string mName; - CellType mCellType; -}; +#include "XdmfTopologyType.hpp" class XdmfTopology : public XdmfItem { diff --git a/XdmfTopologyType.cpp b/XdmfTopologyType.cpp new file mode 100644 index 0000000000000000000000000000000000000000..785bf1b782b173656565aaa381da5299dd95c890 --- /dev/null +++ b/XdmfTopologyType.cpp @@ -0,0 +1,178 @@ +/* + * XdmfTopologyType.cpp + * + * Created on: Jan 29, 2010 + * Author: kleiter + */ + +#include "XdmfTopologyType.hpp" + +// Supported XdmfTopologyTypes +XdmfTopologyType XdmfTopologyType::NoTopologyType() +{ + return XdmfTopologyType(0, "NoTopology", NoCellType); +} + +XdmfTopologyType XdmfTopologyType::Polyvertex() +{ + return XdmfTopologyType(1, "Polyvertex", Linear); +} + +XdmfTopologyType XdmfTopologyType::Polyline() +{ + return XdmfTopologyType(1, "Polyline", Linear); +} + +XdmfTopologyType XdmfTopologyType::Polygon(const int& nodesPerElement) +{ + return XdmfTopologyType(nodesPerElement, "Polygon", Linear); +} + +XdmfTopologyType XdmfTopologyType::Triangle() +{ + return XdmfTopologyType(3, "Triangle", Linear); +} + +XdmfTopologyType XdmfTopologyType::Quadrilateral() +{ + return XdmfTopologyType(4, "Quadrilateral", Linear); +} + +XdmfTopologyType XdmfTopologyType::Tetrahedron() +{ + return XdmfTopologyType(4, "Tetrahedron", Linear); +} + +XdmfTopologyType XdmfTopologyType::Pyramid() +{ + return XdmfTopologyType(5, "Pyramid", Linear); +} + +XdmfTopologyType XdmfTopologyType::Wedge() +{ + return XdmfTopologyType(6, "Wedge", Linear); +} + +XdmfTopologyType XdmfTopologyType::Hexahedron() +{ + return XdmfTopologyType(8, "Hexahedron", Linear); +} + +XdmfTopologyType XdmfTopologyType::Edge_3() +{ + return XdmfTopologyType(3, "Edge_3", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Triangle_6() +{ + return XdmfTopologyType(6, "Triangle_6", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Quadrilateral_8() +{ + return XdmfTopologyType(8, "Quadrilateral_8", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Tetrahedron_10() +{ + return XdmfTopologyType(10, "Tetrahedron_10", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Pyramid_13() +{ + return XdmfTopologyType(13, "Pyramid_13", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Wedge_15() +{ + return XdmfTopologyType(15, "Wedge_15", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Hexahedron_20() +{ + return XdmfTopologyType(20, "Hexahedron_20", Quadratic); +} + +XdmfTopologyType XdmfTopologyType::Mixed() +{ + return XdmfTopologyType(0, "Mixed", Arbitrary); +} + +XdmfTopologyType XdmfTopologyType::TwoDSMesh() +{ + return XdmfTopologyType(1, "2DSMesh", Structured); +} + +XdmfTopologyType XdmfTopologyType::TwoDRectMesh() +{ + return XdmfTopologyType(1, "2DRectMesh", Structured); +} + +XdmfTopologyType XdmfTopologyType::TwoDCoRectMesh() +{ + return XdmfTopologyType(1, "2DCoRectMesh", Structured); +} + +XdmfTopologyType XdmfTopologyType::ThreeDSMesh() +{ + return XdmfTopologyType(1, "3DSMesh", Structured); +} + +XdmfTopologyType XdmfTopologyType::ThreeDRectMesh() +{ + return XdmfTopologyType(1, "3DRectMesh", Structured); +} + +XdmfTopologyType XdmfTopologyType::ThreeDCoRectMesh() +{ + return XdmfTopologyType(1, "3DCoRectMesh", Structured); +} + +XdmfTopologyType::XdmfTopologyType(const int& nodesPerElement, const std::string& name, const CellType& cellType) : + mNodesPerElement(nodesPerElement), + mName(name), + mCellType(cellType) +{} + +XdmfTopologyType::XdmfTopologyType(const XdmfTopologyType& topologyType): + mNodesPerElement(topologyType.mNodesPerElement), + mName(topologyType.mName), + mCellType(topologyType.mCellType) +{ +} + +XdmfTopologyType& XdmfTopologyType::operator=(const XdmfTopologyType& topologyType) +{ + if(this != &topologyType) + { + mNodesPerElement = topologyType.mNodesPerElement; + mName = topologyType.mName; + mCellType = topologyType.mCellType; + } + return *this; +} + +bool XdmfTopologyType::operator==(const XdmfTopologyType& topologyType) const +{ + return mNodesPerElement == topologyType.mNodesPerElement && mName.compare(topologyType.mName) == 0 && mCellType == topologyType.mCellType; +} + +bool XdmfTopologyType::operator!=(const XdmfTopologyType& topologyType) const +{ + return !this->operator==(topologyType); +} + +int XdmfTopologyType::getNodesPerElement() const +{ + return mNodesPerElement; +} + +std::string XdmfTopologyType::getName() const +{ + return mName; +} + +XdmfTopologyType::CellType XdmfTopologyType::getCellType() const +{ + return mCellType; +} diff --git a/XdmfTopologyType.hpp b/XdmfTopologyType.hpp new file mode 100644 index 0000000000000000000000000000000000000000..2ccb52d9fbec7c8bded65c239f6df8f093b163a3 --- /dev/null +++ b/XdmfTopologyType.hpp @@ -0,0 +1,102 @@ +/* + * XdmfTopologyType.hpp + * + * Created on: Jan 25, 2010 + * Author: kleiter + */ + +#ifndef XDMFTOPOLOGYTYPE_HPP_ +#define XDMFTOPOLOGYTYPE_HPP_ + +#include + +class XdmfTopologyType { + +public: + + enum CellType { + NoCellType, Linear, Quadratic, Arbitrary, Structured + }; + + // Supported Xdmf Topology Types + static XdmfTopologyType NoTopologyType(); + static XdmfTopologyType Polyvertex(); + static XdmfTopologyType Polyline(); + static XdmfTopologyType Polygon(const int&); + static XdmfTopologyType Triangle(); + static XdmfTopologyType Quadrilateral(); + static XdmfTopologyType Tetrahedron(); + static XdmfTopologyType Pyramid(); + static XdmfTopologyType Wedge(); + static XdmfTopologyType Hexahedron(); + static XdmfTopologyType Edge_3(); + static XdmfTopologyType Triangle_6(); + static XdmfTopologyType Quadrilateral_8(); + static XdmfTopologyType Tetrahedron_10(); + static XdmfTopologyType Pyramid_13(); + static XdmfTopologyType Wedge_15(); + static XdmfTopologyType Hexahedron_20(); + static XdmfTopologyType Mixed(); + static XdmfTopologyType TwoDSMesh(); + static XdmfTopologyType TwoDRectMesh(); + static XdmfTopologyType TwoDCoRectMesh(); + static XdmfTopologyType ThreeDSMesh(); + static XdmfTopologyType ThreeDRectMesh(); + static XdmfTopologyType ThreeDCoRectMesh(); + + /** + * Get the number of nodes per element associated with this topology type. + * + * @return an int containing number of nodes per element. + */ + int getNodesPerElement() const; + + /** + * Get the name of this topology type + * + * @return a string containing the name. + */ + std::string getName() const; + + /** + * Get the cell type associated with this topology type + * + * @return a CellType containing the cell type. + */ + CellType getCellType() const; + + /* + * Compare two XdmfTopologyTypes for equality. + * + * @param an XdmfTopologyType to compare equality to. + * @return true iff the XdmfTopologyTypes are equal. + */ + bool operator==(const XdmfTopologyType& topologyType) const; + + /** + * Compare two XdmfTopologyTypes for inequality + * + * @param XdmfTopologyType to compare inequality to. + * @return true iff the XdmfTopologyTypes are not equal. + */ + bool operator!=(const XdmfTopologyType& topologyType) const; + + XdmfTopologyType(const XdmfTopologyType& topologyType); + XdmfTopologyType& operator=(const XdmfTopologyType& topologyType); + +protected: + + /** + * Protected constructor for XdmfTopologyType. The constructor is protected because all topology types supported + * by Xdmf should be accessed through more specific static methods that construct XdmfTopologyType - i.e. XdmfTopologyType::Tetrahedron() + */ + XdmfTopologyType(const int& nodesPerElement, const std::string& name, const CellType& cellType); + +private: + + int mNodesPerElement; + std::string mName; + CellType mCellType; +}; + +#endif /* XDMFTOPOLOGYTYPE_HPP_ */