Release Notes

Version 4.4

Version 4.4 is now built with the cmake build system. See explanations in the relevant cmake files CmakeLists.txt and comments in git. All packages, except for baspl++ and the fluid-structure coupling packages, are now built with cmake.

Version 4.4.8 (2023-05-03)


  • A problem with the C beam section properties generation in the b2ip++ code has been corrected.

  • The restart capability of the B2000++ nonlinear static solver has been restored.

Code and Libraries

  • The handling of MPI in B2000++ has been revised.

  • Class BeamCrossSectionRod in file util/b2beam_cross_sections.H is not active because properties (property option) are not (yet) supported by Rx (rod) elements. Rod elements require elements options mid and area instead. Pertains to


  • b2ip++: Issues a warning if no cases option has been specified in the MDL adir block and b2ip++ does not find the CASES key in the descriptor of the ADIR dataset. As a consequence, the B2000++ solver now stops with an error message if no CASES are defined and no -adir cases= option was specified on the B2000++ solver command line when launching the solver.

    The case option temperature_field <case> <cycle> for thermo-elastic coupling has been added.

Examples and verification

  • Updated some Simples examples and verification scripts, because the Simples API of the Element class has changed slightly: Element.conn (external element connectivity) and Element.conn_i (internal element connectivity) instead of former Element.conni (internal element connectivity).

  • Added a one-way thermo-elastic coupling example examples/coupled/transient_heat_deformation. Added computation of gradients for all heat tests.


Warning: The system tests of this version should be run with Simples version 2.3.1+.

  • All test case description files description.rst have been updated and adapted to the revised documentation system. All test case figure file names have been modified to fit in the revised documentation system.


  • The generation of B2000++ examples and verification documentation with Sphinx has been completely revised, because of a conceptual problem with the test case figures (conflicting file names). The sphinx/CMakeLists.txt file contains a short description of the new documentation generation.

  • The examples are now in a separate document b2examples, see sphinx/b2examples. Note: before generating the new documentation you must install the latest smrconfig package from the git repository.

Version 4.4.7 (2022-09-16)

Updated B2000++ documentation, improved test case documentation.

Version 4.4.6 (2022-06-09)

Updated B2000++ documentation, specifically the test case documentation, the new revised b2programming manual, and a first version of the new B2000++ API Manual.

Fixed the –valgrind problem: The --valgrind option did not work anymore because the valgrind-python.supp file was not installed and because there was an error in

Updated b2ip++ code: Added object factory for registration of user elements.

Cleaned up b2test python module, removed unused old code, documented the module.

Version 4.4.5 (2022-02-23)

Specification of MDL nodeset, elementset, faceset, and edgeset now have the sorted or unsorted parameter: sorted will remove all duplicate entries and sort the list in ascending order, while unsorted (default) keeps the list as specified. Most often a set will be unsorted, because the order in which nodes or elements are specified is important. However, for certain coupling operations sorted sets are required. See the Component Mode Synthesis example input files q4.mdl and q4_local_model.mdl.

The sorted or unsorted parameter is stored in the descriptor of the relevant datasets.

Tests have been updated for the sorted parameter of the node and element set object.

B2000++ unit tests (b2testrunner): Python 3 does not support implicit relative imports within packages. Therefore all files that specify imports of test cases were modified as follows (example):

import scordelis_lo_roof


from . import scordelis_lo_roof

Version 4.4.4 (2021-12-07)

Various updates of verification and example test cases in connection with Simples.

The application b2testrunner is now installed wit the wrapper for ensuring correct Python modules.

Small updates to installation (cmake): Python main programs now installed with cmake and wrapper.

Version 4.4.3

The MDL node and element list definitions are now deprecated in favor of set, because list and set are the same and they are not processed in a different way by B2000++. The name set seems more appropriate. Note: B2000++ node and element lists and sets have nothing to do with Python list and set objects.

Equivalent of MDL -list commands

Old (-list)

New (-set)









Version 4.4.2

Linear pre-buckling and vibration analysis: The number of requested eigenmodes NMODES must be greater or equal to 2. NMODES=1 will fail in the eigenvalue solver. A check in them MDL is made and NMODES=1 will be changed to NMODES=2.

