suanPan
🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
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< Amplitudeunique_copy ()=0
 
virtual double get_amplitude (double)
 
void set_initialized (bool)
 
bool is_initialized () const
 
void set_start_time (double)
 
 CopyableTag (const CopyableTag &)=default
 
 CopyableTag (CopyableTag &&)=default
 
- Public Member Functions inherited from CopyableTag
 CopyableTag (const CopyableTag &)=default
 
 CopyableTag (CopyableTag &&)=default
 
CopyableTagoperator= (const CopyableTag &)=delete
 
CopyableTagoperator= (CopyableTag &&)=delete
 
 ~CopyableTag () 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

◆ CopyableTag() [1/2]

CopyableTag::CopyableTag ( const CopyableTag )
default

◆ CopyableTag() [2/2]

CopyableTag::CopyableTag ( CopyableTag &&  )
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:

◆ 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:

◆ unique_copy()

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

Member Data Documentation

◆ start_time

double Amplitude::start_time = 0.
protected

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