Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Staircase Design with framat #3

Open
HoneyBadger919 opened this issue Nov 14, 2021 · 1 comment
Open

Staircase Design with framat #3

HoneyBadger919 opened this issue Nov 14, 2021 · 1 comment

Comments

@HoneyBadger919
Copy link

Hi folks,

I'm trying to use the framat code to model a flight of stairs through a doubly clamped 3D beam but I continue to get wrong results. It may be because of the cross-section orientation property which I interpreted the same way it works in Abaqus.
As you can see from the picture I get non-zero results just in the vertical direction along which the distributed line load is applied, and for bending moments around the Y axis of the cross-section

output

staircase

I attach here the code I implemented modifying "example_model2.py".

`from framat import Model

model = Model()

#Units MPa, N, mm

mat = model.add_feature('material', uid='cls')
mat.set('E', 30000)
mat.set('G', 12500)
mat.set('rho', 0.01)

#Rectangular cross-section 690 mm x 125 mm
cs = model.add_feature('cross_section', uid='scala')
cs.set('A', 86250)
cs.set('Iy', 1.12305e8)
cs.set('Iz', 34.2197e8)
cs.set('J', 4.49219e8)

beam = model.add_feature('beam')
beam.add('node', [0.0, 0, 0], uid='a')
beam.add('node', [1010, 0, 714], uid='b')
beam.add('node', [1308, 171, 1129], uid='c')
beam.add('node', [1308, 519, 1988], uid='d')
beam.add('node', [1010, 691, 2403], uid='e')
beam.add('node', [200, 691, 2540], uid='f')

beam.set('nelem', 20)

beam.add('material', {'from': 'a', 'to': 'f', 'uid': 'cls'})
beam.add('cross_section', {'from': 'a', 'to': 'f','uid': 'scala'})
beam.add('orientation', {'from': 'a', 'to': 'b', 'up': [0, 1, 0]})
beam.add('orientation', {'from': 'b', 'to': 'c', 'up': [-0.57464, 1, 0]})
beam.add('orientation', {'from': 'c', 'to': 'd', 'up': [1, 0, 0]})
beam.add('orientation', {'from': 'd', 'to': 'e', 'up': [1, 1.4136, 0]})
beam.add('orientation', {'from': 'e', 'to': 'f', 'up': [0, 1, 0]})

beam.add('distr_load', {'from': 'a', 'to': 'b', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'b', 'to': 'c', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'c', 'to': 'd', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'd', 'to': 'e', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'e', 'to': 'f', 'load': [0, 0, -14.34, 0, 0, 0]})

bc = model.set_feature('bc')
bc.add('fix', {'node': 'a', 'fix': ['all']})
bc.add('fix', {'node': 'f', 'fix': ['all']})

pp = model.set_feature('post_proc')
pp.set('plot_settings', {'show': True})
pp.add('plot', ['undeformed', 'deformed', 'node_uids', 'nodes', 'forces'])

results = model.run()

load_vector = results.get('tensors').get('comp:F')
print(load_vector)`

Let me know if you can help me clarify this
Thanks!

@HoneyBadger919
Copy link
Author

I corrected some coordinates of the problem and I specified for each branch the direction of the z-axis of the cross-section in the orientation properties. The output is still wrong anyhow

`from framat import Model

model = Model()

=== UNIT SYSTEM ===

MPa, N, mm

mat = model.add_feature('material', uid='cls')
mat.set('E', 30000)
mat.set('G', 12500)
mat.set('rho', 0.001)

#Rectangular cross-section 690 mm x 125 mm
cs = model.add_feature('cross_section', uid='scala')
cs.set('A', 86250)
cs.set('Iy', 1.12305e8)
cs.set('Iz', 34.2197e8)
cs.set('J', 4.49219e8)

beam = model.add_feature('beam')
beam.add('node', [0.0, 0, 0], uid='a')
beam.add('node', [1010, 0, 714], uid='b')
beam.add('node', [1308, 171, 1094], uid='c')
beam.add('node', [1308, 519, 1663], uid='d')
beam.add('node', [1010, 691, 2043], uid='e')
beam.add('node', [200, 691, 2540], uid='f')

beam.set('nelem', 20)

beam.add('material', {'from': 'a', 'to': 'f', 'uid': 'cls'})
beam.add('cross_section', {'from': 'a', 'to': 'f','uid': 'scala'})
beam.add('orientation', {'from': 'a', 'to': 'b', 'up': [-0.70674, 0, 1]})
beam.add('orientation', {'from': 'b', 'to': 'c', 'up': [-0.74153, -0.426121, 0.773804]})
beam.add('orientation', {'from': 'c', 'to': 'd', 'up': [0, -1.63705, 1]})
beam.add('orientation', {'from': 'd', 'to': 'e', 'up': [1.28376, -0.74114, 1.34274]})
beam.add('orientation', {'from': 'e', 'to': 'f', 'up': [1, 0, 1.63075]})

beam.add('distr_load', {'from': 'a', 'to': 'b', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'b', 'to': 'c', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'c', 'to': 'd', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'd', 'to': 'e', 'load': [0, 0, -14.34, 0, 0, 0]})
beam.add('distr_load', {'from': 'e', 'to': 'f', 'load': [0, 0, -14.34, 0, 0, 0]})

===== BOUNDARY CONDITIONS =====

bc = model.set_feature('bc')
bc.add('fix', {'node': 'a', 'fix': ['all']})
bc.add('fix', {'node': 'f', 'fix': ['all']})

pp = model.set_feature('post_proc')
pp.set('plot_settings', {'show': True})
pp.add('plot', ['undeformed', 'deformed', 'node_uids', 'nodes', 'forces', 'global_axes','beam_index','bc'])

results = model.run()

load_vector = results.get('tensors').get('comp:F')
print(load_vector)`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant