Comments (1)
Okay, I think I'm pinning this down finally.
Key fact: In the above script, if instead of setting the hinge at node 2 of element 1, you set it at node 1 of element 2, then the asymmetry of the results exactly switches. (i.e. higher reaction on the right node rather than left node)
Digging in: When a hinge is added to a specific element, then the constitutive matrix for that element is modified to remove stiffness due to that end of the beam (effectively creating a constitutive matrix for a cantilevered beam). It does nothing, however, for the neighbouring element, which still has a constitutive matrix that assumes stiffnesses for a fixed beam. That means that when the global stiffness matrix is assembled, the free rotation of node 2 is incorrectly taken as affecting the moment and shear of the unreleased neighbouring element.
The Solution: I think we need to modify the ensure_single_hinge()
function to, rather than ensuring at least one element has a moment connection to a node, instead ensuring that every element is hinged and adding a rotation-only support at the affected node (to prevent a singular stiffness matrix). I'll work on that.
This is the correct solution, if I set a hinge on both elements and then manually delete the rotational dof for node 2 from the system_displacement_vector (effectively adding a rotation-only support there):
And for reference, these are the incorrect results from the above script:
from anastruct.
Related Issues (20)
- solve() error HOT 3
- Load Combination Bending Moment Diagram HOT 2
- Enriching the documentation HOT 6
- Why both SciPy and NumPy? (edit: help wanted to work around an upstream Numpy bug!) HOT 3
- Add an output for elemental _displacements_
- Element not rotating right when using springs at end of elements
- Overhanging members fail constitutive matrix
- Add meaningful error handling for non-integer node_ids (was: Solve error) HOT 3
- Overlaying displacement plots HOT 1
- find_node_id function error HOT 2
- Point loads on elements
- Partial distributed q_load on elements
- Elastic ground
- Load cases not working HOT 8
- sectionbase data files missing
- Error when declaring supports: AttributeError: module 'collections' has no attribute 'Iterable' HOT 2
- Obtaining forces values HOT 1
- Make insert_node() not forget supports (was: Point load element) HOT 2
- incorrect bending moment in simple frame with point load HOT 1
- Bug with ss.q_load() when specifying a direction HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from anastruct.