stardis-solver

Solve coupled heat transfers
git clone git://git.meso-star.fr/stardis-solver.git
Log | Files | Refs | README | LICENSE

test_sdis_medium.c (6007B)


      1 /* Copyright (C) 2016-2025 |Méso|Star> (contact@meso-star.com)
      2  *
      3  * This program is free software: you can redistribute it and/or modify
      4  * it under the terms of the GNU General Public License as published by
      5  * the Free Software Foundation, either version 3 of the License, or
      6  * (at your option) any later version.
      7  *
      8  * This program is distributed in the hope that it will be useful,
      9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     11  * GNU General Public License for more details.
     12  *
     13  * You should have received a copy of the GNU General Public License
     14  * along with this program. If not, see <http://www.gnu.org/licenses/>. */
     15 
     16 #include "sdis.h"
     17 #include "test_sdis_utils.h"
     18 
     19 #include <rsys/math.h>
     20 
     21 int
     22 main(int argc, char** argv)
     23 {
     24   struct sdis_data* data = NULL;
     25   struct sdis_device* dev = NULL;
     26   struct sdis_medium* fluid = NULL;
     27   struct sdis_medium* solid = NULL;
     28   struct sdis_fluid_shader fluid_shader = DUMMY_FLUID_SHADER;
     29   struct sdis_solid_shader solid_shader = DUMMY_SOLID_SHADER;
     30   struct sdis_fluid_shader fluid_shader2 = SDIS_FLUID_SHADER_NULL;
     31   struct sdis_solid_shader solid_shader2 = SDIS_SOLID_SHADER_NULL;
     32   (void)argc, (void)argv;
     33 
     34   OK(sdis_device_create(&SDIS_DEVICE_CREATE_ARGS_DEFAULT, &dev));
     35 
     36   BA(sdis_fluid_create(NULL, NULL, NULL, NULL));
     37   BA(sdis_fluid_create(dev, NULL, NULL, NULL));
     38   BA(sdis_fluid_create(NULL, &fluid_shader, NULL, NULL));
     39   BA(sdis_fluid_create(dev, &fluid_shader, NULL, NULL));
     40   BA(sdis_fluid_create(NULL, NULL, NULL, &fluid));
     41   BA(sdis_fluid_create(dev, NULL, NULL, &fluid));
     42   BA(sdis_fluid_create(NULL, &fluid_shader, NULL, &fluid));
     43   OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     44 
     45   CHK(sdis_medium_get_type(fluid) == SDIS_FLUID);
     46   CHK(sdis_medium_get_data(fluid) == NULL);
     47 
     48   BA(sdis_medium_ref_get(NULL));
     49   OK(sdis_medium_ref_get(fluid));
     50   BA(sdis_medium_ref_put(NULL));
     51   OK(sdis_medium_ref_put(fluid));
     52   OK(sdis_medium_ref_put(fluid));
     53 
     54   fluid_shader.calorific_capacity = NULL;
     55   BA(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     56   fluid_shader.calorific_capacity = DUMMY_FLUID_SHADER.calorific_capacity;
     57 
     58   fluid_shader.volumic_mass = NULL;
     59   BA(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     60   fluid_shader.volumic_mass = DUMMY_FLUID_SHADER.volumic_mass;
     61 
     62   fluid_shader.temperature = NULL;
     63   BA(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     64   fluid_shader.temperature = DUMMY_FLUID_SHADER.temperature;
     65 
     66   fluid_shader.t0 = -INF;
     67   OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     68   OK(sdis_medium_ref_put(fluid));
     69   fluid_shader.t0 = INF;
     70   OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     71   OK(sdis_medium_ref_put(fluid));
     72   fluid_shader.t0 = DUMMY_FLUID_SHADER.t0;
     73 
     74   BA(sdis_fluid_create(dev, &SDIS_FLUID_SHADER_NULL, NULL, &fluid));
     75 
     76   OK(sdis_data_create(dev, 4, 16, NULL, &data));
     77   BA(sdis_solid_create(NULL, NULL, data, NULL));
     78   BA(sdis_solid_create(dev, NULL, data, NULL));
     79   BA(sdis_solid_create(NULL, &solid_shader, data, NULL));
     80   BA(sdis_solid_create(dev, &solid_shader, data, NULL));
     81   BA(sdis_solid_create(NULL, NULL, data, &solid));
     82   BA(sdis_solid_create(dev, NULL, data, &solid));
     83   BA(sdis_solid_create(NULL, &solid_shader, data, &solid));
     84   OK(sdis_solid_create(dev, &solid_shader, data, &solid));
     85   CHK(sdis_medium_get_type(solid) == SDIS_SOLID);
     86   CHK(sdis_medium_get_data(solid) == data);
     87 
     88   OK(sdis_medium_ref_put(solid));
     89   OK(sdis_data_ref_put(data));
     90 
     91   solid_shader.calorific_capacity = NULL;
     92   BA(sdis_solid_create(dev, &solid_shader, NULL, &solid));
     93   solid_shader.calorific_capacity = DUMMY_SOLID_SHADER.calorific_capacity;
     94 
     95   solid_shader.thermal_conductivity = NULL;
     96   BA(sdis_solid_create(dev, &solid_shader, NULL, &solid));
     97   solid_shader.thermal_conductivity = DUMMY_SOLID_SHADER.thermal_conductivity;
     98 
     99   solid_shader.volumic_mass = NULL;
    100   BA(sdis_solid_create(dev, &solid_shader, NULL, &solid));
    101   solid_shader.volumic_mass = DUMMY_SOLID_SHADER.volumic_mass;
    102 
    103   solid_shader.delta = NULL;
    104   BA(sdis_solid_create(dev, &solid_shader, NULL, &solid));
    105   solid_shader.delta = DUMMY_SOLID_SHADER.delta;
    106 
    107   solid_shader.temperature = NULL;
    108   BA(sdis_solid_create(dev, &solid_shader, NULL, &solid));
    109   solid_shader.temperature = DUMMY_SOLID_SHADER.temperature;
    110 
    111   solid_shader.t0 = -INF;
    112   OK(sdis_solid_create(dev, &solid_shader, NULL, &solid));
    113   OK(sdis_medium_ref_put(solid));
    114   solid_shader.t0 = INF;
    115   OK(sdis_solid_create(dev, &solid_shader, NULL, &solid));
    116   OK(sdis_medium_ref_put(solid));
    117   solid_shader.t0 = DUMMY_SOLID_SHADER.t0;
    118 
    119   OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
    120   OK(sdis_solid_create(dev, &solid_shader, NULL, &solid));
    121 
    122   CHK(sdis_medium_get_id(fluid) != sdis_medium_get_id(solid));
    123 
    124   BA(sdis_fluid_get_shader(NULL, &fluid_shader2));
    125   BA(sdis_fluid_get_shader(fluid, NULL));
    126   BA(sdis_fluid_get_shader(solid, &fluid_shader2));
    127   OK(sdis_fluid_get_shader(fluid, &fluid_shader2));
    128 
    129   CHK(fluid_shader.calorific_capacity == fluid_shader2.calorific_capacity);
    130   CHK(fluid_shader.volumic_mass == fluid_shader2.volumic_mass);
    131   CHK(fluid_shader.temperature == fluid_shader2.temperature);
    132   CHK(fluid_shader.t0 == fluid_shader2.t0);
    133 
    134   BA(sdis_solid_get_shader(NULL, &solid_shader2));
    135   BA(sdis_solid_get_shader(solid, NULL));
    136   BA(sdis_solid_get_shader(fluid, &solid_shader2));
    137   OK(sdis_solid_get_shader(solid, &solid_shader2));
    138 
    139   CHK(solid_shader.calorific_capacity == solid_shader2.calorific_capacity);
    140   CHK(solid_shader.thermal_conductivity == solid_shader2.thermal_conductivity);
    141   CHK(solid_shader.volumic_mass == solid_shader2.volumic_mass);
    142   CHK(solid_shader.delta == solid_shader2.delta);
    143   CHK(solid_shader.volumic_power == solid_shader2.volumic_power);
    144   CHK(solid_shader.temperature == solid_shader2.temperature);
    145   CHK(solid_shader.t0 == solid_shader2.t0);
    146 
    147   OK(sdis_medium_ref_put(solid));
    148   OK(sdis_medium_ref_put(fluid));
    149   OK(sdis_device_ref_put(dev));
    150 
    151   CHK(mem_allocated_size() == 0);
    152 
    153   return 0;
    154 }