suanPan
Loading...
Searching...
No Matches
Amplitude Class Referenceabstract

An Amplitude class that can generate Amplitude pattern. More...

#include <Amplitude.h>

Inheritance diagram for Amplitude:
Collaboration diagram for Amplitude:

Public Member Functions

virtual void initialize (const shared_ptr< DomainBase > &)
 
virtual unique_ptr< Amplitudeget_copy ()=0
 
virtual double get_amplitude (double)
 
void set_initialized (bool)
 
bool is_initialized () const
 
void set_start_time (double)
 
 CopiableTag (const CopiableTag &)=default
 
 CopiableTag (CopiableTag &&)=default
 
- Public Member Functions inherited from CopiableTag
 CopiableTag (const CopiableTag &)=default
 
 CopiableTag (CopiableTag &&)=default
 
CopiableTagoperator= (const CopiableTag &)=delete
 
CopiableTagoperator= (CopiableTag &&)=delete
 
 ~CopiableTag () override=default
 
 Tag (unsigned=0)
 
 Tag (const Tag &)=default
 
 Tag (Tag &&) noexcept=default
 
- Public Member Functions inherited from Tag
 Tag (unsigned=0)
 
 Tag (const Tag &)=default
 
 Tag (Tag &&) noexcept=default
 
Tagoperator= (const Tag &)=delete
 
Tagoperator= (Tag &&)=delete
 
virtual ~Tag ()=default
 
void set_tag (unsigned) const
 
unsigned get_tag () const
 
void enable ()
 
void disable ()
 
void guard ()
 
void unguard ()
 
bool is_active () const
 
bool is_guarded () const
 
virtual void print ()
 

Protected Attributes

double start_time = 0.
 

Detailed Description

An Amplitude class that can generate Amplitude pattern.

Similar to the strategy used in ABAQUS, the load pattern and the magnitude of that load can be separated. The Amplitude class is designed to generate different Amplitude patterns. The time and amplitude are stored in two different vectors: TIME and AMP. By calling the method

double get_amplitude(const double& NEW_TIME_POINT);

The Amplitude is interpolated. If the given NEW_TIME_POINT is beyond the right bound, the Amplitude will be set to the maximum one. Such a case may happen to the auto step size control scheme, in which the (pseudo) time may exceed the given bound due to the machine error.

Currently, there are five predefined amplitude patterns.

  • Tabular
  • Linear/Ramp

    \begin{gather}a=A_0+A\left(t-t_0\right)/t_s\end{gather}

  • Periodic

    \begin{gather}a=A_0+\sum_{n=1}^N\left(A_n\cos{}n\omega\left(t-t_0\right)+B_n\sin{}n\omega\left(t-t_0\right)\right)\end{gather}

  • Modulated

    \begin{gather}a=A_0+A\sin\omega_1\left(t-t_0\right)\sin\omega_2\left(t-t_0\right)\end{gather}

  • Decay

    \begin{gather}a=A_0+A\exp\left(-\left(t-t_0\right)/t_d\right)\end{gather}

Author
tlc
Date
05/06/2025
Version
0.2.0

Member Function Documentation

◆ CopiableTag() [1/2]

CopiableTag::CopiableTag ( const CopiableTag )
default

◆ CopiableTag() [2/2]

CopiableTag::CopiableTag ( CopiableTag &&  )
default

◆ get_amplitude()

double Amplitude::get_amplitude ( double  )
virtual

Reimplemented in Combine, Constant, Cosine, CustomAmplitude, Decay, Linear, Modulated, NZStrongMotion, Ramp, Sine, Tabular, and TabularSpline.

Here is the caller graph for this function:

◆ get_copy()

virtual unique_ptr< Amplitude > Amplitude::get_copy ( )
pure virtual

◆ initialize()

void Amplitude::initialize ( const shared_ptr< DomainBase > &  )
virtual

◆ is_initialized()

bool Amplitude::is_initialized ( ) const

◆ set_initialized()

void Amplitude::set_initialized ( bool  F)

◆ set_start_time()

void Amplitude::set_start_time ( double  T)
Here is the caller graph for this function:

Member Data Documentation

◆ start_time

double Amplitude::start_time = 0.
protected

The documentation for this class was generated from the following files: