from libcpp cimport bool import numpy as np cimport numpy as np cdef extern from "loadSimu.hpp" namespace "CosmoTool": cdef cppclass SimuData: np.float_t BoxSize np.float_t time np.float_t Hubble np.float_t Omega_M np.float_t Omega_Lambda np.int64_t TotalNumParticles np.int64_t NumParticles np.int64_t *Id np.float_t *Pos[3] np.float_t *Vel[3] int *type cdef const int NEED_GADGET_ID cdef const int NEED_POSITION cdef const int NEED_VELOCITY cdef const int NEED_TYPE cdef extern from "loadGadget.hpp" namespace "CosmoTool": SimuData *loadGadgetMulti(const char *fname, int id, int flags) except + cdef class Simulation: cdef float BoxSize cdef float Hubble cdef list Position cdef list Velocities cdef SimuData *data def __cinit__(Simulation self): self.data = 0 def __dealloc__(Simulation self): if self.data != 0: del self.data def loadGadget(str filename, int snapshot_id, bool loadPosition = True, bool loadVelocity = True): cdef int flags cdef SimuData *data cdef Simulation simu flags = 0 if loadPosition: flags |= NEED_POSITION if loadVelocity: flags |= NEED_VELOCITY data = loadGadgetMulti(filename, snapshot_id, flags) simu = Simulation() simu.data = data return simu