NGen
Loading...
Searching...
No Matches
bmi.hpp
1// The Basic Model Interface (BMI) C++ specification.
2//
3// This language specification is derived from the Scientific
4// Interface Definition Language (SIDL) file bmi.sidl located at
5// https://github.com/csdms/bmi.
6//
7// bmi-cxx repo: https://github.com/csdms/bmi-cxx
8// Version 2.0, commit: c3f4c11
9
10#ifndef BMI_HPP
11#define BMI_HPP
12
13#include <string>
14#include <vector>
15
16namespace bmi {
17
18#ifndef BMI_SUCCESS
19 const int BMI_SUCCESS = 0;
20#endif
21#ifndef BMI_FAILURE
22 const int BMI_FAILURE = 1;
23#endif
24
25 const int MAX_COMPONENT_NAME = 2048;
26 const int MAX_VAR_NAME = 2048;
27 const int MAX_UNITS_NAME = 2048;
28 const int MAX_TYPE_NAME = 2048;
29 const int MAX_LOCATION_NAME = 2048;
30
31 class Bmi {
32 public:
33 virtual ~Bmi() { }
34
35 // Model control functions.
36 virtual void Initialize(std::string config_file) = 0;
37 virtual void Update() = 0;
38 virtual void UpdateUntil(double time) = 0;
39 virtual void Finalize() = 0;
40
41 // Model information functions.
42 virtual std::string GetComponentName() = 0;
43 virtual int GetInputItemCount() = 0;
44 virtual int GetOutputItemCount() = 0;
45 virtual std::vector<std::string> GetInputVarNames() = 0;
46 virtual std::vector<std::string> GetOutputVarNames() = 0;
47
48 // Variable information functions
49 virtual int GetVarGrid(std::string name) = 0;
50 virtual std::string GetVarType(std::string name) = 0;
51 virtual std::string GetVarUnits(std::string name) = 0;
52 virtual int GetVarItemsize(std::string name) = 0;
53 virtual int GetVarNbytes(std::string name) = 0;
54 virtual std::string GetVarLocation(std::string name) = 0;
55
56 virtual double GetCurrentTime() = 0;
57 virtual double GetStartTime() = 0;
58 virtual double GetEndTime() = 0;
59 virtual std::string GetTimeUnits() = 0;
60 virtual double GetTimeStep() = 0;
61
62 // Variable getters
63 virtual void GetValue(std::string name, void *dest) = 0;
64 virtual void *GetValuePtr(std::string name) = 0;
65 virtual void GetValueAtIndices(std::string name, void *dest, int *inds, int count) = 0;
66
67 // Variable setters
68 virtual void SetValue(std::string name, void *src) = 0;
69 virtual void SetValueAtIndices(std::string name, int *inds, int count, void *src) = 0;
70
71 // Grid information functions
72 virtual int GetGridRank(const int grid) = 0;
73 virtual int GetGridSize(const int grid) = 0;
74 virtual std::string GetGridType(const int grid) = 0;
75
76 virtual void GetGridShape(const int grid, int *shape) = 0;
77 virtual void GetGridSpacing(const int grid, double *spacing) = 0;
78 virtual void GetGridOrigin(const int grid, double *origin) = 0;
79
80 virtual void GetGridX(const int grid, double *x) = 0;
81 virtual void GetGridY(const int grid, double *y) = 0;
82 virtual void GetGridZ(const int grid, double *z) = 0;
83
84 virtual int GetGridNodeCount(const int grid) = 0;
85 virtual int GetGridEdgeCount(const int grid) = 0;
86 virtual int GetGridFaceCount(const int grid) = 0;
87
88 virtual void GetGridEdgeNodes(const int grid, int *edge_nodes) = 0;
89 virtual void GetGridFaceEdges(const int grid, int *face_edges) = 0;
90 virtual void GetGridFaceNodes(const int grid, int *face_nodes) = 0;
91 virtual void GetGridNodesPerFace(const int grid, int *nodes_per_face) = 0;
92 };
93}
94
95#endif
Definition bmi.hpp:31
virtual ~Bmi()
Definition bmi.hpp:33
virtual double GetEndTime()=0
virtual void Update()=0
virtual std::string GetVarType(std::string name)=0
virtual int GetGridRank(const int grid)=0
virtual double GetTimeStep()=0
virtual void * GetValuePtr(std::string name)=0
virtual std::string GetTimeUnits()=0
virtual std::string GetComponentName()=0
virtual int GetInputItemCount()=0
virtual void SetValueAtIndices(std::string name, int *inds, int count, void *src)=0
virtual void GetGridFaceEdges(const int grid, int *face_edges)=0
virtual void GetGridNodesPerFace(const int grid, int *nodes_per_face)=0
virtual void Finalize()=0
virtual void GetGridOrigin(const int grid, double *origin)=0
virtual std::string GetGridType(const int grid)=0
virtual void UpdateUntil(double time)=0
virtual int GetOutputItemCount()=0
virtual std::string GetVarUnits(std::string name)=0
virtual int GetGridNodeCount(const int grid)=0
virtual int GetGridFaceCount(const int grid)=0
virtual std::string GetVarLocation(std::string name)=0
virtual void GetValueAtIndices(std::string name, void *dest, int *inds, int count)=0
virtual int GetGridEdgeCount(const int grid)=0
virtual void GetValue(std::string name, void *dest)=0
virtual void GetGridY(const int grid, double *y)=0
virtual int GetVarItemsize(std::string name)=0
virtual void GetGridShape(const int grid, int *shape)=0
virtual int GetVarNbytes(std::string name)=0
virtual void GetGridSpacing(const int grid, double *spacing)=0
virtual void GetGridX(const int grid, double *x)=0
virtual void GetGridEdgeNodes(const int grid, int *edge_nodes)=0
virtual double GetCurrentTime()=0
virtual void Initialize(std::string config_file)=0
virtual double GetStartTime()=0
virtual int GetGridSize(const int grid)=0
virtual void GetGridFaceNodes(const int grid, int *face_nodes)=0
virtual int GetVarGrid(std::string name)=0
virtual void SetValue(std::string name, void *src)=0
virtual std::vector< std::string > GetInputVarNames()=0
virtual std::vector< std::string > GetOutputVarNames()=0
virtual void GetGridZ(const int grid, double *z)=0
Definition bmi.hpp:16
const int MAX_COMPONENT_NAME
Definition bmi.hpp:25
const int BMI_SUCCESS
Definition bmi.hpp:19
const int MAX_TYPE_NAME
Definition bmi.hpp:28
const int MAX_VAR_NAME
Definition bmi.hpp:26
const int MAX_LOCATION_NAME
Definition bmi.hpp:29
const int MAX_UNITS_NAME
Definition bmi.hpp:27
const int BMI_FAILURE
Definition bmi.hpp:22