Note
Go to the end to download the full example code.
Beam Lattice Structure using beam model with geometric nonlinearities

/home/runner/work/fedoo/fedoo/fedoo/core/mesh.py:970: PyVistaDeprecationWarning:
../../fedoo/core/mesh.py:970: Argument 'binary' must be passed as a keyword argument to function 'DataObject.save'.
From version 0.50, passing this as a positional argument will result in a TypeError.
self.to_pyvista().save(filename, binary)
Iter 1 - Time: 0.02000 - dt 0.02000 - NR iter: 1 - Err: 0.00057
Iter 2 - Time: 0.04000 - dt 0.02500 - NR iter: 1 - Err: 0.00029
Iter 3 - Time: 0.06000 - dt 0.02500 - NR iter: 1 - Err: 0.00019
Iter 4 - Time: 0.08000 - dt 0.02500 - NR iter: 1 - Err: 0.00014
Iter 5 - Time: 0.10000 - dt 0.02500 - NR iter: 1 - Err: 0.00011
Iter 6 - Time: 0.12000 - dt 0.02500 - NR iter: 1 - Err: 0.00009
Iter 7 - Time: 0.14000 - dt 0.02500 - NR iter: 1 - Err: 0.00008
Iter 8 - Time: 0.16000 - dt 0.02500 - NR iter: 1 - Err: 0.00007
Iter 9 - Time: 0.18000 - dt 0.02500 - NR iter: 1 - Err: 0.00006
Iter 10 - Time: 0.20000 - dt 0.02500 - NR iter: 1 - Err: 0.00006
Iter 11 - Time: 0.22000 - dt 0.02500 - NR iter: 1 - Err: 0.00005
Iter 12 - Time: 0.24000 - dt 0.02500 - NR iter: 1 - Err: 0.00005
Iter 13 - Time: 0.26000 - dt 0.02500 - NR iter: 1 - Err: 0.00004
Iter 14 - Time: 0.28000 - dt 0.02500 - NR iter: 1 - Err: 0.00004
Iter 15 - Time: 0.30000 - dt 0.02500 - NR iter: 1 - Err: 0.00004
Iter 16 - Time: 0.32000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 17 - Time: 0.34000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 18 - Time: 0.36000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 19 - Time: 0.38000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 20 - Time: 0.40000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 21 - Time: 0.42000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 22 - Time: 0.44000 - dt 0.02500 - NR iter: 1 - Err: 0.00003
Iter 23 - Time: 0.46000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 24 - Time: 0.48000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 25 - Time: 0.50000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 26 - Time: 0.52000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 27 - Time: 0.54000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 28 - Time: 0.56000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 29 - Time: 0.58000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 30 - Time: 0.60000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 31 - Time: 0.62000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 32 - Time: 0.64000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 33 - Time: 0.66000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 34 - Time: 0.68000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 35 - Time: 0.70000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 36 - Time: 0.72000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 37 - Time: 0.74000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 38 - Time: 0.76000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 39 - Time: 0.78000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 40 - Time: 0.80000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 41 - Time: 0.82000 - dt 0.02500 - NR iter: 1 - Err: 0.00002
Iter 42 - Time: 0.84000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 43 - Time: 0.86000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 44 - Time: 0.88000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 45 - Time: 0.90000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 46 - Time: 0.92000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 47 - Time: 0.94000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 48 - Time: 0.96000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 49 - Time: 0.98000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
Iter 50 - Time: 1.00000 - dt 0.02500 - NR iter: 1 - Err: 0.00001
import fedoo as fd
import numpy as np
E = 1e5
nu = 0.3
radius = 1
k = 0.9 # reduce section. k=0 to neglect the shear effect
n = 6 # n_nodes
ndim = 3
if ndim == 2:
fd.ModelingSpace("2D")
else:
fd.ModelingSpace("3D")
material = fd.constitutivelaw.ElasticIsotrop(E, nu)
beam_props = fd.constitutivelaw.BeamCircular(material, radius, k=k)
# Extract a Lattice Mesh from a 3D mesh
if ndim == 2:
mesh = fd.mesh.extract_edges(
fd.mesh.rectangle_mesh(n, n, x_max=100, y_max=100, ndim=ndim)
)
else:
mesh = fd.mesh.extract_edges(
fd.mesh.box_mesh(n, n, n, x_max=100, y_max=100, z_max=100)
)
nodes_left = mesh.find_nodes("X", mesh.bounding_box.xmin)
nodes_right = mesh.find_nodes("X", mesh.bounding_box.xmax)
wf = fd.weakform.BeamEquilibrium(beam_props)
assembly = fd.Assembly.create(wf, mesh)
pb = fd.problem.NonLinear(assembly, nlgeom=True)
results = pb.add_output("test", assembly, ["Disp", "Rot", "BeamStress", "BeamStrain"])
pb.bc.add("Dirichlet", nodes_left, ["Disp", "Rot"], 0)
pb.bc.add("Dirichlet", nodes_right, "DispY", -50)
pb.nlsolve(dt=0.02, update_dt=True, print_info=1)
# Post treatment
results = pb.get_results(assembly, ["Disp", "Rot", "BeamStress"])
results.plot("BeamStress", 0)
Total running time of the script: (0 minutes 3.727 seconds)