commit 5d798a24629b997ca0c1087227f13c112b28c25a
parent 05af49ab50f02853f9a919517b9263ac9c7664f5
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 31 Aug 2022 12:08:34 +0200
Take into account the Star-Aerosol API updates
Diffstat:
4 files changed, 30 insertions(+), 25 deletions(-)
diff --git a/src/rnatm.c b/src/rnatm.c
@@ -296,7 +296,7 @@ rnatm_get_k_svx_voxel
}
size_t
-rnatm_get_octrees_count(const struct rnatm* atm)
+rnatm_get_spectral_items_count(const struct rnatm* atm)
{
ASSERT(atm);
return darray_accel_struct_size_get(&atm->accel_structs);
diff --git a/src/rnatm.h b/src/rnatm.h
@@ -161,14 +161,19 @@ rnatm_get_k_svx_voxel
const enum rnatm_radcoef radcoef,
const enum rnatm_svx_op op);
+/* Returns the number of spectral items. One acceleration structure is built
+ * per spectral item from the gas and aerosols meshes */
RNATM_API size_t
-rnatm_get_octrees_count
+rnatm_get_spectral_items_count
(const struct rnatm* atm);
+/* Writes a set of octrees following the VTK file format */
RNATM_API res_T
rnatm_write_vtk_octrees
(struct rnatm* atm,
- const size_t octrees[2], /* Range to consider. Limits are inclusive */
+ /* Spectral items to consider. Limits are inclusive. There is one octree per
+ * spectral item */
+ const size_t spectral_items[2],
FILE* stream);
#endif /* RNATM_H */
diff --git a/src/rnatm_octree.c b/src/rnatm_octree.c
@@ -523,22 +523,22 @@ setup_tetra_radcoefs_aerosol
&& ars_band.lower <= gas_band.lower
&& ars_band.upper >= gas_band.upper) {
- /* Compute the scattering coefficient range of the tetrahedron */
- ks[0] = ars_band.ks_list[tetra->indices[0]];
- ks[1] = ars_band.ks_list[tetra->indices[1]];
- ks[2] = ars_band.ks_list[tetra->indices[2]];
- ks[3] = ars_band.ks_list[tetra->indices[3]];
- radcoefs->ks_min = MMIN(MMIN(ks[0], ks[1]), MMIN(ks[2], ks[3]));
- radcoefs->ks_max = MMAX(MMAX(ks[0], ks[1]), MMAX(ks[2], ks[3]));
-
/* Compute the absorption coefficient range of the tetrahedron */
- ka[0] = ars_band.ka_list[tetra->indices[0]];
- ka[1] = ars_band.ka_list[tetra->indices[1]];
- ka[2] = ars_band.ka_list[tetra->indices[2]];
- ka[3] = ars_band.ka_list[tetra->indices[3]];
+ ka[0] = sars_band_get_ka(&ars_band, tetra->indices[0]);
+ ka[1] = sars_band_get_ka(&ars_band, tetra->indices[1]);
+ ka[2] = sars_band_get_ka(&ars_band, tetra->indices[2]);
+ ka[3] = sars_band_get_ka(&ars_band, tetra->indices[3]);
radcoefs->ka_min = MMIN(MMIN(ka[0], ka[1]), MMIN(ka[2], ka[3]));
radcoefs->ka_max = MMAX(MMAX(ka[0], ka[1]), MMAX(ka[2], ka[3]));
+ /* Compute the scattering coefficient range of the tetrahedron */
+ ks[0] = sars_band_get_ks(&ars_band, tetra->indices[0]);
+ ks[1] = sars_band_get_ks(&ars_band, tetra->indices[1]);
+ ks[2] = sars_band_get_ks(&ars_band, tetra->indices[2]);
+ ks[3] = sars_band_get_ks(&ars_band, tetra->indices[3]);
+ radcoefs->ks_min = MMIN(MMIN(ks[0], ks[1]), MMIN(ks[2], ks[3]));
+ radcoefs->ks_max = MMAX(MMAX(ks[0], ks[1]), MMAX(ks[2], ks[3]));
+
/* The gas band overlaid N aerosol bands (N >= 1) */
} else {
float tau_ka[4] = {0, 0, 0, 0};
@@ -549,7 +549,7 @@ setup_tetra_radcoefs_aerosol
size_t iars_band;
FOR_EACH(iars_band, ars_ibands[0], ars_ibands[1]+1) {
- float lambda_len;
+ float lambda_len;
SARS(get_band(aerosol->sars, iars_band, &ars_band));
lambda_min = MMAX(gas_band.lower, ars_band.lower);
@@ -558,15 +558,15 @@ setup_tetra_radcoefs_aerosol
lambda_len = (float)(lambda_max - lambda_min);
ASSERT(lambda_len > 0);
- tau_ks[0] += ars_band.ks_list[tetra->indices[0]] * lambda_len;
- tau_ks[1] += ars_band.ks_list[tetra->indices[1]] * lambda_len;
- tau_ks[2] += ars_band.ks_list[tetra->indices[2]] * lambda_len;
- tau_ks[3] += ars_band.ks_list[tetra->indices[3]] * lambda_len;
+ tau_ka[0] += sars_band_get_ka(&ars_band, tetra->indices[0]) * lambda_len;
+ tau_ka[1] += sars_band_get_ka(&ars_band, tetra->indices[1]) * lambda_len;
+ tau_ka[2] += sars_band_get_ka(&ars_band, tetra->indices[2]) * lambda_len;
+ tau_ka[3] += sars_band_get_ka(&ars_band, tetra->indices[3]) * lambda_len;
- tau_ka[0] += ars_band.ka_list[tetra->indices[0]] * lambda_len;
- tau_ka[1] += ars_band.ka_list[tetra->indices[1]] * lambda_len;
- tau_ka[2] += ars_band.ka_list[tetra->indices[2]] * lambda_len;
- tau_ka[3] += ars_band.ka_list[tetra->indices[3]] * lambda_len;
+ tau_ks[0] += sars_band_get_ks(&ars_band, tetra->indices[0]) * lambda_len;
+ tau_ks[1] += sars_band_get_ks(&ars_band, tetra->indices[1]) * lambda_len;
+ tau_ks[2] += sars_band_get_ks(&ars_band, tetra->indices[2]) * lambda_len;
+ tau_ks[3] += sars_band_get_ks(&ars_band, tetra->indices[3]) * lambda_len;
}
/* Compute the radiative coefficients of the tetrahedron */
diff --git a/src/test_rnatm.c b/src/test_rnatm.c
@@ -440,7 +440,7 @@ write_vtk_octrees(struct rnatm* atm, const char* filename)
}
octrees_range[0] = 0;
- octrees_range[1] = rnatm_get_octrees_count(atm) - 1;
+ octrees_range[1] = rnatm_get_spectral_items_count(atm) - 1;
res = rnatm_write_vtk_octrees(atm, octrees_range, fp);
if(res != RES_OK) goto error;