53 lines
1.8 KiB
Cython
53 lines
1.8 KiB
Cython
cimport numpy as np
|
|
from .qpms_cdefs cimport qpms_tmatrix_t, cdouble, qpms_tmatrix_interpolator_t, qpms_tmatrix_generator_t, qpms_tmatrix_function_t
|
|
from .cybspec cimport BaseSpec
|
|
|
|
cdef class TMatrixInterpolator:
|
|
#cdef readonly np.ndarray m # Numpy array holding the matrix data
|
|
cdef readonly BaseSpec spec # Here we hold the base spec for the correct reference counting; TODO check if it gets copied
|
|
cdef qpms_tmatrix_t *tmatrices_array
|
|
cdef cdouble *tmdata
|
|
cdef double *freqs
|
|
cdef double *freqs_su
|
|
cdef size_t nfreqs
|
|
cdef qpms_tmatrix_interpolator_t *interp
|
|
cdef inline qpms_tmatrix_interpolator_t *rawpointer(self):
|
|
return self.interp
|
|
|
|
cdef class TMatrixGenerator:
|
|
cdef qpms_tmatrix_generator_t g
|
|
cdef object holder
|
|
cdef inline qpms_tmatrix_generator_t raw(self):
|
|
return self.g
|
|
cdef inline qpms_tmatrix_generator_t *rawpointer(self):
|
|
return &(self.g)
|
|
|
|
cdef class TMatrixFunction:
|
|
cdef qpms_tmatrix_function_t f
|
|
cdef readonly TMatrixGenerator generator # reference holder
|
|
cdef readonly BaseSpec spec # reference holder
|
|
cdef inline qpms_tmatrix_function_t raw(self):
|
|
return self.f
|
|
cdef inline qpms_tmatrix_function_t *rawpointer(self):
|
|
return &self.f
|
|
|
|
|
|
cdef class TMatrixGeneratorTransformed:
|
|
pass
|
|
|
|
cdef class CTMatrix: # N.B. there is another type called TMatrix in tmatrices.py!
|
|
cdef readonly np.ndarray m # Numpy array holding the matrix data
|
|
cdef readonly BaseSpec spec # Here we hold the base spec for the correct reference counting; TODO check if it gets copied
|
|
cdef qpms_tmatrix_t t
|
|
|
|
|
|
cdef inline qpms_tmatrix_t *rawpointer(CTMatrix self):
|
|
'''Pointer to the qpms_tmatrix_t structure.
|
|
Don't forget to reference the BaseSpec object itself when storing the pointer anywhere!!!
|
|
'''
|
|
return &(self.t)
|
|
|
|
|
|
|
|
|