commit 40881d3cef159030137df9bb704b1b6fd51e898b
parent 4bed8785f21ba28e69da2aee13f6c87c23079198
Author: Benjamin Piaud <benjamin.piaud@meso-star.com>
Date: Mon, 7 May 2018 21:45:41 +0200
quelques modifs
Diffstat:
5 files changed, 47 insertions(+), 47 deletions(-)
diff --git a/src/Makefile b/src/Makefile
@@ -1,9 +1,10 @@
-SDIS_SDK=../Stardis-0.3.0-GNU-Linux64
+#SDIS_SDK=../Stardis-0.3.0-GNU-Linux64
+SDIS_SDK=/home/piaud/code/star-engine-stardis/local/
SDIS_SDK_DBG=/home/piaud/code/star-engine-stardis/local/
INC=-I${SDIS_SDK}/include
-#CFLAGS=-std=c90
-LDFLAGS =-lsdis -lsstl -lrsys -ltinyexpr -lm -L${SDIS_SDK}/lib -Wl,-rpath=${SDIS_SDK}/lib
+CFLAGS=-std=c99 -pedantic -Wall
+LDFLAGS =-lsdis -lsstl -lrsys -ltinyexpr -lm -L${SDIS_SDK_DBG}/lib -Wl,-rpath=${SDIS_SDK_DBG}/lib
LDFLAGS_DBG=-lsdis-dbg -lsstl -lrsys -ltinyexpr -lm -L${SDIS_SDK_DBG}/lib -Wl,-rpath=${SDIS_SDK_DBG}/lib
SRC=main.c stardis-app.c stardis-compute.c
@@ -12,7 +13,7 @@ DEPS=args.h stardis-app.h
all: stardis-app
stardis-app: ${SRC} ${DEPS}
- ${CC} -o stardis-app ${SRC} ${INC} ${CFLAGS} ${LDFLAGS}
+ ${CC} -o stardis-app -O2 ${SRC} ${INC} ${CFLAGS} ${LDFLAGS}
debug: $(SRC) $(DEPS)
${CC} -g -o stardis-app-dbg ${SRC} ${INC} ${CFLAGS} ${LDFLAGS_DBG}
diff --git a/src/args.h b/src/args.h
@@ -4,6 +4,7 @@
#define ARGS_H
#include <unistd.h>
+#include <getopt.h>
#include <rsys/rsys.h>
#include <rsys/cstr.h>
@@ -30,7 +31,7 @@ static const struct args ARGS_DEFAULT = ARGS_DEFAULT__;
static void
print_help(char* prog)
{
- printf("usage : \n%s -m MEDIUM.txt -b BOUNDARY.txt [-p X:Y:Z:TIME]\n", prog);
+ printf("usage : \n%s -m MEDIUM.txt -b BOUNDARY.txt [-p X,Y,Z,TIME]\n", prog);
printf("[-s SCALE_FACTOR] [-d] [-n NUM_OF_REALIZATIONS] [-t NUM_OF_THREADS]\n");
printf("[-r AMBIENT_RAD_TEMP:REFERENCE_TEMP]\n");
printf("\n -h : print this help.\n");
@@ -59,7 +60,7 @@ print_help(char* prog)
printf(" default value: 10000.\n");
printf("\n -t NUM_OF_THREADS :\n");
printf(" default value: all threads available.\n");
- printf("\n -r AMBIENT_RAD_TEMP:REFERENCE_TEMP :\n");
+ printf("\n -r AMBIENT_RAD_TEMP,REFERENCE_TEMP :\n");
printf(" Parameters for the radiative transfer.\n");
printf(" AMBIENT_RAD_TEMP is the ambient radiative temperature .\n");
printf(" REFERENCE_TEMP is the temperature used for the linearization.\n");
@@ -75,7 +76,7 @@ print_help(char* prog)
}
-static res_T
+static inline res_T
parse_args(const int argc, char** argv, struct args* args)
{
int opt = 0;
@@ -124,7 +125,7 @@ parse_args(const int argc, char** argv, struct args* args)
cstr_to_list_double(optarg, ',', args->probe, &len, 4);
if(res == RES_OK && len != 4) res = RES_BAD_ARG;
if (res != RES_OK){
- fprintf(stderr, "Invalid argument -p\n", optarg);
+ fprintf(stderr, "Invalid argument -p %s\n", optarg);
goto error;
}
break;
@@ -136,7 +137,7 @@ parse_args(const int argc, char** argv, struct args* args)
case 's':
cstr_to_double(optarg, &args->scale_factor);
if (res != RES_OK || args->scale_factor <=0){
- fprintf(stderr, "Invalid argument -s\n", optarg);
+ fprintf(stderr, "Invalid argument -s %s\n", optarg);
goto error;
}
break;
@@ -147,7 +148,7 @@ parse_args(const int argc, char** argv, struct args* args)
if (res != RES_OK
|| args->radiative_temp[0] <=0
|| args->radiative_temp[1] <=0){
- fprintf(stderr, "Invalid argument -r\n", optarg);
+ fprintf(stderr, "Invalid argument -r %s\n", optarg);
goto error;
}
break;
diff --git a/src/stardis-app.c b/src/stardis-app.c
@@ -1,5 +1,6 @@
/* Copyright (C) 2018 |Meso|Star> (contact@meso-star.com) */
+#define _GNU_SOURCE 1
#include <string.h>
#include "stardis-app.h"
@@ -278,7 +279,6 @@ read_stl
SSTL(create(NULL, NULL, 0, &sstl));
-
SSTL(load(sstl, *stl_filename));
SSTL(get_desc(sstl, &desc));
@@ -286,12 +286,8 @@ read_stl
read_triangles(FLAG, &desc, triangle2id, id2id, NULL, &id, &geometry->triangle);
sa_release(id2id);
-
-exit:
- SSTL(ref_put(sstl));
+ SSTL(ref_put(sstl));
return res;
-error:
- goto exit;
}
@@ -339,6 +335,7 @@ geometry_analyse
&vertex2id, &triangle2id, geometry);
geometry->medium_count += 1;
+ if (stl_filename) free(stl_filename);
}
fclose(input);
@@ -363,6 +360,7 @@ geometry_analyse
&vertex2id, &triangle2id, geometry);
geometry->boundary_count += 1;
+ if (stl_filename) free(stl_filename);
}
fclose(input);
@@ -437,20 +435,8 @@ parse_camera
}
exit:
- if (line){
- int i = 0;
- for (i=0; *(line+i);i++){
- free(line[i]);
- }
- free(line);
- }
- if (opt){
- int i = 0;
- for (i=0; *(opt+i);i++){
- free(opt[i]);
- }
- free(opt);
- }
+ FREE_AARRAY(line)
+ FREE_AARRAY(opt)
return res;
error:
@@ -505,12 +491,24 @@ error:
res_T
stardis_release(struct stardis* stardis)
{
+ int i = 0;
res_T res = RES_OK;
- res = release_geometry(&stardis->geometry);
+ for (i=0; i<sa_size(stardis->material); ++i){
+ free(stardis->material[i].Tinit);
+ free(stardis->material[i].power);
+ }
sa_release(stardis->material);
+
+ for (i=0; i<sa_size(stardis->boundary); ++i){
+ free(stardis->boundary[i].T);
+ free(stardis->boundary[i].flux);
+ }
sa_release(stardis->boundary);
+ res = release_geometry(&stardis->geometry);
+ if (res != RES_OK) goto error;
+
exit:
return res;
error:
diff --git a/src/stardis-app.h b/src/stardis-app.h
@@ -12,6 +12,14 @@
#include <tinyexpr.h>
#include "args.h"
+#define FREE_AARRAY(ARRAY) if (ARRAY) {\
+ int i = 0; \
+ for (i=0; *(ARRAY+i);i++){\
+ free(ARRAY[i]);\
+ }\
+ free(ARRAY);\
+}
+
struct vertex{
float xyz[3];
};
@@ -73,7 +81,7 @@ struct geometry{
#define NULL_GEOMETRY__ {NULL, NULL, 0, 0, NULL}
static const struct geometry NULL_GEOMETRY = NULL_GEOMETRY__;
-static res_T
+static inline res_T
release_geometry
(struct geometry* geom)
{
@@ -83,10 +91,7 @@ release_geometry
sa_release(geom->triangle);
sa_release(geom->interfaces);
-exit:
return res;
-error:
- goto exit;
}
struct material{
diff --git a/src/stardis-compute.c b/src/stardis-compute.c
@@ -320,10 +320,7 @@ select_probe_type
break;
}
}
-exit:
return res;
-error:
- goto exit;
}
static void
@@ -537,8 +534,8 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
if (mode == IR_COMPUTE){
- size_t width = (size_t)stardis->camera.img[0];
- size_t height = (size_t)stardis->camera.img[1];
+ size_t width = (size_t)stardis->camera.img[0];
+ size_t height = (size_t)stardis->camera.img[1];
/* Setup the camera */
SDIS(camera_create(dev, &cam));
@@ -564,7 +561,7 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
stardis->radiative_temp[1],
width,
height,
- stardis->camera.spp,
+ (size_t)stardis->camera.spp,
sdis_accum_buffer_write,
buf));
@@ -582,11 +579,11 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
double uv[2] = {0,0};
size_t iprim = -1;
- res = select_probe_type(scn,
+ res = select_probe_type(scn,
stardis->geometry.triangle,
stardis->material,
- pos,
- &iprim,
+ pos,
+ &iprim,
uv);
if(iprim == -1){
@@ -625,7 +622,6 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
(unsigned long)stardis->N);
}
-exit:
for (i=0; i<sa_size(solid_medium); ++i){
SDIS(medium_ref_put(solid_medium[i]));
}
@@ -649,8 +645,7 @@ exit:
if (estimator) SDIS(estimator_ref_put(estimator));
if (scn) SDIS(scene_ref_put(scn));
if (dev) SDIS(device_ref_put(dev));
+
return res;
-error:
- goto exit;
}