commit dfe2ae42870c4b1023a78f8ff0814e7f128826e4
parent 67b1bd0dbe0ae288b355ae37c127fc3ee890f572
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Thu, 21 Dec 2017 11:41:23 +0100
Upd the profile of the medium/interface shader funcs
Diffstat:
5 files changed, 32 insertions(+), 63 deletions(-)
diff --git a/src/sdis.h b/src/sdis.h
@@ -98,20 +98,17 @@ struct sdis_mc {
};
/* Functor type to retrieve the medium properties. */
-typedef void
+typedef double
(*sdis_medium_getter_T)
- (struct sdis_device* dev,
- struct sdis_data* data,
- const struct sdis_rwalk_vertex* vert,
- double* val);
+ (const struct sdis_rwalk_vertex* vert,
+ struct sdis_data* data);
+
/* Functor type to retrieve the interface properties. */
-typedef void
+typedef double
(*sdis_interface_getter_T)
- (struct sdis_device* dev,
- struct sdis_data* data,
- const struct sdis_interface_fragment* frag,
- double* val);
+ (const struct sdis_interface_fragment* frag,
+ struct sdis_data* data);
struct sdis_solid_shader {
/* Properties */
diff --git a/src/sdis_interface_c.h b/src/sdis_interface_c.h
@@ -55,11 +55,9 @@ interface_get_temperature
(const struct sdis_interface* interface,
const struct sdis_interface_fragment* frag)
{
- double T = -1;
ASSERT(interface && frag);
if(!interface->shader.temperature) return -DBL_MAX;
- interface->shader.temperature(interface->dev, interface->data, frag, &T);
- return T;
+ return interface->shader.temperature(frag, interface->data);
}
static INLINE double
@@ -67,10 +65,8 @@ interface_get_convection_coef
(const struct sdis_interface* interface,
const struct sdis_interface_fragment* frag)
{
- double hc = -1;
ASSERT(interface && frag);
- interface->shader.convection_coef(interface->dev, interface->data, frag, &hc);
- return hc;
+ return interface->shader.convection_coef(frag, interface->data);
}
#endif /* SDIS_INTERFACE_C_H */
diff --git a/src/sdis_medium_c.h b/src/sdis_medium_c.h
@@ -38,30 +38,24 @@ static INLINE double
fluid_get_calorific_capacity
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double cp = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_FLUID);
- mdm->shader.fluid.calorific_capacity(mdm->dev, mdm->data, vtx, &cp);
- return cp;
+ return mdm->shader.fluid.calorific_capacity(vtx, mdm->data);
}
static INLINE double
fluid_get_volumic_mass
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double rho = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_FLUID);
- mdm->shader.fluid.volumic_mass(mdm->dev, mdm->data, vtx, &rho);
- return rho;
+ return mdm->shader.fluid.volumic_mass(vtx, mdm->data);
}
static INLINE double
fluid_get_temperature
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double T = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_FLUID);
- mdm->shader.fluid.temperature(mdm->dev, mdm->data, vtx, &T);
- return T;
+ return mdm->shader.fluid.temperature(vtx, mdm->data);
}
/*******************************************************************************
@@ -71,60 +65,48 @@ static INLINE double
solid_get_calorific_capacity
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double cp = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_SOLID);
- mdm->shader.solid.calorific_capacity(mdm->dev, mdm->data, vtx, &cp);
- return cp;
+ return mdm->shader.solid.calorific_capacity(vtx, mdm->data);
}
static INLINE double
solid_get_thermal_conductivity
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double lambda = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_SOLID);
- mdm->shader.solid.thermal_conductivity(mdm->dev, mdm->data, vtx, &lambda);
- return lambda;
+ return mdm->shader.solid.thermal_conductivity(vtx, mdm->data);
}
static INLINE double
solid_get_volumic_mass
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double rho = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_SOLID);
- mdm->shader.solid.volumic_mass(mdm->dev, mdm->data, vtx, &rho);
- return rho;
+ return mdm->shader.solid.volumic_mass(vtx, mdm->data);
}
static INLINE double
solid_get_delta
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double delta = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_SOLID);
- mdm->shader.solid.delta_solid(mdm->dev, mdm->data, vtx, &delta);
- return delta;
+ return mdm->shader.solid.delta_solid(vtx, mdm->data);
}
static INLINE double
solid_get_delta_boundary
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double delta_bound = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_SOLID);
- mdm->shader.solid.delta_boundary(mdm->dev, mdm->data, vtx, &delta_bound);
- return delta_bound;
+ return mdm->shader.solid.delta_boundary(vtx, mdm->data);
}
static INLINE double
solid_get_temperature
(const struct sdis_medium* mdm, const struct sdis_rwalk_vertex* vtx)
{
- double T = -1;
ASSERT(mdm && mdm->type == SDIS_MEDIUM_SOLID);
- mdm->shader.solid.temperature(mdm->dev, mdm->data, vtx, &T);
- return T;
+ return mdm->shader.solid.temperature(vtx, mdm->data);
}
#endif /* SDIS_MEDIUM_C_H */
diff --git a/src/sdis_solve_probe.c b/src/sdis_solve_probe.c
@@ -400,7 +400,7 @@ solid_temperature
const struct sdis_interface* interface;
interface = scene_get_interface(scn, rwalk->hit.prim.prim_id);
mdm = interface_get_medium
- (interface,
+ (interface,
f3_dot(rwalk->hit.normal, dir0) < 0 ? SDIS_FRONT : SDIS_BACK);
}
@@ -473,7 +473,7 @@ sdis_solve_probe_temperature
goto error;
}
- res = scene_get_medium(scn, position, &medium);
+ res = scene_get_medium(scn, position, &medium);
if(res != RES_OK) goto error;
res = ssp_rng_create(scn->dev->allocator, &ssp_rng_mt19937_64, &rng);
@@ -513,10 +513,10 @@ sdis_solve_probe_temperature
}
estimator->temperature.E = weight / (double)estimator->nrealisations;
- estimator->temperature.V =
+ estimator->temperature.V =
sqr_weight / (double)estimator->nrealisations
- estimator->temperature.E * estimator->temperature.E;
- estimator->temperature.SE =
+ estimator->temperature.SE =
sqrt(estimator->temperature.V / (double)estimator->nrealisations);
exit:
diff --git a/src/test_sdis_utils.h b/src/test_sdis_utils.h
@@ -57,28 +57,22 @@ static const size_t box_ntriangles = sizeof(box_indices) / sizeof(size_t[3]);
/*******************************************************************************
* Medium & interface
******************************************************************************/
-static INLINE void
+static INLINE double
dummy_medium_getter
- (struct sdis_device* dev,
- struct sdis_data* data,
- const struct sdis_rwalk_vertex* vert,
- double* val)
+ (const struct sdis_rwalk_vertex* vert, struct sdis_data* data)
{
- (void)dev, (void)data;
- CHK(val != NULL && vert != NULL);
- *val = 1;
+ (void)data;
+ CHK(vert != NULL);
+ return 1;
}
-static INLINE void
+static INLINE double
dummy_interface_getter
- (struct sdis_device* dev,
- struct sdis_data* data,
- const struct sdis_interface_fragment* frag,
- double* val)
+ (const struct sdis_interface_fragment* frag, struct sdis_data* data)
{
- (void)dev, (void)data;
- CHK(val != NULL && frag != NULL);
- *val = 1;
+ (void)data;
+ CHK(frag != NULL);
+ return 1;
}
static const struct sdis_solid_shader DUMMY_SOLID_SHADER = {