Tank you very much. I needed of course to create the groups before the dataset.

Regards


On 11. sep. 2012 21:17, Rob Latham wrote:
On Mon, Sep 10, 2012 at 05:20:50PM +0200, Håkon Strandenes wrote:

and similar for other ranks. The source code is attached. When
meshInit();

meshInit sets the "use parallel I/O" property and opens the already
existing file

meshWrite();

which in turn calls meshWritePoints and meshWriteCells
I guess this is the problematic file.

You've opened the file H5_ACC_TRUNC, so that zaps everything in the
dataset.  Then you create a dataset "/%f/points/processor%i".

I think you first need to create the '%f' and 'points' groups before
making processor%i, right?  Or will HDF5 make parent groups in this
situation?  nearly 10 years on and I still don't use the hierarchy
features of HDF5..

==rob

meshClose();
is called, the error occures (in H5DCreate2).

The following is in the h5Write.H header file:
#define H5T_SCALAR H5T_NATIVE_DOUBLE
(to include the possibility to compile with support for single precision).

The system is Ubuntu 12.04 with system OpenMPI and HDF5-OpenMPI
libraries installed. Compiler is GCC. I have tried to compile the
same code on another system with SLES 11sp1, Intel compilers and
SGI-MPI. Same error message occurs on that system.

Do you have any hints to help me? Thanks in advance.

Best regards,
Håkon Strandenes
Norway

/*---------------------------------------------------------------------------*\
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
      \\/     M anipulation  |
-------------------------------------------------------------------------------
License
     This file is part of OpenFOAM.

     OpenFOAM is free software: you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by
     the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.

     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     for more details.

     You should have received a copy of the GNU General Public License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.

\*---------------------------------------------------------------------------*/

#include "h5Write.H"
#include "Time.H"
#include "SortableList.H"
#include "OFstream.H"
#include "string.H"
#include "stringOps.H"

#define H5DATA_MESH_FILE_NAME "h5Data/h5DataMesh.h5"

// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //

/*
const Foam::label Foam::h5Write::foamToXDMFFaceAddr[4][6] =
{
     { 4, 5, 2, 3, 0, 1 },     // 11 = pro-STAR hex
     { 0, 1, 4, 5, 2, -1 },    // 12 = pro-STAR prism
     { 5, 4, 2, 0, -1, -1 },   // 13 = pro-STAR tetra
     { 0, 4, 3, 5, 2, -1 }     // 14 = pro-STAR pyramid
};
*/

// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //

void Foam::h5Write::meshInit()
{
     Info<< "h5Write::meshInit" << endl << endl;

     // Set up file access property list with parallel I/O access
     meshPlistID_ = H5Pcreate(H5P_FILE_ACCESS);
     H5Pset_fapl_mpio(meshPlistID_, MPI_COMM_WORLD, MPI_INFO_NULL);

     // Create a new file collectively.
     meshFileID_ = H5Fcreate
       (
           H5DATA_MESH_FILE_NAME,
           H5F_ACC_TRUNC,
           H5P_DEFAULT,
           meshPlistID_
       );

     // Close the property list
     H5Pclose(meshPlistID_);

}


void Foam::h5Write::meshClose()
{
     Info<< "h5Write::meshClose" << endl << endl;

     // Close the file.
     H5Fclose(meshFileID_);

}


void Foam::h5Write::meshWrite()
{
     meshWritePoints();
     meshWriteCells();
}


void Foam::h5Write::meshWritePoints()
{
     const pointField& points = mesh_.points();

     // Create the dataspace for the dataset
     hsize_t dimsf[] = {points.size(), 3};
     hid_t fileSpace = H5Screate_simple(2, dimsf, NULL);

     // Construct dataset name
     char datasetName[80];
     sprintf(datasetName, "/%f/points/processor%i", mesh_.time().value(), 
Pstream::myProcNo());

     //if (debug)
     {
         Pout<< "Dataset name: "<< datasetName << endl;
     }

     // Create the dataset with default properties
     hid_t dsetID = H5Dcreate2
         (
             meshFileID_,
             datasetName,
             H5T_SCALAR,
             fileSpace,
             H5P_DEFAULT,
             H5P_DEFAULT,
             H5P_DEFAULT
         );

     // Create property list for collective dataset write.
     meshPlistID_ = H5Pcreate(H5P_DATASET_XFER);
                    H5Pset_dxpl_mpio(meshPlistID_, H5FD_MPIO_COLLECTIVE);

     //if (debug)
     {
         Pout<< "Writing " << points.size() << " points" << endl;
     }

     // Create a simple array of points (to pass on to H5Dwrite)
     scalar pointList[points.size()][3];

     // Fill the array
     forAll(points, ptI)
     {
         pointList[ptI][0] = points[ptI].x();
         pointList[ptI][1] = points[ptI].y();
         pointList[ptI][2] = points[ptI].z();
     }

     // Do the actual write
     meshStatus_ = H5Dwrite
         (
             dsetID,
             H5T_SCALAR,
             H5S_ALL,
             H5S_ALL,
                        meshPlistID_,
                        pointList
                    );


     // Close/release resources.
     H5Dclose(dsetID);
     H5Sclose(fileSpace);
     H5Pclose(meshPlistID_);
}


void Foam::h5Write::meshWriteCells()
{

}


// ************************************************************************* //

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org



_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to