Commit d85b477a authored by Andrew J. Burns (Cont's avatar Andrew J. Burns (Cont

DSM working with mpich2-1.5

parent b08e5675
......@@ -46,6 +46,9 @@ endif(BUILD_TESTING)
option(XDMF_WRAP_PYTHON OFF)
option(XDMF_WRAP_JAVA OFF)
# Test for DSM
option(XDMF_BUILD_DSM OFF)
# If we are wrapping either, we need swig
if(XDMF_WRAP_PYTHON OR XDMF_WRAP_JAVA)
find_package(SWIG REQUIRED)
......@@ -59,7 +62,11 @@ endif(XDMF_WRAP_PYTHON OR XDMF_WRAP_JAVA)
if(XDMF_WRAP_PYTHON)
find_package(PythonInterp REQUIRED)
find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
if (XDMF_BUILD_DSM)
include_directories(${PYTHON_INCLUDE_DIRS} ${MPI_CXX_INCLUDE_PATH})
else (XDMF_BUILD_DSM)
include_directories(${PYTHON_INCLUDE_DIRS})
endif (XDMF_BUILD_DSM)
# A macro to swig and create the python files
# Since we essentually do the same thing inside and outside core, it
......@@ -74,6 +81,10 @@ if(XDMF_WRAP_PYTHON)
# optimize swig generation --- these are all flags corresponding to -O
# except -fvirtual which breaks visitor operation
set(CMAKE_SWIG_FLAGS ${XDMF_SWIG_FLAGS} -modern -fastdispatch -nosafecstrings -noproxydel -fastproxy -fastinit -fastunpack -fastquery -modernargs -nobuildnone)
#Enables DSM
if (XDMF_BUILD_DSM)
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DXDMF_BUILD_DSM)
endif (XDMF_BUILD_DSM)
set_source_files_properties(${python_name}.i PROPERTIES CPLUSPLUS ON)
set(swig_extra_generated_files "")
swig_add_module(${python_name} python ${python_name}.i)
......
......@@ -3,9 +3,15 @@ XdmfPython.cpp:
swig -v -c++ -python -o XdmfPython.cpp Xdmf.i
*/
#ifdef XDMF_BUILD_DSM
%module Xdmf
%{
// MPI Includes
#include <mpi.h>
// XdmfCore Includes
#include <Xdmf.hpp>
#include <XdmfArray.hpp>
......@@ -15,10 +21,8 @@ swig -v -c++ -python -o XdmfPython.cpp Xdmf.i
#include <XdmfError.hpp>
#include <XdmfHDF5Controller.hpp>
#include <XdmfHDF5Writer.hpp>
#ifdef XDMF_BUILD_DSM
#include <XdmfHDF5ControllerDSM.hpp>
#include <XdmfHDF5WriterDSM.hpp>
#endif
#include <XdmfHeavyDataController.hpp>
#include <XdmfHeavyDataWriter.hpp>
#include <XdmfInformation.hpp>
......@@ -53,6 +57,55 @@ swig -v -c++ -python -o XdmfPython.cpp Xdmf.i
#include <XdmfUnstructuredGrid.hpp>
%}
#else
%module Xdmf
%{
// XdmfCore Includes
#include <Xdmf.hpp>
#include <XdmfArray.hpp>
#include <XdmfArrayType.hpp>
#include <XdmfCoreItemFactory.hpp>
#include <XdmfCoreReader.hpp>
#include <XdmfError.hpp>
#include <XdmfHDF5Controller.hpp>
#include <XdmfHDF5Writer.hpp>
#include <XdmfHeavyDataController.hpp>
#include <XdmfHeavyDataWriter.hpp>
#include <XdmfInformation.hpp>
#include <XdmfItem.hpp>
#include <XdmfItemProperty.hpp>
#include <XdmfSharedPtr.hpp>
#include <XdmfSystemUtils.hpp>
#include <XdmfVisitor.hpp>
#include <XdmfWriter.hpp>
// Xdmf Includes
#include <XdmfAttribute.hpp>
#include <XdmfAttributeCenter.hpp>
#include <XdmfAttributeType.hpp>
#include <XdmfCurvilinearGrid.hpp>
#include <XdmfDomain.hpp>
#include <XdmfGeometry.hpp>
#include <XdmfGeometryType.hpp>
#include <XdmfGrid.hpp>
#include <XdmfGridCollection.hpp>
#include <XdmfGridCollectionType.hpp>
#include <XdmfItemFactory.hpp>
#include <XdmfMap.hpp>
#include <XdmfReader.hpp>
#include <XdmfRectilinearGrid.hpp>
#include <XdmfRegularGrid.hpp>
#include <XdmfSet.hpp>
#include <XdmfSetType.hpp>
#include <XdmfTime.hpp>
#include <XdmfTopology.hpp>
#include <XdmfTopologyType.hpp>
#include <XdmfUnstructuredGrid.hpp>
%}
#endif
%import XdmfCore.i
#ifdef SWIGJAVA
......@@ -169,6 +222,9 @@ swig -v -c++ -python -o XdmfPython.cpp Xdmf.i
%include std_set.i
%include std_map.i
%include std_vector.i
%include mpi4py/mpi4py.i
%mpi4py_typemap(Comm, MPI_Comm);
%template(XdmfMapNodeIdSet) std::set<int>;
%template(XdmfMapNodeIdMap) std::map<int, std::set<int> >;
......
......@@ -77,13 +77,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfAttribute.cpp
* Assuming that exampleAttribute is a shared pointer to an XdmfAttribute object with its center set
* @skipline Assuming
* @skipline getCenter
*
* Python
*
* @dontinclude XdmfExampleAttribute.py
* Assuming that exampleAttribute is a shared pointer to an XdmfAttribute object with its center set
* @skipline Assuming
* @skipline getCenter
*
* @return XdmfAttributeCenter of the attribute.
......@@ -102,13 +102,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfAttribute.cpp
* Assuming that exampleAttribute is a shared pointer to an XdmfAttribute object
* @skipline Assuming
* @skipline getName
*
* Python
*
* @dontinclude XdmfExampleAttribute.py
* Assuming that exampleAttribute is a shared pointer to an XdmfAttribute object
* @skipline Assuming
* @skipline getName
*
* @return a string containing the name of the attribute.
......@@ -123,13 +123,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfAttribute.cpp
* Assuming that exampleAttribute is a shared pointer to an XdmfAttribute object with its type set
* @skipline Assuming
* @skipline getType
*
* Python
*
* @dontinclude XdmfExampleAttribute.py
* Assuming that exampleAttribute is a shared pointer to an XdmfAttribute object with its type set
* @skipline Assuming
* @skipline getType
*
* @return XdmfAttributeType of the attribute.
......
......@@ -142,13 +142,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfCurvilinearGrid.cpp
* Assuming that exampleGrid is a shared pointer to an XdmfCurvilinearGrid object
* @skipline Assuming
* @skipline getDimensions
*
* Python
*
* @dontinclude XdmfExampleCurvilinearGrid.py
* Assuming that exampleGrid is a shared pointer to an XdmfCurvilinearGrid object
* @skipline Assuming
* @skipline getDimensions
*
* @return XdmfArray containing dimensions of this grid.
......@@ -164,7 +164,7 @@ public:
* C++
*
* @dontinclude ExampleXdmfCurvilinearGrid.cpp
* Assuming that exampleGrid is a shared pointer to an XdmfCurvilinearGrid object
* @skipline Assuming
* @skipline const
*
* Python: Python doesn't have a constant version
......@@ -181,13 +181,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfCurvilinearGrid.cpp
* Assuming that exampleGrid is a sharedPointer to an XdmfCurvilinearGrid object
* @skipline Assuming
* @skipline getGeometry
*
* Python
*
* @dontinclude XdmfExampleCurvilinearGrid.py
* Assuming that exampleGrid is a sharedPointer to an XdmfCurvilinearGrid object
* @skipline Assuming
* @skipline getGeometry
*
* @return the geometry associated with this grid.
......@@ -203,13 +203,14 @@ public:
* C++
*
* @dontinclude ExampleXdmfCurvilinearGrid.cpp
* @skipline Assuming
* @skipline XdmfArray::New
* @until setDimensions
* Assumng that exampleGrid is a shared pointer to an XdmfCurvilinearGrid object
*
* Python
*
* @dontinclude XdmfExampleCurvilinearGrid.py
* @skipline Assuming
* @skip setDimensions
* @skipline newPoints
* @until setDimensions
......
......@@ -79,13 +79,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfGeometry.cpp
* assuming that exampleGeometry is a shared pointer to a XdmfGeometry object that has been filled with data
* @skipline Assuming
* @skipline getNumberPoints
*
* Python
*
* @dontinclude XdmfExampleGeometry.py
* assuming that exampleGeometry is a shared pointer to a XdmfGeometry object that has been filled with data
* @skipline Assuming
* @skipline getNumberPoints
*/
virtual unsigned int getNumberPoints() const;
......@@ -98,13 +98,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfGeometry.cpp
* assuming that exampleGeometry is a shared pointer to a XdmfGeometry object
* @skipline Assuming
* @skipline getType
*
* Python
*
* @dontinclude XdmfExampleGeometry.py
* assuming that exampleGeometry is a shared pointer to a XdmfGeometry object
* @skipline Assuming
* @skipline getType
*
* @return XdmfGeometryType of this geometry.
......
......@@ -72,13 +72,11 @@ public:
*
* @dontinclude ExampleXdmfGeometryType.cpp
* @skipline getDimensions
* The variable exampleDimensions now holds the number of dimensions that XYZ has
*
* Python
*
* @dontinclude XdmfExampleGeometryType.py
* @skipline getDimensions
* The variable exampleDimensions now holds the number of dimensions that XYZ has
*
* @return an int containing number of dimensions.
*/
......@@ -93,13 +91,11 @@ public:
*
* @dontinclude ExampleXdmfGeometryType.cpp
* @skipline getName
* The variable exampleName now holds the name of XYZ
*
* Python
*
* @dontinclude XdmfExampleGeometryType.py
* @skipline getName
* The variable exampleName now holds the name of XYZ
*
* @return the name of this geometry type.
*/
......
......@@ -71,15 +71,15 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getGeometry
*
* Python
*
* @dontinclude XdmfExampleGrid.py
* using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getGeometry
*
* @return the geometry associated with this grid.
......@@ -98,15 +98,15 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getName
*
* Python
*
* @dontinclude XdmfExampleGrid.py
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getName
*
* @return the name of the grid.
......@@ -121,15 +121,15 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getTime
*
* Python
*
* @dontinclude XdmfExampleGrid.py
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getTime
*
* @return pointer to the XdmfTime attached to this grid. If no
......@@ -145,8 +145,8 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline exampleTimeConst
*
* Python: Python doesn't have a constant version
......@@ -164,15 +164,15 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getTopology
*
* Python
*
* @dontinclude XdmfExampleGrid.py
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline getTopology
*
* @return the topology associated with this grid.
......@@ -189,16 +189,16 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline newName
* @skipline setName
*
* Python
*
* @dontinclude XdmfExampleGrid.py
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline newName
* @skipline setName
*
......@@ -214,16 +214,16 @@ public:
* C++
*
* @dontinclude ExampleXdmfGrid.cpp
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline newTime
* @skipline setTime
*
* Python
*
* @dontinclude XdmfExampleGrid.py
* Using an unstructured grid since XdmfGrid is an abstract class
* Assumming that exampleGrid is a shared pointer to an XdmfUnstructuredGrid object
* @skipline Using
* @until Assumming
* @skipline newTime
* @skipline setTime
*
......
......@@ -84,13 +84,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfGridCollection.cpp
* Assuming that exampleCollection is a shared pointer to an XdmfGridCollection object with its type set
* @skipline Assuming
* @skipline getType
*
* Python
*
* @dontinclude XdmfExampleGridCollection.py
* Assuming that exampleCollection is a shared pointer to an XdmfGridCollection object with its type set
* @skipline Assuming
* @skipline getType
*
* @return XdmfGridCollectionType of this collection.
......@@ -108,17 +108,17 @@ public:
* C++
*
* @dontinclude ExampleXdmfGridCollection.cpp
* @skipline Assuming
* @skipline exampleInformation
* @until setValue
* Assuming that exampleCollection is a shared pointer to an XdmfGridCollection object
* skipline insert
* @skipline insert
*
* Python
*
* @dontinclude XdmfExampleGridCollection.py
* @skipline Assuming
* @skipline exampleInformation
* @until setValue
* Assuming that exampleCollection is a shared pointer to an XdmfGridCollection object
* @skipline insert
*
* @param information an XdmfInformation to attach to this item.
......@@ -134,13 +134,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfGridCollection.cpp
* Assuming that exampleCollection is a shared pointer to an XdmfGridCollection object
* @skipline Assuming
* @skipline setType
*
* Python
*
* @dontinclude XdmfExampleGridCollection.py
* Assuming that exampleCollection is a shared pointer to an XdmfGridCollection object
* @skipline Assuming
* @skipline setType
*
* @param type the XdmfGridCollectionType to set.
......
......@@ -92,40 +92,15 @@ public:
*
* @dontinclude ExampleXdmfMap.cpp
* @skipline holdGlobalNodes
* @until New
* The globalNodeIDs are placed into the attribute
* The index they are at in the attribute corresponds to their localNodeID
* @skipline nodeAttribute
* @until push_back
* The Attribute is then added to the vector
* The index that the Attribute has in the vector corresponds to a task id
* Using this method add all the required nodes
* @skipline nodeAttribute
* until vector
* returns a vector of maps that holds the equivalencies for the nodes provided
* for example if Attribute 1 had globalNodeID 3 at localNodeID 2
* and Attribute 3 had globalNodeID 3 at localNodeID 5
* then map 1 would have an entry of (3, 5, 2)
* and map 3 would have an entry of (1, 2, 5)
* The entries are formatted (remoteTaskID, remoteLocalNodeID, localNodeID)
* @until localNodeID)
*
* Python
*
* @dontinclude XdmfExampleMap.py
* create attributes for each task id
* the index of the node id in the attribute is the local node id
* @skipline map1Attribute
* @until map2Attribute.insertAsInt32
* insert the attributes into a vector
* the id of the attribute in the vector is equal to the task id
* @skipline testVector
* @until New
* returns a vector of maps that holds the equivalencies for the nodes provided
* for example if Attribute 1 had globalNodeID 3 at localNodeID 2
* and Attribute 3 had globalNodeID 3 at localNodeID 5
* then map 1 would have an entry of (3, 5, 2)
* and map 3 would have an entry of (1, 2, 5)
* The entries are formatted (remoteTaskID, remoteLocalNodeID, localNodeID)
* @skipline #create
* @until push_back(map2Attribute)
* @skipline New
* @until localNodeID)
*
* @param globalNodeIds a vector of attributes containing globalNodeId
* values for each partition to be mapped.
......@@ -151,57 +126,16 @@ public:
* C++
*
* @dontinclude ExampleXdmfMap.cpp
* Assuming that exampleMap is a shared pointer to an XdmfMap object filled with the following tuples
* (1, 1, 9)
* (1, 2, 8)
* (2, 3, 7)
* (2, 4, 6)
* (3, 5, 5)
* (3, 6, 4)
* @skipline getMap
* taskIDMap now contains the same tuples as exampleMap
* @skipline begin
* @until first
* taskIDValue is now equal to 1, because that is the first taskID listed
* @skipline nodeIDMap
* nodeIDMap now contains the following tuples because it retrieved the tuples associated with taskID 1
* (1, 9)
* (2, 8)
* @skipline begin
* @until first
* localNodeValue is now equal to 1, because it is the first entry in the first tuple in the set
* @skipline remoteNodeSet
* remoteNodeSet now contains all remoteLocalNodeIDs for taskID 1 and LocalNode 1
* in this case remoteNodeSet contains (9)
* @skipline begin
* @until remoteNodeValue
* remoteNodeValue now equals 9
* @skip getMap
* @skipline Assuming
* @until //remoteNodeValue
*
* Python
*
* @dontinclude XdmfExampleMap.py
* Assuming that exampleMap is a shared pointer to an XdmfMap object filled with the following tuples
* (1, 1, 9)
* (1, 2, 8)
* (2, 3, 7)
* (2, 4, 6)
* (3, 5, 5)
* (3, 6, 4)
* @skipline getMap
* @until break
* This prints out all the task IDs
* unless the break is called on the last iteration the program will fail because of an issue with SWIG
* @skipline nodeIDMap
* nodeIDMap now contains the following tuples because it retrieved the tuples associated with taskID 1
* (1, 9)
* (2, 8)
* @skipline 0
* @until break
* This prints out all the local node IDs
* unless the break is called on the last iteration the program will fail because of an issue with SWIG
* @skipline val
* @until print
* prints out all the remote node values associated with taskID 1 and localNode 1
* @skip getMap
* @skipline Assuming
* @until #prints
*
* @return stored boundary communicator map.
*/
......@@ -215,13 +149,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfMap.cpp
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline getName
*
* Python
*
* @dontinclude XdmfExampleMap.py
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline getName
*
* @return name of boundary communicator map.
......@@ -237,48 +171,20 @@ public:
* C++
*
* @dontinclude ExampleXdmfMap.cpp
* Assuming that exampleMap is a shared pointer to an XdmfMap object filled with the following tuples
* (1, 1, 9)
* (1, 2, 8)
* (2, 3, 7)
* (2, 4, 6)
* (3, 5, 5)
* (3, 6, 4)
* @skip getMap
* @skipline Assuming
* @until 4)
* @skipline getRemoteNodeIds
* nodeIDMap now contains the following tuples because it retrieved the tuples associated with taskID 1
* (1, 9)
* (2, 8)
* @skipline begin
* @until first
* localNodeValue is now equal to 1, because it is the first entry in the first tuple in the set
* @skipline remoteNodeSet
* remoteNodeSet now contains all remoteLocalNodeIDs for taskID 1 and LocalNode 1
* in this case remoteNodeSet contains (9)
* @skipline begin
* @until remoteNodeValue
* remoteNodeValue now equals 9
* @until //remoteNodeValue
*
* Python
*
* @dontinclude XdmfExampleMap.py
* Assuming that exampleMap is a shared pointer to an XdmfMap object filled with the following tuples
* (1, 1, 9)
* (1, 2, 8)
* (2, 3, 7)
* (2, 4, 6)
* (3, 5, 5)
* (3, 6, 4)
* @skip getMap
* @skipline Assuming
* @until 4)
* @skipline getRemoteNodeIds
* nodeIDMap now contains the following tuples because it retrieved the tuples associated with taskID 1
* (1, 9)
* (2, 8)
* @skipline 0
* @until break
* This prints out all the local node IDs
* unless the break is called on the last iteration the program will fail because of an issue with SWIG
* @skipline val
* @until print
* prints out all the remote node values associated with taskID 1 and localNode 1
* @until #prints
*
* @param remoteTaskId a task id to retrieve mapping for.
*
......@@ -301,16 +207,14 @@ public:
* @dontinclude ExampleXdmfMap.cpp
* @skipline New
* @skipline newRemoteTaskID
* @until insert
* This inserts an entry of (4, 7, 3) into the map
* @until //This
*
* Python
*
* @dontinclude XdmfExampleMap.py
* @skipline New
* @skipline newRemoteTaskID
* @until insert
* This inserts an entry of (4, 7, 3) into the map
* @until #This
*
* @param remoteTaskId task id where the remoteLoalNodeId is located.
* @param localNodeId the node id of the node being mapped.
......@@ -330,14 +234,14 @@ public:
* C++
*
* @dontinclude ExampleXdmfMap.cpp
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline isInitialized
* @until }
*
* Python
*
* @dontinclude XdmfExampleMap.py
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline isInitialized
* @until read
*
......@@ -353,14 +257,14 @@ public:
* C++
*
* @dontinclude ExampleXdmfMap.cpp
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline isInitialized
* @until }
*
* Python
*
* @dontinclude XdmfExampleMap.py
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline isInitialized
* @until read
*/
......@@ -374,13 +278,13 @@ public:
* C++
*
* @dontinclude ExampleXdmfMap.cpp
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline release
*
* Python
*
* @dontinclude XdmfExampleMap.py
* Assumming that exampleMap is a shared pointer to a XdmfMap object
* @skipline Assumming
* @skipline release
*/
void release();
......@@ -425,63 +329,13 @@ public:
* @skipline New
* First create a std::map<int, std::set<int> >
* @skipline taskMap
* @until taskMap.insert
* Then insert it into a std::map<int, std::map<int, std::set<int> > >
* Repeat as many times as necessary.
* @skipline nodeMap
* @until taskMap.insert
* then the result is set to the XdmfMap
* @skipline setMap
* This fills the XdmfMap with the following tuples
* (1, 2, 3)
* (1, 2, 6)
* (1, 2, 8)
* (1, 3, 3)
* (1, 4, 7)
* (1, 4, 9)
* (2, 5, 3)
* (2, 5, 6)
* (2, 5, 8)
* (2, 7, 3)
* (2, 9, 7)
* (2, 9, 9)
* @until //Are
*
* Python
*
* @dontinclude XdmfExampleMap.py
* @skipline newTaskMap
* @until newNodeIdMap[4]
* newNodeIdMap now contains the following
* (2, 3)
* (2, 6)
* (2, 8)
* (3, 3)
* (4, 7)
* (4, 9)
* @skipline secondNodeIdMap
* @until secondNodeIdMap[9]
* secondNodeIdMap now contains the following
* (5, 3)
* (5, 6)
* (5, 8)
* (7, 3)
* (9, 7)
* (9, 9)
* @skipline newTaskMap
* @until setMap
* This fills the XdmfMap with the following tuples
* (1, 2, 3)
* (1, 2, 6)
* (1, 2, 8)