stardis

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

commit 2013e4260ffd05d8ee56be128fa7210c0f243403
parent a333d6ab323c63e51a9a6b150d6c7a48e4b19667
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Sun, 14 Apr 2024 16:58:48 +0200

Merge branch 'feature_per_source_rad_props' into develop

Diffstat:
MMakefile | 3++-
MREADME.md | 2+-
Mconfig.mk | 2+-
Mdoc/stardis-input.5.in | 12+++++++-----
Mdoc/stardis-output.5 | 8++++----
Mdoc/stardis.1.in | 2+-
Mdoc/stardis.1.txt.in | 4++--
Mmake.sh | 2+-
Msrc/stardis-app.c | 15+++++++++------
Msrc/stardis-app.h | 7++++---
Msrc/stardis-args.c | 2+-
Msrc/stardis-args.h.in | 2+-
Msrc/stardis-compute-probe-boundary.c | 2+-
Msrc/stardis-compute.c | 2+-
Msrc/stardis-compute.h | 2+-
Msrc/stardis-description.c | 2+-
Msrc/stardis-description.h | 2+-
Msrc/stardis-extern-source.c | 8++++----
Msrc/stardis-extern-source.h | 2+-
Msrc/stardis-fbound-prog.c | 2+-
Msrc/stardis-fbound-prog.h | 2+-
Msrc/stardis-fbound.c | 2+-
Msrc/stardis-fbound.h | 2+-
Msrc/stardis-fluid-prog.c | 2+-
Msrc/stardis-fluid-prog.h | 2+-
Msrc/stardis-fluid.c | 2+-
Msrc/stardis-fluid.h | 2+-
Msrc/stardis-hbound-prog.c | 2+-
Msrc/stardis-hbound-prog.h | 8+++++---
Msrc/stardis-hbound.c | 2+-
Msrc/stardis-hbound.h | 2+-
Msrc/stardis-hfbound-prog.c | 2+-
Msrc/stardis-hfbound-prog.h | 8+++++---
Msrc/stardis-hfbound.c | 2+-
Msrc/stardis-hfbound.h | 2+-
Msrc/stardis-intface.c | 21+++++++++++++++------
Msrc/stardis-intface.h | 9++++++---
Msrc/stardis-main.c | 2+-
Msrc/stardis-output.c | 280+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/stardis-output.h | 2+-
Msrc/stardis-parsing.c | 117++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
Msrc/stardis-parsing.h | 2+-
Msrc/stardis-prog-properties.h.in | 47+++++++++++++++++++++++++++++++++++++++++++++++
Msrc/stardis-program.c | 2+-
Msrc/stardis-program.h | 2+-
Asrc/stardis-radiative-env.c | 214+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/stardis-radiative-env.h | 116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/stardis-sfconnect-prog.c | 2+-
Msrc/stardis-sfconnect-prog.h | 8+++++---
Msrc/stardis-sfconnect.c | 2+-
Msrc/stardis-sfconnect.h | 2+-
Msrc/stardis-solid-prog.c | 2+-
Msrc/stardis-solid-prog.h | 2+-
Msrc/stardis-solid.c | 2+-
Msrc/stardis-solid.h | 2+-
Msrc/stardis-ssconnect-prog.c | 2+-
Msrc/stardis-ssconnect-prog.h | 2+-
Msrc/stardis-ssconnect.c | 2+-
Msrc/stardis-ssconnect.h | 2+-
Msrc/stardis-tbound-prog.c | 2+-
Msrc/stardis-tbound-prog.h | 2+-
Msrc/stardis-tbound.c | 2+-
Msrc/stardis-tbound.h | 2+-
Mstardis-green-types/stardis-green-types-config-version.cmake.in | 2+-
Mstardis-prog-properties/stardis-prog-properties-config-version.cmake.in | 2+-
65 files changed, 739 insertions(+), 242 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +# Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -46,6 +46,7 @@ SRC =\ src/stardis-output.c\ src/stardis-parsing.c\ src/stardis-program.c\ + src/stardis-radiative-env.c\ src/stardis-sfconnect.c\ src/stardis-sfconnect-prog.c\ src/stardis-ssconnect.c\ diff --git a/README.md b/README.md @@ -162,7 +162,7 @@ parameters: ## License -Copyright (C) 2018-2023 |Méso|Star> (<contact@meso-star.com>) +Copyright (C) 2018-2024 |Méso|Star> (<contact@meso-star.com>) Stardis is free software released under the GPL v3+ license: GNU GPL version 3 or later. You are welcome to redistribute it under certain diff --git a/config.mk b/config.mk @@ -5,7 +5,7 @@ VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH) PREFIX = /usr/local GREEN_TYPES_VERSION = 4 -PROG_PROPERTIES_VERSION = 1 +PROG_PROPERTIES_VERSION = 2 LIB_TYPE = SHARED #LIB_TYPE = STATIC diff --git a/doc/stardis-input.5.in b/doc/stardis-input.5.in @@ -1,4 +1,4 @@ -.\" Copyright (C) 2018-2023 |Méso|Star> +.\" Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) .\" .\" This program is free software: you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see <http://www.gnu.org/licenses/>. -.Dd April 5, 2024 +.Dd April 13, 2024 .Dt STARDIS-INPUT 5 .Os .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -213,7 +213,7 @@ that changes at .It Ta \& \& | Ta Aq Va robin .It Ta \& \& | Ta Aq Va neumann .It Ta \& \& | Ta Aq Va robin-neumann -.It Ta \& \& | Ta Ao Va rad-temp Ac No # \&At most once +.It Ta \& \& | Ta Ao Va rad-env Ac No # \&At most once .It Ta \& \& | Ta Ao Va ext-source Ac No # \&At most once .It \ Ta Ta .\" Dirichlet @@ -255,8 +255,10 @@ that changes at .It Ta Ta Ao Va prog-desc Ac .It \ Ta Ta .\" Radiative temperature -.It Ao Va rad-temp Ac Ta ::= Ta Li TRAD Ao Va temp Ac Ao Va Tref Ac -# Radiative temperatures +.It Ao Va rad-env Ac Ta ::= Ta Ao Va rad-env-const Ac | Ao Va rad-env-prog Ac +.It Ao Va rad-env-const Ac Ta ::= Ta Li TRAD Ao Va temp Ac Ao Va Tref Ac +.It Ao Va rad-env-prog Ac Ta ::= Ta Li TRAD_PROG Ao Va prog-name Ac \e +.It Ta Ta Op Li PROG_PARAMS Op Ao Va args Ac .It \ Ta Ta .\" External source .It Ao Va ext-source Ac Ta ::= Ta Ao Va ext-source-const Ac | Ao Va ext-source-prog Ac diff --git a/doc/stardis-output.5 b/doc/stardis-output.5 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2018-2023 |Méso|Star> +.\" Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) .\" .\" This program is free software: you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see <http://www.gnu.org/licenses/>. -.Dd January 31, 2024 +.Dd April 12, 2024 .Dt STARDIS-INPUT 5 .Os .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -218,7 +218,7 @@ Beyond the file format described below, could write comments .Pq characters behind the hash mark Pq Li # or blank lines -.Pq lines without any characters or composed only of spaces and tabs. +.Pq lines without any characters or composed only of spaces and tabs . These are not part of the file format and should be ignored. .Pp The ASCII file format of a Green function is as follows: @@ -295,7 +295,7 @@ The ASCII file format of a Green function is as follows: .It Ao Va #power-terms Ac Ta ::= Ta Vt integer .It Ao Va #flux-terms Ac Ta ::= Ta Vt integer .It Ao Va power-term Ac Ta ::= Ta Ao Va green-id Ac Ao Va factor Ac -.It Ao Va flux-term Ac Ta ::= Ta Ao Va green-ud Ac Ao Va factor Ac +.It Ao Va flux-term Ac Ta ::= Ta Ao Va green-id Ac Ao Va factor Ac .It Ao Va factor Ac Ta ::= Ta Vt real .It \ Ta Ta .It Ao Va green-id Ac Ta ::= Ta Vt integer diff --git a/doc/stardis.1.in b/doc/stardis.1.in @@ -1,4 +1,4 @@ -.\" Copyright (C) 2018-2023 |Méso|Star> +.\" Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) .\" .\" This program is free software: you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by diff --git a/doc/stardis.1.txt.in b/doc/stardis.1.txt.in @@ -1,4 +1,4 @@ -// Copyright (C) 2018-2023 |Méso|Star> +// Copyright (C) 2018-2024 |Méso|Star> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -354,7 +354,7 @@ ends are written to the *probe_ends.csv* file: COPYRIGHT --------- -Copyright &copy; 2018-2023 |Méso|Star>. License GPLv3+: GNU GPL +Copyright &copy; 2018-2024 |Méso|Star>. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software. You are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. diff --git a/make.sh b/make.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +# Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/stardis-app.c b/src/stardis-app.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -270,9 +270,8 @@ stardis_init stardis->nthreads = args->nthreads; stardis->picard_order = args->picard_order; stardis->scale_factor = -1; /* invalid value */ - stardis->trad = STARDIS_DEFAULT_TRAD; - stardis->trad_ref = STARDIS_DEFAULT_TRAD_REFERENCE; - stardis->trad_def = 0; + stardis->radenv = RADIATIVE_ENV_DEFAULT; + stardis->radenv_def = 0; stardis->initial_time = args->initial_time; stardis->geometry_initialized = 0; d2(stardis->t_range, INF, -INF); @@ -507,17 +506,20 @@ stardis_init struct sdis_scene_create_args scn_args = SDIS_SCENE_CREATE_ARGS_DEFAULT; ASSERT(darray_interface_ptrs_size_get(&stardis->geometry.interf_bytrg) == tcount); + + res = radiative_env_create_solver_radiative_env(&stardis->radenv, stardis); + if(res != RES_OK) goto error; + scn_args.get_indices = sg3d_sdisXd_geometry_get_indices; scn_args.get_interface = sg3d_sdisXd_geometry_get_interface; scn_args.get_position = sg3d_sdisXd_geometry_get_position; scn_args.nprimitives = tcount; scn_args.nvertices = vcount; scn_args.fp_to_meter = stardis->scale_factor; - scn_args.trad.temperature = stardis->trad; - scn_args.trad.reference = stardis->trad_ref; scn_args.t_range[0] = stardis->t_range[0]; scn_args.t_range[1] = stardis->t_range[1]; scn_args.source = stardis->extsrc.sdis_src; + scn_args.radenv = stardis->radenv.sdis_radenv; scn_args.context = &create_context; /* Setting Tmax to 0 is a way of setting the radiative coefficient to 0, and @@ -566,6 +568,7 @@ stardis_release str_release(&stardis->chunks_prefix); extern_source_release(&stardis->extsrc); + radiative_env_release(&stardis->radenv); /* release non-PROGRAM descritions first */ FOR_EACH(i, 0, darray_descriptions_size_get(&stardis->descriptions)) { diff --git a/src/stardis-app.h b/src/stardis-app.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,6 +19,7 @@ #include "stardis-args.h" #include "stardis-description.h" #include "stardis-extern-source.h" +#include "stardis-radiative-env.h" #include <star/sg3d.h> @@ -225,13 +226,13 @@ struct stardis { struct mem_allocator* allocator; struct logger* logger; struct sdis_device* dev; + struct radiative_env radenv; + int radenv_def; size_t samples; double scale_factor; - double trad, trad_ref; double t_range[2]; double initial_time; /* [s] */ int mode; - int trad_def; unsigned nthreads; unsigned picard_order; unsigned next_medium_id; diff --git a/src/stardis-args.c b/src/stardis-args.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-args.h.in b/src/stardis-args.h.in @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-compute-probe-boundary.c b/src/stardis-compute-probe-boundary.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-compute.c b/src/stardis-compute.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-compute.h b/src/stardis-compute.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-description.c b/src/stardis-description.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-description.h b/src/stardis-description.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-extern-source.c b/src/stardis-extern-source.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -77,7 +77,7 @@ exit: return res; error: logger_print(stardis->logger, LOG_ERROR, - "Error when creating the external spherical source for the Solver -- %s\n", + "Error when creating the external spherical source for the solver -- %s\n", res_to_cstr(res)); goto exit; } @@ -114,7 +114,7 @@ create_solver_source_sphere_prog res_T res = RES_OK; ASSERT(src && src->type == EXTERN_SOURCE_SPHERE_PROG && stardis); - /* Register with the solver source a pointer to the external source */ + /* Register a pointer to the external source with the solver source */ res = sdis_data_create(stardis->dev, sizeof(struct spherical_source_prog*), ALIGNOF(struct spherical_source_prog*), NULL, &data); if(res != RES_OK) goto error; @@ -134,7 +134,7 @@ exit: return res; error: logger_print(stardis->logger, LOG_ERROR, - "Error when creating the external spherical source for the Solver -- %s\n", + "Error when creating the external spherical source for the solver -- %s\n", res_to_cstr(res)); goto exit; } diff --git a/src/stardis-extern-source.h b/src/stardis-extern-source.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fbound-prog.c b/src/stardis-fbound-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fbound-prog.h b/src/stardis-fbound-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fbound.c b/src/stardis-fbound.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fbound.h b/src/stardis-fbound.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fluid-prog.c b/src/stardis-fluid-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fluid-prog.h b/src/stardis-fluid-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fluid.c b/src/stardis-fluid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-fluid.h b/src/stardis-fluid.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-hbound-prog.c b/src/stardis-hbound-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-hbound-prog.h b/src/stardis-hbound-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,8 +41,10 @@ struct h_boundary_prog { (const struct stardis_description_create_context*, void*, size_t, char**); void (*release)(void*); double (*ref_temp)(const struct stardis_interface_fragment*, void*); - double (*emissivity)(const struct stardis_interface_fragment*, void*); - double (*alpha)(const struct stardis_interface_fragment*, void*); + double (*emissivity) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); + double (*alpha) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); double (*hc)(const struct stardis_interface_fragment*, void*); double (*hmax)(void*); double* (*t_range)(void*, double trange[2]); diff --git a/src/stardis-hbound.c b/src/stardis-hbound.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-hbound.h b/src/stardis-hbound.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-hfbound-prog.c b/src/stardis-hfbound-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-hfbound-prog.h b/src/stardis-hfbound-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,8 +41,10 @@ struct hf_boundary_prog { (const struct stardis_description_create_context*, void*, size_t, char**); void (*release)(void*); double (*ref_temp)(const struct stardis_interface_fragment*, void*); - double (*emissivity)(const struct stardis_interface_fragment*, void*); - double (*alpha)(const struct stardis_interface_fragment*, void*); + double (*emissivity) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); + double (*alpha) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); double (*hc)(const struct stardis_interface_fragment*, void*); double (*hmax)(void*); double* (*t_range)(void*, double trange[2]); diff --git a/src/stardis-hfbound.c b/src/stardis-hfbound.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-hfbound.h b/src/stardis-hfbound.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-intface.c b/src/stardis-intface.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -80,20 +80,22 @@ interface_get_ref_temperature static double interface_get_emissivity (const struct sdis_interface_fragment* frag, + const unsigned source_id, struct sdis_data* data) { const struct intface* interface_props = sdis_data_cget(data); - (void)frag; + (void)frag, (void)source_id; return interface_props->emissivity; } static double interface_get_alpha (const struct sdis_interface_fragment* frag, + const unsigned source_id, struct sdis_data* data) { const struct intface* interface_props = sdis_data_cget(data); - (void)frag; + (void)frag, (void)source_id; return interface_props->alpha; } @@ -110,9 +112,10 @@ interface_get_tcr static double emissivity_1 (const struct stardis_interface_fragment* frag, + const unsigned src_id, void* data) { - (void)frag, (void)data; + (void)frag, (void)src_id, (void)data; return 1; } @@ -167,33 +170,39 @@ intface_prog_get_hc static double intface_prog_get_emissivity (const struct sdis_interface_fragment* frag, + const unsigned source_id, struct sdis_data* data) { const struct intface* interface_props = sdis_data_cget(data); struct stardis_interface_fragment f; + (void)source_id; d3_set(f.P, frag->P); d3_set(f.Ng, frag->Ng); d3_set(f.uv, frag->uv); f.time = frag->time; ASSERT(frag->side == SDIS_FRONT || frag->side == SDIS_BACK); f.side = (frag->side == SDIS_FRONT) ? FRONT : BACK; - return interface_props->get_emissivity(&f, interface_props->prog_data); + return interface_props->get_emissivity + (&f, source_id, interface_props->prog_data); } static double intface_prog_get_alpha (const struct sdis_interface_fragment* frag, + const unsigned source_id, struct sdis_data* data) { const struct intface* interface_props = sdis_data_cget(data); struct stardis_interface_fragment f; + (void)source_id; d3_set(f.P, frag->P); d3_set(f.Ng, frag->Ng); d3_set(f.uv, frag->uv); f.time = frag->time; ASSERT(frag->side == SDIS_FRONT || frag->side == SDIS_BACK); f.side = (frag->side == SDIS_FRONT) ? FRONT : BACK; - return interface_props->get_alpha(&f, interface_props->prog_data); + return interface_props->get_alpha + (&f, source_id, interface_props->prog_data); } static double diff --git a/src/stardis-intface.h b/src/stardis-intface.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,10 +31,13 @@ struct intface { double (*get_temp)(const struct stardis_interface_fragment*, void*); double (*get_flux)(const struct stardis_interface_fragment*, void*); double (*get_hc)(const struct stardis_interface_fragment*, void*); - double (*get_emissivity)(const struct stardis_interface_fragment*, void*); - double (*get_alpha)(const struct stardis_interface_fragment*, void*); double (*get_ref_temp)(const struct stardis_interface_fragment*, void*); double (*get_tcr)(const struct stardis_interface_fragment*, void*); + double (*get_emissivity) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); + double (*get_alpha) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); + void* prog_data; /* fluid - solid */ double hc; diff --git a/src/stardis-main.c b/src/stardis-main.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-output.c b/src/stardis-output.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -648,82 +648,82 @@ medium_get_t0 } static res_T -dump_sample_end - (struct sdis_green_path* path, - void* ctx) +dump_sample_end(struct sdis_green_path* path, void* ctx) { - res_T res = RES_OK; + /* Stardis */ + struct sdis_green_path_end end = SDIS_GREEN_PATH_END_NULL; + struct sdis_data* data = NULL; + enum sdis_medium_type type; + + /* Stream */ struct e_ctx* e_ctx = ctx; - enum sdis_green_path_end_type end_type; FILE* stream; + + /* Miscellaneous */ + const struct description* descs; + double* pos; double elapsed; size_t sz; unsigned trad_id; + unsigned id; + res_T res = RES_OK; CHK(path && ctx); stream = e_ctx->stream; ERR(sdis_green_path_get_elapsed_time(path, &elapsed)); - ERR(sdis_green_path_get_end_type(path, &end_type)); + ERR(sdis_green_path_get_end(path, &end)); + sz = darray_descriptions_size_get(e_ctx->desc); - if(sz > UINT_MAX) goto abort; + if(sz > UINT_MAX) { res = RES_BAD_ARG; goto error; } trad_id = (unsigned)sz; - if(end_type == SDIS_GREEN_PATH_END_RADIATIVE) { - /* End, End ID, X, Y, Z, Elapsed time */ - fprintf(stream, "TRAD, %u, 0, 0, 0, %g\n", trad_id, elapsed); - } else { - struct sdis_point pt = SDIS_POINT_NULL; - struct sdis_data* data = NULL; - enum sdis_medium_type type; - const struct description* descs; - double* pos; - unsigned id; - - ERR(sdis_green_path_get_limit_point(path, &pt)); - - descs = darray_descriptions_cdata_get(e_ctx->desc); - switch(pt.type) { - case SDIS_FRAGMENT: { - struct intface* d__; - data = sdis_interface_get_data(pt.data.itfrag.intface); - pos = pt.data.itfrag.fragment.P; - d__ = sdis_data_get(data); - id = d__->desc_id; - CHK(DESC_IS_T(descs+id) || DESC_IS_H(descs+id)); - break; - } - case SDIS_VERTEX: - type = sdis_medium_get_type(pt.data.mdmvert.medium); - data = sdis_medium_get_data(pt.data.mdmvert.medium); - pos = pt.data.mdmvert.vertex.P; - if(pt.data.mdmvert.vertex.P[0] == INF) { - /* Radiative output (Trad) */ - id = trad_id; - } - else if(type == SDIS_FLUID) { - struct fluid** pfluid = sdis_data_get(data); - id = (*pfluid)->desc_id; - } else { - struct solid** psolid = sdis_data_get(data); - ASSERT(type == SDIS_SOLID); - ASSERT(!(*psolid)->is_outside); /* FIXME: what if in external solid? */ - id = (*psolid)->desc_id; - } - break; - default: FATAL("Unreachable code.\n"); break; + + descs = darray_descriptions_cdata_get(e_ctx->desc); + switch(end.type) { + case SDIS_GREEN_PATH_END_AT_RADIATIVE_ENV: + /* End, End ID, X, Y, Z, Elapsed time */ + fprintf(stream, "TRAD, %u, 0, 0, 0, %g\n", trad_id, elapsed); + break; + case SDIS_GREEN_PATH_END_AT_INTERFACE: { + struct intface* d__; + data = sdis_interface_get_data(end.data.itfrag.intface); + pos = end.data.itfrag.fragment.P; + d__ = sdis_data_get(data); + id = d__->desc_id; + CHK(DESC_IS_T(descs+id) || DESC_IS_H(descs+id)); + /* End, End ID, X, Y, Z, Elapsed time */ + fprintf(stream, "%s, %u, %g, %g, %g, %g\n", + str_cget(get_description_name(descs + id)), id, SPLIT3(pos), elapsed); + break; } - /* End, End ID, X, Y, Z, Elapsed time */ - fprintf(stream, "%s, %u, %g, %g, %g, %g\n", - str_cget(get_description_name(descs + id)), id, SPLIT3(pos), elapsed); + case SDIS_GREEN_PATH_END_IN_VOLUME: + type = sdis_medium_get_type(end.data.mdmvert.medium); + data = sdis_medium_get_data(end.data.mdmvert.medium); + pos = end.data.mdmvert.vertex.P; + if(end.data.mdmvert.vertex.P[0] == INF) { + /* Radiative output (Trad) */ + id = trad_id; + } + else if(type == SDIS_FLUID) { + struct fluid** pfluid = sdis_data_get(data); + id = (*pfluid)->desc_id; + } else { + struct solid** psolid = sdis_data_get(data); + ASSERT(type == SDIS_SOLID); + ASSERT(!(*psolid)->is_outside); /* FIXME: what if in external solid? */ + id = (*psolid)->desc_id; + } + /* End, End ID, X, Y, Z, Elapsed time */ + fprintf(stream, "%s, %u, %g, %g, %g, %g\n", + str_cget(get_description_name(descs + id)), id, SPLIT3(pos), elapsed); + break; + default: FATAL("Unreachable code.\n"); break; } end: return res; error: goto end; -abort: - res = RES_BAD_ARG; - goto error; } static res_T @@ -731,75 +731,75 @@ dump_sample (struct sdis_green_path* path, void* ctx) { - res_T res = RES_OK; - struct htable_weigth_iterator it, end; - struct green_sample_header header; + /* Stardis variables */ + struct sdis_green_path_end path_end = SDIS_GREEN_PATH_END_NULL; + struct sdis_data* data = NULL; + enum sdis_medium_type type; + + /* Miscellaneous variables */ struct w_ctx* w_ctx = ctx; - enum sdis_green_path_end_type end_type; FILE* stream; + const struct description* descs; + struct htable_weigth_iterator it, end; + struct green_sample_header header; unsigned* ids = NULL; double* weights = NULL; + double t0; size_t sz, i; unsigned trad_id; + res_T res = RES_OK; + CHK(path && ctx); stream = w_ctx->stream; - ERR(sdis_green_path_get_end_type(path, &end_type)); + ERR(sdis_green_path_get_end(path, &path_end)); sz = darray_descriptions_size_get(w_ctx->desc); - if(sz > UINT_MAX) goto abort; + if(sz > UINT_MAX) { res = RES_BAD_ARG; goto error; } trad_id = (unsigned)sz; - if(end_type == SDIS_GREEN_PATH_END_RADIATIVE) { - header.at_initial = 0; - header.sample_end_description_id = trad_id; - } else { - struct sdis_point pt = SDIS_POINT_NULL; - struct sdis_data* data = NULL; - enum sdis_medium_type type; - const struct description* descs; - double t0; - - ERR(sdis_green_path_get_limit_point(path, &pt)); - - /* For each path, dump: - * # end_id #power_terms #flux_terms - * power_id_1 ... power_id_n flux_id_1 ... flux_id_n - * power_factor_1 ... power_factor_n flux_factor_1 ... flux_factor_n - */ - - descs = darray_descriptions_cdata_get(w_ctx->desc); - switch(pt.type) { - case SDIS_FRAGMENT: { - struct intface* d__; - unsigned desc_id; - data = sdis_interface_get_data(pt.data.itfrag.intface); - d__ = sdis_data_get(data); - desc_id = d__->desc_id; - CHK(DESC_IS_T(descs+desc_id) || DESC_IS_H(descs+desc_id)); - header.sample_end_description_id = desc_id; - header.at_initial = 0; - break; - } - case SDIS_VERTEX: - type = sdis_medium_get_type(pt.data.mdmvert.medium); - data = sdis_medium_get_data(pt.data.mdmvert.medium); - t0 = medium_get_t0(pt.data.mdmvert.medium); - header.at_initial = (pt.data.mdmvert.vertex.time <= t0); - if(pt.data.mdmvert.vertex.P[0] == INF) { - /* Radiative output (Trad) */ - header.sample_end_description_id = trad_id; - } - else if(type == SDIS_FLUID) { - struct fluid** pfluid = sdis_data_get(data); - header.sample_end_description_id = (*pfluid)->desc_id; - } else { - struct solid** psolid = sdis_data_get(data); - ASSERT(type == SDIS_SOLID); - ASSERT(!(*psolid)->is_outside); /* FIXME: what if in external solid? */ - header.sample_end_description_id = (*psolid)->desc_id; - } - break; - default: FATAL("Unreachable code.\n"); break; + + /* For each path, dump: + * # end_id #power_terms #flux_terms + * power_id_1 ... power_id_n flux_id_1 ... flux_id_n + * power_factor_1 ... power_factor_n flux_factor_1 ... flux_factor_n + */ + + descs = darray_descriptions_cdata_get(w_ctx->desc); + switch(path_end.type) { + case SDIS_GREEN_PATH_END_AT_RADIATIVE_ENV: + header.at_initial = 0; + header.sample_end_description_id = trad_id; + break; + case SDIS_GREEN_PATH_END_AT_INTERFACE: { + struct intface* d__; + unsigned desc_id; + data = sdis_interface_get_data(path_end.data.itfrag.intface); + d__ = sdis_data_get(data); + desc_id = d__->desc_id; + CHK(DESC_IS_T(descs+desc_id) || DESC_IS_H(descs+desc_id)); + header.sample_end_description_id = desc_id; + header.at_initial = 0; + break; } + case SDIS_GREEN_PATH_END_IN_VOLUME: + type = sdis_medium_get_type(path_end.data.mdmvert.medium); + data = sdis_medium_get_data(path_end.data.mdmvert.medium); + t0 = medium_get_t0(path_end.data.mdmvert.medium); + header.at_initial = (path_end.data.mdmvert.vertex.time <= t0); + if(path_end.data.mdmvert.vertex.P[0] == INF) { + /* Radiative output (Trad) */ + header.sample_end_description_id = trad_id; + } + else if(type == SDIS_FLUID) { + struct fluid** pfluid = sdis_data_get(data); + header.sample_end_description_id = (*pfluid)->desc_id; + } else { + struct solid** psolid = sdis_data_get(data); + ASSERT(type == SDIS_SOLID); + ASSERT(!(*psolid)->is_outside); /* FIXME: what if in external solid? */ + header.sample_end_description_id = (*psolid)->desc_id; + } + break; + default: FATAL("Unreachable code.\n"); break; } /* Merge power and flux terms */ @@ -808,10 +808,10 @@ dump_sample ERR(sdis_green_path_for_each_power_term(path, merge_power_terms, w_ctx)); ERR(sdis_green_path_for_each_flux_term(path, merge_flux_terms, w_ctx)); sz = htable_weigth_size_get(&w_ctx->pw); - if(sz > UINT_MAX) goto abort; + if(sz > UINT_MAX) { res = RES_BAD_ARG; goto error; } header.pw_count = (unsigned)sz; sz = htable_weigth_size_get(&w_ctx->flux); - if(sz > UINT_MAX) goto abort; + if(sz > UINT_MAX) { res = RES_BAD_ARG; goto error; } header.fx_count = (unsigned)sz; /* Write path's header */ @@ -863,9 +863,6 @@ end: return res; error: goto end; -abort: - res = RES_BAD_ARG; - goto error; } res_T @@ -874,15 +871,21 @@ dump_green_bin const struct stardis* stardis, FILE* stream) { - res_T res = RES_OK; - size_t sz, i; - struct w_ctx w_ctx; - int table_initialized = 0; /* The following type must be identical to its stardis-green counterpart! */ struct green_file_header header; + const struct radiative_env_const* radenv_const = NULL; + struct w_ctx w_ctx; + size_t sz, i; + int table_initialized = 0; + res_T res = RES_OK; ASSERT(green && stardis && stream); + /* Stardis can produce the green function on systems + * with constant properties only */ + ASSERT(stardis->radenv.type == RADIATIVE_ENV_CONST); + radenv_const = &stardis->radenv.data.cst; + /* Init header */ strcpy(header.green_string, BIN_FILE_IDENT_STRING); header.file_format_version = GREEN_FILE_FORMAT_VERSION; @@ -903,8 +906,9 @@ dump_green_bin + stardis->counts.fbound_count + stardis->counts.sfconnect_count + stardis->counts.ssconnect_count)); header.description_count = (unsigned)sz; - header.ambient_radiative_temperature = stardis->trad; - header.ambient_radiative_temperature_reference = stardis->trad_ref; + header.ambient_radiative_temperature = radenv_const->temperature; + header.ambient_radiative_temperature_reference = + radenv_const->reference_temperature; d2_set(header.time_range, stardis->time_range); /* Write header */ @@ -967,7 +971,7 @@ print_sample void* ctx) { res_T res = RES_OK; - struct sdis_point pt = SDIS_POINT_NULL; + struct sdis_green_path_end path_end = SDIS_GREEN_PATH_END_NULL; struct sdis_data* data = NULL; enum sdis_medium_type type; struct htable_weigth_iterator it, end; @@ -977,7 +981,7 @@ print_sample const struct description* descs; CHK(path && ctx); - ERR(sdis_green_path_get_limit_point(path, &pt)); + ERR(sdis_green_path_get_end(path, &path_end)); /* For each path, prints: * # end #power_terms #flux_terms power_term_1 ... power_term_n flux_term_1 ... flux_term_n @@ -988,10 +992,10 @@ print_sample */ descs = darray_descriptions_cdata_get(w_ctx->desc); - switch (pt.type) { - case SDIS_FRAGMENT: { + switch (path_end.type) { + case SDIS_GREEN_PATH_END_AT_INTERFACE: { struct intface* d__; - data = sdis_interface_get_data(pt.data.itfrag.intface); + data = sdis_interface_get_data(path_end.data.itfrag.intface); d__ = sdis_data_get(data); desc_id = d__->desc_id; switch (descs[desc_id].type) { @@ -1009,10 +1013,10 @@ print_sample } break; } - case SDIS_VERTEX: - type = sdis_medium_get_type(pt.data.mdmvert.medium); - data = sdis_medium_get_data(pt.data.mdmvert.medium); - if(pt.data.mdmvert.vertex.P[0] == INF) { + case SDIS_GREEN_PATH_END_IN_VOLUME: + type = sdis_medium_get_type(path_end.data.mdmvert.medium); + data = sdis_medium_get_data(path_end.data.mdmvert.medium); + if(path_end.data.mdmvert.vertex.P[0] == INF) { /* Radiative output (Trad)*/ size_t sz = darray_descriptions_size_get(w_ctx->desc); if(sz > UINT_MAX) goto abort; @@ -1085,6 +1089,7 @@ dump_green_ascii FILE* stream) { res_T res = RES_OK; + const struct radiative_env_const* radenv_const = NULL; unsigned ok_count, failed_count; size_t sz; struct w_ctx w_ctx; @@ -1094,6 +1099,11 @@ dump_green_ascii ASSERT(green && stardis && stream); + /* Stardis can produce the green function on systems + * with constant properties only */ + ASSERT(stardis->radenv.type == RADIATIVE_ENV_CONST); + radenv_const = &stardis->radenv.data.cst; + ERR(sdis_green_function_get_paths_count(green, &sz)); if(sz > UINT_MAX) goto abort; ok_count = (unsigned)sz; @@ -1211,7 +1221,7 @@ dump_green_ascii fprintf(stream, "# Radiative Temperatures\n"); fprintf(stream, "# ID Trad Trad_Ref\n"); fprintf(stream, "%u\t%g\t%g\n", - szd, stardis->trad, stardis->trad_ref); + szd, radenv_const->temperature, radenv_const->reference_temperature); fprintf(stream, "# Samples\n"); fprintf(stream, diff --git a/src/stardis-output.h b/src/stardis-output.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-parsing.c b/src/stardis-parsing.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -2011,45 +2011,124 @@ process_radiative (struct stardis* stardis, wordexp_t* pwordexp) { + double trad = 0; + double tref = 0; char* arg = NULL; size_t idx = 1; res_T res = RES_OK; ASSERT(stardis && pwordexp); - if(stardis->trad_def) { + if(stardis->radenv_def) { logger_print(stardis->logger, LOG_ERROR, - "TRAD cannot be specified twice\n"); + "Radiative environment cannot be specified twice\n"); res = RES_BAD_ARG; - goto end; + goto error; } + + res = radiative_env_init_const(stardis->allocator, &stardis->radenv); + if(res != RES_OK) goto error; + CHK_ARG(idx, "Trad"); - res = cstr_to_double(arg, &stardis->trad); - if(res != RES_OK || SDIS_TEMPERATURE_IS_UNKNOWN(stardis->trad)) { + res = cstr_to_double(arg, &trad); + if(res != RES_OK || SDIS_TEMPERATURE_IS_UNKNOWN(trad)) { logger_print(stardis->logger, LOG_ERROR, "Invalid Trad: %s\n", arg); if(res == RES_OK) res = RES_BAD_ARG; goto end; } CHK_ARG(idx, "Trad reference"); - res = cstr_to_double(arg, &stardis->trad_ref); - if(res != RES_OK - || stardis->trad_ref < 0) - { + res = cstr_to_double(arg, &tref); + if(res != RES_OK || tref < 0) { logger_print(stardis->logger, LOG_ERROR, "Invalid Trad reference: %s\n", arg); if(res == RES_OK) res = RES_BAD_ARG; goto end; } - stardis->trad_def = 1; + + stardis->radenv.data.cst.temperature = trad; + stardis->radenv.data.cst.reference_temperature = tref; + stardis->radenv_def = 1; end: return res; error: + radiative_env_release(&stardis->radenv); + stardis->radenv = RADIATIVE_ENV_DEFAULT; goto end; } static res_T +process_radiative_prog(struct stardis* stardis, wordexp_t* pwordexp) +{ + struct stardis_description_create_context ctx; + struct radiative_env_prog* radenv = NULL; + double radenv_t_range[2] = {DBL_MAX, -DBL_MAX}; + char* lib_name = NULL; + char* arg = NULL; + size_t idx = 1; + res_T res = RES_OK; + + ASSERT(stardis && pwordexp); + + radenv = &stardis->radenv.data.prg; + + if(stardis->radenv_def) { + logger_print(stardis->logger, LOG_ERROR, + "Radiative environment cannot be specified twice\n"); + res = RES_BAD_ARG; + goto error; + } + + res = radiative_env_init_prog(stardis->allocator, &stardis->radenv); + + CHK_ARG(idx, "program name"); + ERR(str_set(&radenv->prog_name, arg)); + lib_name = arg; + + if(idx < pwordexp->we_wordc + && strcasecmp(pwordexp->we_wordv[idx], "PROG_PARAMS")) { + logger_print(stardis->logger, LOG_ERROR, + "Expecting PROG_PARAMS keyword while parsing `%s'.\n", + pwordexp->we_wordv[idx]); + res = RES_BAD_ARG; + goto error; + } + + ERR(set_argc_argv + (stardis->allocator, &radenv->argc, &radenv->argv, pwordexp, idx)); + ERR(get_prog_common + (lib_name, stardis, &radenv->program, &radenv->create, &radenv->release)); + GET_LIB_SYMBOL(radenv, temperature, + stardis_radiative_env_temperature); + GET_LIB_SYMBOL(radenv, reference_temperature, + stardis_radiative_env_reference_temperature); + GET_LIB_SYMBOL(radenv, t_range, + stardis_t_range); + + ctx.name = "Radiative environment"; + radenv->data = radenv->create + (&ctx, radenv->program->prog_data, radenv->argc, radenv->argv); + if(!radenv->data) { + logger_print(stardis->logger, LOG_ERROR, + "Cannot create data for the radiative environment\n"); + res = RES_UNKNOWN_ERR; + goto error; + } + + radenv->t_range(radenv->data, radenv_t_range); + stardis->t_range[0] = MMIN(stardis->t_range[0], radenv_t_range[0]); + stardis->t_range[1] = MMAX(stardis->t_range[1], radenv_t_range[1]); + +exit: + return res; +error: + radiative_env_release(&stardis->radenv); + stardis->radenv = RADIATIVE_ENV_DEFAULT; + goto exit; +} + +static res_T process_spherical_source (struct stardis* stardis, wordexp_t* pwordexp) @@ -2170,7 +2249,7 @@ process_spherical_source_prog(struct stardis* stardis, wordexp_t* pwordexp) if(!src->data) { logger_print(stardis->logger, LOG_ERROR, "Cannot create data for the external spherical source\n"); - res = RES_BAD_ARG; + res = RES_UNKNOWN_ERR; goto error; } @@ -2266,6 +2345,8 @@ process_model_line ERR(process_scale(stardis, pwordexp)); else if(0 == strcasecmp(arg, "TRAD")) ERR(process_radiative(stardis, pwordexp)); + else if(0 == strcasecmp(arg, "TRAD_PROG")) + ERR(process_radiative_prog(stardis, pwordexp)); else if(0 == strcasecmp(arg, "SPHERICAL_SOURCE")) ERR(process_spherical_source(stardis, pwordexp)); else if(0 == strcasecmp(arg, "SPHERICAL_SOURCE_PROG")) @@ -2435,10 +2516,14 @@ exp_error: stardis->scale_factor = STARDIS_DEFAULT_SCALE_FACTOR; logger_print(stardis->logger, LOG_OUTPUT, "Scaling factor is %g\n", stardis->scale_factor); - logger_print(stardis->logger, LOG_OUTPUT, - "Trad is %g, Trad reference is %g\n", stardis->trad, stardis->trad_ref); - stardis->t_range[0] = MMIN(stardis->t_range[0], stardis->trad_ref); - stardis->t_range[1] = MMAX(stardis->t_range[1], stardis->trad_ref); + if(stardis->radenv.type == RADIATIVE_ENV_CONST) { + const double trad = stardis->radenv.data.cst.temperature; + const double trad_ref = stardis->radenv.data.cst.reference_temperature; + logger_print(stardis->logger, LOG_OUTPUT, + "Trad is %g, Trad reference is %g\n", trad, trad_ref); + stardis->t_range[0] = MMIN(stardis->t_range[0], trad_ref); + stardis->t_range[1] = MMAX(stardis->t_range[1], trad_ref); + } logger_print(stardis->logger, LOG_OUTPUT, "System T range is [%g %g]\n", SPLIT2(stardis->t_range)); logger_print(stardis->logger, LOG_OUTPUT, diff --git a/src/stardis-parsing.h b/src/stardis-parsing.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-prog-properties.h.in b/src/stardis-prog-properties.h.in @@ -303,6 +303,7 @@ stardis_boundary_temperature STARDIS_API double stardis_emissivity (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the specular fraction at a given fragment. @@ -312,6 +313,7 @@ stardis_emissivity STARDIS_API double stardis_specular_fraction (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the convection coefficient at a given fragment. @@ -361,6 +363,7 @@ stardis_t_range STARDIS_API double stardis_emissivity (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the specular fraction at a given fragment. @@ -370,6 +373,7 @@ stardis_emissivity STARDIS_API double stardis_specular_fraction (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the convection coefficient at a given fragment. @@ -452,6 +456,7 @@ stardis_t_range STARDIS_API double stardis_emissivity (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the specular fraction at a given fragment. @@ -461,6 +466,7 @@ stardis_emissivity STARDIS_API double stardis_specular_fraction (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the convection coefficient at a given fragment. @@ -556,6 +562,7 @@ stardis_thermal_contact_resistance STARDIS_API double stardis_emissivity (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the specular fraction at a given fragment. @@ -565,6 +572,7 @@ stardis_emissivity STARDIS_API double stardis_specular_fraction (const struct stardis_interface_fragment* frag, + const unsigned source_id, void* data); /* Returns the convection coefficient at a given fragment. @@ -583,6 +591,17 @@ STARDIS_API double stardis_max_convection_coefficient (void* data); +/* Returns the reference temperature at a given fragment. + * This temperature is used as a reference to linearize radiative transfer + * in Picard computations. + * This functions is called every time a path of the computation reaches + * this boundary. + * data is the pointer returned by stardis_create_data for this boundary. */ +STARDIS_API double +stardis_reference_temperature + (const struct stardis_interface_fragment* frag, + void* data); + /* Computes the expected temperature range for this connection. * This functions is called once when initializing the computation. * data is the pointer returned by stardis_create_data for this connection. @@ -612,6 +631,34 @@ stardis_spherical_source_power (const double time, void* data); +/******************************************************************************/ +/* Additional mandatory functions for a programmed radiative environment */ +/******************************************************************************/ + +/* Retrieve the temperature of radiative paths that reach infinity */ +STARDIS_API double +stardis_radiative_env_temperature + (const double dir[3], + void* data); + +/* Recover the reference temperature of radiative paths that reach + * infinity. It is used to linearize radiative transfer */ +STARDIS_API double +stardis_radiative_env_reference_temperature + (const double dir[3], + void* data); + +/* Computes the expected temperature range for this radiative + * environment. + * This functions is called once when initializing the computation. + * data is the pointer returned by stardis_create_data for this + * radiative environment. + * Returns its modified range argument. */ +STARDIS_API double* +stardis_t_range + (void* data, + double range[2]); + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/src/stardis-program.c b/src/stardis-program.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-program.h b/src/stardis-program.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-radiative-env.c b/src/stardis-radiative-env.c @@ -0,0 +1,214 @@ +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "stardis-app.h" +#include "stardis-radiative-env.h" + +#include <sdis.h> +#include <rsys/cstr.h> +#include <rsys/logger.h> + +/******************************************************************************* + * Helper functions + ******************************************************************************/ +static double +radenv_get_temperature + (const struct sdis_radiative_ray* ray, + struct sdis_data* data) +{ + const struct radiative_env_const* props = sdis_data_cget(data); + (void)ray; + return props->temperature; +} + +static double +radenv_get_reference_temperature + (const struct sdis_radiative_ray* ray, + struct sdis_data* data) +{ + const struct radiative_env_const* props = sdis_data_cget(data); + (void)ray; + return props->reference_temperature; +} + +static res_T +create_radenv_const + (struct radiative_env* radenv, + struct stardis* stardis) +{ + struct sdis_radiative_env_shader shader = SDIS_RADIATIVE_ENV_SHADER_NULL; + struct sdis_data* data = NULL; + struct radiative_env_const* props = NULL; + res_T res = RES_OK; + ASSERT(radenv && radenv->type == RADIATIVE_ENV_CONST && stardis); + + res = sdis_data_create(stardis->dev, sizeof(struct radiative_env_const), + ALIGNOF(struct radiative_env_const), NULL, &data); + if(res != RES_OK) goto error; + props = sdis_data_get(data); + *props = radenv->data.cst; + + shader.temperature = radenv_get_temperature; + shader.reference_temperature = radenv_get_reference_temperature; + res = sdis_radiative_env_create + (stardis->dev, &shader, data, &radenv->sdis_radenv); + if(res != RES_OK) goto error; + +exit: + /* Release the local reference on the data: it is kept by the sdis radenv */ + if(data) SDIS(data_ref_put(data)); + return res; +error: + logger_print(stardis->logger, LOG_ERROR, + "Error when creating the radiative environment for the solver -- %s\n", + res_to_cstr(res)); + goto exit; +} + +static double +radenv_prog_get_temperature + (const struct sdis_radiative_ray* ray, + struct sdis_data* data) +{ + const struct radiative_env_prog* radenv = NULL; + + radenv = *((const struct radiative_env_prog* const*)sdis_data_cget(data)); + return radenv->temperature(ray->dir, radenv->data); +} + +static double +radenv_prog_get_reference_temperature + (const struct sdis_radiative_ray* ray, + struct sdis_data* data) +{ + const struct radiative_env_prog* radenv = NULL; + + radenv = *((const struct radiative_env_prog* const*)sdis_data_cget(data)); + return radenv->reference_temperature(ray->dir, radenv->data); +} + +static res_T +create_radenv_prog + (struct radiative_env* radenv, + struct stardis* stardis) +{ + struct sdis_radiative_env_shader shader = SDIS_RADIATIVE_ENV_SHADER_NULL; + struct sdis_data* data = NULL; + res_T res = RES_OK; + ASSERT(radenv && radenv->type == RADIATIVE_ENV_PROG && stardis); + + /* Register a pointer to the radiative environment with the solver radiative + * environment */ + res = sdis_data_create(stardis->dev, sizeof(struct radiative_env_prog*), + ALIGNOF(struct radiative_env_prog*), NULL, &data); + if(res != RES_OK) goto error; + *((struct radiative_env_prog**)sdis_data_get(data)) = &radenv->data.prg; + + /* Create the radiative environment */ + shader.temperature = radenv_prog_get_temperature; + shader.reference_temperature = radenv_prog_get_reference_temperature; + res = sdis_radiative_env_create + (stardis->dev, &shader, data, &radenv->sdis_radenv); + if(res != RES_OK) goto error; + +exit: + /* Release the local reference on the data: it is kept by the sdis radenv */ + if(data) SDIS(data_ref_put(data)); + return res; +error: + logger_print(stardis->logger, LOG_ERROR, + "Error when creating the radiative environment for the solver -- %s\n", + res_to_cstr(res)); + goto exit; +} + +/******************************************************************************* + * Local function + ******************************************************************************/ +res_T +radiative_env_init_const + (struct mem_allocator* allocator, + struct radiative_env* radenv) +{ + ASSERT(radenv); + (void)allocator; + radenv->type = RADIATIVE_ENV_CONST; + radenv->data.cst = RADIATIVE_ENV_CONST_DEFAULT; + return RES_OK; +} + +res_T +radiative_env_init_prog + (struct mem_allocator* allocator, + struct radiative_env* radenv) +{ + ASSERT(radenv); + radenv->type = RADIATIVE_ENV_PROG; + radenv->data.prg = RADIATIVE_ENV_PROG_NULL; + radenv->data.prg.allocator = allocator; + str_init(allocator, &radenv->data.prg.prog_name); + return RES_OK; +} + +void +radiative_env_release(struct radiative_env* radenv) +{ + ASSERT(radenv); + + if(radenv->type == RADIATIVE_ENV_PROG) { + struct radiative_env_prog* radenv_prog = &radenv->data.prg; + size_t i = 0; + + if(radenv_prog->data) { + ASSERT(radenv_prog->release); + radenv_prog->release(radenv_prog->data); + } + + str_release(&radenv_prog->prog_name); + FOR_EACH(i, 0, radenv_prog->argc) { + MEM_RM(radenv_prog->allocator, radenv_prog->argv[i]); + } + MEM_RM(radenv_prog->allocator, radenv_prog->argv); + } + + if(radenv->sdis_radenv) SDIS(radiative_env_ref_put(radenv->sdis_radenv)); + radenv->sdis_radenv = NULL; +} + +res_T +radiative_env_create_solver_radiative_env + (struct radiative_env* radenv, + struct stardis* stardis) +{ + res_T res = RES_OK; + ASSERT(radenv && stardis); + + switch(radenv->type) { + case RADIATIVE_ENV_CONST: + res = create_radenv_const(radenv, stardis); + if(res != RES_OK) goto error; + break; + case RADIATIVE_ENV_PROG: + res = create_radenv_prog(radenv, stardis); + if(res != RES_OK) goto error; + break; + default: FATAL("Unreachable code\n"); break; + } + +exit: + return res; +error: + goto exit; +} diff --git a/src/stardis-radiative-env.h b/src/stardis-radiative-env.h @@ -0,0 +1,116 @@ +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef STARDIS_RADIATIVE_ENV_H +#define STARDIS_RADIATIVE_ENV_H + +#include "stardis-default.h" +#include <rsys/rsys.h> + +/* Forward declaration */ +struct stardis; + +enum radiative_env_type { + RADIATIVE_ENV_CONST, + RADIATIVE_ENV_PROG +}; + +struct radiative_env_const { + double temperature; + double reference_temperature; +}; +#define RADIATIVE_ENV_CONST_DEFAULT__ { \ + STARDIS_DEFAULT_TRAD, \ + STARDIS_DEFAULT_TRAD_REFERENCE \ +} +static const struct radiative_env_const RADIATIVE_ENV_CONST_DEFAULT = + RADIATIVE_ENV_CONST_DEFAULT__; + +struct radiative_env_prog { + struct str prog_name; + struct program* program; + void* data; /* Pointer toward the program data */ + struct mem_allocator* allocator; + + /* Input arguments */ + size_t argc; + char** argv; + + void* + (*create) + (const struct stardis_description_create_context* ctx, + void* lib_data, + size_t argc, + char* argv[]); + + void + (*release) + (void* data); + + double + (*temperature) + (const double dir[3], + void* data); + + double + (*reference_temperature) + (const double dir[3], + void* data); + + double* + (*t_range) + (void* data, + double t_range[2]); +}; +#define RADIATIVE_ENV_PROG_NULL__ \ + {{0}, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL} +static const struct radiative_env_prog RADIATIVE_ENV_PROG_NULL = + RADIATIVE_ENV_PROG_NULL__; + +struct radiative_env { + enum radiative_env_type type; + union { + struct radiative_env_const cst; + struct radiative_env_prog prg; + } data; + struct sdis_radiative_env* sdis_radenv; +}; +#define RADIATIVE_ENV_DEFAULT__ { \ + RADIATIVE_ENV_CONST, \ + {RADIATIVE_ENV_CONST_DEFAULT__}, \ + NULL \ +} +static const struct radiative_env RADIATIVE_ENV_DEFAULT = RADIATIVE_ENV_DEFAULT__; + +extern LOCAL_SYM res_T +radiative_env_init_const + (struct mem_allocator* allocator, + struct radiative_env* radenv); + +extern LOCAL_SYM res_T +radiative_env_init_prog + (struct mem_allocator* allocator, + struct radiative_env* radenv); + +extern LOCAL_SYM void +radiative_env_release + (struct radiative_env* radenv); + +extern LOCAL_SYM res_T +radiative_env_create_solver_radiative_env + (struct radiative_env* radenv, + struct stardis* stardis); + +#endif /* STARDIS_RADIATIVE_ENV_H */ diff --git a/src/stardis-sfconnect-prog.c b/src/stardis-sfconnect-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-sfconnect-prog.h b/src/stardis-sfconnect-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,8 +43,10 @@ struct solid_fluid_connect_prog { (const struct stardis_description_create_context*, void*, size_t, char**); void (*release)(void*); double (*ref_temp)(const struct stardis_interface_fragment*, void*); - double (*emissivity)(const struct stardis_interface_fragment*, void*); - double (*alpha)(const struct stardis_interface_fragment*, void*); + double (*emissivity) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); + double (*alpha) + (const struct stardis_interface_fragment*, const unsigned src_id, void*); double (*hc)(const struct stardis_interface_fragment*, void*); double (*hmax)(void*); double* (*t_range)(void*, double trange[2]); diff --git a/src/stardis-sfconnect.c b/src/stardis-sfconnect.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-sfconnect.h b/src/stardis-sfconnect.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-solid-prog.c b/src/stardis-solid-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-solid-prog.h b/src/stardis-solid-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-solid.c b/src/stardis-solid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-solid.h b/src/stardis-solid.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-ssconnect-prog.c b/src/stardis-ssconnect-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-ssconnect-prog.h b/src/stardis-ssconnect-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-ssconnect.c b/src/stardis-ssconnect.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-ssconnect.h b/src/stardis-ssconnect.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-tbound-prog.c b/src/stardis-tbound-prog.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-tbound-prog.h b/src/stardis-tbound-prog.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-tbound.c b/src/stardis-tbound.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/stardis-tbound.h b/src/stardis-tbound.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +/* Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/stardis-green-types/stardis-green-types-config-version.cmake.in b/stardis-green-types/stardis-green-types-config-version.cmake.in @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +# Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/stardis-prog-properties/stardis-prog-properties-config-version.cmake.in b/stardis-prog-properties/stardis-prog-properties-config-version.cmake.in @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2023 |Méso|Star> (contact@meso-star.com) +# Copyright (C) 2018-2024 |Méso|Star> (contact@meso-star.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by