TensorMechanics force boundary condition #16104
-
Hi there, I am working on a TensorMechanics problem using MOOSE and am trying to implement a force boundary condition. To check I am implementing it correctly I am using a simple beam theory set-up and looking through the example I have tried both a NodalKernels/ConstantRate and NodalKernels/UserForcingFunctionNodalKernal with a transient ramp to the desired load. Both of these results in a displacement two orders of magnitude greater than expected (they are consistent with each other in their answer), so am I using the correct object? and secondly am I using it correctly? Many Thanks in Advance, Aleks |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 3 replies
-
I will need to see your input file to understand your issue and then I am sure we can resolve it swiftly. Please provide a link to your input file or attach it here by dragging it into the comment box (you might have to zip it if GitHub says "We don't support that file type"), or just copy and paste the code here. |
Beta Was this translation helpful? Give feedback.
-
Please find input file attached. Note this uses small strain formulation as that is what the analytical validation case is based on. The expected displacement is 0.01m at the forced end. |
Beta Was this translation helpful? Give feedback.
-
@ajdubas what is it exactly you are trying to model here? A cantilevered steel beam with a concentrated transverse force of -10 kN at the free-end, yes? If so, what are you trying to accomplish by applying 10 N in the axial direction here?
I was thinking you were working with beam elements, so that's why I said |
Beta Was this translation helpful? Give feedback.
-
Yes, that is the solution I am trying to replicate - or more generally work out how to accurately apply a force boundary condition to solid elements. My understanding of the PiecewiseLinear function ( https://mooseframework.inl.gov/source/functions/PiecewiseLinear.html ) is that the x array corresponds to time, therefore the force should ramp from 0.0N at 0.0s to -10.0kN at 10.0s if I have specified this function correctly. |
Beta Was this translation helpful? Give feedback.
-
@ajdubas That's right, my mistake. By default, the ordinates for The reason for the large displacements is a vastly over-sized force. Keep in mind that Note that simply dividing the total force by the number of nodes and applying exactly this value to every single node isn't quite how we think of concentrated forces on beams. Since each node has a different tributary area, as we like to call it in Civil Engineering, then the force applied at each node should be proportional to this, if it were truly uniformly distributed over the cross-section (which is the assumption of beam theory). I have a very rough I've made some edits to your input file here: https://github.com/crswong888/scorpion/blob/master/inputs/users/structural_transient_force_3D.i It currently uses my object for point forces in 3D, so you will need those files. However, I left your old blocks commented out and also updated the force magnitude to the value you'll want in those. Lastly, I changed your executioner to something that performs at least twice as well. Enjoy :) |
Beta Was this translation helpful? Give feedback.
@ajdubas That's right, my mistake. By default, the ordinates for
PiecewiseLinear
correspond to time (for some reason I thought there was at
parameter, but all of these details are worked out with theaxis
parameter).The reason for the large displacements is a vastly over-sized force. Keep in mind that
UserForcingFunctionNodalKernel
will apply the full magnitude of the specified forcing function to every single node on the specified boundary. Therefore, the total magnitude of the force you are applying is -10000 N / node * 340 nodes = 3.4e6 N. A force that bears more semblance to the concentrated transverse beam force you want would be roughly -29.4118 N / node. So just use this number i…