commit 6325d4c369e5535ded7ba03319d2519e6c55699d
parent b9a4cd492c6d2e9a99c692c4063630559e3bf386
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 26 Oct 2022 12:45:34 +0200
htrdr-planeto: start implementing the run function
Diffstat:
3 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/src/planeto/htrdr_planeto.c b/src/planeto/htrdr_planeto.c
@@ -199,6 +199,8 @@ setup_output
goto error;
}
+ cmd->output_type = args->output_type;
+
exit:
return res;
error:
@@ -210,6 +212,28 @@ error:
goto exit;
}
+static INLINE res_T
+write_vtk_octrees(const struct htrdr_planeto* cmd)
+{
+ size_t octrees_range[2];
+ res_T res = RES_OK;
+ ASSERT(cmd);
+
+ /* Nothing to do on non master process */
+ if(htrdr_get_mpi_rank(cmd->htrdr) != 0) goto exit;
+
+ octrees_range[0] = 0;
+ octrees_range[1] = rnatm_get_spectral_items_count(cmd->atmosphere) - 1;
+
+ res = rnatm_write_vtk_octrees(cmd->atmosphere, octrees_range, cmd->output);
+ if(res != RES_OK) goto error;
+
+exit:
+ return res;
+error:
+ goto exit;
+}
+
static void
planeto_release(ref_T* ref)
{
@@ -293,3 +317,26 @@ htrdr_planeto_ref_put(struct htrdr_planeto* cmd)
ASSERT(cmd);
ref_put(&cmd->ref, planeto_release);
}
+
+res_T
+htrdr_planeto_run(struct htrdr_planeto* cmd)
+{
+ res_T res = RES_OK;
+ ASSERT(cmd);
+
+ switch(cmd->output_type) {
+ case HTRDR_PLANETO_ARGS_OUTPUT_IMAGE:
+ htrdr_log_warn(cmd->htrdr, "image rendering is not yet implemented\n");
+ break;
+ case HTRDR_PLANETO_ARGS_OUTPUT_OCTREES:
+ res = write_vtk_octrees(cmd);
+ break;
+ default: FATAL("Unreachable code.\n"); break;
+ }
+ if(res != RES_OK) goto error;
+
+exit:
+ return res;
+error:
+ goto exit;
+}
diff --git a/src/planeto/htrdr_planeto_c.h b/src/planeto/htrdr_planeto_c.h
@@ -38,6 +38,7 @@ struct htrdr_planeto {
FILE* output;
struct str output_name;
+ enum htrdr_planeto_args_output_type output_type;
ref_T ref;
struct htrdr* htrdr;
diff --git a/src/planeto/htrdr_planeto_main.c b/src/planeto/htrdr_planeto_main.c
@@ -60,6 +60,9 @@ htrdr_planeto_main(int argc, char** argv)
res = htrdr_planeto_create(htrdr, &cmd_args, &cmd);
if(res != RES_OK) goto error;
+ res = htrdr_planeto_run(cmd);
+ if(res != RES_OK) goto error;
+
exit:
htrdr_planeto_args_release(&cmd_args);
if(is_mpi_init) htrdr_mpi_finalize();