From 90cb34d1f27e8c8c6452d5e1999c8c12ec0d46b7 Mon Sep 17 00:00:00 2001 From: Nick Wogan Date: Tue, 4 Jun 2024 21:53:08 -0400 Subject: [PATCH] got rid of void * in wrapper --- photochem/cython/Atmosphere.pyx | 6 +- photochem/cython/Atmosphere_pxd.pxd | 61 ++++++----- photochem/cython/AtomConservation.pyx | 6 +- photochem/cython/AtomConservation_pxd.pxd | 50 +++++---- photochem/cython/CMakeLists.txt | 2 +- photochem/cython/EvoAtmosphere.pyx | 4 +- photochem/cython/EvoAtmosphere_pxd.pxd | 76 +++++++------- photochem/cython/PhotochemData.pyx | 4 +- photochem/cython/PhotochemData_pxd.pxd | 57 ++++++----- photochem/cython/PhotochemVars.pyx | 6 +- photochem/cython/PhotochemVars_pxd.pxd | 119 +++++++++++----------- photochem/cython/PhotochemWrk.h | 2 + photochem/cython/PhotochemWrk.pyx | 6 +- photochem/cython/PhotochemWrk_pxd.pxd | 70 +++++++------ photochem/cython/ProductionLoss.pyx | 2 +- photochem/cython/ProductionLoss_pxd.pxd | 30 +++--- 16 files changed, 274 insertions(+), 227 deletions(-) create mode 100644 photochem/cython/PhotochemWrk.h diff --git a/photochem/cython/Atmosphere.pyx b/photochem/cython/Atmosphere.pyx index f8452eb..2435270 100644 --- a/photochem/cython/Atmosphere.pyx +++ b/photochem/cython/Atmosphere.pyx @@ -7,7 +7,7 @@ cdef class Atmosphere: the reactions producing and destroying each molecule. """ - cdef void *_ptr + cdef a_pxd.Atmosphere *_ptr cdef bool _init_called def __cinit__(self, *args, **kwargs): @@ -343,7 +343,7 @@ cdef class Atmosphere: if usol_.shape[0] != nq or usol_.shape[1] != nz: raise PhotoException("Input usol is the wrong size.") - cdef void *pl_ptr + cdef pl_pxd.ProductionLoss *pl_ptr a_pxd.atmosphere_production_and_loss_wrapper(self._ptr, species_c, &nq, &nz, usol_.data, &pl_ptr, err) if len(err.strip()) > 0: raise PhotoException(err.decode("utf-8").strip()) @@ -401,7 +401,7 @@ cdef class Atmosphere: cdef bytes atom_b = pystring2cstring(atom) cdef char *atom_c = atom_b cdef char err[ERR_LEN+1] - cdef void *con_ptr + cdef atom_pxd.AtomConservation *con_ptr a_pxd.atmosphere_atom_conservation_wrapper(self._ptr, atom_c, &con_ptr, err) if len(err.strip()) > 0: raise PhotoException(err.decode("utf-8").strip()) diff --git a/photochem/cython/Atmosphere_pxd.pxd b/photochem/cython/Atmosphere_pxd.pxd index cbed1b5..c28ceb9 100644 --- a/photochem/cython/Atmosphere_pxd.pxd +++ b/photochem/cython/Atmosphere_pxd.pxd @@ -1,57 +1,66 @@ +cimport AtomConservation_pxd as atom_pxd +cimport ProductionLoss_pxd as pl_pxd +cimport PhotochemData_pxd as dat_pxd +cimport PhotochemVars_pxd as var_pxd +cimport PhotochemWrk_pxd as wrk_pxd from libcpp cimport bool cdef extern from "": pass +cdef extern from *: + struct Atmosphere: + pass + # callback signatures ctypedef void (*time_dependent_rate_fcn)(double tn, int nz, double *rate) # allocate and destroy -cdef extern void *allocate_atmosphere(); -cdef extern void deallocate_atmosphere(void *ptr); +cdef extern Atmosphere *allocate_atmosphere(); +cdef extern void deallocate_atmosphere(Atmosphere *ptr); # subroutines -cdef extern void atmosphere_create_wrapper(void *ptr, char *mechanism_file, +cdef extern void atmosphere_create_wrapper(Atmosphere *ptr, char *mechanism_file, char *settings_file, char *flux_file, char *atmosphere_txt, char *data_dir, char *err); -cdef extern void atmosphere_dat_get(void *ptr, void **ptr1) -cdef extern void atmosphere_var_get(void *ptr, void **ptr1) -cdef extern void atmosphere_wrk_get(void *ptr, void **ptr1) +cdef extern void atmosphere_dat_get(Atmosphere *ptr, dat_pxd.PhotochemData **ptr1) +cdef extern void atmosphere_var_get(Atmosphere *ptr, var_pxd.PhotochemVars **ptr1) +cdef extern void atmosphere_wrk_get(Atmosphere *ptr, wrk_pxd.PhotochemWrk **ptr1) -cdef extern void atmosphere_check_for_convergence_wrapper(void *ptr, bool *converged, char* err) -cdef extern void atmosphere_photochemical_equilibrium_wrapper(void *ptr, bool *success, char* err) +cdef extern void atmosphere_check_for_convergence_wrapper(Atmosphere *ptr, bool *converged, char* err) +cdef extern void atmosphere_photochemical_equilibrium_wrapper(Atmosphere *ptr, bool *success, char* err) -cdef extern void atmosphere_out2atmosphere_txt_wrapper(void *ptr, char *filename, int *number_of_decimals, bool *overwrite, bool *clip, char *err) -cdef extern void atmosphere_out2in_wrapper(void *ptr, char *err) -cdef extern void atmosphere_gas_fluxes_wrapper(void *ptr, int *nq, double *surf_fluxes, double *top_fluxes, char *err) -cdef extern void atmosphere_set_lower_bc_wrapper(void *ptr, char *species, char *bc_type, +cdef extern void atmosphere_out2atmosphere_txt_wrapper(Atmosphere *ptr, char *filename, int *number_of_decimals, bool *overwrite, bool *clip, char *err) +cdef extern void atmosphere_out2in_wrapper(Atmosphere *ptr, char *err) +cdef extern void atmosphere_gas_fluxes_wrapper(Atmosphere *ptr, int *nq, double *surf_fluxes, double *top_fluxes, char *err) +cdef extern void atmosphere_set_lower_bc_wrapper(Atmosphere *ptr, char *species, char *bc_type, double *vdep, double *mix, double *flux, double *height, bool *missing, char *err) -cdef extern void atmosphere_set_upper_bc_wrapper(void *ptr, char *species, +cdef extern void atmosphere_set_upper_bc_wrapper(Atmosphere *ptr, char *species, char *bc_type, double *veff, double *flux, bool *missing, char *err) -cdef extern void atmosphere_initialize_stepper_wrapper(void *ptr, int *nq, int *nz, double *usol_start, char *err) -cdef extern double atmosphere_step_wrapper(void *ptr, char *err) -cdef extern void atmosphere_destroy_stepper_wrapper(void *ptr, char *err) +cdef extern void atmosphere_initialize_stepper_wrapper(Atmosphere *ptr, int *nq, int *nz, double *usol_start, char *err) +cdef extern double atmosphere_step_wrapper(Atmosphere *ptr, char *err) +cdef extern void atmosphere_destroy_stepper_wrapper(Atmosphere *ptr, char *err) -cdef extern void atmosphere_production_and_loss_wrapper(void *ptr, char *species, int *nq, - int *nz, double *usol, void **pl_ptr, char *err) +cdef extern void atmosphere_production_and_loss_wrapper(Atmosphere *ptr, char *species, int *nq, + int *nz, double *usol, pl_pxd.ProductionLoss **pl_ptr, char *err) -cdef extern void atmosphere_prep_atmosphere_wrapper(void *ptr, int *nq, int *nz, double *usol, char *err) +cdef extern void atmosphere_prep_atmosphere_wrapper(Atmosphere *ptr, int *nq, int *nz, double *usol, char *err) -cdef extern void atmosphere_redox_conservation_wrapper(void *ptr, double *redox_factor, char *err) -cdef extern void atmosphere_atom_conservation_wrapper(void *ptr, char *atom, void **con_ptr, char *err) +cdef extern void atmosphere_redox_conservation_wrapper(Atmosphere *ptr, double *redox_factor, char *err) +cdef extern void atmosphere_atom_conservation_wrapper(Atmosphere *ptr, char *atom, atom_pxd.AtomConservation **con_ptr, char *err) -cdef extern void atmosphere_evolve_wrapper(void *ptr, char *filename, +cdef extern void atmosphere_evolve_wrapper(Atmosphere *ptr, char *filename, double *tstart, int *nq, int *nz, double *usol, int *nt, double *t_eval, bool *overwrite, bool *success, char *err) -cdef extern void atmosphere_set_press_temp_edd_wrapper(void *ptr, int *P_dim1, double *P, int *T_dim1, double *T, int *edd_dim1, double *edd, +cdef extern void atmosphere_set_press_temp_edd_wrapper(Atmosphere *ptr, int *P_dim1, double *P, int *T_dim1, double *T, int *edd_dim1, double *edd, double *trop_p, bool *trop_p_present, char *err) -cdef extern void atmosphere_set_temperature_wrapper(void *ptr, int *nz, double *temperature, +cdef extern void atmosphere_set_temperature_wrapper(Atmosphere *ptr, int *nz, double *temperature, double *trop_alt, bool *trop_alt_present, char *err) -cdef extern void atmosphere_set_rate_fcn_wrapper(void *ptr, char *species_c, time_dependent_rate_fcn fcn, char *err) +cdef extern void atmosphere_set_rate_fcn_wrapper(Atmosphere *ptr, char *species_c, time_dependent_rate_fcn fcn, char *err) -cdef extern void atmosphere_update_vertical_grid_wrapper(void *ptr, double *toa_alt, bool *toa_alt_present, +cdef extern void atmosphere_update_vertical_grid_wrapper(Atmosphere *ptr, double *toa_alt, bool *toa_alt_present, double *toa_pressure, bool *toa_pressure_present, char *err) \ No newline at end of file diff --git a/photochem/cython/AtomConservation.pyx b/photochem/cython/AtomConservation.pyx index 518269f..125fd47 100644 --- a/photochem/cython/AtomConservation.pyx +++ b/photochem/cython/AtomConservation.pyx @@ -8,7 +8,7 @@ cdef class AtomConservation: routine. """ - cdef void *_ptr + cdef atom_pxd.AtomConservation *_ptr def __cinit__(self): self._ptr = NULL @@ -79,7 +79,7 @@ cdef class AtomConservation: cdef class CondensationParameters: - cdef void *_ptr + cdef atom_pxd.CondensationParameters *_ptr def __cinit__(self): self._ptr = NULL @@ -118,7 +118,7 @@ cdef class CondensationParameters: cdef class SaturationData: - cdef void *_ptr + cdef atom_pxd.SaturationData *_ptr def __cinit__(self): self._ptr = NULL diff --git a/photochem/cython/AtomConservation_pxd.pxd b/photochem/cython/AtomConservation_pxd.pxd index 1f52b99..827bd83 100644 --- a/photochem/cython/AtomConservation_pxd.pxd +++ b/photochem/cython/AtomConservation_pxd.pxd @@ -2,31 +2,39 @@ from libcpp cimport bool cdef extern from "": pass -cdef extern void deallocate_atomconservation(void *ptr) - -cdef extern void atomconservation_in_surf_get(void *ptr, double *val) -cdef extern void atomconservation_in_top_get(void *ptr, double *val) -cdef extern void atomconservation_in_dist_get(void *ptr, double *val) -cdef extern void atomconservation_in_other_get(void *ptr, double *val) -cdef extern void atomconservation_out_surf_get(void *ptr, double *val) -cdef extern void atomconservation_out_top_get(void *ptr, double *val) -cdef extern void atomconservation_out_rain_get(void *ptr, double *val) -cdef extern void atomconservation_out_other_get(void *ptr, double *val) -cdef extern void atomconservation_net_get(void *ptr, double *val) -cdef extern void atomconservation_factor_get(void *ptr, double *val) +cdef extern from *: + struct AtomConservation: + pass + struct CondensationParameters: + pass + struct SaturationData: + pass + +cdef extern void deallocate_atomconservation(AtomConservation *ptr) + +cdef extern void atomconservation_in_surf_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_in_top_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_in_dist_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_in_other_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_out_surf_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_out_top_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_out_rain_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_out_other_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_net_get(AtomConservation *ptr, double *val) +cdef extern void atomconservation_factor_get(AtomConservation *ptr, double *val) # CondensationParameters -cdef extern void condensationparameters_k_cond_get(void *ptr, double *val) -cdef extern void condensationparameters_k_cond_set(void *ptr, double *val) +cdef extern void condensationparameters_k_cond_get(CondensationParameters *ptr, double *val) +cdef extern void condensationparameters_k_cond_set(CondensationParameters *ptr, double *val) -cdef extern void condensationparameters_k_evap_get(void *ptr, double *val) -cdef extern void condensationparameters_k_evap_set(void *ptr, double *val) +cdef extern void condensationparameters_k_evap_get(CondensationParameters *ptr, double *val) +cdef extern void condensationparameters_k_evap_set(CondensationParameters *ptr, double *val) -cdef extern void condensationparameters_rhc_get(void *ptr, double *val) -cdef extern void condensationparameters_rhc_set(void *ptr, double *val) +cdef extern void condensationparameters_rhc_get(CondensationParameters *ptr, double *val) +cdef extern void condensationparameters_rhc_set(CondensationParameters *ptr, double *val) -cdef extern void condensationparameters_smooth_factor_get(void *ptr, double *val) -cdef extern void condensationparameters_smooth_factor_set(void *ptr, double *val) +cdef extern void condensationparameters_smooth_factor_get(CondensationParameters *ptr, double *val) +cdef extern void condensationparameters_smooth_factor_set(CondensationParameters *ptr, double *val) # SaturationData -cdef extern void saturationdata_sat_pressure_wrapper(void *ptr, double *T, double *Psat) \ No newline at end of file +cdef extern void saturationdata_sat_pressure_wrapper(SaturationData *ptr, double *T, double *Psat) \ No newline at end of file diff --git a/photochem/cython/CMakeLists.txt b/photochem/cython/CMakeLists.txt index 07adf21..b584115 100644 --- a/photochem/cython/CMakeLists.txt +++ b/photochem/cython/CMakeLists.txt @@ -21,5 +21,5 @@ endforeach() python_extension_module(_photochem) target_link_libraries(_photochem photochem_wrapper) -target_include_directories(_photochem PUBLIC ${NumPy_INCLUDE_DIRS}) +target_include_directories(_photochem PUBLIC ${NumPy_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}) set_property(TARGET _photochem PROPERTY LINKER_LANGUAGE Fortran) \ No newline at end of file diff --git a/photochem/cython/EvoAtmosphere.pyx b/photochem/cython/EvoAtmosphere.pyx index 53ca0ae..ef7cefb 100644 --- a/photochem/cython/EvoAtmosphere.pyx +++ b/photochem/cython/EvoAtmosphere.pyx @@ -8,7 +8,7 @@ cdef class EvoAtmosphere: optionally self-consistently evolve climate. """ - cdef void *_ptr + cdef ea_pxd.EvoAtmosphere *_ptr cdef bool _init_called def __cinit__(self, *args, **kwargs): @@ -534,7 +534,7 @@ cdef class EvoAtmosphere: if usol_.shape[0] != nq or usol_.shape[1] != nz: raise PhotoException("Input usol is the wrong size.") - cdef void *pl_ptr + cdef pl_pxd.ProductionLoss *pl_ptr ea_pxd.evoatmosphere_production_and_loss_wrapper(self._ptr, species_c, &nq, &nz, usol_.data, &pl_ptr, err) if len(err.strip()) > 0: raise PhotoException(err.decode("utf-8").strip()) diff --git a/photochem/cython/EvoAtmosphere_pxd.pxd b/photochem/cython/EvoAtmosphere_pxd.pxd index 81a98d8..f55680a 100644 --- a/photochem/cython/EvoAtmosphere_pxd.pxd +++ b/photochem/cython/EvoAtmosphere_pxd.pxd @@ -1,71 +1,79 @@ from Atmosphere_pxd cimport time_dependent_rate_fcn +cimport ProductionLoss_pxd as pl_pxd +cimport PhotochemData_pxd as dat_pxd +cimport PhotochemVars_pxd as var_pxd +cimport PhotochemWrk_pxd as wrk_pxd from libcpp cimport bool cdef extern from "": pass +cdef extern from *: + struct EvoAtmosphere: + pass + # callback signatures ctypedef double (*temp_dependent_albedo_fcn)(double T_surf) # allocate and destroy -cdef extern void *allocate_evoatmosphere(); -cdef extern void deallocate_evoatmosphere(void *ptr); +cdef extern EvoAtmosphere *allocate_evoatmosphere(); +cdef extern void deallocate_evoatmosphere(EvoAtmosphere *ptr); # subroutines -cdef extern void evoatmosphere_create_wrapper(void *ptr, char *mechanism_file, +cdef extern void evoatmosphere_create_wrapper(EvoAtmosphere *ptr, char *mechanism_file, char *settings_file, char *flux_file, char *atmosphere_txt, char *data_dir, char *err); -cdef extern void evoatmosphere_dat_get(void *ptr, void **ptr1) -cdef extern void evoatmosphere_var_get(void *ptr, void **ptr1) -cdef extern void evoatmosphere_wrk_get(void *ptr, void **ptr1) +cdef extern void evoatmosphere_dat_get(EvoAtmosphere *ptr, dat_pxd.PhotochemData **ptr1) +cdef extern void evoatmosphere_var_get(EvoAtmosphere *ptr, var_pxd.PhotochemVars **ptr1) +cdef extern void evoatmosphere_wrk_get(EvoAtmosphere *ptr, wrk_pxd.PhotochemWrk **ptr1) -cdef extern void evoatmosphere_prep_atmosphere_wrapper(void *ptr, int *nq, int *nz, double *usol, char *err) +cdef extern void evoatmosphere_prep_atmosphere_wrapper(EvoAtmosphere *ptr, int *nq, int *nz, double *usol, char *err) -cdef extern void evoatmosphere_out2atmosphere_txt_wrapper(void *ptr, char *filename, int *number_of_decimals, bool *overwrite, bool *clip, char *err) -cdef extern void evoatmosphere_gas_fluxes_wrapper(void *ptr, int *nq, double *surf_fluxes, double *top_fluxes, char *err) -cdef extern void evoatmosphere_set_lower_bc_wrapper(void *ptr, char *species, char *bc_type, +cdef extern void evoatmosphere_out2atmosphere_txt_wrapper(EvoAtmosphere *ptr, char *filename, int *number_of_decimals, bool *overwrite, bool *clip, char *err) +cdef extern void evoatmosphere_gas_fluxes_wrapper(EvoAtmosphere *ptr, int *nq, double *surf_fluxes, double *top_fluxes, char *err) +cdef extern void evoatmosphere_set_lower_bc_wrapper(EvoAtmosphere *ptr, char *species, char *bc_type, double *vdep, double *den, double *press, double *flux, double *height, bool *missing, char *err) -cdef extern void evoatmosphere_set_upper_bc_wrapper(void *ptr, char *species, +cdef extern void evoatmosphere_set_upper_bc_wrapper(EvoAtmosphere *ptr, char *species, char *bc_type, double *veff, double *flux, bool *missing, char *err) -cdef extern void evoatmosphere_set_rate_fcn_wrapper(void *ptr, char *species_c, time_dependent_rate_fcn fcn, char *err) -cdef extern void evoatmosphere_set_temperature_wrapper(void *ptr, int *nz, double *temperature, +cdef extern void evoatmosphere_set_rate_fcn_wrapper(EvoAtmosphere *ptr, char *species_c, time_dependent_rate_fcn fcn, char *err) +cdef extern void evoatmosphere_set_temperature_wrapper(EvoAtmosphere *ptr, int *nz, double *temperature, double *trop_alt, bool *trop_alt_present, char *err) -cdef extern void evoatmosphere_set_press_temp_edd_wrapper(void *ptr, int *P_dim1, double *P, int *T_dim1, double *T, int *edd_dim1, double *edd, +cdef extern void evoatmosphere_set_press_temp_edd_wrapper(EvoAtmosphere *ptr, int *P_dim1, double *P, int *T_dim1, double *T, int *edd_dim1, double *edd, double *trop_p, bool *trop_p_present, bool *hydro_pressure, bool *hydro_pressure_present, char *err) -cdef extern void evoatmosphere_update_vertical_grid_wrapper(void *ptr, double *toa_alt, bool *toa_alt_present, +cdef extern void evoatmosphere_update_vertical_grid_wrapper(EvoAtmosphere *ptr, double *toa_alt, bool *toa_alt_present, double *toa_pressure, bool *toa_pressure_present, char *err) -cdef extern void evoatmosphere_regrid_prep_atmosphere_wrapper(void *ptr, int *nq, int *nz, double *usol, double *top_atmos, char *err) +cdef extern void evoatmosphere_regrid_prep_atmosphere_wrapper(EvoAtmosphere *ptr, int *nq, int *nz, double *usol, double *top_atmos, char *err) -cdef extern void evoatmosphere_evolve_wrapper(void *ptr, char *filename, +cdef extern void evoatmosphere_evolve_wrapper(EvoAtmosphere *ptr, char *filename, double *tstart, int *nq, int *nz, double *usol, int *nt, double *t_eval, bool *overwrite, bool *restart_from_file, bool *success, char *err) -cdef extern void evoatmosphere_check_for_convergence_wrapper(void *ptr, bool *converged, char* err) +cdef extern void evoatmosphere_check_for_convergence_wrapper(EvoAtmosphere *ptr, bool *converged, char* err) -cdef extern void evoatmosphere_initialize_stepper_wrapper(void *ptr, int *nq, int *nz, double *usol_start, char *err) +cdef extern void evoatmosphere_initialize_stepper_wrapper(EvoAtmosphere *ptr, int *nq, int *nz, double *usol_start, char *err) -cdef extern double evoatmosphere_step_wrapper(void *ptr, char *err) +cdef extern double evoatmosphere_step_wrapper(EvoAtmosphere *ptr, char *err) -cdef extern void evoatmosphere_destroy_stepper_wrapper(void *ptr, char *err) +cdef extern void evoatmosphere_destroy_stepper_wrapper(EvoAtmosphere *ptr, char *err) -cdef extern void evoatmosphere_production_and_loss_wrapper(void *ptr, char *species, int *nq, - int *nz, double *usol, void **pl_ptr, char *err) +cdef extern void evoatmosphere_production_and_loss_wrapper(EvoAtmosphere *ptr, char *species, int *nq, + int *nz, double *usol, pl_pxd.ProductionLoss **pl_ptr, char *err) # getters and setters -cdef extern void evoatmosphere_t_surf_get(void *ptr, double *val) -cdef extern void evoatmosphere_t_surf_set(void *ptr, double *val) +cdef extern void evoatmosphere_t_surf_get(EvoAtmosphere *ptr, double *val) +cdef extern void evoatmosphere_t_surf_set(EvoAtmosphere *ptr, double *val) -cdef extern void evoatmosphere_t_trop_get(void *ptr, double *val) -cdef extern void evoatmosphere_t_trop_set(void *ptr, double *val) +cdef extern void evoatmosphere_t_trop_get(EvoAtmosphere *ptr, double *val) +cdef extern void evoatmosphere_t_trop_set(EvoAtmosphere *ptr, double *val) -cdef extern void evoatmosphere_albedo_fcn_set(void *ptr, temp_dependent_albedo_fcn fcn) +cdef extern void evoatmosphere_albedo_fcn_set(EvoAtmosphere *ptr, temp_dependent_albedo_fcn fcn) -cdef extern void evoatmosphere_p_top_min_get(void *ptr, double *val) -cdef extern void evoatmosphere_p_top_min_set(void *ptr, double *val) +cdef extern void evoatmosphere_p_top_min_get(EvoAtmosphere *ptr, double *val) +cdef extern void evoatmosphere_p_top_min_set(EvoAtmosphere *ptr, double *val) -cdef extern void evoatmosphere_p_top_max_get(void *ptr, double *val) -cdef extern void evoatmosphere_p_top_max_set(void *ptr, double *val) +cdef extern void evoatmosphere_p_top_max_get(EvoAtmosphere *ptr, double *val) +cdef extern void evoatmosphere_p_top_max_set(EvoAtmosphere *ptr, double *val) -cdef extern void evoatmosphere_top_atmos_adjust_frac_get(void *ptr, double *val) -cdef extern void evoatmosphere_top_atmos_adjust_frac_set(void *ptr, double *val) +cdef extern void evoatmosphere_top_atmos_adjust_frac_get(EvoAtmosphere *ptr, double *val) +cdef extern void evoatmosphere_top_atmos_adjust_frac_set(EvoAtmosphere *ptr, double *val) diff --git a/photochem/cython/PhotochemData.pyx b/photochem/cython/PhotochemData.pyx index 32a002f..d7e6a51 100644 --- a/photochem/cython/PhotochemData.pyx +++ b/photochem/cython/PhotochemData.pyx @@ -5,7 +5,7 @@ cdef class PhotochemData: has been initialized. """ - cdef void *_ptr + cdef dat_pxd.PhotochemData *_ptr def __cinit__(self): self._ptr = NULL @@ -145,7 +145,7 @@ cdef class PhotochemData: def __get__(self): cdef int dim1 dat_pxd.photochemdata_particle_sat_get_size(self._ptr, &dim1) - cdef void **arrp = malloc(dim1 * sizeof(void *)) + cdef atom_pxd.SaturationData **arrp = malloc(dim1 * sizeof(atom_pxd.SaturationData *)) dat_pxd.photochemdata_particle_sat_get(self._ptr, &dim1, arrp) arr1 = [] for i in range(dim1): diff --git a/photochem/cython/PhotochemData_pxd.pxd b/photochem/cython/PhotochemData_pxd.pxd index 5fdafc3..579338f 100644 --- a/photochem/cython/PhotochemData_pxd.pxd +++ b/photochem/cython/PhotochemData_pxd.pxd @@ -1,41 +1,46 @@ +cimport AtomConservation_pxd as atom_pxd from libcpp cimport bool cdef extern from "": pass -cdef extern void photochemdata_nq_get(void *ptr, int *nq) -cdef extern void photochemdata_np_get(void *ptr, int *nq) -cdef extern void photochemdata_nsp_get(void *ptr, int *nq) -cdef extern void photochemdata_ng_get(void *ptr, int *nq) -cdef extern void photochemdata_nsl_get(void *ptr, int *nq) -cdef extern void photochemdata_nll_get(void *ptr, int *nq) -cdef extern void photochemdata_nw_get(void *ptr, int *nq) +cdef extern from *: + struct PhotochemData: + pass -cdef extern void photochemdata_planet_mass_get(void *ptr, double *val) +cdef extern void photochemdata_nq_get(PhotochemData *ptr, int *nq) +cdef extern void photochemdata_np_get(PhotochemData *ptr, int *nq) +cdef extern void photochemdata_nsp_get(PhotochemData *ptr, int *nq) +cdef extern void photochemdata_ng_get(PhotochemData *ptr, int *nq) +cdef extern void photochemdata_nsl_get(PhotochemData *ptr, int *nq) +cdef extern void photochemdata_nll_get(PhotochemData *ptr, int *nq) +cdef extern void photochemdata_nw_get(PhotochemData *ptr, int *nq) -cdef extern void photochemdata_planet_radius_get(void *ptr, double *val) -cdef extern void photochemdata_planet_radius_set(void *ptr, double *val) +cdef extern void photochemdata_planet_mass_get(PhotochemData *ptr, double *val) -cdef extern void photochemdata_species_names_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_species_names_get(void *ptr, int *dim1, char* species_names) +cdef extern void photochemdata_planet_radius_get(PhotochemData *ptr, double *val) +cdef extern void photochemdata_planet_radius_set(PhotochemData *ptr, double *val) -cdef extern void photochemdata_atoms_names_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_atoms_names_get(void *ptr, int *dim1, char* names) +cdef extern void photochemdata_species_names_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_species_names_get(PhotochemData *ptr, int *dim1, char* species_names) -cdef extern void photochemdata_reaction_equations_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_reaction_equations_get(void *ptr, int *dim1, char* names) +cdef extern void photochemdata_atoms_names_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_atoms_names_get(PhotochemData *ptr, int *dim1, char* names) -cdef extern void photochemdata_photonums_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_photonums_get(void *ptr, int *dim1, int *arr) +cdef extern void photochemdata_reaction_equations_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_reaction_equations_get(PhotochemData *ptr, int *dim1, char* names) -cdef extern void photochemdata_wavl_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_wavl_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemdata_photonums_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_photonums_get(PhotochemData *ptr, int *dim1, int *arr) -cdef extern void photochemdata_species_mass_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_species_mass_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemdata_wavl_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_wavl_get(PhotochemData *ptr, int *dim1, double *arr) -cdef extern void photochemdata_species_redox_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_species_redox_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemdata_species_mass_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_species_mass_get(PhotochemData *ptr, int *dim1, double *arr) -cdef extern void photochemdata_particle_sat_get_size(void *ptr, int *dim1) -cdef extern void photochemdata_particle_sat_get(void *ptr, int *dim1, void **ptr1) +cdef extern void photochemdata_species_redox_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_species_redox_get(PhotochemData *ptr, int *dim1, double *arr) + +cdef extern void photochemdata_particle_sat_get_size(PhotochemData *ptr, int *dim1) +cdef extern void photochemdata_particle_sat_get(PhotochemData *ptr, int *dim1, atom_pxd.SaturationData **ptr1) diff --git a/photochem/cython/PhotochemVars.pyx b/photochem/cython/PhotochemVars.pyx index d061897..8c222ab 100644 --- a/photochem/cython/PhotochemVars.pyx +++ b/photochem/cython/PhotochemVars.pyx @@ -5,7 +5,7 @@ cdef class PhotochemVars: model integrations. """ - cdef void *_ptr + cdef var_pxd.PhotochemVars *_ptr def __cinit__(self): self._ptr = NULL @@ -85,7 +85,7 @@ cdef class PhotochemVars: property H2O_cond_params: "CondensationParameters. H2O condensation rate parameters." def __get__(self): - cdef void *ptr1 + cdef atom_pxd.CondensationParameters *ptr1 var_pxd.photochemvars_h2o_cond_params_get(self._ptr, &ptr1) val = CondensationParameters() val._ptr = ptr1 @@ -127,7 +127,7 @@ cdef class PhotochemVars: def __get__(self): cdef int dim1 var_pxd.photochemvars_cond_params_get_size(self._ptr, &dim1) - cdef void **arrp = malloc(dim1 * sizeof(void *)) + cdef atom_pxd.CondensationParameters **arrp = malloc(dim1 * sizeof(atom_pxd.CondensationParameters *)) var_pxd.photochemvars_cond_params_get(self._ptr, &dim1, arrp) arr1 = [] for i in range(dim1): diff --git a/photochem/cython/PhotochemVars_pxd.pxd b/photochem/cython/PhotochemVars_pxd.pxd index e6a0710..f362cd6 100644 --- a/photochem/cython/PhotochemVars_pxd.pxd +++ b/photochem/cython/PhotochemVars_pxd.pxd @@ -1,96 +1,101 @@ +cimport AtomConservation_pxd as atom_pxd from libcpp cimport bool cdef extern from "": pass +cdef extern from *: + struct PhotochemVars: + pass + # callback signatures ctypedef void (*time_dependent_flux_fcn)(double tn, int nw, double *photon_flux) ctypedef double (*binary_diffusion_fcn)(double mu_i, double mubar, double T) -cdef extern void photochemvars_nz_get(void *ptr, int *nz) +cdef extern void photochemvars_nz_get(PhotochemVars *ptr, int *nz) -cdef extern void photochemvars_top_atmos_get(void *ptr, double *val) +cdef extern void photochemvars_top_atmos_get(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_bottom_atmos_get(void *ptr, double *val) +cdef extern void photochemvars_bottom_atmos_get(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_at_photo_equilibrium_get(void *ptr, bool *at_photo_equilibrium) +cdef extern void photochemvars_at_photo_equilibrium_get(PhotochemVars *ptr, bool *at_photo_equilibrium) -cdef extern void photochemvars_usol_init_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemvars_usol_init_get(void *ptr, int *dim1, int *dim2, double *usol_init) +cdef extern void photochemvars_usol_init_get_size(PhotochemVars *ptr, int *dim1, int *dim2) +cdef extern void photochemvars_usol_init_get(PhotochemVars *ptr, int *dim1, int *dim2, double *usol_init) -cdef extern void photochemvars_particle_radius_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemvars_particle_radius_get(void *ptr, int *dim1, int *dim2, double *arr) -cdef extern void photochemvars_particle_radius_set(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemvars_particle_radius_get_size(PhotochemVars *ptr, int *dim1, int *dim2) +cdef extern void photochemvars_particle_radius_get(PhotochemVars *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemvars_particle_radius_set(PhotochemVars *ptr, int *dim1, int *dim2, double *arr) -cdef extern void photochemvars_trop_alt_get(void *ptr, double *val) +cdef extern void photochemvars_trop_alt_get(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_trop_ind_get(void *ptr, int *val) +cdef extern void photochemvars_trop_ind_get(PhotochemVars *ptr, int *val) -cdef extern void photochemvars_relative_humidity_get(void *ptr, double *val) -cdef extern void photochemvars_relative_humidity_set(void *ptr, double *val) +cdef extern void photochemvars_relative_humidity_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_relative_humidity_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_h2o_cond_params_get(void *ptr, void **ptr1) +cdef extern void photochemvars_h2o_cond_params_get(PhotochemVars *ptr, atom_pxd.CondensationParameters **ptr1) -cdef extern void photochemvars_photon_flux_fcn_set(void *ptr, time_dependent_flux_fcn fcn) +cdef extern void photochemvars_photon_flux_fcn_set(PhotochemVars *ptr, time_dependent_flux_fcn fcn) -cdef extern void photochemvars_cond_params_get_size(void *ptr, int *dim1) -cdef extern void photochemvars_cond_params_get(void *ptr, int *dim1, void **ptr1) +cdef extern void photochemvars_cond_params_get_size(PhotochemVars *ptr, int *dim1) +cdef extern void photochemvars_cond_params_get(PhotochemVars *ptr, int *dim1, atom_pxd.CondensationParameters **ptr1) -cdef extern void photochemvars_temperature_get_size(void *ptr, int *dim1) -cdef extern void photochemvars_temperature_get(void *ptr, int *dim1, double *temperature) +cdef extern void photochemvars_temperature_get_size(PhotochemVars *ptr, int *dim1) +cdef extern void photochemvars_temperature_get(PhotochemVars *ptr, int *dim1, double *temperature) -cdef extern void photochemvars_edd_get_size(void *ptr, int *dim1) -cdef extern void photochemvars_edd_get(void *ptr, int *dim1, double *arr) -cdef extern void photochemvars_edd_set(void *ptr, int *dim1, double *arr) +cdef extern void photochemvars_edd_get_size(PhotochemVars *ptr, int *dim1) +cdef extern void photochemvars_edd_get(PhotochemVars *ptr, int *dim1, double *arr) +cdef extern void photochemvars_edd_set(PhotochemVars *ptr, int *dim1, double *arr) -cdef extern void photochemvars_custom_binary_diffusion_fcn_set(void *ptr, binary_diffusion_fcn fcn) +cdef extern void photochemvars_custom_binary_diffusion_fcn_set(PhotochemVars *ptr, binary_diffusion_fcn fcn) -cdef extern void photochemvars_photon_flux_get_size(void *ptr, int *dim1) -cdef extern void photochemvars_photon_flux_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemvars_photon_flux_get_size(PhotochemVars *ptr, int *dim1) +cdef extern void photochemvars_photon_flux_get(PhotochemVars *ptr, int *dim1, double *arr) -cdef extern void photochemvars_grav_get_size(void *ptr, int *dim1) -cdef extern void photochemvars_grav_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemvars_grav_get_size(PhotochemVars *ptr, int *dim1) +cdef extern void photochemvars_grav_get(PhotochemVars *ptr, int *dim1, double *arr) -cdef extern void photochemvars_z_get_size(void *ptr, int *dim1) -cdef extern void photochemvars_z_get(void *ptr, int *dim1, double *z) +cdef extern void photochemvars_z_get_size(PhotochemVars *ptr, int *dim1) +cdef extern void photochemvars_z_get(PhotochemVars *ptr, int *dim1, double *z) -cdef extern void photochemvars_surface_pressure_get(void *ptr, double *val) -cdef extern void photochemvars_surface_pressure_set(void *ptr, double *val) +cdef extern void photochemvars_surface_pressure_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_surface_pressure_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_max_error_reinit_attempts_get(void *ptr, int *val) -cdef extern void photochemvars_max_error_reinit_attempts_set(void *ptr, int *val) +cdef extern void photochemvars_max_error_reinit_attempts_get(PhotochemVars *ptr, int *val) +cdef extern void photochemvars_max_error_reinit_attempts_set(PhotochemVars *ptr, int *val) -cdef extern void photochemvars_rtol_get(void *ptr, double *val) -cdef extern void photochemvars_rtol_set(void *ptr, double *val) +cdef extern void photochemvars_rtol_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_rtol_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_atol_get(void *ptr, double *val) -cdef extern void photochemvars_atol_set(void *ptr, double *val) +cdef extern void photochemvars_atol_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_atol_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_mxsteps_get(void *ptr, int *val) -cdef extern void photochemvars_mxsteps_set(void *ptr, int *val) +cdef extern void photochemvars_mxsteps_get(PhotochemVars *ptr, int *val) +cdef extern void photochemvars_mxsteps_set(PhotochemVars *ptr, int *val) -cdef extern void photochemvars_equilibrium_time_get(void *ptr, double *val) -cdef extern void photochemvars_equilibrium_time_set(void *ptr, double *val) +cdef extern void photochemvars_equilibrium_time_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_equilibrium_time_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_conv_hist_factor_get(void *ptr, double *val) -cdef extern void photochemvars_conv_hist_factor_set(void *ptr, double *val) +cdef extern void photochemvars_conv_hist_factor_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_conv_hist_factor_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_conv_min_mix_get(void *ptr, double *val) -cdef extern void photochemvars_conv_min_mix_set(void *ptr, double *val) +cdef extern void photochemvars_conv_min_mix_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_conv_min_mix_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_conv_longdy_get(void *ptr, double *val) -cdef extern void photochemvars_conv_longdy_set(void *ptr, double *val) +cdef extern void photochemvars_conv_longdy_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_conv_longdy_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_conv_longdydt_get(void *ptr, double *val) -cdef extern void photochemvars_conv_longdydt_set(void *ptr, double *val) +cdef extern void photochemvars_conv_longdydt_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_conv_longdydt_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_autodiff_get(void *ptr, bool *val) -cdef extern void photochemvars_autodiff_set(void *ptr, bool *val) +cdef extern void photochemvars_autodiff_get(PhotochemVars *ptr, bool *val) +cdef extern void photochemvars_autodiff_set(PhotochemVars *ptr, bool *val) -cdef extern void photochemvars_epsj_get(void *ptr, double *val) -cdef extern void photochemvars_epsj_set(void *ptr, double *val) +cdef extern void photochemvars_epsj_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_epsj_set(PhotochemVars *ptr, double *val) -cdef extern void photochemvars_verbose_get(void *ptr, int *val) -cdef extern void photochemvars_verbose_set(void *ptr, int *val) +cdef extern void photochemvars_verbose_get(PhotochemVars *ptr, int *val) +cdef extern void photochemvars_verbose_set(PhotochemVars *ptr, int *val) -cdef extern void photochemvars_fast_arbitrary_rate_get(void *ptr, double *val) -cdef extern void photochemvars_fast_arbitrary_rate_set(void *ptr, double *val) \ No newline at end of file +cdef extern void photochemvars_fast_arbitrary_rate_get(PhotochemVars *ptr, double *val) +cdef extern void photochemvars_fast_arbitrary_rate_set(PhotochemVars *ptr, double *val) \ No newline at end of file diff --git a/photochem/cython/PhotochemWrk.h b/photochem/cython/PhotochemWrk.h new file mode 100644 index 0000000..6a68d69 --- /dev/null +++ b/photochem/cython/PhotochemWrk.h @@ -0,0 +1,2 @@ +struct PhotochemWrk{}; +struct PhotochemWrkEvo{}; diff --git a/photochem/cython/PhotochemWrk.pyx b/photochem/cython/PhotochemWrk.pyx index 78311db..18dc3c6 100644 --- a/photochem/cython/PhotochemWrk.pyx +++ b/photochem/cython/PhotochemWrk.pyx @@ -8,9 +8,9 @@ cdef class PhotochemWrkEvo(PhotochemWrk): """ def __get__(self): cdef int dim1 - wrk_pxd.photochemwrkevo_pressure_hydro_get_size(self._ptr, &dim1) + wrk_pxd.photochemwrkevo_pressure_hydro_get_size(self._ptr, &dim1) cdef ndarray arr = np.empty(dim1, np.double) - wrk_pxd.photochemwrkevo_pressure_hydro_get(self._ptr, &dim1, arr.data) + wrk_pxd.photochemwrkevo_pressure_hydro_get(self._ptr, &dim1, arr.data) return arr cdef class PhotochemWrk: @@ -18,7 +18,7 @@ cdef class PhotochemWrk: when integrating the photochemical model """ - cdef void *_ptr + cdef wrk_pxd.PhotochemWrk *_ptr def __cinit__(self): self._ptr = NULL diff --git a/photochem/cython/PhotochemWrk_pxd.pxd b/photochem/cython/PhotochemWrk_pxd.pxd index 6f8f505..75519cd 100644 --- a/photochem/cython/PhotochemWrk_pxd.pxd +++ b/photochem/cython/PhotochemWrk_pxd.pxd @@ -2,52 +2,58 @@ from libcpp cimport bool cdef extern from "": pass -cdef extern void photochemwrk_nsteps_get(void *ptr, int *val) +cdef extern from "PhotochemWrk.h": + struct PhotochemWrk: + pass + struct PhotochemWrkEvo: + pass -cdef extern void photochemwrk_t_history_get_size(void *ptr, int *dim1) -cdef extern void photochemwrk_t_history_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemwrk_nsteps_get(PhotochemWrk *ptr, int *val) -cdef extern void photochemwrk_mix_history_get_size(void *ptr, int *dim1, int *dim2, int *dim3) -cdef extern void photochemwrk_mix_history_get(void *ptr, int *dim1, int *dim2, int *dim3, double *arr) +cdef extern void photochemwrk_t_history_get_size(PhotochemWrk *ptr, int *dim1) +cdef extern void photochemwrk_t_history_get(PhotochemWrk *ptr, int *dim1, double *arr) -cdef extern void photochemwrk_longdy_get(void *ptr, double *val) +cdef extern void photochemwrk_mix_history_get_size(PhotochemWrk *ptr, int *dim1, int *dim2, int *dim3) +cdef extern void photochemwrk_mix_history_get(PhotochemWrk *ptr, int *dim1, int *dim2, int *dim3, double *arr) -cdef extern void photochemwrk_longdydt_get(void *ptr, double *val) +cdef extern void photochemwrk_longdy_get(PhotochemWrk *ptr, double *val) -cdef extern void photochemwrk_tn_get(void *ptr, double *val) -cdef extern void photochemwrk_tn_set(void *ptr, double *val) +cdef extern void photochemwrk_longdydt_get(PhotochemWrk *ptr, double *val) -cdef extern void photochemwrk_usol_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemwrk_usol_get(void *ptr, int *dim1, int *dim2, double *usol) -cdef extern void photochemwrk_usol_set(void *ptr, int *dim1, int *dim2, double *usol) +cdef extern void photochemwrk_tn_get(PhotochemWrk *ptr, double *val) +cdef extern void photochemwrk_tn_set(PhotochemWrk *ptr, double *val) -cdef extern void photochemwrk_pressure_get_size(void *ptr, int *dim1) -cdef extern void photochemwrk_pressure_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemwrk_usol_get_size(PhotochemWrk *ptr, int *dim1, int *dim2) +cdef extern void photochemwrk_usol_get(PhotochemWrk *ptr, int *dim1, int *dim2, double *usol) +cdef extern void photochemwrk_usol_set(PhotochemWrk *ptr, int *dim1, int *dim2, double *usol) -cdef extern void photochemwrk_density_get_size(void *ptr, int *dim1) -cdef extern void photochemwrk_density_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemwrk_pressure_get_size(PhotochemWrk *ptr, int *dim1) +cdef extern void photochemwrk_pressure_get(PhotochemWrk *ptr, int *dim1, double *arr) -cdef extern void photochemwrk_densities_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemwrk_densities_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemwrk_density_get_size(PhotochemWrk *ptr, int *dim1) +cdef extern void photochemwrk_density_get(PhotochemWrk *ptr, int *dim1, double *arr) -cdef extern void photochemwrk_rx_rates_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemwrk_rx_rates_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemwrk_densities_get_size(PhotochemWrk *ptr, int *dim1, int *dim2) +cdef extern void photochemwrk_densities_get(PhotochemWrk *ptr, int *dim1, int *dim2, double *arr) -cdef extern void photochemwrk_mubar_get_size(void *ptr, int *dim1) -cdef extern void photochemwrk_mubar_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemwrk_rx_rates_get_size(PhotochemWrk *ptr, int *dim1, int *dim2) +cdef extern void photochemwrk_rx_rates_get(PhotochemWrk *ptr, int *dim1, int *dim2, double *arr) -cdef extern void photochemwrk_prates_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemwrk_prates_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemwrk_mubar_get_size(PhotochemWrk *ptr, int *dim1) +cdef extern void photochemwrk_mubar_get(PhotochemWrk *ptr, int *dim1, double *arr) -cdef extern void photochemwrk_amean_grd_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemwrk_amean_grd_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemwrk_prates_get_size(PhotochemWrk *ptr, int *dim1, int *dim2) +cdef extern void photochemwrk_prates_get(PhotochemWrk *ptr, int *dim1, int *dim2, double *arr) -cdef extern void photochemwrk_optical_depth_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void photochemwrk_optical_depth_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void photochemwrk_amean_grd_get_size(PhotochemWrk *ptr, int *dim1, int *dim2) +cdef extern void photochemwrk_amean_grd_get(PhotochemWrk *ptr, int *dim1, int *dim2, double *arr) -cdef extern void photochemwrk_surf_radiance_get_size(void *ptr, int *dim1) -cdef extern void photochemwrk_surf_radiance_get(void *ptr, int *dim1, double *arr) +cdef extern void photochemwrk_optical_depth_get_size(PhotochemWrk *ptr, int *dim1, int *dim2) +cdef extern void photochemwrk_optical_depth_get(PhotochemWrk *ptr, int *dim1, int *dim2, double *arr) + +cdef extern void photochemwrk_surf_radiance_get_size(PhotochemWrk *ptr, int *dim1) +cdef extern void photochemwrk_surf_radiance_get(PhotochemWrk *ptr, int *dim1, double *arr) # PhotochemWrkEvo -cdef extern void photochemwrkevo_pressure_hydro_get_size(void *ptr, int *dim1) -cdef extern void photochemwrkevo_pressure_hydro_get(void *ptr, int *dim1, double *arr) \ No newline at end of file +cdef extern void photochemwrkevo_pressure_hydro_get_size(PhotochemWrkEvo *ptr, int *dim1) +cdef extern void photochemwrkevo_pressure_hydro_get(PhotochemWrkEvo *ptr, int *dim1, double *arr) \ No newline at end of file diff --git a/photochem/cython/ProductionLoss.pyx b/photochem/cython/ProductionLoss.pyx index 03efdb1..01e9321 100644 --- a/photochem/cython/ProductionLoss.pyx +++ b/photochem/cython/ProductionLoss.pyx @@ -5,7 +5,7 @@ cdef class ProductionLoss: a species. This class is produced when calling the `production_and_loss` routine. """ - cdef void *_ptr + cdef pl_pxd.ProductionLoss *_ptr def __cinit__(self): self._ptr = NULL diff --git a/photochem/cython/ProductionLoss_pxd.pxd b/photochem/cython/ProductionLoss_pxd.pxd index ee630b1..c9ba42f 100644 --- a/photochem/cython/ProductionLoss_pxd.pxd +++ b/photochem/cython/ProductionLoss_pxd.pxd @@ -2,22 +2,26 @@ from libcpp cimport bool cdef extern from "": pass -cdef extern void deallocate_productionloss(void *ptr) +cdef extern from *: + struct ProductionLoss: + pass -cdef extern void productionloss_production_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void productionloss_production_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void deallocate_productionloss(ProductionLoss *ptr) -cdef extern void productionloss_loss_get_size(void *ptr, int *dim1, int *dim2) -cdef extern void productionloss_loss_get(void *ptr, int *dim1, int *dim2, double *arr) +cdef extern void productionloss_production_get_size(ProductionLoss *ptr, int *dim1, int *dim2) +cdef extern void productionloss_production_get(ProductionLoss *ptr, int *dim1, int *dim2, double *arr) -cdef extern void productionloss_integrated_production_get_size(void *ptr, int *dim1) -cdef extern void productionloss_integrated_production_get(void *ptr, int *dim1, double *arr) +cdef extern void productionloss_loss_get_size(ProductionLoss *ptr, int *dim1, int *dim2) +cdef extern void productionloss_loss_get(ProductionLoss *ptr, int *dim1, int *dim2, double *arr) -cdef extern void productionloss_integrated_loss_get_size(void *ptr, int *dim1) -cdef extern void productionloss_integrated_loss_get(void *ptr, int *dim1, double *arr) +cdef extern void productionloss_integrated_production_get_size(ProductionLoss *ptr, int *dim1) +cdef extern void productionloss_integrated_production_get(ProductionLoss *ptr, int *dim1, double *arr) -cdef extern void productionloss_production_rx_get_size(void *ptr, int *dim1) -cdef extern void productionloss_production_rx_get(void *ptr, int *dim1, char *names) +cdef extern void productionloss_integrated_loss_get_size(ProductionLoss *ptr, int *dim1) +cdef extern void productionloss_integrated_loss_get(ProductionLoss *ptr, int *dim1, double *arr) -cdef extern void productionloss_loss_rx_get_size(void *ptr, int *dim1) -cdef extern void productionloss_loss_rx_get(void *ptr, int *dim1, char *names) \ No newline at end of file +cdef extern void productionloss_production_rx_get_size(ProductionLoss *ptr, int *dim1) +cdef extern void productionloss_production_rx_get(ProductionLoss *ptr, int *dim1, char *names) + +cdef extern void productionloss_loss_rx_get_size(ProductionLoss *ptr, int *dim1) +cdef extern void productionloss_loss_rx_get(ProductionLoss *ptr, int *dim1, char *names) \ No newline at end of file