stardis

Perform coupled heat transfer calculations
git clone git://git.meso-star.fr/stardis.git
Log | Files | Refs | README | LICENSE

commit c68eddff02ebac31c673556d3553aa95998667f4
parent 76062942fa7b82486c4ab1a6c79126fb62c6dd07
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 27 Mar 2020 16:42:59 +0100

Fix gcc build

Diffstat:
Msrc/main.c | 3++-
Msrc/stardis-app.c | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Msrc/stardis-app.h | 100++++++++++++++++++-------------------------------------------------------------
Msrc/stardis-compute.c | 2--
Msrc/stardis-output.c | 5+++--
Msrc/stardis-parsing.c | 5+++--
Msrc/stardis-parsing.h | 1-
7 files changed, 105 insertions(+), 89 deletions(-)

diff --git a/src/main.c b/src/main.c @@ -65,8 +65,9 @@ main /* Dump all the app-independent information */ ERR(sg3d_geometry_dump_as_vtk(stardis.geometry.sg3d, stdout)); /* Dump the compute region if any */ - if(stardis.mode & REGION_COMPUTE_MODES) + if(stardis.mode & REGION_COMPUTE_MODES) { ERR(dump_compute_region_at_the_end_of_vtk(&stardis, stdout)); + } /* Dump possible holes * TODO: as this extracts enclosures, it could dump front/back * enclosure IDs too */ diff --git a/src/stardis-app.c b/src/stardis-app.c @@ -121,7 +121,7 @@ error: ERR(str_printf(&str, "Front: "));\ ERR(print_description(&str, descs + properties[SG3D_FRONT]));\ ERR(str_printf(&str, "\n"));\ - ERR(logger_print(stardis->logger, LOG_OUTPUT, str_cget(&str))); \ + ERR(logger_print(stardis->logger, LOG_OUTPUT, "%s", str_cget(&str))); \ }\ str_clear(&str);\ if(!back_defined)\ @@ -130,7 +130,7 @@ error: ERR(str_printf(&str, "Back: "));\ ERR(print_description(&str, descs + properties[SG3D_BACK]));\ ERR(str_printf(&str, "\n"));\ - ERR(logger_print(stardis->logger, LOG_OUTPUT, str_cget(&str))); \ + ERR(logger_print(stardis->logger, LOG_OUTPUT, "%s", str_cget(&str))); \ }\ str_clear(&str);\ if(!connect_defined)\ @@ -139,7 +139,7 @@ error: ERR(str_printf(&str, "Connection: "));\ ERR(print_description(&str, descs + properties[SG3D_INTFACE]));\ ERR(str_printf(&str, "\n"));\ - ERR(logger_print(stardis->logger, LOG_OUTPUT, str_cget(&str))); \ + ERR(logger_print(stardis->logger, LOG_OUTPUT, "%s", str_cget(&str))); \ }\ str_release(&str);\ } @@ -528,7 +528,7 @@ stardis_init ERR(print_description(&str, darray_descriptions_cdata_get(&stardis->descriptions) + i)); ERR(str_printf(&str, "\n")); - logger_print(stardis->logger, LOG_OUTPUT, str_cget(&str)); + logger_print(stardis->logger, LOG_OUTPUT, "%s", str_cget(&str)); } str_release(&str); @@ -640,3 +640,73 @@ stardis_release(struct stardis* stardis) SDIS(medium_ref_put(darray_media_ptr_data_get(&stardis->media)[i])); darray_media_ptr_release(&stardis->media); } + +/******************************************************************************* + * rsys/str additions + ******************************************************************************/ +static res_T +ensure_allocated(struct str* str, const size_t len, const char keep_old) +{ + char* buf = NULL; + const size_t alloc_granularity = 32; + size_t mod = 0; + size_t new_len = 0; + size_t new_size = 0; + ASSERT(str); + + if (len * sizeof(char) <= str->allocated) + return RES_OK; + + mod = len % alloc_granularity; + new_len = !mod ? len : len - mod + alloc_granularity; + new_size = new_len * sizeof(char); + buf = MEM_ALLOC(str->allocator, new_size); + if (!buf) + return RES_MEM_ERR; + + if (keep_old) { + strncpy(buf, str->cstr, new_len - 1); + buf[new_len - 1] = '\0'; + } + + str->allocated = new_len * sizeof(char); + if (str->cstr != str->buffer) + MEM_RM(str->allocator, str->cstr); + + str->cstr = buf; + return RES_OK; +} + +res_T +str_printf +(struct str* str, + const char* fmt, ...) +{ + res_T res = RES_OK; + size_t initial_len, left; + va_list args_cp; + size_t needed = 0; + va_list args; + ASSERT(str && fmt); + va_start(args, fmt); + + initial_len = str_len(str); + ASSERT(str->allocated >= initial_len); + left = str->allocated - initial_len; + if (left) { + VA_COPY(args_cp, args); + needed = (size_t)vsnprintf(str->cstr + initial_len, left, fmt, args_cp); + } + if (needed >= left) { + ERR(ensure_allocated(str, initial_len + needed + 1, 1)); + ASSERT(str->allocated >= initial_len); + left = str->allocated - initial_len; + needed = (size_t)vsnprintf(str->cstr + initial_len, left, fmt, args); + CHK(needed < left); + } + va_end(args); +end: + return res; +error: + goto end; +} diff --git a/src/stardis-app.h b/src/stardis-app.h @@ -18,6 +18,7 @@ #include <sdis.h> #include <limits.h> +#include <stdarg.h> /* Forward declarations */ struct logger; @@ -105,76 +106,16 @@ error: } /******************************************************************************* - * rsys/str additions + * rsys/str addition ******************************************************************************/ -static res_T -ensure_allocated(struct str* str, const size_t len, const char keep_old) -{ - char* buf = NULL; - const size_t alloc_granularity = 32; - size_t mod = 0; - size_t new_len = 0; - size_t new_size = 0; - ASSERT(str); - - if(len * sizeof(char) <= str->allocated) - return RES_OK; - - mod = len % alloc_granularity; - new_len = !mod ? len : len - mod + alloc_granularity; - new_size = new_len * sizeof(char); - buf = MEM_ALLOC(str->allocator, new_size); - if(!buf) - return RES_MEM_ERR; - - if(keep_old) { - strncpy(buf, str->cstr, new_len - 1); - buf[new_len - 1] = '\0'; - } - - str->allocated = new_len * sizeof(char); - if(str->cstr != str->buffer) - MEM_RM(str->allocator, str->cstr); - - str->cstr = buf; - return RES_OK; -} - -static res_T +extern LOCAL_SYM res_T str_printf -(struct str* str, - const char* fmt, ...) + (struct str* str, + const char* fmt, ...) #ifdef COMPILER_GCC - __attribute((format(printf, 3, 4))) + __attribute((format(printf, 2, 3))) #endif -{ - res_T res = RES_OK; - size_t initial_len, left; - va_list args_cp; - int needed = 0; - va_list args; - ASSERT(str && fmt); - va_start(args, fmt); - - initial_len = str_len(str); - left = str->allocated - initial_len; - ASSERT(left >= 0); - if(left) { - VA_COPY(args_cp, args); - needed = vsnprintf(str->cstr+ initial_len, left, fmt, args_cp); - } - if(needed >= left) { - ERR(ensure_allocated(str, initial_len + needed + 1, 1)); - left = str->allocated - initial_len; - needed = vsnprintf(str->cstr+ initial_len, left, fmt, args); - CHK(needed < left); - } - va_end(args); -end: - return res; -error: - goto end; -} + ; /******************************************************************************/ struct mat_fluid { @@ -213,10 +154,12 @@ print_fluid ASSERT(str && f); ERR(str_printf(str, "Fluid '%s': rho=%g cp=%g", str_cget(&f->name), f->rho, f->cp)); - if(f->tinit >= 0) + if(f->tinit >= 0) { ERR(str_printf(str, " Tinit=%g", f->tinit)); - if(f->imposed_temperature >= 0) + } + if(f->imposed_temperature >= 0) { ERR(str_printf(str, " Temp=%g", f->imposed_temperature)); + } end: return res; error: @@ -277,12 +220,15 @@ print_solid ASSERT(str && s); ERR(str_printf(str, "Solid '%s': lambda=%g rho=%g cp=%g delta=%g", str_cget(&s->name), s->lambda, s->rho, s->cp, s->delta)); - if(s->vpower != 0) + if(s->vpower != 0) { ERR(str_printf(str, " VPower=%g", s->vpower)); - if(s->tinit >= 0) + } + if(s->tinit >= 0) { ERR(str_printf(str, " Tinit=%g", s->tinit)); - if(s->imposed_temperature >= 0) + } + if(s->imposed_temperature >= 0) { ERR(str_printf(str, " Temp=%g", s->imposed_temperature)); + } end: return res; error: @@ -403,10 +349,10 @@ print_t_boundary (type == DESC_BOUND_T_FOR_SOLID ? "solid" : "fluid"), str_cget(&b->name), b->imposed_temperature)); - if(type == DESC_BOUND_T_FOR_FLUID) + if(type == DESC_BOUND_T_FOR_FLUID) { ERR(str_printf(str, "emissivity=%g, specular_fraction=%g hc=%g ", b->emissivity, b->specular_fraction, b->hc)); - + } ERR(str_printf(str, "(using medium %u as external medium)", b->mat_id)); end: return res; @@ -685,7 +631,7 @@ struct camera { double time; }; -static void +static INLINE void init_camera(struct camera* cam) { d3_splat(cam->pos, 0); d3_splat(cam->tgt, 0); @@ -696,7 +642,7 @@ init_camera(struct camera* cam) { cam->time = INF; } -static void +static INLINE void log_err(const char* msg, void* ctx) { ASSERT(msg); @@ -708,7 +654,7 @@ log_err(const char* msg, void* ctx) #endif } -static void +static INLINE void log_warn(const char* msg, void* ctx) { ASSERT(msg); @@ -720,7 +666,7 @@ log_warn(const char* msg, void* ctx) #endif } -static void +static INLINE void log_prt(const char* msg, void* ctx) { ASSERT(msg); diff --git a/src/stardis-compute.c b/src/stardis-compute.c @@ -562,7 +562,6 @@ read_compute_surface struct sstl* sstl = NULL; struct add_geom_ctx add_geom_ctx; struct sg3d_geometry_add_callbacks callbacks = SG3D_ADD_CALLBACKS_NULL__; - int new_triangles_initialized = 0; const char* file; ASSERT(stardis); @@ -584,7 +583,6 @@ read_compute_surface ASSERT(add_geom_ctx.stl_desc.vertices_count <= UINT_MAX && add_geom_ctx.stl_desc.triangles_count <= UINT_MAX); - new_triangles_initialized = 1; add_geom_ctx.custom = &stardis->compute_surface; res = sg3d_geometry_add( diff --git a/src/stardis-output.c b/src/stardis-output.c @@ -656,7 +656,7 @@ dump_map const size_t* idx; size_t sz; unsigned szp; - const struct sdis_estimator* const* est; + struct sdis_estimator* const* est; ASSERT(stardis && estimators && stream); @@ -765,7 +765,8 @@ dump_compute_region_at_the_end_of_vtk size_t prim = darray_size_t_cdata_get(&stardis->compute_surface.primitives)[j]; enum sdis_side side = darray_sides_cdata_get(&stardis->compute_surface.sides)[j]; ASSERT(prim <= tsz); - v[(unsigned)prim] |= (side == SDIS_FRONT ? 1 : 2); + v[(unsigned)prim] = + (unsigned char)(v[(unsigned)prim] | (side == SDIS_FRONT ? 1 : 2)); } /* For triangles in compute surface with error v==MAX */ diff --git a/src/stardis-parsing.c b/src/stardis-parsing.c @@ -337,8 +337,9 @@ print_multiple_modes m = BIT(b++); if(m & dont) continue; if(m & modes) { - int n = snprintf(buf, left, (fst ? "-%c" : ", -%c"), mode_option(m)); - if(n < 0 || n >= left) FATAL("Buffer is too small."); + size_t n = + (size_t)snprintf(buf, left, (fst ? "-%c" : ", -%c"), mode_option(m)); + if(n >= left) FATAL("Buffer is too small."); left -= n; buf += n; fst = 0; diff --git a/src/stardis-parsing.h b/src/stardis-parsing.h @@ -12,7 +12,6 @@ struct camera; struct logger; -enum log_type; struct mem_allocator; struct stardis;