World Builder  0.1.0-pre
A geodyanmic initial conditions generator
wrapper_c.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2018 by the authors of the World Builder code.
3 
4  This file is part of the World Builder.
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19 
20 #include <iostream>
21 
22 #include <world_builder/world.h>
24 #include <world_builder/assert.h>
25 
26 extern "C" {
32  void create_world(void **ptr_ptr_world, const char *world_builder_file)
33  {
34  WorldBuilder::World *a = new WorldBuilder::World(std::string(world_builder_file));
35 
36  *ptr_ptr_world = reinterpret_cast<void *>(a);
37  }
38 
43  void temperature_2d(void *ptr_ptr_world, double x, double z, double depth, double gravity, double *temperature)
44  {
45  WorldBuilder::World *a = reinterpret_cast<WorldBuilder::World *>(ptr_ptr_world);
46  std::array<double,2> position = {x,z};
47  *temperature = a->temperature(position,depth,gravity);
48  }
49 
54  void temperature_3d(void *ptr_ptr_world, double x, double y, double z, double depth, double gravity, double *temperature)
55  {
56  WorldBuilder::World *a = reinterpret_cast<WorldBuilder::World *>(ptr_ptr_world);
57  std::array<double,3> position = {x,y,z};
58  *temperature = a->temperature(position,depth,gravity);
59  }
60 
61 
62 
67  void composition_2d(void *ptr_ptr_world, double x, double z, double depth, unsigned int composition_number, bool *composition)
68  {
69  WorldBuilder::World *a = reinterpret_cast<WorldBuilder::World *>(ptr_ptr_world);
70  std::array<double,2> position = {x,z};
71  *composition = a->composition(position,depth,composition_number);
72  }
73 
78  void composition_3d(void *ptr_ptr_world, double x, double y, double z, double depth, unsigned int composition_number, bool *composition)
79  {
80  WorldBuilder::World *a = reinterpret_cast<WorldBuilder::World *>(ptr_ptr_world);
81  std::array<double,3> position = {x,y,z};
82  *composition = a->composition(position,depth,composition_number);
83  }
84 
89  void release_world(void *ptr_ptr_world)
90  {
91  WorldBuilder::World *a = reinterpret_cast<WorldBuilder::World *>(ptr_ptr_world);
92  delete a;
93  }
94 }
void composition_3d(void *ptr_ptr_world, double x, double y, double z, double depth, unsigned int composition_number, bool *composition)
Definition: wrapper_c.cc:78
bool composition(const std::array< double, 2 > &point, const double depth, const unsigned int composition_number) const
Definition: world.cc:153
double temperature(const std::array< double, 2 > &point, const double depth, const double gravity_norm) const
Definition: world.cc:107
void temperature_3d(void *ptr_ptr_world, double x, double y, double z, double depth, double gravity, double *temperature)
Definition: wrapper_c.cc:54
void composition_2d(void *ptr_ptr_world, double x, double z, double depth, unsigned int composition_number, bool *composition)
Definition: wrapper_c.cc:67
void temperature_2d(void *ptr_ptr_world, double x, double z, double depth, double gravity, double *temperature)
Definition: wrapper_c.cc:43
void release_world(void *ptr_ptr_world)
Definition: wrapper_c.cc:89
void create_world(void **ptr_ptr_world, const char *world_builder_file)
Definition: wrapper_c.cc:32