Version 4.3

Version 4.3 is a reworked version for executing Python 3 code.

  • Rod Section Stresses and Strains: The following datasets have been renamed, because their content relates to specific element types:



    Beam elements in the current version do not produce stresses and strains. These have to be computed in a post-processing step with the the Simples BeamStressField class.

    The Sample Field datasets FORCE_SECTION_BEAM and MOMENT_SECTION_BEAM store the beam forces and moments one by on in the order the beam elements are defined. The mapping between the beam external element number and the entry in the Sample Field dataset is not yet stored on the database and must be computed by a post-processing program. Simples does so, see the “Gerbertraeger” example.

  • Rod Stresses and Strains: The following datasets have been renamed, because their content relates to specific element types:



    The Sample Field datasets STRESS_SECTION_ROD and STRAIN_SECTION_ROD store stresses and strains one by on in the order the rod elements are defined. The mapping between the rod external element number and the entry in the Sample Field dataset is not yet stored on the database and must be computed by a post-processing program. Simples does so, see the “Gerbertraeger” example.

  • b2ip++: Added tests for beam section properties input. b2ip++ now produces warnings if beam section properties are not correct.

  • b2ip++: Error messages can produce very long output lines, because the mdl file name is expanded. Problem partially solved.

  • All code: Started to improve error messages.

  • Changed b2test omode argument to mode for consistency with other programs. Re-introduced write enabled b2test databases, because otherwise some old tests do not work. This problem should be addressed: By default the test database should never be opened in write mode by default.

  • The directory tools has a new directory structure.

  • Make files have been updated (still generated by autotools).

  • The examples documentation has been integrated in the B2000++ Verification document. The separate test case directory examples has been removed and all example test cases are now stored under the directory <prefix>/share/b2000++/verification.

  • A new option -P prefix has been added to the b2testrunner application, because some new tests now require the B2000++ prefix directory, because they compile test programs with C++ code.

  • Verification and test cases: They have been moved to a separate package b2000pp_data, because their distribution with the binary code packages unnecessarily duplicates the information, because the data are independent of the Operation System.

    Due to the conversion to Python 3, the test cases had to be split. The Python 2 test cases are in the directory test_cases, while the Python3 test cases are located in the new directories verification and examples.

  • All documentation is now created with the Sphinx. The formatted documentation can be consulted here.

  • The examples documentation has been integrated in the B2000++ Verification document. The examples directory examples is now stored under the directory b2000pp_data/examples.

Known Problems

B2000++ Input Processor

Error messages can produce very long output lines, because the mdl file name is expanded. This issue has been addressed and partially solved.

A comment character “#” as last character (without a newline) in an input file leads to a syntax error.


Linear pre-buckling and vibration analysis: If the number of requested eigenmodes NMODES is set to 1 the computation of the eigenvector can fail in some cases. Set NMODES to 2 or more in such cases.

The Beam Cross Section Solver exhibits problems with the shear center.

Iterative Solvers: The gmm iterative solvers do not work in the present version of B2000++, because the gmm API has changed. We recommend not to install the gmm package.

Adding linear constraints (LINC) to nodes that couple 2 epatch meshes does not work, i.e the additional LINC is ignored. Remedy: Do not make use of epatch in this case. Create the mesh with a preprocessor instead.


Bx.S.RS beam elements: The shear center defined by cross-section properties Bx.S.RS is not taken into account for the Bx.S.RS, causing extra bending.

Qx.S.TL.2D Element: The element is singular when numbered clock-wise.

Python 2 Issues

Some test cases involving baspl++ are still not converted to Python3 and Simples.

B2000++ Configuration

The b2set_blas_library utility does not work under Ubuntu. b2set_blas_library allows for selecting various BLAS implementations. A replacement is under development.


baspl++ still only works with Python2 and is compiled and

distributed with the Python2 version of the SMR packages.

Viewing of sample point fields, specifically derived values, such as von Mises stresses or failure indices works as long as elements of the same type, such as shell or solid elements, are involved. In the presence of mixed meshes, such as beam/rod and shell meshes, viewing of von Mises stresses or failure indices does not work or is only possible with some work-around, such as defining several parts, one for beams, one for rods, and one for shells.