idaholab / mastodon

A MOOSE app for structural dynamics, seismic analysis, and risk assessment.
https://mooseframework.inl.gov/mastodon
GNU Lesser General Public License v2.1
40 stars 54 forks source link

Baseline Correction for Kinematic Variables #296

Open crswong888 opened 4 years ago

crswong888 commented 4 years ago

Reason

Integration of harmonic, or quasi-harmonic, acceleration or velocity time histories can result in displacements that exhibit an unrealistic deviation from a particle's initial position over time, depending on the assumed properties of the given signal. Initial conditions are often unknown or difficult to satisfy while maintaining the expected behavior that a vibration signal oscillates about a constant baseline and comes to rest at or near the initial position. Baseline correction is a method to transform the time history variables of a vibrating particle such that its mean position is a constant, zero-valued one, without adversely affecting the peak accelerations or spectral properties. I think it could be useful to many to have a C++ object capable of performing these corrections in MASTODON.

Implementation of this capability would be in support of my graduate research for NEUP Project: 17-12939.

Design

The object would be a vectorpostprocessor whose general purpose would fall into the same category as the ResponseSpectraCalculator, i.e., a signal processing function. A user could pass a nodal acceleration solution and the vpp would return the adjusted time histories. They could also run the vpp on some input acceleration function or data from field measurements stored in a file on the initial time step, and then use the corrected values in the model itself, for example, with PresetAcceleration.

The corrections would be performed by subtracting a least squares polynomial from the nominal time histories, which results in a nearly equivalent vibration signal of the drifted one, but relative to the datum horizontal axis. Polynomial fits can optionally be made to all 3 kinematic variables or applied selectively. In addition, the order of the polynomial could be specified. This flexibility would allow for the user to achieve their desired result. The details for the theory and use of this vpp object would all be explained in the website's syntax page. I have created a prototype of this object on my personal MOOSE Application.

Impact

Technically, this type of signal processing could be performed by a user them self, outside of MASTODON, and it has no direct relationship to finite element analysis. However, the numerical procedure is somewhat difficult and not generally known to structural engineers. Thus it would only serve to make MASTODON a more useful tool. It is also well-suited for automation. Many commercial software packages, such as Seismosignal and Abaqus have this capability.

@cbolisetti If you have the time and resources to review my proposed work, I wish to proceed with a PR.

somu15 commented 4 years ago

I worked on base line correction before. So, I know what you're referring to. Could you give specific examples where this tool could be useful? In seismic, we typically get accelerograms from PEER or KiKNet databases that are baseline corrected.

crswong888 commented 4 years ago

The largest constants of integration, which are the root cause of the phenomena we are discussing here, are observed in roughly monotonic vibration signals, such as floor vibrations due to loads from pedestrians or machine operation, or vibrations observed in locomotives, which is extremely relevant for transportation of nuclear fuel. I actually didn't know PEER serves baseline corrected data, but even if they didn't you're right, seismic ground motions typically need not be baseline corrected, since the many different frequencies tend to work together to cancel out the drift constants. I've applied my baseline correction code to ground motions from PEER, and the results were almost identical to those obtained from Newmark integration alone.

However, it is my understanding that there are cases where earthquake ground motions exhibit approximately monotonic behavior, such as near-fault ground motions or the effect when the propagation of ground ripples tend to concentrate at point (I forget what you call this phenomena). If a user happened to have a raw accelerogram of these types of ground motions, they will need to perform baseline corrections. Also, let's say a user simply wants to run an analysis with a single sinusoidal function, like Asin(fpit). Any boundary where this displacement were prescribed would drift far off into space unless the correct initial conditions are set, but even then there is still some drift, since the double integral results in a C1 + C2t drift that cannot be removed with a scalar initial condition. It is sometimes the case that shake-table experiments use analytical functions like these to control the actuators, and so if a user wanted to model such an experiment with MASTODON, it might be helpful to apply this correction.

crswong888 commented 4 years ago

I suppose the reason why my baseline correction applied to accelerations from PEER did nothing is because they were probably already corrected :laughing:

somu15 commented 4 years ago

Refer to this article: ftp://140.115.123.63/share/%B0%EA%A9m%AAF%B6%D5%B8%EA%AE%C6/08_References/Strong%20motion%20record%20processing%20for%20the%20PEER%20center.pdf

PEER motions are baseline corrected :)

For near fault motions, you would, in some cases, expect a nonzero displacement after the earthquake ends. This non-zero displacement is called fling step and it is due to nonlinear motion of the earth.

crswong888 commented 4 years ago

And so they are! This is a helpful reference, thank you, Som.

Right, if a permanent displacement is the expectation, than these corrections are not useful and, in fact, harmful if not used with care.

cbolisetti commented 4 years ago

Hi @crswong888, thank you for the issue, and I'm glad you and @somu15 started this interesting discussion. This is definitely an important feature for seismic analysis and we need to discuss a good place for it. I'll let @somu15 figure this one out. @somu15 I'd start by asking @aeslaughter how to do this.

somu15 commented 4 years ago

@cbolisetti Sure, I will check with Andrew.

crswong888 commented 4 years ago

@cbolisetti Thank you, Chandu, and Som as well.

@somu15 I will work with you as much as it takes to do this job correctly. Let me know when I can open a PR. Note that I have a functioning prototype that you could easily try out and I provided a link in my original message.

somu15 commented 4 years ago

@crswong888 Please consider a few things:

Before doing any the above, I am not clear what are the inputs and outputs, if your tools has to be used after or before a simulation. Please clarify these.

crswong888 commented 4 years ago

No problem. I will do this and report back when I get the chance.

crswong888 commented 4 years ago

@somu15 okay I added the items you requested in the latest commit to my MASTODON fork. Obviously, this commit needs a lot of fine-tuning, but the state of this branch currently serves the purpose of making clear to you how this vpp object works. I would like to add some more documentation to the theory manual describing the mathematical formulation behind this object, if you think this is appropriate. I would also like to eventually add more tests with varying combinations of the input parameters.

Regarding your question about whether this vpp should be used before or after the simulation, the answer is: both. It depends on what you are trying to accomplish. Please note that, if the user wanted to use the corrected data as a boundary condition, say with PresetAcceleration, getting it to work properly takes a bit of hackery in the input file. It is actually currently not possible in the master versions of the MOOSE Framework, but I have several PR's and Issues open to address this problem. Ultimately, I would like to create an action system that simplifies this for the user, but I figured I would deal with this in a future MASTODON PR, after all of the basic requirements in the Framework have been addressed.