Comments (8)
Or as another thought, each quad could have a local axis vector defined (or use an auxiliary node) that gets projected onto the plane of the quad to form the quad's local X axis instead of just using the node3->node4 vector as is currently done. I assume the 3-4 vector is just an arbitrary selection anyway?
I'm happy to have a go at implementing if you think it could work...
from pynite.
I think itโs pretty simple. I believe you just take the quad results in each direction and multiply them by the appropriate direction cosines for the quad. The direction cosines are the first 3 rows (dircosX, dircosY, dircosZ) and first 3 columns of the transformation matrix, T, which PyNite already can calculate for you. Iโd be happy to have your help.
from pynite.
I've decided to take a stab at this. It's a feature I've been meaning to get to. I'll let you know what I come up with.
from pynite.
Thanks, it looks like my attempt failed. It seems to work OK for rectangular elements which I had originally tested it with, but results diverge pretty quickly with skewed quads.
Below are two deflection plots, both using the custom local axes method from my pull request. The rectangular(ish) quad plot looks quite good, the other with skewed quads is incorrect. Both deflection plots look OK with the previous local axis system, but obviously the quad moment and shear plots are not correct for the skewed quad example.
from pynite.
I've created a new branch global_plate_stress
for development of this feature. Feel free to check out and test out that branch and see if it's behaving as you expect. It seems to be working, but I'd like to double check my "theory" behind the stress transformation before publishing it to the main branch. I have only done it for shears (QX and QY) and moments (MX and MY), not displacements yet.
from pynite.
OK I've tested it a bit and am getting some odd results. Below is the same example as above, but with MX moments:
This is another test I was using to test my implementation. It's a slab supported only at its corners with a uniform area load applied to all quads. The two copies to the right are rotated 45 and 90 degrees with respect to the slab on the far left. It looks better than the above example, but the sign of the moment seems to be inverted.
I also saw this issue when i tried to implement this method last week.
More to the point, I dont really understand your implementation. What would it mean to get the global Mx moment from a quad whos normal vector is parallel to the global X axis? You're trying to return plate bending moments about an axis that may not lie within the plane of the quad. I'm sure it's mathematically possible, but feels weird.
Most commercial applications seem to allow you to define custom local axis orientations for each quad, then all results are reported about those local axes. This is the reason I tried to take a similar approach with my implementation.
from pynite.
Just having a look at my implementation again. It looks like the only issue was that i didnt adjust the T matrix calculation to use the new local axis vectors. Seems to be working well now.
I'll update the pull request. Have a look and see what you think.
from pynite.
I often use global MX, MY, and MZ. If you have plates in the mesh with non-aligned local axes, it will resolve the forces to be rendered to the same axis for all plates. As long as your mesh is parallel to one of the 3 primary planes (XY, XZ, and YZ) the moments about 2 of the axes will be the primary moments you're interested in. If you choose to see results for an axis that is normal to the surface, you will will get zeros as your moment values.
from pynite.
Related Issues (20)
- RuntimeWarning: divide by zero encountered in double_scalars HOT 2
- Displacement Memory Growth & Purge Option + Disk Caching of Displacements HOT 3
- P-Delta Member Internal Results Incorrect HOT 1
- PyNite Import Issue HOT 3
- Tension-only members HOT 3
- Issue initalising PhysMember HOT 3
- Variable cross-section along member HOT 1
- Issue initalising PhysMember second issue with variable position HOT 1
- Spring Supports: reactions = 2x input forces HOT 2
- Help with unit HOT 2
- Speed Improvement HOT 1
- Visualize Local Coordinate Systems on Members in Finite Element Model Visualization HOT 3
- Possible Skewed Quad Error HOT 5
- Type Hints
- Release on conda-forge
- Moving to v1.0.0 w/ API consistency HOT 18
- Idea: Move visualization modules to separate packages HOT 1
- Inactive tension_only member still takes load HOT 8
- Itemset - compatibility issue with APIs in Numpy 2.1. 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 pynite.