A truss composed of prestressed cables deforms under its own weight
(simulated here by forces concentrated at the truss free nodes) and under an
additional single force applied at one node. The model has been presented by
Kar et.al. ^{[9]}

The non-linear analysis can be executed in one or several stages
being executed one after the other in the order they are enumerated in the
**case** definition. Each stage references a case specifying
sets of boundary conditions and analysis parameters and the solution will be
incremented to a load or time parameter of 1.0 unless specified otherwise by
the **sfactor** option of the stage.

In the first example (case 1) the analysis is performed in one stage, with all boundary conditions applied simultaneously:

# Boundary conditions nbc set 3 # All forces applied simultaneously dof 3 value 100. nodes 9 value 8. nodes [4 5 8 9] end end # Case definition cases case 1 title 'Dead weight and load together in 1 set' analysis nonlinear increment_control_type load ebc 1 nbc 3 step_size_init 1. step_size_min 0.01 max_newton_iterations 100 end end # Analysis directive adir case 1 end

Case 1 tries to solve for all boundary conditions in one stage, with
all natural boundary conditions contained in one set: Essential boundary
conditions are defined in set 1 (option `ebc `

1), all natural
boundary conditions are defined in natural boundary condition set 3 (option
`nbc 3`

), and the solver will try to solve for the final load
multiplier value of the stage, i.e. (default) 1.0 with s```
tep_size
1.0
```

. In case the step size is too large, steps can become smaller,
but not less that 0.01 (option `step_size_min 0.01`

). The
output from B2000++ is listed below (it is obtained with the B2000+ command
option `-l 'info of solver in cerr'`

):

b2000++ -l 'info of all in err' -adir 'cases=1' b2test.b2m INFO:all:10:45:58.554: Start INFO:solver.static_nonlinear:10:45:58.555: Start static nonlinear solver for case 1 INFO:domain:10:45:58.555: Total number of DOfs: 36. INFO:solver.static_nonlinear:10:45:58.556: Start prediction of increment 1 of stage id 1 for time 0. INFO:solver.static_nonlinear:10:45:58.591: Start correction of increment 1 of stage id 1 for time 1. INFO:solver.static_nonlinear:10:45:58.595: End static nonlinear analysis for case 1 with success. INFO:all:10:45:58.595: End of execution

Note that the problem converges with one step.

In the second example (case 2) the analysis is again performed in one stage, with natural boundary conditions applied simultaneously, but enumerated separately:

# Boundary conditions nbc 1 # Own weight dof FZ value 8. nodes [4 5 8 9] end nbc 2 # Single force dof FZ value 100. nodes 9 end # Case definition case 2 title 'Own weight and load together in 2 sets' analysis nonlinear ebc 1 nbc 1 # Own weight nbc 2 # Single force step_size_init 1. step_size_min 0.01 end # Analysis directive adir case 2 end

In the third example (case 3) the analysis is performed in two stages, one for the own weight (case 31) and one for the load (case32):

# Boundary conditions nbc set 1 # Own weight dof 3 value 8. nodes [4 5 8 9] end set 2 # Single force dof 3 value 100. nodes 9 end end # Case definition case 3 title 'Stage 1 (own weight) and stage 2 (load)' analysis nonlinear stage 31 stage 32 max_newton_iterations 100 end stage 31 title 'Stage 1 (own weight) and stage 2 (load)' ebc 1 nbc 1 step_size_init 1. step_size_min 0.01 max_newton_iterations 100 end stage 32 title 'Stage 2 (load)' ebc 1 nbc 2 step_size_init 1. step_size_min 0.01 max_newton_iterations 100 end # Analysis directive adir case 3 end

**adir** requires to solve for case 3 which, in its
turn, refers to 2 other cases, i.e. case 31 and case 31, which are solved
for in the order they are enumerated. Again, essential boundary conditions
are defined in set 1 (option `ebc `

1) which has to specified
for each stage! The stage with the own weight, i.e. case 31, refers to the
natural boundary condition set 31 (option `nbc 31`

), and the
solver will try to solve for the final load multiplier value of that stage,
i.e. (default) 1.0 with s`tep_size 1.0`

. In case the step
size is too large, steps can become smaller, but not less that 0.01 (option
`step_size_min 0.01`

). The solver then continues with the
next stage, i.e. case 32, which refers to the natural boundary condition set
32 (option `nbc 32`

), and the solver will try to solve for
the final load multiplier value of that stage, i.e. (default) 1.0 with
s`tep_size 1.0`

.

All 3 cases give the same result (see printed output below).

Deformations can be viewed with baspl++,
the viewer script `view.py`

producing the deformation
plot with the cable stresses shown below (case 1). To run the viewer from
the shell, type

baspl++ -t view.py

or call
the **make** file target
`plot`

:

make plot

In addition, node displacements of all cases can be printed with
the print utility **b2print** run from the
shell:

b2print --case=1 --cycle=1 cable.b2m

`--case`

specifying the case, `--cycle`

the (highest) computational cycle for the case, and
`cable.b2m`

the model database, producing the
output

Solution set DISP, case 1, cycle 1, branch 1 Node DOF01 DOF02 DOF03 1 0 0 0 2 0 0 0 3 0 0 0 4 -0.33 -0.33 0.831 5 -0.529 3.29 -2.7 6 0 0 0 7 0 0 0 8 3.29 -0.529 -2.7 9 3.65 3.65 16.5 10 0 0 0 11 0 0 0 12 0 0 0

for case1, and

b2print --case=2 --cycle=1 cable.b2m

Solution set DISP, case 2, cycle 1, branch 1 Node DOF01 DOF02 DOF03 1 0 0 0 2 0 0 0 3 0 0 0 4 -0.33 -0.33 0.831 5 -0.529 3.29 -2.7 6 0 0 0 7 0 0 0 8 3.29 -0.529 -2.7 9 3.65 3.65 16.5 10 0 0 0 11 0 0 0 12 0 0 0

for case 2, and

b2print --case=3 --cycle=6 cable.b2m

Solution set DISP, case 3, cycle 6, branch 1 Node DOF01 DOF02 DOF03 1 0 0 0 2 0 0 0 3 0 0 0 4 -0.331 -0.331 0.832 5 -0.529 3.29 -2.7 6 0 0 0 7 0 0 0 8 3.29 -0.529 -2.7 9 3.65 3.65 16.5 10 0 0 0 11 0 0 0 12 0 0 0

for case 3.

^{[9] }A. Kar et.al.; Convergence in highly nonlinear cable net problems;
Journal of the Structural Division ACE, ST, pp 321-334, March
1973