Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Baseline Correction for Kinematic Variables #296

Open
crswong888 opened this issue Apr 17, 2020 · 11 comments · May be fixed by #394
Open

Baseline Correction for Kinematic Variables #296

crswong888 opened this issue Apr 17, 2020 · 11 comments · May be fixed by #394
Assignees

Comments

@crswong888
Copy link
Contributor

crswong888 commented Apr 17, 2020

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
Copy link
Contributor

somu15 commented Apr 17, 2020

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
Copy link
Contributor Author

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
Copy link
Contributor Author

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

@somu15
Copy link
Contributor

somu15 commented Apr 17, 2020

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
Copy link
Contributor Author

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
Copy link
Contributor

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
Copy link
Contributor

somu15 commented Apr 17, 2020

@cbolisetti Sure, I will check with Andrew.

@crswong888
Copy link
Contributor Author

@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
Copy link
Contributor

somu15 commented Apr 17, 2020

@crswong888 Please consider a few things:

  • Add this tool in your MASTODON fork.
  • In src/vectorprocessors and include/vectorpostprocessors create the .C and .h files, respectively.
  • Create documentation in doc/content/source/vectorpostprocessors.

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
Copy link
Contributor Author

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

crswong888 added a commit to crswong888/mastodon that referenced this issue Apr 22, 2020
@crswong888
Copy link
Contributor Author

@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.

crswong888 added a commit to crswong888/mastodon that referenced this issue Apr 25, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue May 18, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 9, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 9, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 15, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 15, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 15, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Jul 16, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Oct 19, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Oct 19, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Oct 19, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 6, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 6, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 6, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
…re's no good reason why this shouldn't be allowed

(refs idaholab#296)
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
…er and a placeholder page to move all of the demonstrations to

(refs idaholab#296 idaholab#344)
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
…re's no good reason why this shouldn't be allowed

(refs idaholab#296)
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
crswong888 added a commit to crswong888/mastodon that referenced this issue Nov 10, 2020
…er and a placeholder page to move all of the demonstrations to

(refs idaholab#296 idaholab#344)
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
…re's no good reason why this shouldn't be allowed

(refs idaholab#296)
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 12, 2021
…er and a placeholder page to move all of the demonstrations to

(refs idaholab#296 idaholab#344)
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 17, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 17, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 17, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 17, 2021
@crswong888 crswong888 linked a pull request Aug 17, 2021 that will close this issue
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 17, 2021
crswong888 added a commit to crswong888/mastodon that referenced this issue Aug 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants