#ifdef GTHDF5 template void DataSink::savePhaseSpaceData() { T *x=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); T *y=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); T *z=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); T *px=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); T *py=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); T *pz=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); h5part_int64_t int *id=(h5part_int64_t int*)malloc(beam_m->getLocalNum()*sizeof(h5part_int64_t)); double actPos = beam_m->getActSPos(); double structLenght = beam_m->getMaxZ(); Vector_t org = beam_m->getOrigin(); Vector_t maxX = beam_m->getRmax(); Vector_t minX = beam_m->getRmin(); Vector_t maxP = beam_m->getPmax(); Vector_t minP = beam_m->getPmin(); unsigned long protons = beam_m->getNumberOfProtons(); unsigned long electrons = beam_m->getNumberOfElectrons(); Vector_t centroid = beam_m->getCentroid(); unsigned nTot = beam_m->getTotalNum(); for (h5part_int64_t i=0; igetLocalNum();i++) { x[i] = beam_m->R[i](0); y[i] = beam_m->R[i](1); z[i] = beam_m->R[i](2); px[i] = beam_m->P[i](0); py[i] = beam_m->P[i](1); pz[i] = beam_m->P[i](2); if (i< (electrons-1)) id[i] = beam_m->ID[i]; else id[i] = -1*(long int)beam_m->ID[i]; } H5PartSetStep(file_m,idx_m); /* must set the current timestep in file */ H5PartSetNumParticles(file_m,beam_m->getLocalNum()); /* then set number of particles to store */ /* now write different tuples of data into this timestep of the file */ H5PartWriteDataFloat64(file_m,"x",x); H5PartWriteDataFloat64(file_m,"y",y); H5PartWriteDataFloat64(file_m,"z",z); H5PartWriteDataFloat64(file_m,"px",px); H5PartWriteDataFloat64(file_m,"py",py); H5PartWriteDataFloat64(file_m,"pz",pz); H5PartWriteDataInt64(file_m,"id",id); h5part_int64_t step = idx_m; H5PartWriteStepAttrib(file_m,"Step",H5T_NATIVE_INT64,&step,1); /* write scalar data i.e the header */ H5PartWriteAttrib(file_m,"Spos",H5T_NATIVE_DOUBLE,&actPos,1); H5PartWriteAttrib(file_m,"structLen",H5T_NATIVE_DOUBLE,&structLenght,1); H5PartWriteAttrib(file_m,"org",H5T_NATIVE_DOUBLE,&org,3); H5PartWriteAttrib(file_m,"maxX",H5T_NATIVE_DOUBLE,&maxX,3); H5PartWriteAttrib(file_m,"minX",H5T_NATIVE_DOUBLE,&minX,3); H5PartWriteAttrib(file_m,"maxP",H5T_NATIVE_DOUBLE,&maxP,3); H5PartWriteAttrib(file_m,"minP",H5T_NATIVE_DOUBLE,&minP,3); H5PartWriteAttrib(file_m,"centroid",H5T_NATIVE_DOUBLE,¢roid,3); delete x; delete y; delete z; delete id; idx_m++; }