htrdr

Solving radiative transfer in heterogeneous media
git clone git://git.meso-star.fr/htrdr.git
Log | Files | Refs | README | LICENSE

commit cbb0e0652c75724d72cccef31c14d35ff536dc9e
parent d2423b32130fb803a9ffd0f01d52913f33e7e4b9
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 11 Jul 2018 17:14:54 +0200

Provide the sun as sky parameter

Diffstat:
Msrc/htrdr.c | 9+++++++--
Msrc/htrdr.h | 2++
Msrc/htrdr_sky.c | 9++++++++-
Msrc/htrdr_sky.h | 2++
4 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/htrdr.c b/src/htrdr.c @@ -20,6 +20,7 @@ #include "htrdr_buffer.h" #include "htrdr_rectangle.h" #include "htrdr_sky.h" +#include "htrdr_sun.h" #include "htrdr_solve.h" #include <rsys/clock_time.h> @@ -218,8 +219,11 @@ htrdr_init res = open_output_stream(htrdr, args); if(res != RES_OK) goto error; } - res = htrdr_sky_create - (htrdr, args->filename_les, args->filename_mie, &htrdr->sky); + + res = htrdr_sun_create(htrdr, &htrdr->sun); + if(res != RES_OK) goto error; + res = htrdr_sky_create(htrdr, htrdr->sun, args->filename_les, + args->filename_mie, &htrdr->sky); if(res != RES_OK) goto error; exit: @@ -235,6 +239,7 @@ htrdr_release(struct htrdr* htrdr) ASSERT(htrdr); if(htrdr->svx) SVX(device_ref_put(htrdr->svx)); if(htrdr->sky) htrdr_sky_ref_put(htrdr->sky); + if(htrdr->sun) htrdr_sun_ref_put(htrdr->sun); if(htrdr->buf) htrdr_buffer_ref_put(htrdr->buf); if(htrdr->rect) htrdr_rectangle_ref_put(htrdr->rect); logger_release(&htrdr->logger); diff --git a/src/htrdr.h b/src/htrdr.h @@ -31,6 +31,8 @@ struct htrdr { struct svx_device* svx; struct htrdr_sky* sky; + struct htrdr_sun* sun; + struct htrdr_buffer* buf; struct htrdr_rectangle* rect; double main_dir[3]; /* Main direction */ diff --git a/src/htrdr_sky.c b/src/htrdr_sky.c @@ -15,6 +15,7 @@ #include "htrdr.h" #include "htrdr_sky.h" +#include "htrdr_sun.h" #include <star/svx.h> #include <high_tune/htcp.h> @@ -73,6 +74,8 @@ struct htrdr_sky { struct svx_tree* clouds; struct svx_tree_desc cloud_desc; + struct htrdr_sun* sun; + struct htcp* htcp; struct htmie* htmie; @@ -373,6 +376,7 @@ release_sky(ref_T* ref) struct htrdr_sky* sky; ASSERT(ref); sky = CONTAINER_OF(ref, struct htrdr_sky, ref); + if(sky->sun) htrdr_sun_ref_put(sky->sun); if(sky->clouds) SVX(tree_ref_put(sky->clouds)); if(sky->htcp) HTCP(ref_put(sky->htcp)); if(sky->htmie) HTMIE(ref_put(sky->htmie)); @@ -386,13 +390,14 @@ release_sky(ref_T* ref) res_T htrdr_sky_create (struct htrdr* htrdr, + struct htrdr_sun* sun, const char* htcp_filename, const char* htmie_filename, struct htrdr_sky** out_sky) { struct htrdr_sky* sky = NULL; res_T res = RES_OK; - ASSERT(htrdr && htcp_filename && htmie_filename && out_sky); + ASSERT(htrdr && sun && htcp_filename && htmie_filename && out_sky); sky = MEM_CALLOC(htrdr->allocator, 1, sizeof(*sky)); if(!sky) { @@ -401,7 +406,9 @@ htrdr_sky_create goto error; } ref_init(&sky->ref); + htrdr_sun_ref_get(sun); sky->htrdr = htrdr; + sky->sun = sun; darray_split_init(htrdr->allocator, &sky->svx2htcp_z); res = htcp_create(&htrdr->logger, htrdr->allocator, htrdr->verbose, &sky->htcp); diff --git a/src/htrdr_sky.h b/src/htrdr_sky.h @@ -41,12 +41,14 @@ enum htrdr_svx_op { /* Forward declaration */ struct htrdr; struct htrdr_sky; +struct htrdr_sun; struct svx_tree; struct svx_voxel; extern LOCAL_SYM res_T htrdr_sky_create (struct htrdr* htrdr, + struct htrdr_sun* sun, const char* htcp_filename, const char* htmie_filename, struct htrdr_sky** sky);