Open jhornung-gh opened 11 months ago
Thanks for this RFE! I am right now looking at implementing this new format.
@jhornung-gh this is a typical output from LWFA 3D picongpu simulation. I zoomed in the FIELDS part of the format:
GROUP "fields" {
ATTRIBUTE "chargeCorrection" {
DATATYPE H5T_STRING {
STRSIZE 4;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "currentSmoothing" {
DATATYPE H5T_STRING {
STRSIZE 4;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "fieldBoundary" {
DATATYPE H5T_STRING {
STRSIZE 8;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 6 ) / ( 6 ) }
}
ATTRIBUTE "fieldBoundaryParameters" {
DATATYPE H5T_STRING {
STRSIZE 31;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 6 ) / ( 6 ) }
}
ATTRIBUTE "fieldSolver" {
DATATYPE H5T_STRING {
STRSIZE 3;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
GROUP "B" {
ATTRIBUTE "axisLabels" {
DATATYPE H5T_STRING {
STRSIZE 1;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "dataOrder" {
DATATYPE H5T_STRING {
STRSIZE 1;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "fieldSmoothing" {
DATATYPE H5T_STRING {
STRSIZE 4;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "geometry" {
DATATYPE H5T_STRING {
STRSIZE 9;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "gridGlobalOffset" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "gridSpacing" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "gridUnitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
ATTRIBUTE "timeOffset" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SCALAR
}
ATTRIBUTE "unitDimension" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 7 ) / ( 7 ) }
}
DATASET "x" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 192, 1024, 192 ) / ( 192, 1024, 192 ) }
ATTRIBUTE "position" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "unitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
}
DATASET "y" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 192, 1024, 192 ) / ( 192, 1024, 192 ) }
ATTRIBUTE "position" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "unitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
}
DATASET "z" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 192, 1024, 192 ) / ( 192, 1024, 192 ) }
ATTRIBUTE "position" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "unitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
}
}
GROUP "E" {
ATTRIBUTE "axisLabels" {
DATATYPE H5T_STRING {
STRSIZE 1;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "dataOrder" {
DATATYPE H5T_STRING {
STRSIZE 1;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "fieldSmoothing" {
DATATYPE H5T_STRING {
STRSIZE 4;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "geometry" {
DATATYPE H5T_STRING {
STRSIZE 9;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
}
ATTRIBUTE "gridGlobalOffset" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "gridSpacing" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "gridUnitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
ATTRIBUTE "timeOffset" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SCALAR
}
ATTRIBUTE "unitDimension" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 7 ) / ( 7 ) }
}
DATASET "x" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 192, 1024, 192 ) / ( 192, 1024, 192 ) }
ATTRIBUTE "position" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "unitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
}
DATASET "y" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 192, 1024, 192 ) / ( 192, 1024, 192 ) }
ATTRIBUTE "position" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "unitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
}
DATASET "z" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 192, 1024, 192 ) / ( 192, 1024, 192 ) }
ATTRIBUTE "position" {
DATATYPE H5T_IEEE_F32LE
DATASPACE SIMPLE { ( 3 ) / ( 3 ) }
}
ATTRIBUTE "unitSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
}
}
}
Basically
Yes, excatly, thank you!
This RFE is completed with the commit 0ea8b0672bf0b17a4998f27ffe9428688eb82c82
I have noticed that the structure after conversion is different compared to other openPMD PIC outputs like WarpX and PIConGPU.
Prominent here are
E
,B
andJ
which are stored ase_x, e_y, e_z
... after conversion, e.g. the non-scalar fields. The other outpus are stored such thatEx = E["x"], Ey = E["y"]
, ... according to theE.axis_labels
. The "combined" fieldE
should have the typical attributes: