# 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.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()
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.