diff --git a/gitmodules/partmc b/gitmodules/partmc index e6356e77..79840201 160000 --- a/gitmodules/partmc +++ b/gitmodules/partmc @@ -1 +1 @@ -Subproject commit e6356e7739f0aa45d33ef4b07b3a701f79c4305d +Subproject commit 79840201c39fb1ca3dace78cf21232996a3acfdb diff --git a/src/pypartmc.cpp b/src/pypartmc.cpp index 08d62bf8..4ac786f7 100644 --- a/src/pypartmc.cpp +++ b/src/pypartmc.cpp @@ -646,7 +646,7 @@ NB_MODULE(_PyPartMC, m) { ); m.def( - "loss_rate_dry_dep", &loss_rate_dry_dep, nb::rv_policy::copy, + "loss_rate_drydep", &loss_rate_drydep, nb::rv_policy::copy, "Compute and return the dry deposition rate for a given particle." ); diff --git a/src/scenario.F90 b/src/scenario.F90 index a832300e..6e335598 100644 --- a/src/scenario.F90 +++ b/src/scenario.F90 @@ -67,7 +67,8 @@ subroutine f_scenario_loss_rate( & end subroutine - subroutine f_scenario_loss_rate_dry_dep( & + subroutine f_scenario_loss_rate_drydep( & + scenario_ptr_c, & vol, & density, & aero_data_ptr_c, & @@ -75,20 +76,23 @@ subroutine f_scenario_loss_rate_dry_dep( & rate & ) bind(C) + type(scenario_t), pointer :: scenario_ptr_f => null() type(aero_data_t), pointer :: aero_data_ptr_f => null() type(env_state_t), pointer :: env_state_ptr_f => null() real(c_double), intent(in) :: vol, density - type(c_ptr), intent(in) :: aero_data_ptr_c, env_state_ptr_c + type(c_ptr), intent(in) :: scenario_ptr_c, aero_data_ptr_c, env_state_ptr_c real(c_double), intent(out) :: rate + call c_f_pointer(scenario_ptr_c, scenario_ptr_f) call c_f_pointer(aero_data_ptr_c, aero_data_ptr_f) call c_f_pointer(env_state_ptr_c, env_state_ptr_f) - rate = scenario_loss_rate_dry_dep( & + rate = scenario_loss_rate_drydep( & vol, & density, & aero_data_ptr_f, & - env_state_ptr_f & + env_state_ptr_f, & + scenario_ptr_f & ) end subroutine diff --git a/src/scenario.cpp b/src/scenario.cpp index 1e6bb1cf..db8489b7 100644 --- a/src/scenario.cpp +++ b/src/scenario.cpp @@ -25,14 +25,16 @@ double loss_rate( return rate; } -double loss_rate_dry_dep( +double loss_rate_drydep( + const Scenario &scenario, const double vol, const double density, const AeroData &aero_data, const EnvState &env_state ) { double rate; - f_scenario_loss_rate_dry_dep( + f_scenario_loss_rate_drydep( + &scenario.ptr, &vol, &density, &aero_data.ptr, diff --git a/src/scenario.hpp b/src/scenario.hpp index 1b8b6bb4..343f99f5 100644 --- a/src/scenario.hpp +++ b/src/scenario.hpp @@ -32,7 +32,8 @@ extern "C" void f_scenario_loss_rate( const void *env_state, double *rate ) noexcept; -extern "C" void f_scenario_loss_rate_dry_dep( +extern "C" void f_scenario_loss_rate_drydep( + const void *scenario, const double *vol, const double *density, const void *aero_data, @@ -212,7 +213,8 @@ double loss_rate( const EnvState &env_state ); -double loss_rate_dry_dep( +double loss_rate_drydep( + const Scenario &scenario, const double vol, const double density, const AeroData &aero_data, diff --git a/tests/test_help.py b/tests/test_help.py index c35f9073..7e979ba9 100644 --- a/tests/test_help.py +++ b/tests/test_help.py @@ -31,7 +31,7 @@ ppmc.input_sectional, ppmc.input_state, ppmc.loss_rate, - ppmc.loss_rate_dry_dep, + ppmc.loss_rate_drydep, ppmc.output_state, ppmc.pow2_above, ppmc.rad2diam, diff --git a/tests/test_loss_rate.py b/tests/test_loss_rate.py index 96b49dc6..1a97408b 100644 --- a/tests/test_loss_rate.py +++ b/tests/test_loss_rate.py @@ -60,7 +60,7 @@ def test_loss_rate(loss_function_params: str): assert rate is not nan @staticmethod - def test_loss_rate_dry_dep(): + def test_loss_rate_drydep(): # arrange aero_data = ppmc.AeroData(AERO_DATA_CTOR_ARG_MINIMAL) env_state = ppmc.EnvState(ENV_STATE_CTOR_ARG_MINIMAL) @@ -74,7 +74,7 @@ def test_loss_rate_dry_dep(): aero_data.vol_fill_factor = 1 # act - rate = ppmc.loss_rate_dry_dep(vol, density, aero_data, env_state) + rate = ppmc.loss_rate_drydep(vol, density, aero_data, env_state) # assert assert rate is not nan