stardis-solver

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

test_sdis_interface.c (6269B)


      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 int
     20 main(int argc, char** argv)
     21 {
     22   struct sdis_data* data = NULL;
     23   struct sdis_device* dev = NULL;
     24   struct sdis_medium* fluid = NULL;
     25   struct sdis_medium* solid = NULL;
     26   struct sdis_interface* interf = NULL;
     27   struct sdis_interface* interf2 = NULL;
     28   struct sdis_fluid_shader fluid_shader = DUMMY_FLUID_SHADER;
     29   struct sdis_solid_shader solid_shader = DUMMY_SOLID_SHADER;
     30   struct sdis_interface_shader shader = DUMMY_INTERFACE_SHADER;
     31   struct sdis_interface_shader shader2 = SDIS_INTERFACE_SHADER_NULL;
     32   (void)argc, (void)argv;
     33 
     34   OK(sdis_device_create(&SDIS_DEVICE_CREATE_ARGS_DEFAULT, &dev));
     35 
     36   OK(sdis_fluid_create(dev, &fluid_shader, NULL, &fluid));
     37   OK(sdis_solid_create(dev, &solid_shader, NULL, &solid));
     38 
     39   shader = SDIS_INTERFACE_SHADER_NULL;
     40 
     41   #define CREATE sdis_interface_create
     42   BA(CREATE(NULL, NULL, NULL, NULL, NULL, NULL));
     43   BA(CREATE(dev, NULL, NULL, NULL, NULL, NULL));
     44   BA(CREATE(NULL, solid, NULL, NULL, NULL, NULL));
     45   BA(CREATE(dev, solid, NULL, NULL, NULL, NULL));
     46   BA(CREATE(NULL, NULL, fluid, NULL, NULL, NULL));
     47   BA(CREATE(dev, NULL, fluid, NULL, NULL, NULL));
     48   BA(CREATE(NULL, solid, fluid, NULL, NULL, NULL));
     49   BA(CREATE(dev, solid, fluid, NULL, NULL, NULL));
     50   BA(CREATE(NULL, NULL, NULL, &shader, NULL, NULL));
     51   BA(CREATE(dev, NULL, NULL, &shader, NULL, NULL));
     52   BA(CREATE(NULL, solid, NULL, &shader, NULL, NULL));
     53   BA(CREATE(dev, solid, NULL, &shader, NULL, NULL));
     54   BA(CREATE(NULL, NULL, fluid, &shader, NULL, NULL));
     55   BA(CREATE(dev, NULL, fluid, &shader, NULL, NULL));
     56   BA(CREATE(NULL, solid, fluid, &shader, NULL, NULL));
     57   BA(CREATE(dev, solid, fluid, &shader, NULL, NULL));
     58   BA(CREATE(NULL, NULL, NULL, NULL, NULL, &interf));
     59   BA(CREATE(dev, NULL, NULL, NULL, NULL, &interf));
     60   BA(CREATE(NULL, solid, NULL, NULL, NULL, &interf));
     61   BA(CREATE(dev, solid, NULL, NULL, NULL, &interf));
     62   BA(CREATE(NULL, NULL, fluid, NULL, NULL, &interf));
     63   BA(CREATE(dev, NULL, fluid, NULL, NULL, &interf));
     64   BA(CREATE(NULL, solid, fluid, NULL, NULL, &interf));
     65   BA(CREATE(dev, solid, fluid, NULL, NULL, &interf));
     66   BA(CREATE(NULL, NULL, NULL, &shader, NULL, &interf));
     67   BA(CREATE(dev, NULL, NULL, &shader, NULL, &interf));
     68   BA(CREATE(NULL, solid, NULL, &shader, NULL, &interf));
     69   BA(CREATE(dev, solid, NULL, &shader, NULL, &interf));
     70   BA(CREATE(NULL, NULL, fluid, &shader, NULL, &interf));
     71   BA(CREATE(dev, NULL, fluid, &shader, NULL, &interf));
     72   BA(CREATE(NULL, solid, fluid, &shader, NULL, &interf));
     73   OK(CREATE(dev, solid, fluid, &shader, NULL, &interf));
     74 
     75   BA(sdis_interface_ref_get(NULL));
     76   OK(sdis_interface_ref_get(interf));
     77   BA(sdis_interface_ref_put(NULL));
     78   OK(sdis_interface_ref_put(interf));
     79   OK(sdis_interface_ref_put(interf));
     80 
     81   OK(CREATE(dev, solid, solid, &shader, NULL, &interf));
     82   OK(sdis_interface_ref_put(interf));
     83   shader = SDIS_INTERFACE_SHADER_NULL;
     84   OK(CREATE(dev, solid, solid, &shader, NULL, &interf));
     85   OK(sdis_interface_ref_put(interf));
     86 
     87   shader.front.temperature = dummy_interface_getter;
     88   OK(CREATE(dev, solid, solid, &shader, NULL, &interf));
     89   OK(sdis_interface_ref_put(interf));
     90 
     91   shader.back.emissivity = dummy_radiative_interface_getter;
     92   OK(CREATE(dev, solid, fluid, &shader, NULL, &interf));
     93   OK(sdis_interface_ref_put(interf));
     94   shader.back.specular_fraction = dummy_radiative_interface_getter;
     95   OK(CREATE(dev, solid, fluid, &shader, NULL, &interf));
     96   OK(sdis_interface_ref_put(interf));
     97   shader.back = SDIS_INTERFACE_SIDE_SHADER_NULL;
     98   shader.front.emissivity = dummy_radiative_interface_getter;
     99   OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); /* Warning */
    100   OK(sdis_interface_ref_put(interf));
    101   shader.front.emissivity = NULL;
    102   shader.front.specular_fraction = dummy_radiative_interface_getter;
    103   OK(CREATE(dev, solid, fluid, &shader, NULL, &interf)); /* Warning */
    104   OK(sdis_interface_ref_put(interf));
    105   shader.front.specular_fraction = NULL;
    106   shader.convection_coef_upper_bound = -1;
    107   OK(CREATE(dev, solid, solid, &shader, NULL, &interf)); /* Warning */
    108   OK(sdis_interface_ref_put(interf));
    109   BA(CREATE(dev, solid, fluid, &shader, NULL, &interf));
    110   shader.convection_coef_upper_bound = 0;
    111 
    112   OK(sdis_data_create(dev, 4, 16, NULL, &data));
    113   OK(CREATE(dev, solid, fluid, &shader, data, &interf));
    114   OK(CREATE(dev, solid, fluid, &shader, NULL, &interf2));
    115 
    116   CHK(sdis_interface_get_data(interf) == data);
    117   CHK(sdis_interface_get_data(interf2) == NULL);
    118   CHK(sdis_interface_get_id(interf) != sdis_interface_get_id(interf2));
    119 
    120   BA(sdis_interface_get_shader(NULL, &shader2));
    121   BA(sdis_interface_get_shader(interf, NULL));
    122   OK(sdis_interface_get_shader(interf, &shader2));
    123 
    124   CHK(shader.convection_coef == shader2.convection_coef);
    125   CHK(shader.convection_coef_upper_bound == shader2.convection_coef_upper_bound);
    126   CHK(shader.front.temperature == shader2.front.temperature);
    127   CHK(shader.front.flux == shader2.front.flux);
    128   CHK(shader.front.emissivity == shader2.front.emissivity);
    129   CHK(shader.front.specular_fraction == shader2.front.specular_fraction);
    130   CHK(shader.back.temperature == shader2.back.temperature);
    131   CHK(shader.back.flux == shader2.back.flux);
    132   CHK(shader.back.emissivity == shader2.back.emissivity);
    133   CHK(shader.back.specular_fraction == shader2.back.specular_fraction);
    134 
    135   OK(sdis_interface_ref_put(interf));
    136   OK(sdis_interface_ref_put(interf2));
    137   OK(sdis_data_ref_put(data));
    138 
    139   #undef CREATE
    140 
    141   OK(sdis_device_ref_put(dev));
    142   OK(sdis_medium_ref_put(fluid));
    143   OK(sdis_medium_ref_put(solid));
    144 
    145   CHK(mem_allocated_size() == 0);
    146   return 0;
    147 }
    148