diff --git a/equilibrate/cython/CMakeLists.txt b/equilibrate/cython/CMakeLists.txt index 95b0e61..29e682e 100644 --- a/equilibrate/cython/CMakeLists.txt +++ b/equilibrate/cython/CMakeLists.txt @@ -10,5 +10,5 @@ add_library(_equilibrate MODULE ${_equilibrate}) python_extension_module(_equilibrate) target_link_libraries(_equilibrate equilibrate_c_api) -target_include_directories(_equilibrate PUBLIC ${NumPy_INCLUDE_DIRS}) +target_include_directories(_equilibrate PUBLIC ${NumPy_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}) set_property(TARGET _equilibrate PROPERTY LINKER_LANGUAGE Fortran) \ No newline at end of file diff --git a/equilibrate/cython/ChemEquiAnalysis_pxd.pxd b/equilibrate/cython/ChemEquiAnalysis_pxd.pxd index e1b40d1..3a930eb 100644 --- a/equilibrate/cython/ChemEquiAnalysis_pxd.pxd +++ b/equilibrate/cython/ChemEquiAnalysis_pxd.pxd @@ -2,58 +2,62 @@ from libcpp cimport bool as cbool cdef extern from "": pass +cdef extern from "_equilibrate.h": + struct ChemEquiAnalysis: + pass + # Allocate and destroy -cdef extern void *allocate_chemequianalysis(); -cdef extern void deallocate_chemequianalysis(void *ptr); +cdef extern ChemEquiAnalysis *allocate_chemequianalysis(); +cdef extern void deallocate_chemequianalysis(ChemEquiAnalysis *ptr); # Wrappers for functions -cdef extern void chemequianalysis_create_wrapper(void *ptr, char *thermofile, +cdef extern void chemequianalysis_create_wrapper(ChemEquiAnalysis *ptr, char *thermofile, cbool *atoms_present, int *atoms_dim, char *atoms, cbool *species_present, int *species_dim, char *species, char *err); -cdef extern void chemequianalysis_solve_wrapper(void *ptr, double *P, double *T, +cdef extern void chemequianalysis_solve_wrapper(ChemEquiAnalysis *ptr, double *P, double *T, cbool *molfracs_atoms_present, int *molfracs_atoms_dim, double *molfracs_atoms, cbool *molfracs_species_present, int *molfracs_species_dim, double *molfracs_species, cbool *converged, char *err) # Getters and setters -cdef extern void chemequianalysis_atoms_names_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_atoms_names_get(void *ptr, int *dim1, char* arr) +cdef extern void chemequianalysis_atoms_names_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_atoms_names_get(ChemEquiAnalysis *ptr, int *dim1, char* arr) -cdef extern void chemequianalysis_species_names_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_species_names_get(void *ptr, int *dim1, char* arr) +cdef extern void chemequianalysis_species_names_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_species_names_get(ChemEquiAnalysis *ptr, int *dim1, char* arr) -cdef extern void chemequianalysis_gas_names_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_gas_names_get(void *ptr, int *dim1, char* arr) +cdef extern void chemequianalysis_gas_names_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_gas_names_get(ChemEquiAnalysis *ptr, int *dim1, char* arr) -cdef extern void chemequianalysis_condensate_names_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_condensate_names_get(void *ptr, int *dim1, char* arr) +cdef extern void chemequianalysis_condensate_names_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_condensate_names_get(ChemEquiAnalysis *ptr, int *dim1, char* arr) -cdef extern void chemequianalysis_molfracs_atoms_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_molfracs_atoms_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_molfracs_atoms_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_molfracs_atoms_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_molfracs_species_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_molfracs_species_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_molfracs_species_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_molfracs_species_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_massfracs_species_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_massfracs_species_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_massfracs_species_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_massfracs_species_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_molfracs_atoms_gas_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_molfracs_atoms_gas_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_molfracs_atoms_gas_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_molfracs_atoms_gas_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_molfracs_species_gas_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_molfracs_species_gas_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_molfracs_species_gas_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_molfracs_species_gas_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_molfracs_atoms_condensate_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_molfracs_atoms_condensate_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_molfracs_atoms_condensate_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_molfracs_atoms_condensate_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_molfracs_species_condensate_get_size(void *ptr, int *dim1) -cdef extern void chemequianalysis_molfracs_species_condensate_get(void *ptr, int *dim1, double *arr) +cdef extern void chemequianalysis_molfracs_species_condensate_get_size(ChemEquiAnalysis *ptr, int *dim1) +cdef extern void chemequianalysis_molfracs_species_condensate_get(ChemEquiAnalysis *ptr, int *dim1, double *arr) -cdef extern void chemequianalysis_verbose_get(void *ptr, cbool *val) -cdef extern void chemequianalysis_verbose_set(void *ptr, cbool *val) +cdef extern void chemequianalysis_verbose_get(ChemEquiAnalysis *ptr, cbool *val) +cdef extern void chemequianalysis_verbose_set(ChemEquiAnalysis *ptr, cbool *val) -cdef extern void chemequianalysis_mass_tol_get(void *ptr, double *val) -cdef extern void chemequianalysis_mass_tol_set(void *ptr, double *val) \ No newline at end of file +cdef extern void chemequianalysis_mass_tol_get(ChemEquiAnalysis *ptr, double *val) +cdef extern void chemequianalysis_mass_tol_set(ChemEquiAnalysis *ptr, double *val) \ No newline at end of file diff --git a/equilibrate/cython/_equilibrate.h b/equilibrate/cython/_equilibrate.h new file mode 100644 index 0000000..740a3ef --- /dev/null +++ b/equilibrate/cython/_equilibrate.h @@ -0,0 +1 @@ +struct ChemEquiAnalysis{}; \ No newline at end of file diff --git a/equilibrate/cython/_equilibrate.pyx b/equilibrate/cython/_equilibrate.pyx index 31a4059..e501520 100644 --- a/equilibrate/cython/_equilibrate.pyx +++ b/equilibrate/cython/_equilibrate.pyx @@ -12,7 +12,7 @@ DEF ERR_LEN = 1024; cdef class ChemEquiAnalysis: - cdef void *_ptr + cdef cea_pxd.ChemEquiAnalysis *_ptr cdef cbool _init_called def __cinit__(self, thermofile = None, atoms = None, species = None):