Self-weight in SubDyn
The current computation of self-weight in SubDyn results in unexpected weight contributions at the node locations.
To illustrate this, one easy model in SubDyn is used. The system is a straight cantilever beam defined by 4 joints, 3 members and NDiv = 2. This results in 6 beams as follows:
The beam cross-sectional properties are as follows: Hollow cylinder D = 3 m t = 0.1 m
Material properties: E = 210E9 N/m^2 G = 8.077E10 N/m^2 ρ = 7,860 kg/m^3
The SubDyn input file is attached for reference (SubDyn_easy_tower_3_beams.txt) and it can be used with the SubDyn standalone version for verification or debugging purposes.
The mass of the system can be computed as follows: m = ρV = 7,86030*(π*((3/2)^2-((3-2*0.1)/2)^2)) = 214,828 kg (good agreement with SubDyn summary file)
Based on this mass, it is possible to compute the theoretical vertical force (Fz corresponding to the weight) when applying the gravity acceleration (9.80665 m/s^2). These theoretical values compared against the ones returned by SubDyn as follows:
As it can be observed, all results due to the self-weight obtained from the beams are different than the expected ones. It is also important to note that if the user defines NDiv = 1 (i.e., no sub-elements per member), the outputs at each end of the beam will be the same (i.e., M1N2 = M2N1), making this issue worse.
@luwang00, can you take a look at this?
I believe the observed behavior is a consequence of how SubDyn applies self-weight to the structure. During initialization, the force and moment due to the self-weight of each element are computed and evenly assigned to the two end nodes of each element. As a result, the self weight is concentrated at the nodes, and the element itself is left "weightless". This explains the discontinuity of member axial force across each node. This also explains why M1N1 = M1N2 when NDiv = 1 since the element itself is effectively weightless.
In the short term, increasing NDiv can help with this issue. The jump in member load across a node should decrease with higher NDiv, and the reported member load on either side of a node should approach the expected value. A possible long term solution would be to change SubDyn to only output loads at element midpoints instead of at the end nodes.