Skip to content

Commit

Permalink
got rid of void * in wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicholaswogan committed Jun 5, 2024
1 parent 4d2459c commit 90cb34d
Show file tree
Hide file tree
Showing 16 changed files with 274 additions and 227 deletions.
6 changes: 3 additions & 3 deletions photochem/cython/Atmosphere.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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, <double *>usol_.data, &pl_ptr, err)
if len(err.strip()) > 0:
raise PhotoException(err.decode("utf-8").strip())
Expand Down Expand Up @@ -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())
Expand Down
61 changes: 35 additions & 26 deletions photochem/cython/Atmosphere_pxd.pxd
Original file line number Diff line number Diff line change
@@ -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 "<stdbool.h>":
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)
6 changes: 3 additions & 3 deletions photochem/cython/AtomConservation.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ cdef class AtomConservation:
routine.
"""

cdef void *_ptr
cdef atom_pxd.AtomConservation *_ptr

def __cinit__(self):
self._ptr = NULL
Expand Down Expand Up @@ -79,7 +79,7 @@ cdef class AtomConservation:

cdef class CondensationParameters:

cdef void *_ptr
cdef atom_pxd.CondensationParameters *_ptr

def __cinit__(self):
self._ptr = NULL
Expand Down Expand Up @@ -118,7 +118,7 @@ cdef class CondensationParameters:

cdef class SaturationData:

cdef void *_ptr
cdef atom_pxd.SaturationData *_ptr

def __cinit__(self):
self._ptr = NULL
Expand Down
50 changes: 29 additions & 21 deletions photochem/cython/AtomConservation_pxd.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,39 @@ from libcpp cimport bool
cdef extern from "<stdbool.h>":
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)
cdef extern void saturationdata_sat_pressure_wrapper(SaturationData *ptr, double *T, double *Psat)
2 changes: 1 addition & 1 deletion photochem/cython/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
4 changes: 2 additions & 2 deletions photochem/cython/EvoAtmosphere.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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, <double *>usol_.data, &pl_ptr, err)
if len(err.strip()) > 0:
raise PhotoException(err.decode("utf-8").strip())
Expand Down
Loading

0 comments on commit 90cb34d

Please sign in to comment.