Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b445a7a
add set and get templates for EnvState
jcurtis2 Nov 24, 2025
5c45109
add missing test for temperature
jcurtis2 Nov 24, 2025
1e228b2
first draft of templates for aero_particle
jcurtis2 Nov 24, 2025
c3dd8f0
make setters for envstate non_const
jcurtis2 Nov 24, 2025
aa328b5
make default type double and remove double in aero_particle setters a…
jcurtis2 Nov 24, 2025
efdc266
move setter and getter. refactor derived getter for aero_particle
jcurtis2 Nov 25, 2025
8d40543
first pass at templates in AeroState for returning all particle values
jcurtis2 Dec 3, 2025
761b915
set default array to double
jcurtis2 Dec 3, 2025
9160ae6
minor
jcurtis2 Dec 5, 2025
27535a1
switch aero_state and aero_particle templates to generic getters
jcurtis2 Dec 8, 2025
5922b09
try a few getters for aero_mode
jcurtis2 Dec 8, 2025
304f1d5
add some getter calls for scenario
jcurtis2 Dec 8, 2025
70f8202
aero_data setters and getters
jcurtis2 Dec 8, 2025
80dffc4
add defined length array
jcurtis2 Dec 9, 2025
a4bc51c
add array calls for bin_grid
jcurtis2 Dec 9, 2025
c821e66
Merge branch 'main' into add_templates
Griger5 Jan 13, 2026
a4ba970
Merge branch 'main' into add_templates
slayoo Jan 14, 2026
d245f1d
add coverage for vol_frac_std
jcurtis2 Jan 15, 2026
37dfc43
add test for num_dist
jcurtis2 Jan 15, 2026
cf525c0
add comments. change to inline. formatting
jcurtis2 Jan 20, 2026
dead37c
Merge branch 'main' into add_templates
jcurtis2 Jan 20, 2026
66ee23d
add template for include and exclude aero_state calls
jcurtis2 Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 8 additions & 37 deletions src/aero_data.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "pmc_resource.hpp"
#include "json_resource.hpp"
#include "getters.hpp"
#include "camp_core.hpp"
#include "aero_data_parameters.hpp"
#include "nanobind/nanobind.h"
Expand Down Expand Up @@ -78,44 +79,23 @@ struct AeroData {
}

static std::size_t __len__(const AeroData &self) {
int len;
f_aero_data_len(
self.ptr.f_arg(),
&len
);
return len;
return pypartmc::get_value<int>(self, f_aero_data_len);
}

static void set_frac_dim(AeroData &self, const double value) {
f_aero_data_set_frac_dim(
self.ptr.f_arg_non_const(),
&value
);
pypartmc::set_value(self, f_aero_data_set_frac_dim, value);
}

static auto get_frac_dim(const AeroData &self) {
double value;
f_aero_data_get_frac_dim(
self.ptr.f_arg(),
&value
);
return value;
return pypartmc::get_value(self, f_aero_data_get_frac_dim);
}

static void set_vol_fill_factor(AeroData &self, const double value) {
f_aero_data_set_vol_fill_factor(
self.ptr.f_arg_non_const(),
&value
);
pypartmc::set_value(self, f_aero_data_set_vol_fill_factor, value);
}

static auto get_prime_radius(AeroData &self) {
double value;
f_aero_data_get_prime_radius(
self.ptr.f_arg(),
&value
);
return value;
return pypartmc::get_value(self, f_aero_data_get_prime_radius);
}

static void set_prime_radius(AeroData &self, const double value) {
Expand All @@ -126,12 +106,7 @@ struct AeroData {
}

static auto get_vol_fill_factor(const AeroData &self) {
double value;
f_aero_data_get_vol_fill_factor(
self.ptr.f_arg(),
&value
);
return value;
return pypartmc::get_value(self, f_aero_data_get_vol_fill_factor);
}

static auto rad2vol(const AeroData &self, const double radius) {
Expand Down Expand Up @@ -219,11 +194,7 @@ struct AeroData {
}

static std::size_t n_source(const AeroData &self) {
int len;
f_aero_data_n_source(
self.ptr.f_arg(),
&len
);
int len = pypartmc::get_value<int>(self, f_aero_data_n_source);
if (len == -1)
throw std::runtime_error("No sources defined.");
return len;
Expand Down
39 changes: 13 additions & 26 deletions src/aero_mode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "pmc_resource.hpp"
#include "aero_data.hpp"
#include "bin_grid.hpp"
#include "getters.hpp"

extern "C" void f_aero_mode_ctor(
void *ptr
Expand Down Expand Up @@ -204,7 +205,7 @@ struct AeroMode {
&len
);

return data;
return data;
}

static void set_vol_frac(AeroMode &self, const std::valarray<double>&data)
Expand All @@ -223,11 +224,9 @@ struct AeroMode {

static auto get_vol_frac(const AeroMode &self)
{
int len;
f_aero_mode_get_n_spec(self.ptr.f_arg(), &len);
std::valarray<double> data(len);
f_aero_mode_get_vol_frac(self.ptr.f_arg(), begin(data), &len);
return data;
auto fn = f_aero_mode_get_vol_frac;
auto len_fn = f_aero_mode_get_n_spec;
return pypartmc::get_array_values(self, fn, len_fn);
}

static void set_vol_frac_std(AeroMode &self, const std::valarray<double>&data)
Expand All @@ -246,27 +245,21 @@ struct AeroMode {

static auto get_vol_frac_std(const AeroMode &self)
{
int len;
f_aero_mode_get_n_spec(self.ptr.f_arg(), &len);
std::valarray<double> data(len);
f_aero_mode_get_vol_frac_std(self.ptr.f_arg(), begin(data), &len);
return data;
auto fn = f_aero_mode_get_vol_frac_std;
auto len_fn = f_aero_mode_get_n_spec;
return pypartmc::get_array_values(self, fn, len_fn);
}

static auto get_char_radius(const AeroMode &self){
double val;
f_aero_mode_get_char_radius(self.ptr.f_arg(), &val);
return val;
return pypartmc::get_value(self, f_aero_mode_get_char_radius);
}

static void set_char_radius(AeroMode &self, const double &val){
f_aero_mode_set_char_radius(self.ptr.f_arg_non_const(), &val);
}

static auto get_gsd(const AeroMode &self){
double val;
f_aero_mode_get_gsd(self.ptr.f_arg(), &val);
return val;
return pypartmc::get_value(self, f_aero_mode_get_gsd);
}

static void set_gsd(AeroMode &self, const double &val) {
Expand Down Expand Up @@ -359,14 +352,8 @@ struct AeroMode {
}

static auto get_sample_num_conc(const AeroMode &self) {
int len;
f_aero_mode_get_sample_bins(self.ptr.f_arg(), &len);
std::valarray<double> sample_num_conc(len);
f_aero_mode_get_sample_num_conc(
self.ptr.f_arg(),
begin(sample_num_conc),
&len
);
return sample_num_conc;
auto fn = f_aero_mode_get_sample_num_conc;
auto len_fn = f_aero_mode_get_sample_bins;
return pypartmc::get_array_values(self, fn, len_fn);
}
};
4 changes: 2 additions & 2 deletions src/aero_particle.F90
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ subroutine f_aero_particle_species_mass( &
subroutine f_aero_particle_species_masses( &
aero_particle_ptr_c, &
aero_data_ptr_c, &
size_masses, &
masses &
masses, &
size_masses &
) bind(C)

type(aero_particle_t), pointer :: aero_particle_ptr_f => null()
Expand Down
Loading
Loading