## 2. Small Cable Truss

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
analysis                 nonlinear
ebc                      1
nbc                      3
step_size_init           1.
step_size_min            0.01
max_newton_iterations  100
end
end

# Analysis directive
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 step_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

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
ebc                     1
nbc                     2
step_size_init          1.
step_size_min           0.01
max_newton_iterations 100
end

# Analysis directive

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 step_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 step_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