src/hdf5/H5ecloud/H5ecloudExample.cc

Go to the documentation of this file.
00001 #ifdef GTHDF5
00002 template<class T,unsigned int Dim> void DataSink<T,Dim>::savePhaseSpaceData()
00003 {
00004    T *x=(double*)malloc(beam_m->getLocalNum()*sizeof(double));
00005    T *y=(double*)malloc(beam_m->getLocalNum()*sizeof(double));
00006    T *z=(double*)malloc(beam_m->getLocalNum()*sizeof(double));
00007    T *px=(double*)malloc(beam_m->getLocalNum()*sizeof(double));
00008    T *py=(double*)malloc(beam_m->getLocalNum()*sizeof(double));
00009    T *pz=(double*)malloc(beam_m->getLocalNum()*sizeof(double));
00010    long long int *id=(long long int*)malloc(beam_m->getLocalNum()*sizeof(long long));
00011 
00012    double actPos           = beam_m->getActSPos();
00013    double structLenght     = beam_m->getMaxZ();
00014    Vector_t org            = beam_m->getOrigin();
00015    Vector_t maxX           = beam_m->getRmax();
00016    Vector_t minX           = beam_m->getRmin();
00017    Vector_t maxP           = beam_m->getPmax();
00018    Vector_t minP           = beam_m->getPmin();
00019    unsigned long protons   = beam_m->getNumberOfProtons();
00020    unsigned long electrons = beam_m->getNumberOfElectrons();
00021    Vector_t centroid       = beam_m->getCentroid();
00022    unsigned nTot           = beam_m->getTotalNum();
00023      for (long long i=0; i<beam_m->getLocalNum();i++) {
00024        x[i] =  beam_m->R[i](0);
00025        y[i] =  beam_m->R[i](1);
00026        z[i] =  beam_m->R[i](2);
00027        px[i] =  beam_m->P[i](0);
00028        py[i] =  beam_m->P[i](1);
00029        pz[i] =  beam_m->P[i](2);
00030        if (i< (electrons-1))
00031            id[i] =  beam_m->ID[i];            else
00032            id[i] =  -1*(long int)beam_m->ID[i];
00033    }
00034      H5PartSetStep(file_m,idx_m);  /* must set the current timestep in file */
00035    H5PartSetNumParticles(file_m,beam_m->getLocalNum()); /* then set number of particles to store */
00036      /* now write different tuples of data into this timestep of the file */
00037    H5PartWriteDataFloat64(file_m,"x",x);
00038    H5PartWriteDataFloat64(file_m,"y",y);
00039    H5PartWriteDataFloat64(file_m,"z",z);
00040    H5PartWriteDataFloat64(file_m,"px",px);
00041    H5PartWriteDataFloat64(file_m,"py",py);
00042    H5PartWriteDataFloat64(file_m,"pz",pz);
00043    H5PartWriteDataInt64(file_m,"id",id);
00044    long long step = idx_m;
00045    H5PartWriteStepAttrib(file_m,"Step",H5T_NATIVE_INT64,&step,1);
00046 
00047 
00048    /* write scalar data i.e the header */
00049    H5PartWriteAttrib(file_m,"Spos",H5T_NATIVE_DOUBLE,&actPos,1);
00050    H5PartWriteAttrib(file_m,"structLen",H5T_NATIVE_DOUBLE,&structLenght,1);
00051 
00052    H5PartWriteAttrib(file_m,"org",H5T_NATIVE_DOUBLE,&org,3);
00053    H5PartWriteAttrib(file_m,"maxX",H5T_NATIVE_DOUBLE,&maxX,3);
00054    H5PartWriteAttrib(file_m,"minX",H5T_NATIVE_DOUBLE,&minX,3);
00055    H5PartWriteAttrib(file_m,"maxP",H5T_NATIVE_DOUBLE,&maxP,3);
00056    H5PartWriteAttrib(file_m,"minP",H5T_NATIVE_DOUBLE,&minP,3);
00057    H5PartWriteAttrib(file_m,"centroid",H5T_NATIVE_DOUBLE,&centroid,3);
00058    delete x;
00059    delete y;
00060    delete z;
00061    delete id;
00062    idx_m++;
00063 }

Generated on Mon Jan 16 13:23:47 2006 for IPPL by  doxygen 1.4.6