    

 ## On this page

  

 

 # File fmop\_solver.h

 Last update: 30.07.2026 

![](https://img.shields.io/badge/language-C%2B%2B-blue "C++")

**Location**: `fmop_solver.h`

C-API to evaluate a Field Meta model of Optimal Prognosis (FMOP)

**copyright**  
DYNARDO Austria GmbH

- This API follows the *Basic* exception safety *rule*. If any of the operations fail, the original data, e.g. the fmop\_handle\*\_t, might have been overwritten, but there should be no resource leak.
- Return values are typically of type [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec). To get a human readalbe interpretation forward this value to [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) or call [FMOP\_getLastErrorString()](sos__capi__common_8h.md#sos__capi__common_8h_1aa79c50f0e38654fc5bf42e052b229748). More information can be found in the Error Handling section
- Log messages from the SoS kernel are all bufferd in an internal variable. Unless otherwise stated in a function description, this internal variable gets reset(!) right at the beginning of each function call. Therefore, the user is forced into fetching all log messages of interest before proceeding.

!&gt; **Warning**   
Concurrent library calls are NOT supported

!&gt; **Warning**   
Unless otherwise stated, every function call overwrites any log message of any previous function call

## Includes

- [sos\_capi\_common.h](sos__capi__common_8h.md#sos__capi__common_8h)

```mermaid
graph LR
1["fmop_solver.h"]
click 1 "fmop__solver_8h.md#fmop__solver_8h"
1 --> 2

2["sos_capi_common.h"]
click 2 "sos__capi__common_8h.md#sos__capi__common_8h"


```

## Included by

- [FMOPSolver.h](_f_m_o_p_solver_8h.md#_f_m_o_p_solver_8h)

```mermaid
graph RL
2["FMOPSolver.h"]

1["fmop_solver.h"]
click 1 "fmop__solver_8h.md#fmop__solver_8h"
2 --> 1


```

## Create / Initialize Data Objects

API handling data object life time

<a id="fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc"></a>

### Function FMOP\_getModel

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModel(fmop_db_handle_t database, fmop_dataobject_types data_type, const char *const fmop_ident, fmop_handle_t *fmop)

```

Loads a [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object from the database given.

**Parameters**:

- **database**: The already initialized database handle
- **data\_type**: The data type in question
- **fmop\_ident**: The FMOP ident to be loaded from the database given
- **fmop**: On input *\*fmop* must point to NULL. Returns an initialized fmop handle to the requested *fmop\_ident* on output. Pointer ownership is up to the caller after return. Call FMOP\_releaseModel ([fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) \*) at the end of lifetime.

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database or fmop\_ident argument is a NULL pointer
- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the *fmop* argument does not hold a NULL pointer on input
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to load a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_model\_missing](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becaedda7a6dbd4f5dd3eedecca9ec7dc1e9) if the handle initialization fails
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that FMOP\_initialize() returned fmop\_model\_success

**Returns**:

A success indicator. Call FMOP\_getErrnoString to get a human readable representation

**Parameters**:

- [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) **database**
- [fmop\_dataobject\_types](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75) **data\_type**
- const char \*const **fmop\_ident**
- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) \* **fmop**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a0ad6b75479bad22c19004ccf3078f235"></a>

### Function FMOP\_loadDbBuf

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_loadDbBuf(fmop_db_handle_t *database, const char *buffer, size_t length)

```

Initializes a [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) object from a previously saved Statistics on Structures (SoS) database array.

!&gt; **Warning**   
Draft only. CURRENTLY NOT IMPLEMENTED. Returns fmop\_not\_implemented

**Parameters**:

- **database**: On input *\*database* must point to NULL. Returns an initialized handle to the loaded database on ouptut. The database of the returned handle has been set to the buffer content given. Pointer ownership is up to the caller after return. Call FMOP\_releaseDb ([fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \*) at the end of lifetime.
- **buffer**: A character array
- **length**: The length of the character array

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database argument does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the buffer or length argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to load a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) if the database handle has been initialized successfully

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation.

**Parameters**:

- [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \* **database**
- const char \* **buffer**
- size\_t **length**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1ab77fe12cab675bb1d50232deacf23a34"></a>

### Function FMOP\_loadDbBufWMesh

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_loadDbBufWMesh(fmop_db_handle_t *database, const char *buffer, size_t length)

```

Initializes a [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) object from a previously saved Statistics on Structures (SoS) database array This function also builds up all internal data structures needed to represent FEM meshes. Hence it may need more CPU time and RAM.

!&gt; **Warning**   
Draft only. CURRENTLY NOT IMPLEMENTED. Returns fmop\_not\_implemented

**Parameters**:

- **database**: On input *\*database* must point to NULL. Returns an initialized handle to the loaded database on ouptut. The database of the returned handle has been set to the buffer content given. Pointer ownership is up to the caller after return. Call FMOP\_releaseDb ([fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \*) at the end of lifetime.
- **buffer**: A character array
- **length**: The length of the character array

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database argument does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the buffer or length argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to load a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) if the database handle has been initialized successfully

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation.

**Parameters**:

- [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \* **database**
- const char \* **buffer**
- size\_t **length**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1adf36057836bc12095f01665fa068ba4c"></a>

### Function FMOP\_loadDbFile

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_loadDbFile(fmop_db_handle_t *database, const char *path)

```

Initializes a [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) object from a previously saved Statistics on Structures (SoS) database.

**Parameters**:

- **database**: On input *\*database* must point to NULL. Returns an initialized handle to the loaded database on ouptut. The database of the returned handle has been set to the content of the file path given. Pointer ownership is up to the caller after return. Call FMOP\_releaseDb ([fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \*) at the end of lifetime.
- **path**: The path to the SoS database file as a NULL terminated character array

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database argument does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the path argument doesn't point to an existing file
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to load a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) if the [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) has been initialized successfully

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation.

**Parameters**:

- [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \* **database**
- const char \* **path**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1ab3f6b6b4a84878f3c774a12a2b4cf958"></a>

### Function FMOP\_loadDbFileWMesh

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_loadDbFileWMesh(fmop_db_handle_t *database, const char *path)

```

Initializes a [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) object from a previously saved Statistics on Structures (SoS) database This function also builds up all internal data structures needed to represent FEM meshes. Hence it may need more CPU time and RAM.

**Parameters**:

- **database**: On input *\*database* must point to NULL. Returns an initialized handle to the loaded database on ouptut. The database of the returned handle has been set to the content of the file path given. Pointer ownership is up to the caller after return. Call FMOP\_releaseDb ([fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \*) at the end of lifetime.
- **path**: The path to the SoS database file as a NULL terminated character array

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database argument does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the path argument doesn't point to an existing file
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to load a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) if the [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) has been initialized successfully

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation.

**Parameters**:

- [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \* **database**
- const char \* **path**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1af36d28d4c5c718284a0f4236f2740e06"></a>

### Function FMOP\_releaseDb

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_releaseDb(fmop_db_handle_t *database)

```

Releases a [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) object and dedicated memory.

**Parameters**:

- **database**: The [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) to be released. Set to NULLptr on return.

**Returns**:

- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

**Parameters**:

- [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) \* **database**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a37bdee678571cd855ac0bb10675b1d8c"></a>

### Function FMOP\_releaseIdents

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_releaseIdents(char ***const idents, const size_t *num_idents)

```

An auxiliary function to releases an array of char arrays and dedicated memory.

**Parameters**:

- **idents**: A pointer to an array of char arrays. Set to NULLptr on return.
- **num\_idents**: An already initialized scalar data object. Contains the number of idents in the char\*\* array \[\] given

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the array argument is a NULL pointer or if \*array points to NULL
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_idents argument is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

**Parameters**:

- char \*\*\*const **idents**
- const size\_t \* **num\_idents**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a3ad01c460ed6e409b79e258a523d0bf9"></a>

### Function FMOP\_releaseModel

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_releaseModel(fmop_handle_t *fmop)

```

Releases a [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) object and dedicated memory.

**Parameters**:

- **fmop**: The [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) to be released. Set to NULLptr on return.

**Returns**:

- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) \* **fmop**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

## Query properties

API to query idents and properties of a "Field Meta Model of Optimal Prognosis" (FMOP)

<a id="fmop__solver_8h_1a878106f886ca5f1ce112e6c5e238d80e"></a>

### Function FMOP\_getDataDim

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getDataDim(const fmop_db_handle_t database, fmop_dataobject_types data_type, size_t *num_mesh_items)

```

Returns the size of the FCoP vector, aka the number of mesh items.

**Parameters**:

- **database**: A successfully initialized [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) data object
- **data\_type**: The data type to be queried (node, element, scalar)
- **num\_mesh\_items**: An already initialized scalar data object. Contains the size of the data vectors for the givvemn data type on return

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_mesh\_items pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that FMOP\_initialize() returned fmop\_model\_success

**Parameters**:

- const [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) **database**
- [fmop\_dataobject\_types](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75) **data\_type**
- size\_t \* **num\_mesh\_items**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a535bee00c4d200d31fdf4118e49c1f05"></a>

### Function FMOP\_getDataPointCoors

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getDataPointCoors(fmop_handle_t fmop, char axis, double *coors)

```

Returns the cartesian data point coordinates for each data point.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **axis**: Controls coordinate output. The following integers are accepted:
- 0... asks for x-coordinates only
- 1... asks for y-coordinates only
- 2... asks for z-coordinates only
- 3... asks for x-, y- and z-coordinates
- **coors**: An already initialized array of size `formula {"type":"element","name":"formula","attributes":{"id":"0"},"children":[{"type":"text","text":"$ ( 1 + \\lfloor \\frac{\\mathit{axis}}{3} \\rfloor ) * \\mathit{num\_mesh\_items} $"}]}`. Call [FMOP\_getModelDim()](fmop__solver_8h.md#fmop__solver_8h_1a24e43563d67cc64bffb7bccddbaada65) to get *num\_mesh\_items*. On output contains the following coordinate values:
- finite element nodes for an FMOP of type [fmop\_node\_data](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75aaf0fb275c161febc56c4f10e62987049)
- finite elements using their center coordinate in space for an FMOP of type [fmop\_element\_data](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75a1ec31fe31f3b8a9fd9dd902b014499ef)
- an FMOP of type [fmop\_scalar\_data](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75a16a14aa0d55901638e165fb3a39b3870) invokes an [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) error Follows the scheme: `formula {"type":"element","name":"formula","attributes":{"id":"1"},"children":[{"type":"text","text":"$ \\mathit{coors} \\lbrack k+ \\mathit{axis} \\bmod 3 \\rbrack $"}]}` with   
    k...internal mesh item ident, e.g. internal signal position, internal element number   
    Call [FMOP\_getDataPointIndices()](fmop__solver_8h.md#fmop__solver_8h_1add2527ad2ad1bf1df141e5fa5b4c2e31) to map internal to external numbering scheme

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the axis parameter is out-of-bounds, or the coors pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

!&gt; **Warning**   
Calling this function for FMOP models of type [fmop\_element\_data](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75a1ec31fe31f3b8a9fd9dd902b014499ef) multiplies resource consumption!

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- char **axis**
- double \* **coors**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1add2527ad2ad1bf1df141e5fa5b4c2e31"></a>

### Function FMOP\_getDataPointIndices

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getDataPointIndices(fmop_handle_t fmop, unsigned int *part_ids, unsigned int *item_ids)

```

Maps internal node/element numbering to the external scheme consisting of part and item ID.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **part\_ids**: Either an already initialized array of size num\_mesh\_items as returned by [FMOP\_getModelDim()](fmop__solver_8h.md#fmop__solver_8h_1a24e43563d67cc64bffb7bccddbaada65), or a NULL pointer. Note, most of the meshes consists of a single part only, e.g. signals. If the argument is initialized, it contains the external part IDs on output. A NULL pointer otherwise

```cpp
external( internal[k] ) = PART_ID [k], item_id [k] 

```

k...mesh item, e.g. signal position, element number

- **item\_ids**: An already initialized array of size num\_mesh\_items as returned by [FMOP\_getModelDim()](fmop__solver_8h.md#fmop__solver_8h_1a24e43563d67cc64bffb7bccddbaada65). On output contains the external node/element ID

```cpp
external( internal[k] ) = part_id [k], ITEM_ID [k] 

```

k...mesh item, e.g. signal position, element number

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the item\_id pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int \* **part\_ids**
- unsigned int \* **item\_ids**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a8ca72d6a865df21ce5a5180475c71cda"></a>

### Function FMOP\_getElementsAtNode

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getElementsAtNode(fmop_handle_t fmop, unsigned int node_idx, unsigned int *elements)

```

Identifies the elements connected to a given node.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **node\_idx**: the node index (0.. numNodes). This node index refers to the index in the FMOP data vectors.
- **elements**: An already initialized array of size as returned by [FMOP\_getNumElementsAtNode()](fmop__solver_8h.md#fmop__solver_8h_1a4413f3e2bc5f893b9030631aceb03c54). On output contains the internal element ID that are connected to the given node.

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the item\_id pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int **node\_idx**
- unsigned int \* **elements**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a3eea3398149b5f0f6177ccc4a649ab79"></a>

### Function FMOP\_getElementTypeIdent

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API const char * FMOP_getElementTypeIdent(fmop_handle_t fmop, unsigned int element_idx)

```

Identifies the element type ident of a given element.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **element\_idx**: the element index (0.. numElements). This element index refers to the index in the FMOP data vectors.

**Returns**:

On success the element type identifier at array position num\_ident from the database given, othewise an empty string.

?&gt; Calling this function changes the error number to:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database or fmop\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the param\_ident pointer does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the value of num\_param given is greater than, or equal to the size of the param\_idents char\* array \[\]
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise. Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int **element\_idx**

**Return type**: DYNARDO\_FMOP\_API const char \*

<a id="fmop__solver_8h_1a185c515c2fe8b0528ccb5f95f543a3be"></a>

### Function FMOP\_getModelAvgFCoP

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelAvgFCoP(const fmop_handle_t fmop, double *fcops)

```

Returns the Field Coefficients of Prognosis per active scalar input parameter.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **fcops**: An already initialized array of size num\_params as returned by FMOP\_getModelNumParams() On output contains the average Field Coefficient of Prognosis per active scalar input parameter Follows the scheme: fcops\[i\] (i..i'th active scalar input parameter).

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the fcops pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- double \* **fcops**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a24e43563d67cc64bffb7bccddbaada65"></a>

### Function FMOP\_getModelDim

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelDim(const fmop_handle_t fmop, size_t *num_mesh_items)

```

Returns the size of the FCoP vector, aka the number of mesh items.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **num\_mesh\_items**: An already initialized scalar data object. Contains the size of the FCoP vector on return

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_mesh\_items pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- size\_t \* **num\_mesh\_items**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a9b6e5c7baeb1353a17f5efde188d0d8f"></a>

### Function FMOP\_getModelIdent

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API const char * FMOP_getModelIdent(const fmop_db_handle_t database, fmop_dataobject_types data_type, size_t num_ident)

```

Returns the n-th known FMOP identifier from the [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) given.

**Parameters**:

- **database**: A successfully initialized [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) data object
- **data\_type**: The data type in question
- **num\_ident**: Defines the position in the fmop\_idents char\* array \[\]. Notice that the first element has a position of 0

**Returns**:

On succes the FMOP identifier at array position num\_ident from the database given, otherwise an empty string. The returned string will be overwritten by this function at the next call and will be destroyed on program termination

?&gt; Calling this function changes the error number to:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database or fmop\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the fmop\_idents pointer does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the value of num\_ident given is greater than, or equal to the size of the fmop\_idents char\* array \[\]
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise. Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) **database**
- [fmop\_dataobject\_types](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75) **data\_type**
- size\_t **num\_ident**

**Return type**: DYNARDO\_FMOP\_API const char \*

<a id="fmop__solver_8h_1a22d6e807dc869fa28442d26e29ddbc27"></a>

### Function FMOP\_getModelIdents

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelIdents(const fmop_db_handle_t database, fmop_dataobject_types data_type, char ***const fmop_idents, size_t *num_idents)

```

Returns all known FMOP identifier from the [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) given.

**Parameters**:

- **database**: A successfully initialized [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) data object
- **data\_type**: The data type in question
- **fmop\_idents**: On input *\*fmop\_idents* must point to NULL. On return contains all known FMOP identifier from the database given. Pointer ownership is up to the caller after return. Call [FMOP\_releaseIdents()](fmop__solver_8h.md#fmop__solver_8h_1a37bdee678571cd855ac0bb10675b1d8c) at the end of life
- **num\_idents**: An already initialized scalar data object. Contains the number of FMOP idents, aka the size of the fmop\_idents char\* array \[\]

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database or fmop\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the fmop\_idents pointer does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_idents pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

?&gt; Many languages offers the possiblity to call functions from an external C-library, e.g. Java, python and Matlab. If you are running in some limitations due to our tripple pointer requirement, please use the wrapper functions [FMOP\_getModelIdentsDim()](fmop__solver_8h.md#fmop__solver_8h_1a600dca69efae1f2eafc63f9f6a0067fc) followed by [FMOP\_getModelIdent()](fmop__solver_8h.md#fmop__solver_8h_1a9b6e5c7baeb1353a17f5efde188d0d8f) to query known idents one by one

**Parameters**:

- const [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) **database**
- [fmop\_dataobject\_types](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75) **data\_type**
- char \*\*\*const **fmop\_idents**
- size\_t \* **num\_idents**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a600dca69efae1f2eafc63f9f6a0067fc"></a>

### Function FMOP\_getModelIdentsDim

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelIdentsDim(const fmop_db_handle_t database, fmop_dataobject_types data_type, size_t *num_idents)

```

Returns the total number of known FMOP identifiers from the [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) given.

**Parameters**:

- **database**: A successfully initialized [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) data object
- **data\_type**: The data type in question
- **num\_idents**: An already initialized scalar data object. Contains the number of FMOP idents, aka the size of the fmop\_idents char\* array \[\]

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database or fmop\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_idents pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_db\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572) **database**
- [fmop\_dataobject\_types](sos__capi__common_8h.md#sos__capi__common_8h_1a69eb42c1b3b49f22b9e73c6c9869cb75) **data\_type**
- size\_t \* **num\_idents**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1ae2ab3659b0419a9ab56ba3d7722708fb"></a>

### Function FMOP\_getModelParamIdent

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API const char * FMOP_getModelParamIdent(const fmop_handle_t fmop, size_t num_param)

```

Returns the n-th active parameter identifier from the fmop handle given.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **num\_param**: Defines the position in the fmop\_idents char\* array \[\]. Notice that the first element has a position of 0

**Returns**:

On success the parameter identifier at array position num\_ident from the database given, othewise an empty string. The returned string will be overwritten by this function at the next call and will be destroyed on program termination

?&gt; Calling this function changes the error number to:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the database or fmop\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the param\_ident pointer does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the value of num\_param given is greater than, or equal to the size of the param\_idents char\* array \[\]
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise. Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- size\_t **num\_param**

**Return type**: DYNARDO\_FMOP\_API const char \*

<a id="fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f"></a>

### Function FMOP\_getModelParamIdents

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelParamIdents(const fmop_handle_t fmop, char ***const param_idents, size_t *num_params)

```

Returns all active scalar inputer parameters for the fmop handle given.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **param\_idents**: Requires a NULL pointer on input. On return contains all active scalar input parameters used in the fmop handle given. Pointer ownership is up to the caller after return. Call [FMOP\_releaseIdents()](fmop__solver_8h.md#fmop__solver_8h_1a37bdee678571cd855ac0bb10675b1d8c) at the end of life
- **num\_params**: An already initialized scalar data object. Contains the number of active scalar input parameters used in the fmop handle given, aka the size of the param\_idents char\* array \[\]

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop or param\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the param\_idents pointer does not hold a NULL pointer on input
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_params pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

?&gt; Many languages offers the possiblity to call functions from an external C-library, e.g. Java, python and Matlab. If you are running in some limitations due to our tripple pointer requirement, please use the wrapper functions [FMOP\_getModelParamIdentsDim()](fmop__solver_8h.md#fmop__solver_8h_1adabef430a391d15eb077fe30e134f368) followed by [FMOP\_getModelParamIdent()](fmop__solver_8h.md#fmop__solver_8h_1ae2ab3659b0419a9ab56ba3d7722708fb) to query known idents one by one

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- char \*\*\*const **param\_idents**
- size\_t \* **num\_params**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1adabef430a391d15eb077fe30e134f368"></a>

### Function FMOP\_getModelParamIdentsDim

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelParamIdentsDim(const fmop_handle_t fmop, size_t *num_params)

```

Returns the total number of active parameter identifiers from the fmop handle given.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **num\_params**: An already initialized scalar data object. Contains the number of active scalar input parameters used in the fmop handle given, aka the size of the param\_idents char\* array \[\]

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop or param\_idents arguments is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the num\_params pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- size\_t \* **num\_params**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a1ff6f33cf199015b78c5837e40d90f42"></a>

### Function FMOP\_getModelTotalAvgFCoP

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getModelTotalAvgFCoP(const fmop_handle_t fmop, double *fcop)

```

Returns the total average Field Coefficient of Prognosis for the fmop handle given.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **fcop**: An already initialized scalar data object on input. On output contains the total average Field Coefficient of Prognosis

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the fcop pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- double \* **fcop**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a03080c2458b8c03eb85ce9eb97926711"></a>

### Function FMOP\_getNodesAtElement

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getNodesAtElement(fmop_handle_t fmop, unsigned int element_idx, unsigned int *nodes)

```

Identifies the nodes connected to a given element.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **element\_idx**: the element index (0.. numElements). This element index refers to the index in the FMOP data vectors.
- **nodes**: An already initialized array of size as returned by [FMOP\_getNumNodesAtElement()](fmop__solver_8h.md#fmop__solver_8h_1a031be0f125c4fbeb450f03bb960e207d). On output contains the internal node ID that are connected to the given element.

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the item\_id pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int **element\_idx**
- unsigned int \* **nodes**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a4413f3e2bc5f893b9030631aceb03c54"></a>

### Function FMOP\_getNumElementsAtNode

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getNumElementsAtNode(fmop_handle_t fmop, unsigned int node_idx, unsigned int *num_elements)

```

Identifies the elements connected to a given node.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **node\_idx**: the node index (0.. numNodes). This node index refers to the index in the FMOP data vectors.
- **num\_elements**: a pointer to an unsigned integer number. On output it will contain the number of connected elements.

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the item\_id pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int **node\_idx**
- unsigned int \* **num\_elements**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a031be0f125c4fbeb450f03bb960e207d"></a>

### Function FMOP\_getNumNodesAtElement

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getNumNodesAtElement(fmop_handle_t fmop, unsigned int element_idx, unsigned int *num_nodes)

```

Identifies the nodes connected to a given element.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **element\_idx**: the element index (0.. numElements). This element index refers to the index in the FMOP data vectors.
- **num\_nodes**: a pointer to an unsigned integer number. On output it will contain the number of connected nodes.

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the item\_id pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int **element\_idx**
- unsigned int \* **num\_nodes**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1abaed2ac2af6a304f8356e51b9cb98442"></a>

### Function FMOP\_getParamLowerBounds

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getParamLowerBounds(const fmop_handle_t fmop, double *lower_bounds)

```

Returns lower bound values of input parameters used to train the FMOP, aka the lower bound values of Design of Experiment input parameters.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **lower\_bounds**: An already initialized array of size num\_params as returned by [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f) On output contains the vector of lower bound values of all active scalar input parameters used to train the FMOP, e.g. lower\_bounds\[j\] (j..index of the active scalar input parameter).

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the lower\_bounds pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- double \* **lower\_bounds**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a301cfcf26e28ec7ba4b2c730facb679c"></a>

### Function FMOP\_getParamUpperBounds

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_getParamUpperBounds(const fmop_handle_t fmop, double *upper_bounds)

```

Returns upper bound values of input parameters used to train the FMOP, aka the upper bound values of Design of Experiment input parameters.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **upper\_bounds**: An already initialized array of size num\_params as returned by [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f) On output contains the vector of upper bound values of all active scalar input parameters used to train the FMOP, e.g. upper\_bounds\[j\] (j..index of the active scalar input parameter).

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the upper\_bounds pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise.

**Returns**:

Call FMOP\_getErrnoString to get a human readable representation

?&gt; Assumes that [FMOP\_getModel()](fmop__solver_8h.md#fmop__solver_8h_1aae65fdf242dba6c37b9de818be7c9dcc) returned fmop\_success

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- double \* **upper\_bounds**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a1ff1451cc5f1c6cefa7a67c6a906d653"></a>

### Function FMOP\_isNodePartOfBoundary

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_isNodePartOfBoundary(fmop_handle_t fmop, unsigned int node_idx, unsigned int *is_part_of_boundary)

```

Identifies if the given node is on the surface.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **node\_idx**: the node index (0.. numNodes). This node index refers to the index in the FMOP data vectors.
- **is\_part\_of\_boundary**: a pointer to an unsigned integer number. On output it will contain
- 1 if the node is on the boundary
- 0 if the node is not on the boundary

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop argument is a NULL pointer
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the item\_id pointer is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation

**Parameters**:

- [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- unsigned int **node\_idx**
- unsigned int \* **is\_part\_of\_boundary**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

## Operations

API used to evalute a Field Meta Model of Optimal Prognosis (FMOP)

<a id="fmop__solver_8h_1a1bd5d62d9c5ba6d327b0368a8b4e2e31"></a>

### Function FMOP\_approxField

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_approxField(const fmop_handle_t fmop, const double *param_values, double *field)

```

Approximates a field response based on a vector of given active scalar input parameters.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **param\_values**: Vector of a single sample of all active scalar input parameters. Size and parameter order are defined by the return values of [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f)  
    param\_values \[j\]... the index j matches the parameter input name position returned in the param\_idents argument of [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f)   
    sizeof ( param\_values ) ... must match the num\_params argument of [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f) The values must not be located outside the initial sampling bounds.
- **field**: An already initialized array of size num\_mesh\_items as returned by [FMOP\_getModelDim()](fmop__solver_8h.md#fmop__solver_8h_1a24e43563d67cc64bffb7bccddbaada65) On output contains the approximated field response.   
    Follows the scheme: `formula {"type":"element","name":"formula","attributes":{"id":"2"},"children":[{"type":"text","text":"$ field[k] $"}]}`   
    k...internal mesh item ident, e.g. internal signal position, internal element number   
    Call [FMOP\_getDataPointIndices()](fmop__solver_8h.md#fmop__solver_8h_1add2527ad2ad1bf1df141e5fa5b4c2e31) to map internal to external numbering scheme

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop handle is not allocated.
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the param\_values or field array argument is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation. For detailed log messages call FMOP\_getLastError() which outputs internal log messages.

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- const double \* **param\_values**
- double \* **field**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

<a id="fmop__solver_8h_1a4380a704857be093fc6444aa5b8fdadc"></a>

### Function FMOP\_approxFieldExtrapolate

![](https://img.shields.io/badge/-public-brightgreen "public")

```cpp
DYNARDO_FMOP_API fmop_error_t FMOP_approxFieldExtrapolate(const fmop_handle_t fmop, const double *param_values, double *field)

```

Approximates a field response based on a vector of given active scalar input parameters.

**Parameters**:

- **fmop**: A successfully initialized [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) data object
- **param\_values**: Vector of a single sample of all active scalar input parameters. Size and parameter order are defined by the return values of [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f)  
    param\_values \[j\]... the index j matches the parameter input name position returned in the param\_idents argument of [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f)   
    sizeof ( param\_values ) ... must match the num\_params argument of [FMOP\_getModelParamIdents()](fmop__solver_8h.md#fmop__solver_8h_1a485827623b3d01cf3157c0a16559908f) The values may be located outside the initial sampling bounds.
- **field**: An already initialized array of size num\_mesh\_items as returned by [FMOP\_getModelDim()](fmop__solver_8h.md#fmop__solver_8h_1a24e43563d67cc64bffb7bccddbaada65) On output contains the approximated field response.   
    Follows the scheme: `formula {"type":"element","name":"formula","attributes":{"id":"2"},"children":[{"type":"text","text":"$ field[k] $"}]}`   
    k...internal mesh item ident, e.g. internal signal position, internal element number   
    Call [FMOP\_getDataPointIndices()](fmop__solver_8h.md#fmop__solver_8h_1add2527ad2ad1bf1df141e5fa5b4c2e31) to map internal to external numbering scheme

**Returns**:

- [fmop\_invalid\_handle](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacef5c059b0dd649f97d5404db95c3ccf) if the fmop handle is not allocated.
- [fmop\_license\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becacf8dfe2eaba2eada73a26e487a04f8fe) if a license error occurs, e.g. no license has been acquired so far or one tries to release a 3D mesh but acquired a SoS license for 1D meshes, e.g. signals, only
- [fmop\_settings\_error](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca4040927e4d05d13e93b9f2c7373ca0cd) if the param\_values or field array argument is a NULL pointer
- [fmop\_exception\_occurred](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8becadac3d9086cdab852d265dc924070c198) if any other failure get invoked
- [fmop\_success](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8beca41a0a2e83b0ac20d414f4b015522ce55) elsewise

**Returns**:

Call [FMOP\_getErrnoString()](sos__capi__common_8h.md#sos__capi__common_8h_1a4dcdde79d3a37a80540e3a7f5b486110) to get a human readable representation. For detailed log messages call FMOP\_getLastError() which outputs internal log messages.

**Parameters**:

- const [fmop\_handle\_t](fmop__solver_8h.md#fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef) **fmop**
- const double \* **param\_values**
- double \* **field**

**Return type**: DYNARDO\_FMOP\_API [fmop\_error\_t](sos__capi__common_8h.md#sos__capi__common_8h_1a4847f3fa2943ffd694eb6cbe169a8bec)

## Typedefs

<a id="fmop__solver_8h_1a4f3b1f4672b1b913e04f95def14d3572"></a>

### Typedef fmop\_db\_handle\_t

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**: `fmop_solver.h` (line 42)

```cpp
typedef void* fmop_db_handle_t

```

Contains all the data being required to post-process any FMOP.

?&gt; Since we had some unresolved troubles in Matlab using the forward declaration

```cpp
typedef struct FMOP_Database* fmop_db_handle_t; 

```

we now prefer to write for the public definition 'void\*' only

**Return type**: void \*

<a id="fmop__solver_8h_1aed65d1ae14f8c298a702ad5b828a70ef"></a>

### Typedef fmop\_handle\_t

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**: `fmop_solver.h` (line 53)

```cpp
typedef void* fmop_handle_t

```

Contains one specific single or cross correlated FMOP.

?&gt; Since we had some unresolved troubles in Matlab using the forward declaration

```cpp
typedef struct FMOP* fmop_handle_t; 

```

we now prefer to write for the public defintion 'void\*' only

**Return type**: void \*

## Source

```cpp

#ifndef DYNARDO_FMOP_H
    #define DYNARDO_FMOP_H

#include "sos_capi_common.h"

#ifdef __cplusplus
extern "C" {
#endif

#ifdef DYNARDO_FMOP_DLL_EXPORTS
    typedef struct FMOP_Database* fmop_db_handle_t;
#else
    typedef void* fmop_db_handle_t;
#endif
#ifdef DYNARDO_FMOP_DLL_EXPORTS
    typedef struct FMOP* fmop_handle_t;
#else
    typedef void* fmop_handle_t;
#endif

/*********************************************/

DYNARDO_FMOP_API fmop_error_t FMOP_loadDbFile ( fmop_db_handle_t * database, const char* path );

DYNARDO_FMOP_API fmop_error_t FMOP_loadDbFileWMesh ( fmop_db_handle_t * database, const char* path );

#ifndef DOXYGEN_IGNORE
DYNARDO_FMOP_API fmop_error_t FMOP_loadDbBuf
    ( fmop_db_handle_t * database, const char* buffer,  size_t length );
DYNARDO_FMOP_API fmop_error_t FMOP_loadDbBufWMesh
    ( fmop_db_handle_t * database, const char* buffer, size_t length );
#endif
DYNARDO_FMOP_API fmop_error_t FMOP_getModel ( fmop_db_handle_t database, fmop_dataobject_types data_type,
                                              const char * const fmop_ident, fmop_handle_t * fmop );
DYNARDO_FMOP_API fmop_error_t FMOP_releaseModel ( fmop_handle_t * fmop );
DYNARDO_FMOP_API fmop_error_t FMOP_releaseDb ( fmop_db_handle_t * database );
DYNARDO_FMOP_API fmop_error_t FMOP_releaseIdents ( char *** const idents, const size_t * num_idents );

/*********************************************/

DYNARDO_FMOP_API fmop_error_t FMOP_getModelIdents
    ( const fmop_db_handle_t database, fmop_dataobject_types data_type, char *** const fmop_idents, size_t * num_idents );
DYNARDO_FMOP_API fmop_error_t FMOP_getModelIdentsDim
    ( const fmop_db_handle_t database, fmop_dataobject_types data_type, size_t * num_idents );
DYNARDO_FMOP_API const char * FMOP_getModelIdent
    ( const fmop_db_handle_t database, fmop_dataobject_types data_type, size_t num_ident );
DYNARDO_FMOP_API fmop_error_t FMOP_getModelParamIdents
    ( const fmop_handle_t fmop, char *** const param_idents, size_t * num_params );
DYNARDO_FMOP_API fmop_error_t FMOP_getModelParamIdentsDim ( const fmop_handle_t fmop, size_t * num_params );
DYNARDO_FMOP_API const char * FMOP_getModelParamIdent ( const fmop_handle_t fmop, size_t num_param );
DYNARDO_FMOP_API fmop_error_t FMOP_getParamLowerBounds ( const fmop_handle_t fmop, double * lower_bounds );
DYNARDO_FMOP_API fmop_error_t FMOP_getParamUpperBounds ( const fmop_handle_t fmop, double * upper_bounds );
DYNARDO_FMOP_API fmop_error_t FMOP_getModelTotalAvgFCoP ( const fmop_handle_t fmop, double * fcop );
DYNARDO_FMOP_API fmop_error_t FMOP_getModelAvgFCoP ( const fmop_handle_t fmop, double * fcops );
DYNARDO_FMOP_API fmop_error_t FMOP_getModelDim ( const fmop_handle_t fmop, size_t * num_mesh_items );
DYNARDO_FMOP_API fmop_error_t FMOP_getDataDim ( const fmop_db_handle_t database, fmop_dataobject_types data_type, size_t * num_mesh_items );
DYNARDO_FMOP_API fmop_error_t FMOP_getDataPointIndices ( fmop_handle_t fmop, unsigned int * part_ids, unsigned int * item_ids );
DYNARDO_FMOP_API fmop_error_t FMOP_getDataPointCoors (fmop_handle_t fmop, char axis, double * coors );

DYNARDO_FMOP_API fmop_error_t FMOP_getNumElementsAtNode ( fmop_handle_t fmop, unsigned int node_idx, unsigned int * num_elements );
DYNARDO_FMOP_API fmop_error_t FMOP_getElementsAtNode ( fmop_handle_t fmop, unsigned int node_idx, unsigned int * elements );
DYNARDO_FMOP_API fmop_error_t FMOP_isNodePartOfBoundary (fmop_handle_t fmop, unsigned int node_idx, unsigned int * is_part_of_boundary);
DYNARDO_FMOP_API fmop_error_t FMOP_getNumNodesAtElement ( fmop_handle_t fmop, unsigned int element_idx, unsigned int * num_nodes );
DYNARDO_FMOP_API fmop_error_t FMOP_getNodesAtElement ( fmop_handle_t fmop, unsigned int element_idx, unsigned int * nodes );
DYNARDO_FMOP_API const char * FMOP_getElementTypeIdent ( fmop_handle_t fmop, unsigned int element_idx );

/*********************************************/

DYNARDO_FMOP_API fmop_error_t FMOP_approxField
    ( const fmop_handle_t fmop, const double * param_values, double * field );

DYNARDO_FMOP_API fmop_error_t FMOP_approxFieldExtrapolate
    ( const fmop_handle_t fmop, const double * param_values, double * field );

#ifdef __cplusplus
}
#endif

#endif // DYNARDO_FMOP_H

// (c) 2017, DYNARDO Austria GmbH (proprietary license)

```