On 02/21/2013 09:56 PM, Garth N. Wells wrote: > On 21 February 2013 20:39, Johan Hake <[email protected]> wrote: >> Why do we need the unsigned int version btw? >> > > Perhaps we can just get rid of it.
Is it so people can read their old MeshFunction files? Johan > Garth > >> Johan >> >> On 02/21/2013 09:10 PM, Johan Hake wrote: >>> Ok, then I am not sure we have a solution for the problem without having >>> some conditional compilation for 32 bit machines. >>> >>> Johan >>> >>> On 02/21/2013 08:41 PM, Garth N. Wells wrote: >>>> This will cause a problem on 32-bit systems where std::size_t is a >>>> typedef for unsigned int. The use of long unsigned int was deliberate. >>>> >>>> Garth >>>> >>>> >>>> ---------- Forwarded message ---------- >>>> From: <[email protected]> >>>> Date: 21 February 2013 19:38 >>>> Subject: [Branch ~dolfin-core/dolfin/trunk] Rev 7462: Changed unsigned >>>> long int to std::size_t in File interface fixing >>>> To: Garth Wells <[email protected]> >>>> >>>> >>>> ------------------------------------------------------------ >>>> revno: 7462 >>>> committer: Johan Hake <[email protected]> >>>> branch nick: work-trunk >>>> timestamp: Thu 2013-02-21 20:35:38 +0100 >>>> message: >>>> Changed unsigned long int to std::size_t in File interface fixing >>>> problem with outputting MeshFunction<std::size_t> to file >>>> modified: >>>> dolfin/io/GenericFile.cpp >>>> dolfin/io/GenericFile.h >>>> dolfin/io/HDF5Interface.h >>>> dolfin/io/VTKFile.cpp >>>> dolfin/io/VTKFile.h >>>> dolfin/io/XDMFFile.cpp >>>> dolfin/io/XDMFFile.h >>>> dolfin/io/XMLFile.h >>>> dolfin/swig/io/pre.i >>>> test/unit/io/python/XDMF.py >>>> >>>> >>>> -- >>>> lp:dolfin >>>> https://code.launchpad.net/~dolfin-core/dolfin/trunk >>>> >>>> Your team DOLFIN Core Team is subscribed to branch lp:dolfin. >>>> To unsubscribe from this branch go to >>>> https://code.launchpad.net/~dolfin-core/dolfin/trunk/+edit-subscription >>>> >>>> === modified file 'dolfin/io/GenericFile.cpp' >>>> --- dolfin/io/GenericFile.cpp 2012-12-04 20:34:24 +0000 >>>> +++ dolfin/io/GenericFile.cpp 2013-02-21 19:35:38 +0000 >>>> @@ -73,9 +73,9 @@ >>>> read_not_impl("MeshFunction<int>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> -void GenericFile::operator>> (MeshFunction<unsigned long int>& >>>> mesh_function) >>>> +void GenericFile::operator>> (MeshFunction<std::size_t>& mesh_function) >>>> { >>>> - read_not_impl("MeshFunction<unsigned long int>"); >>>> + read_not_impl("MeshFunction<std::size_t>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> void GenericFile::operator>> (MeshFunction<unsigned int>& mesh_function) >>>> @@ -98,9 +98,9 @@ >>>> read_not_impl("MeshValueCollection<int>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> -void GenericFile::operator>> (MeshValueCollection<unsigned long int>& >>>> mesh_markers) >>>> +void GenericFile::operator>> (MeshValueCollection<std::size_t>& >>>> mesh_markers) >>>> { >>>> - read_not_impl("MeshValueCollection<unsigned long int>"); >>>> + read_not_impl("MeshValueCollection<std::size_t>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> void GenericFile::operator>> (MeshValueCollection<unsigned int>& >>>> mesh_markers) >>>> @@ -202,10 +202,9 @@ >>>> { >>>> write_not_impl("MeshFunction<int>"); >>>> } >>>> -//----------------------------------------------------------------------------- >>>> -void GenericFile::operator<< (const MeshFunction<unsigned long int>& >>>> mesh_function) >>>> +void GenericFile::operator<< (const MeshFunction<std::size_t>& >>>> mesh_function) >>>> { >>>> - write_not_impl("MeshFunction<unsigned long int>"); >>>> + write_not_impl("MeshFunction<std::size_t>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> void GenericFile::operator<< (const MeshFunction<unsigned int>& >>>> mesh_function) >>>> @@ -228,9 +227,9 @@ >>>> write_not_impl("MeshValueCollection<int>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> -void GenericFile::operator<< (const MeshValueCollection<unsigned long >>>> int>& mesh_markers) >>>> +void GenericFile::operator<< (const MeshValueCollection<std::size_t>& >>>> mesh_markers) >>>> { >>>> - write_not_impl("MeshValueCollection<unsigned long int>"); >>>> + write_not_impl("MeshValueCollection<std::size_t>"); >>>> } >>>> >>>> //----------------------------------------------------------------------------- >>>> void GenericFile::operator<< (const MeshValueCollection<unsigned >>>> int>& mesh_markers) >>>> >>>> === modified file 'dolfin/io/GenericFile.h' >>>> --- dolfin/io/GenericFile.h 2012-12-19 17:29:40 +0000 >>>> +++ dolfin/io/GenericFile.h 2013-02-21 19:35:38 +0000 >>>> @@ -59,12 +59,12 @@ >>>> virtual void operator>> (GenericDofMap& dofmap); >>>> virtual void operator>> (LocalMeshData& data); >>>> virtual void operator>> (MeshFunction<int>& mesh_function); >>>> - virtual void operator>> (MeshFunction<unsigned long int>& >>>> mesh_function); >>>> + virtual void operator>> (MeshFunction<std::size_t>& mesh_function); >>>> virtual void operator>> (MeshFunction<unsigned int>& mesh_function); >>>> virtual void operator>> (MeshFunction<double>& mesh_function); >>>> virtual void operator>> (MeshFunction<bool>& mesh_function); >>>> virtual void operator>> (MeshValueCollection<int>& mesh_markers); >>>> - virtual void operator>> (MeshValueCollection<unsigned long int>& >>>> mesh_markers); >>>> + virtual void operator>> (MeshValueCollection<std::size_t>& >>>> mesh_markers); >>>> virtual void operator>> (MeshValueCollection<unsigned int>& >>>> mesh_markers); >>>> virtual void operator>> (MeshValueCollection<double>& mesh_markers); >>>> virtual void operator>> (MeshValueCollection<bool>& mesh_markers); >>>> @@ -87,12 +87,12 @@ >>>> virtual void operator<< (const GenericDofMap& dofmap); >>>> virtual void operator<< (const LocalMeshData& data); >>>> virtual void operator<< (const MeshFunction<int>& mesh_function); >>>> - virtual void operator<< (const MeshFunction<unsigned long int>& >>>> mesh_function); >>>> + virtual void operator<< (const MeshFunction<std::size_t>& >>>> mesh_function); >>>> virtual void operator<< (const MeshFunction<unsigned int>& >>>> mesh_function); >>>> virtual void operator<< (const MeshFunction<double>& mesh_function); >>>> virtual void operator<< (const MeshFunction<bool>& mesh_function); >>>> virtual void operator<< (const MeshValueCollection<int>& >>>> mesh_markers); >>>> - virtual void operator<< (const MeshValueCollection<unsigned long >>>> int>& mesh_markers); >>>> + virtual void operator<< (const MeshValueCollection<std::size_t>& >>>> mesh_markers); >>>> virtual void operator<< (const MeshValueCollection<unsigned int>& >>>> mesh_markers); >>>> virtual void operator<< (const MeshValueCollection<double>& >>>> mesh_markers); >>>> virtual void operator<< (const MeshValueCollection<bool>& >>>> mesh_markers); >>>> >>>> === modified file 'dolfin/io/HDF5Interface.h' >>>> --- dolfin/io/HDF5Interface.h 2012-12-19 17:29:40 +0000 >>>> +++ dolfin/io/HDF5Interface.h 2013-02-21 19:35:38 +0000 >>>> @@ -458,7 +458,7 @@ >>>> template<> >>>> inline void HDF5Interface::add_attribute_value(const hid_t dset_id, >>>> const std::string attribute_name, >>>> - const std::vector<unsigned >>>> long int>& attribute_value) >>>> + const >>>> std::vector<std::size_t>& attribute_value) >>>> { >>>> >>>> // Create a vector dataspace >>>> @@ -526,7 +526,7 @@ >>>> template<> >>>> inline void HDF5Interface::get_attribute_value(const hid_t attr_type, >>>> const hid_t attr_id, >>>> - unsigned long int& >>>> attribute_value) >>>> + std::size_t& >>>> attribute_value) >>>> { >>>> // FIXME: more complete check of type >>>> dolfin_assert(H5Tget_class(attr_type) == H5T_INTEGER); >>>> @@ -588,7 +588,7 @@ >>>> template<> >>>> inline void HDF5Interface::get_attribute_value(const hid_t attr_type, >>>> const hid_t attr_id, >>>> - std::vector<unsigned long >>>> int>& attribute_value) >>>> + std::vector<std::size_t>& >>>> attribute_value) >>>> { >>>> // FIXME: more complete check of type >>>> dolfin_assert(H5Tget_class(attr_type) == H5T_INTEGER); >>>> @@ -622,7 +622,7 @@ >>>> { return H5T_NATIVE_UINT; } >>>> >>>> //----------------------------------------------------------------------------- >>>> template <> >>>> - inline hid_t HDF5Interface::hdf5_type<unsigned long int>() >>>> + inline hid_t HDF5Interface::hdf5_type<std::size_t>() >>>> { return H5T_NATIVE_ULONG; } >>>> >>>> //----------------------------------------------------------------------------- >>>> >>>> >>>> === modified file 'dolfin/io/VTKFile.cpp' >>>> --- dolfin/io/VTKFile.cpp 2013-02-05 19:34:25 +0000 >>>> +++ dolfin/io/VTKFile.cpp 2013-02-21 19:35:38 +0000 >>>> @@ -128,7 +128,7 @@ >>>> mesh_function_write(meshfunction); >>>> } >>>> >>>> //---------------------------------------------------------------------------- >>>> -void VTKFile::operator<<(const MeshFunction<unsigned long int>& >>>> meshfunction) >>>> +void VTKFile::operator<<(const MeshFunction<std::size_t>& meshfunction) >>>> { >>>> mesh_function_write(meshfunction); >>>> } >>>> >>>> === modified file 'dolfin/io/VTKFile.h' >>>> --- dolfin/io/VTKFile.h 2012-12-04 11:29:59 +0000 >>>> +++ dolfin/io/VTKFile.h 2013-02-21 19:35:38 +0000 >>>> @@ -52,7 +52,7 @@ >>>> void operator<< (const Mesh& mesh); >>>> void operator<< (const MeshFunction<bool>& meshfunction); >>>> void operator<< (const MeshFunction<unsigned int>& meshfunction); >>>> - void operator<< (const MeshFunction<unsigned long int>& meshfunction); >>>> + void operator<< (const MeshFunction<std::size_t>& meshfunction); >>>> void operator<< (const MeshFunction<int>& meshfunction); >>>> void operator<< (const MeshFunction<double>& meshfunction); >>>> void operator<< (const Function& u); >>>> >>>> === modified file 'dolfin/io/XDMFFile.cpp' >>>> --- dolfin/io/XDMFFile.cpp 2013-02-11 15:13:49 +0000 >>>> +++ dolfin/io/XDMFFile.cpp 2013-02-21 19:35:38 +0000 >>>> @@ -453,7 +453,7 @@ >>>> write_mesh_function(meshfunction); >>>> } >>>> >>>> //---------------------------------------------------------------------------- >>>> -void XDMFFile::operator<< (const MeshFunction<unsigned long int>& >>>> meshfunction) >>>> +void XDMFFile::operator<< (const MeshFunction<std::size_t>& meshfunction) >>>> { >>>> write_mesh_function(meshfunction); >>>> } >>>> >>>> === modified file 'dolfin/io/XDMFFile.h' >>>> --- dolfin/io/XDMFFile.h 2012-12-04 11:29:59 +0000 >>>> +++ dolfin/io/XDMFFile.h 2013-02-21 19:35:38 +0000 >>>> @@ -77,7 +77,7 @@ >>>> void operator<< (const MeshFunction<bool>& meshfunction); >>>> void operator<< (const MeshFunction<int>& meshfunction); >>>> void operator<< (const MeshFunction<unsigned int>& meshfunction); >>>> - void operator<< (const MeshFunction<unsigned long int>& meshfunction); >>>> + void operator<< (const MeshFunction<std::size_t>& meshfunction); >>>> void operator<< (const MeshFunction<double>& meshfunction); >>>> >>>> private: >>>> >>>> === modified file 'dolfin/io/XMLFile.h' >>>> --- dolfin/io/XMLFile.h 2012-12-19 19:10:49 +0000 >>>> +++ dolfin/io/XMLFile.h 2013-02-21 19:35:38 +0000 >>>> @@ -89,9 +89,9 @@ >>>> { write_mesh_function(output, "uint"); } >>>> >>>> // MeshFunction (uint) >>>> - void operator>> (MeshFunction<unsigned long int>& input) >>>> + void operator>> (MeshFunction<std::size_t>& input) >>>> { read_mesh_function(input, "uint"); } >>>> - void operator<< (const MeshFunction<unsigned long int>& output) >>>> + void operator<< (const MeshFunction<std::size_t>& output) >>>> { write_mesh_function(output, "uint"); } >>>> >>>> // MeshFunction (int) >>>> @@ -118,10 +118,10 @@ >>>> void operator<< (const MeshValueCollection<unsigned int>& output) >>>> { write_mesh_value_collection(output, "uint"); } >>>> >>>> - // MeshValueCollection (unsigned long int) >>>> - void operator>> (MeshValueCollection<unsigned long int>& input) >>>> + // MeshValueCollection (std::size_t) >>>> + void operator>> (MeshValueCollection<std::size_t>& input) >>>> { read_mesh_value_collection(input, "uint"); } >>>> - void operator<< (const MeshValueCollection<unsigned long int>& output) >>>> + void operator<< (const MeshValueCollection<std::size_t>& output) >>>> { write_mesh_value_collection(output, "uint"); } >>>> >>>> // MeshValueCollection (int) >>>> >>>> === modified file 'dolfin/swig/io/pre.i' >>>> --- dolfin/swig/io/pre.i 2012-12-04 20:34:24 +0000 >>>> +++ dolfin/swig/io/pre.i 2013-02-21 19:35:38 +0000 >>>> @@ -17,7 +17,7 @@ >>>> // along with DOLFIN. If not, see <http://www.gnu.org/licenses/>. >>>> // >>>> // First added: 2012-11-01 >>>> -// Last changed: 2012-11-01 >>>> +// Last changed: 2013-02-21 >>>> >>>> %ignore dolfin::GenericFile::operator>> (std::vector<int>& x); >>>> %ignore dolfin::GenericFile::operator>> (std::vector<std::size_t>& x); >>>> >>>> === modified file 'test/unit/io/python/XDMF.py' >>>> --- test/unit/io/python/XDMF.py 2013-02-05 16:34:21 +0000 >>>> +++ test/unit/io/python/XDMF.py 2013-02-21 19:35:38 +0000 >>>> @@ -30,14 +30,17 @@ >>>> def test_save_1d_mesh(self): >>>> mesh = UnitIntervalMesh(32) >>>> File("output/mesh.xdmf") << mesh >>>> + XDMFFile("output/mesh.xdmf") << mesh >>>> >>>> def test_save_2d_mesh(self): >>>> mesh = UnitSquareMesh(32, 32) >>>> File("output/mesh_2D.xdmf") << mesh >>>> + XDMFFile("output/mesh_2D.xdmf") << mesh >>>> >>>> def test_save_3d_mesh(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> File("output/mesh_3D.xdmf") << mesh >>>> + XDMFFile("output/mesh_3D.xdmf") << mesh >>>> >>>> class XDMF_Vertex_Function_Output(unittest.TestCase): >>>> """Test output of vertex-based Functions to XDMF files""" >>>> @@ -47,18 +50,21 @@ >>>> u = Function(FunctionSpace(mesh, "Lagrange", 2)) >>>> u.vector()[:] = 1.0 >>>> File("output/u.xdmf") << u >>>> + XDMFFile("output/u.xdmf") << u >>>> >>>> def test_save_2d_scalar(self): >>>> mesh = UnitSquareMesh(16, 16) >>>> u = Function(FunctionSpace(mesh, "Lagrange", 2)) >>>> u.vector()[:] = 1.0 >>>> File("output/u.xdmf") << u >>>> + XDMFFile("output/u.xdmf") << u >>>> >>>> def test_save_3d_scalar(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> u = Function(FunctionSpace(mesh, "Lagrange", 2)) >>>> u.vector()[:] = 1.0 >>>> File("output/u.xdmf") << u >>>> + XDMFFile("output/u.xdmf") << u >>>> >>>> def test_save_2d_vector(self): >>>> mesh = UnitSquareMesh(16, 16) >>>> @@ -66,6 +72,7 @@ >>>> c = Constant((1.0, 2.0)) >>>> u.interpolate(c) >>>> File("output/u_2dv.xdmf") << u >>>> + XDMFFile("output/u.xdmf") << u >>>> >>>> def test_save_3d_vector(self): >>>> mesh = UnitCubeMesh(1, 1, 1) >>>> @@ -73,6 +80,7 @@ >>>> c = Constant((1.0, 2.0, 3.0)) >>>> u.interpolate(c) >>>> File("output/u_3Dv.xdmf") << u >>>> + XDMFFile("output/u.xdmf") << u >>>> >>>> def test_save_3d_vector_series(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> @@ -87,18 +95,32 @@ >>>> >>>> u.vector()[:] = 3.0 >>>> file << (u, 0.3) >>>> + del file >>>> + >>>> + file = XDMFFile("output/u_3D.xdmf") >>>> + >>>> + u.vector()[:] = 1.0 >>>> + file << (u, 0.1) >>>> + >>>> + u.vector()[:] = 2.0 >>>> + file << (u, 0.2) >>>> + >>>> + u.vector()[:] = 3.0 >>>> + file << (u, 0.3) >>>> >>>> def test_save_2d_tensor(self): >>>> mesh = UnitSquareMesh(16, 16) >>>> u = Function(TensorFunctionSpace(mesh, "Lagrange", 2)) >>>> u.vector()[:] = 1.0 >>>> File("output/tensor.xdmf") << u >>>> + XDMFFile("output/tensor.xdmf") << u >>>> >>>> def test_save_3d_tensor(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> u = Function(TensorFunctionSpace(mesh, "Lagrange", 2)) >>>> u.vector()[:] = 1.0 >>>> File("output/u.xdmf") << u >>>> + XDMFFile("output/u.xdmf") << u >>>> >>>> class XDMF_MeshFunction_Output(unittest.TestCase): >>>> """Test output of Meshes to XDMF files""" >>>> @@ -110,6 +132,7 @@ >>>> for cell in cells(mesh): >>>> mf[cell] = cell.index() >>>> File("output/mf_1D.xdmf") << mf >>>> + XDMFFile("output/mf_1D.xdmf") << mf >>>> >>>> def test_save_2D_cell_function(self): >>>> mesh = UnitSquareMesh(32, 32) >>>> @@ -117,6 +140,7 @@ >>>> for cell in cells(mesh): >>>> mf[cell] = cell.index() >>>> File("output/mf_2D.xdmf") << mf >>>> + XDMFFile("output/mf_2D.xdmf") << mf >>>> >>>> def test_save_3D_cell_function(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> @@ -124,6 +148,7 @@ >>>> for cell in cells(mesh): >>>> mf[cell] = cell.index() >>>> File("output/mf_3D.xdmf") << mf >>>> + XDMFFile("output/mf_3D.xdmf") << mf >>>> >>>> def test_save_2D_facet_function(self): >>>> mesh = UnitSquareMesh(32, 32) >>>> @@ -131,6 +156,7 @@ >>>> for facet in facets(mesh): >>>> mf[facet] = facet.index() >>>> File("output/mf_facet_2D.xdmf") << mf >>>> + XDMFFile("output/mf_facet_2D.xdmf") << mf >>>> >>>> def test_save_3D_facet_function(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> @@ -138,6 +164,7 @@ >>>> for facet in facets(mesh): >>>> mf[facet] = facet.index() >>>> File("output/mf_facet_3D.xdmf") << mf >>>> + XDMFFile("output/mf_facet_3D.xdmf") << mf >>>> >>>> def test_save_3D_edge_function(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> @@ -145,6 +172,7 @@ >>>> for edge in edges(mesh): >>>> mf[edge] = edge.index() >>>> File("output/mf_edge_3D.xdmf") << mf >>>> + XDMFFile("output/mf_edge_3D.xdmf") << mf >>>> >>>> def test_save_2D_vertex_function(self): >>>> mesh = UnitSquareMesh(32, 32) >>>> @@ -152,6 +180,7 @@ >>>> for vertex in vertices(mesh): >>>> mf[vertex] = vertex.index() >>>> File("output/mf_vertex_2D.xdmf") << mf >>>> + XDMFFile("output/mf_vertex_2D.xdmf") << mf >>>> >>>> def test_save_3D_vertex_function(self): >>>> mesh = UnitCubeMesh(8, 8, 8) >>>> @@ -159,6 +188,7 @@ >>>> for vertex in vertices(mesh): >>>> mf[vertex] = vertex.index() >>>> File("output/mf_vertex_3D.xdmf") << mf >>>> + XDMFFile("output/mf_vertex_3D.xdmf") << mf >>>> >>>> if __name__ == "__main__": >>>> unittest.main() >>>> >>>> >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~dolfin >>>> Post to : [email protected] >>>> Unsubscribe : https://launchpad.net/~dolfin >>>> More help : https://help.launchpad.net/ListHelp >>>> >>> >> _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : [email protected] Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp

