On 21 February 2013 21:06, Johan Hake <hake....@gmail.com> wrote: > On 02/21/2013 09:56 PM, Garth N. Wells wrote: >> On 21 February 2013 20:39, Johan Hake <hake....@gmail.com> 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? >
Not sure - it should work reading old MeshFunction files into a size_t Meshfunction. Garth > 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: <nore...@launchpad.net> >>>>> 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 <gn...@cam.ac.uk> >>>>> >>>>> >>>>> ------------------------------------------------------------ >>>>> revno: 7462 >>>>> committer: Johan Hake <hake....@gmail.com> >>>>> 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 : dolfin@lists.launchpad.net >>>>> Unsubscribe : https://launchpad.net/~dolfin >>>>> More help : https://help.launchpad.net/ListHelp >>>>> >>>> >>> > _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@lists.launchpad.net Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp