# 1. Introduction

**Simples** consists of a collection of Python modules and
classes for accessing and manipulating **B2000++**
databases. In addition, it provides a FE mesh modeling module and
means for generating B2000++ input files from this module.

In its present version, *Simples* is closely linked to the
**B2000++** FE analysis system. The *Simples* modules extract,
manipulate, and view Finite Element based calculations performed with
the **B2000++** FE analysis program. *Simples* is programmed
with the **Python** programming language, as is the API.

*Simples* is intended to replace the data extraction functions of
*baspl++*, since *baspl++* does not work with *Python 3*.

**Example 1:** Extract time step versus displacement function values
of a viscoelastic test specimen loaded with a constant pulling force
applied a time \(t=0\) and kept constant for the duration of the
time integration.

Start by launching a Python shell and by importing the *Simples*
modules and opening the `model database`

of the
B2000 model `visco`

:

```
import simples as si
model = si.Model('visco')
```

Extract the time (step) values (method
`get_steps()`

):

```
x = model.get_steps()
```

Extract the values of the displacement: (method
`get_dof_value_of_steps()`

):

```
y = model.get_dof_value_of_steps('displacements', 3, 1)
```

Generate the diagram with the `Graph2`

class
and save it in the file `output.png`

:

```
g = si.Graph2()
g.add_line(x, y)
g.save('output.svg')
```

**Example 2:** Extract the load versus end-shortening function values
of a post-buckling analysis of a compressed cylindrical panel and
generate the diagram in the file `output.png`

:

```
import simples as si
# Open model 'panel'
m = si.Model('panel')
# Get load steps and sum of reaction forces of each load step
x = m.get_steps()
y = m.get_reaction_force_of_steps(what='ebc', eid=2)
# Plot curve: Create a graph, add the curve, and create figure
g=si.Graph2()
line=g.add_line(x, y)
g.axes_label_x = 'Stroke [mm]'
g.axes_label_y = 'Compression force [N]'
g.save('output.png')
```

The following data extraction and data manipulation modules are available:

`Model`

: The*Simples*base class opens a model database and loads all data except solutions. A wide range of functions allow for accessing and processing of data.`NodeField`

: Loads and accesses node (DOF) fields.`ElementField`

: Loads and accesses node (DOF) fields.`SamplingPointField`

: Loads and accesses Sampling Point Fields, i.e. fields defined element wise, at specific sampling (integration) points. Typically, strains, stresses, or failure criteria are stored in Sampling Point Fields.`BeamStressField`

: A class for computing beam element stresses. Beam stresses are not contained in Sampling Point Fields, because beam stresses are not computed by*B2000++*:*B2000++*only computes beam section forces and moments.`BeamCrossSection`

: The beam cross section class for computing and viewing beam cross sections, specifically thin sections and a range of predefined section types.Data Formatters: Extracts database objects, such as fields, and formats them.

Graphs: A basic graph plotting class that makes use of

*Matplotlib*.Utility modules and functions.