## Example Cases

To illustrate working with B2000++, two typical problems arising in structural mechanics are presented here, a linear static problem and a buckling problem. More example cases are described in the B2000++ Examples Documentation .

## 1. Scordelis-Lo Roof

The Scordelis-Lo roof is a classical test case for linear static analysis named after the authors who first reported it.[2]The test has been proposed as a standard FE test by MacNeal and Harder[3] and it can be found in the NAFEMS test case description. Note that the original units have been converted to SI units.

The structure consist of a concrete cylindrical shell roof supported by rigid diaphragms on both curved sides (see figure below), and it is loaded by a surface traction of 90 per unit area in the negative y-direction. The length of the cylinder is 50, the radius of the cylinder 25, the half opening angle 40°, and the thickness 0.25. The material properties are isotropic, with the elastic modulus of 4.32e9 and the Poisson number set to 0.

The diaphragms are defined such that a simply supported boundary condition results: Displacements in x- and y-directions are suppressed, the suppression of displacements in the z-direction being assumed by the symmetry condition along P4 - P1.

The test compares the linear static solution, specifically the displacement in the y-direction of point P4, against known solutions (the reference solution for point P4 is -0.3024).

The solution of this problem with B2000++ consist of the following steps:

• Create the finite element model with the MDL language describing the problem in a text file.

• Solve the problem by submitting the text file to the B2000++ solver. The solver creates a B2000++ database.

• Examine the results by reading the B2000++ database.

A finite element model for B2000++ is created by describing the problem geometry, creating a finite element mesh, adding boundary conditions, and adding solver instructions. The complete model can be formulated with the B2000++ Model Description Language (MDL). Alternatively, parts of the model, such as the mesh and the boundary conditions, can be produced with an external program and brought in the B2000++ input file.

The Scordelis-Lo roof problem can easily be produced with the B2000++ Model Description Language. The necessary steps will now be explained. All steps result in instructions added with an editor to a single B2000++ input file.

Geometry and mesh: The cylinder geometry and the mesh produced by the geometry can be described with an epatch (element patch). Element patches allow for generating simple building blocks, such as plates, cylinders, etc. The Scordelis-Lo cylindrical roof is described by an epatch of type cylinder, which implies the creation of a surface and a surface mesh:

epatch 1
geometry cylinder
phi1 50.0        # Opening angle of half cylinder
phi2 90.0        # Closing angle of half cylinder
length 25        # Half length of cylinder
eltype Q9.S.MITC # Element type
ne1 4 ne2 4      # N. of elements along sides
thickness 0.25   # Thickness of shell
mid 1            # Reference to material
end 

Note that the epatch must contain the element type (eltype keyword), the number of elements to be generated along each side of the patch (ne1 and ne2 keywords), and material reference (mid keyword). The element type also determines the element shape (Q9) and the type of analysis performed (S), i.e. a deformation analysis. The definition of the epatch is further illustrated in the figure below, with the position of the vertices P1 to P4 and the edges E1 to E4.

Boundary conditions: Since all boundary conditions apply either to edges of the epatch or to the epatch surface they can be generated for all nodes of an edge by referring to the epatch edges which in their turn are automatically generated. Essential boundary conditions (here: displacement constraints) are defined with the ebc command:

ebc 1
value 0 # Values to be assigned to DOF's
# Diaphragm
dof [UX UY] epatch 1 e1 # Supported edge  along line P1 to P2
# Symmetry conditions
dof [UX RY RZ] epatch 1 e2 # Symmetry along line P2 to P3
dof [UZ RX RY] epatch 1 e3 # Symmetry along line P3 to P4
end

The figure below shows the essential boundary conditions as defined above: At each node of the edges a pattern XXXXX is plotted, where the position of X in the pattern designates the the degree of freedom (DOF) to be affected and X taking the values F (free, i.e. unconstrained), L (locked, i.e. constrained to 0), or V (constrained to a value).

The surface pressure loads are applied with the natural boundary condition command nbc. Note that the reference frame for the surface tractions is the branch reference frame and thus has to be specified explicitly with the system option, because the default reference frame is the local reference frame relative to the element surface.

nbc 1 type surface_tractions
system branch # Branch referential (default is local!)
surface_tractions 0 -90 0
epatch 1 f7   # Mid-surface of shell!
end

What remains now to be specified in the input are the definition of the case, comprising the type of analysis and the boundary condition sets to be applied to the case, and the analysis directives, i.e. the cases to be solved for:

case 1
analysis linear
nbc 1
ebc 1
end

case 1
end

The analysis is run with the shell command:

$b2000++ scordelis_lo_roof.mdl which generates the B2000++ database scordelis_lo_roof.b2m. Specifying the log option to the b2000++ command prints a short summary of the steps which the solver performs: $ b2000++ -l info scordelis_lo_roof.mdl
INFO:all:13:57:24.656: Start
INFO:solver.static_linear:13:57:24.658: Start static linear solver
INFO:domain:13:57:24.658: Total number of DOfs: 422.
INFO:solver.static_linear:13:57:24.659: Element matrix assembly
INFO:solver.static_linear:13:57:24.660: Resolve the linear problem
INFO:solver.static_linear:13:57:24.664: Compute gradients and reaction forces
INFO:solver.static_linear:13:57:24.664: End of static linear solver
INFO:all:13:57:24.664: End of execution

Results can be examined with several B2000++ tools, such as the baspl++ post-processor, the simples tools, the b2print text output tools, or the b2browser data browser. We start with the baspl++ viewer to get an image of deformed shape of the structure. The figure below is obtained by launching baspl++ from the shell with the viewer script view.py

$baspl++ -t plot_displacements.py and shows the deformed structure (coloured) and the initial undeformed one (black dashed grid). Please read the file view.py. $ baspl++ -t plot_stresses.py

plots the per element maximum von Mises comparison stress:

\$ baspl++ -t plot_stresses_sampling.py

plots the von Mises comparison stress at each intgration (sampling) point in the form of spheres, where color and shphere size are proportional to the intensity:

[2] A. C: Scordelis, K. S: Lo; Computer analysis of cylindrical shells; J. Amer. Concr. Inst 61, pp. 539-561 (1969).

[3] R. H. MacNeal, R. L. Harder; A proposed standard set of problems to test finite element accuracy; Finite Elements in Analysis and Design 1 (1985) pp. 3-20.