I am trying to implement a new element into OpenSees. It's behaviour also depends on the ground acceleration, so I would like to know where the current ground acceleration values are stored during ground motion analysis. I was browsing through the code but I couldn't find the variables and the appropriate methods to retrieve their values. There is a getAccel() method in the groundMotion class, but it only returns a double, so this can't be it (I guess ground acceleration should be a vector, containing the acceleration values in all directions). If a method to retrieve the values in question exists, will I be able to use it within an element subclass?
fmk:
Nope .. ground motion is for a single direction only, hence the getDouble() .. also depends on type of load pattern used for dynamic analysis, multi-support or uniform .. if multi-support the displ are set at the nodes, i.e. no accel set at nodes .. if uniforn there is a call to addInertiaLoadToUnbalance().
Ground accelerations
Moderators: silvia, selimgunay, Moderators
-
- Posts: 5
- Joined: Fri Jul 02, 2004 4:26 am
- Location: University of Ljubljana, FGG - IKPIR
- Contact:
-
- Posts: 5
- Joined: Fri Jul 02, 2004 4:26 am
- Location: University of Ljubljana, FGG - IKPIR
- Contact:
The type of load pattern used for dynamic analysis would be UniformExcitation, but I do not understand how to use the addInertiaLoadToUnbalance() method to solve my problem. Could you please explain that in more detail? This method takes a "Vector accel" as an argument, where accel is uDotDotG, as stated in EarthquakePattern.cpp. Something like the uDotDotG (ground acceleration values) vector is what I need in my element. Based on this values I have to be able to make some decisions (like: if the current ground acceleration is greater than 0.1g, do something).
If I understand correctly, uDotDotG vector contains acceleration values at the current time in the order that has been set when numbering the patterens, regardless of the direction of action. So if I specify 10 acceleration load patterens, the uDotDotG will have 10 components. I assume, the earthquake load to the nodes is set with addInertiaLoadToUnbalance, where we have M*R*uDotDotG. Does this mean that ground acceleration values are not stored anywhere in the form of vector containing (accel_direction_1, accel_direction_1, ... , accel_direction_6)? However, R*uDotDotG should return this vector, right? So, is there a way to access uDotDotG from my element class?
Thanks again.
If I understand correctly, uDotDotG vector contains acceleration values at the current time in the order that has been set when numbering the patterens, regardless of the direction of action. So if I specify 10 acceleration load patterens, the uDotDotG will have 10 components. I assume, the earthquake load to the nodes is set with addInertiaLoadToUnbalance, where we have M*R*uDotDotG. Does this mean that ground acceleration values are not stored anywhere in the form of vector containing (accel_direction_1, accel_direction_1, ... , accel_direction_6)? However, R*uDotDotG should return this vector, right? So, is there a way to access uDotDotG from my element class?
Thanks again.
1. again not all dynamic analysis use UniformExciatation .. there is also MultiSupport
2. for case of UniformExciation (only), each uniform load pattern invokes setR() on the node and then will iterate over the over the nodes & elements invoking the addInertiaLoadToUnbalance(*uDotDotG) .. in case of UniformExcitation uDotDotG is a vector of size 1 .. this is true no matter how many uniform motions have been applied ..
each one will invoke this method (hence the add in addInertiaLoadToUnbalance)
to access uDotDotG just keep track of it as the addInertiaLoad is called on your element.
2. for case of UniformExciation (only), each uniform load pattern invokes setR() on the node and then will iterate over the over the nodes & elements invoking the addInertiaLoadToUnbalance(*uDotDotG) .. in case of UniformExcitation uDotDotG is a vector of size 1 .. this is true no matter how many uniform motions have been applied ..
each one will invoke this method (hence the add in addInertiaLoadToUnbalance)
to access uDotDotG just keep track of it as the addInertiaLoad is called on your element.