suanPan
🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
Loading...
Searching...
No Matches
GSSSS Class Reference

A GSSSS class defines a solver using GSSSS algorithm. More...

#include <GSSSS.h>

Inheritance diagram for GSSSS:
Collaboration diagram for GSSSS:

Public Member Functions

void assemble_resistance () override
 
void assemble_effective_matrix () override
 
vec get_force_residual () override
 
vec get_displacement_residual () override
 
sp_mat get_reference_load () override
 
int update_trial_status (bool) override
 
vec from_incre_velocity (const vec &, const uvec &) override
 
vec from_incre_acceleration (const vec &, const uvec &) override
 
void print () override
 
- Public Member Functions inherited from ImplicitIntegrator
Type type () const final
 
void assemble_matrix () override
 
 Integrator (unsigned=0)
 
- Public Member Functions inherited from Integrator
 Integrator (unsigned=0)
 
void set_domain (const std::weak_ptr< DomainBase > &)
 
shared_ptr< DomainBaseget_domain () const
 
virtual int initialize ()
 
void set_time_step_switch (bool)
 
bool allow_to_change_time_step () const
 
void set_matrix_assembled_switch ()
 
bool matrix_is_assembled () const
 
virtual bool time_independent_matrix () const
 
int process_load ()
 
virtual int process_constraint ()
 
int process_criterion () const
 
int process_modifier () const
 
int process_load_resistance ()
 
virtual int process_constraint_resistance ()
 
void record () const
 
vec get_auxiliary_residual () const
 
virtual const vec & get_trial_displacement () const
 
void update_load () const
 
void update_constraint () const
 
void update_trial_load_factor (double) const
 
void update_trial_load_factor (const vec &) const
 
virtual void update_from_ninja ()
 
void update_trial_time (double)
 
virtual void update_incre_time (double)
 
int sync_status (bool)
 
virtual int update_internal (const mat &)
 
mat solve (const mat &)
 
mat solve (const sp_mat &)
 
mat solve (mat &&)
 
mat solve (sp_mat &&)
 
virtual int solve (mat &, const mat &)
 
virtual int solve (mat &, const sp_mat &)
 
virtual int solve (mat &, mat &&)
 
virtual int solve (mat &, sp_mat &&)
 
void erase_machine_error (vec &) const
 
void stage_and_commit_status ()
 
void stage_status () const
 
virtual void commit_status ()
 
virtual void clear_status ()
 
virtual void reset_status ()
 
virtual vec from_total_velocity (const vec &, const uvec &)
 
virtual vec from_total_acceleration (const vec &, const uvec &)
 
vec from_incre_velocity (double, const uvec &)
 
vec from_incre_acceleration (double, const uvec &)
 
vec from_total_velocity (double, const uvec &)
 
vec from_total_acceleration (double, const uvec &)
 
- Public Member Functions inherited from UniqueTag
 UniqueTag (const UniqueTag &)=delete
 
 UniqueTag (UniqueTag &&)=delete
 
UniqueTagoperator= (const UniqueTag &)=delete
 
UniqueTagoperator= (UniqueTag &&)=delete
 
 ~UniqueTag () 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
 

Protected Member Functions

void update_parameter (double) override
 
int process_load_impl (bool) override
 
int process_constraint_impl (bool) override
 
template<typename T >
void generate_constants (double, double, double)
 
template<>
void generate_constants (const double R3, const double R1, const double R2)
 
template<>
void generate_constants (const double R3, const double R1, const double R2)
 
template<>
void generate_constants (const double R, double, double)
 
- Protected Member Functions inherited from Integrator
virtual bool has_corrector () const
 
virtual int correct_trial_status ()
 

Protected Attributes

double L3 = 0.
 
double L5 = 0.
 
double W1 = 0.
 
double W3G3 = 0.
 
double W2G5 = 0.
 
double W1G6 = 0.
 
double DT = 0.
 
double C0 {0.}
 
double C1 {0.}
 
double C2 {0.}
 
double C3 {0.}
 
double C4 {0.}
 
double XD {0.}
 
double XV {0.}
 
double XA {0.}
 

Static Protected Attributes

static constexpr double L1 {1.}
 
static constexpr double L2 {.5}
 
static constexpr double L4 {1.}
 

Additional Inherited Members

- Public Types inherited from Integrator
enum class  Type { Implicit , Explicit }
 

Detailed Description

A GSSSS class defines a solver using GSSSS algorithm.

Advances in Computational Dynamics of Particles, Materials and Structures

ISBN: 978-1-119-96692-0

Author
tlc
Date
15/04/2022
Version
0.1.0

Member Function Documentation

◆ assemble_effective_matrix()

void GSSSS::assemble_effective_matrix ( )
overridevirtual

Assemble the global effective matrix A in AX=B. For FEM applications, it is often a linear combination of stiffness, mass, damping and geometry matrices.

Reimplemented from Integrator.

Here is the call graph for this function:

◆ assemble_resistance()

void GSSSS::assemble_resistance ( )
overridevirtual

Reimplemented from Integrator.

Here is the call graph for this function:

◆ from_incre_acceleration()

vec GSSSS::from_incre_acceleration ( const vec &  ,
const uvec encoding 
)
overridevirtual

When external loads are applied, they can be applied in forms of displacement/velocity/acceleration. The time integration methods, by default, form effective stiffness matrices in displacement domain. That is, in AX=B, A is the effective stiffness matrix and X is the displacement increment. Thus, loads in velocity/acceleration must be converted to displacement. This cannot be done arbitrarily due to compatibility issues. This method takes acceleration increment and converts it to TOTAL displacement.

Reimplemented from Integrator.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ from_incre_velocity()

vec GSSSS::from_incre_velocity ( const vec &  ,
const uvec encoding 
)
overridevirtual

When external loads are applied, they can be applied in forms of displacement/velocity/acceleration. The time integration methods, by default, form effective stiffness matrices in displacement domain. That is, in AX=B, A is the effective stiffness matrix and X is the displacement increment. Thus, loads in velocity/acceleration must be converted to displacement. This cannot be done arbitrarily due to compatibility issues. This method takes velocity increment and converts it to TOTAL displacement.

Reimplemented from Integrator.

Here is the call graph for this function:

◆ generate_constants() [1/4]

template<>
void GSSSS::generate_constants ( const double  R,
double  ,
double   
)
protected

◆ generate_constants() [2/4]

template<>
void GSSSS::generate_constants ( const double  R3,
const double  R1,
const double  R2 
)
protected

◆ generate_constants() [3/4]

template<>
void GSSSS::generate_constants ( const double  R3,
const double  R1,
const double  R2 
)
protected

◆ generate_constants() [4/4]

template<typename T >
void GSSSS::generate_constants ( double  ,
double  ,
double   
)
inlineprotected

◆ get_displacement_residual()

vec GSSSS::get_displacement_residual ( )
overridevirtual

Assemble the global residual vector in displacement-controlled solving schemes. Apart from the global resistance and external load vectors, the reference load vector shall also be considered.

Reimplemented from Integrator.

Here is the call graph for this function:

◆ get_force_residual()

vec GSSSS::get_force_residual ( )
overridevirtual

Assemble the global residual vector in load-controlled solving schemes.

Reimplemented from Integrator.

Here is the call graph for this function:

◆ get_reference_load()

sp_mat GSSSS::get_reference_load ( )
overridevirtual

Reimplemented from Integrator.

Here is the call graph for this function:

◆ print()

void GSSSS::print ( )
overridevirtual

Reimplemented from Tag.

◆ process_constraint_impl()

int GSSSS::process_constraint_impl ( bool  full)
overrideprotectedvirtual

Reimplemented from Integrator.

Here is the call graph for this function:

◆ process_load_impl()

int GSSSS::process_load_impl ( bool  full)
overrideprotectedvirtual

Reimplemented from Integrator.

Here is the call graph for this function:

◆ update_parameter()

void GSSSS::update_parameter ( double  )
overrideprotectedvirtual

When time step changes, some parameters may need to be updated.

Reimplemented from Integrator.

Here is the call graph for this function:

◆ update_trial_status()

int GSSSS::update_trial_status ( bool  )
overridevirtual

Reimplemented from Integrator.

Here is the call graph for this function:

Member Data Documentation

◆ C0

double GSSSS::C0 {0.}
protected

◆ C1

double GSSSS::C1 {0.}
protected

◆ C2

double GSSSS::C2 {0.}
protected

◆ C3

double GSSSS::C3 {0.}
protected

◆ C4

double GSSSS::C4 {0.}
protected

◆ DT

double GSSSS::DT = 0.
protected

◆ L1

constexpr double GSSSS::L1 {1.}
staticconstexprprotected

◆ L2

constexpr double GSSSS::L2 {.5}
staticprotected

◆ L3

double GSSSS::L3 = 0.
protected

◆ L4

constexpr double GSSSS::L4 {1.}
staticprotected

◆ L5

double GSSSS::L5 = 0.
protected

◆ W1

double GSSSS::W1 = 0.
protected

◆ W1G6

double GSSSS::W1G6 = 0.
protected

◆ W2G5

double GSSSS::W2G5 = 0.
protected

◆ W3G3

double GSSSS::W3G3 = 0.
protected

◆ XA

double GSSSS::XA {0.}
protected

◆ XD

double GSSSS::XD {0.}
protected

◆ XV

double GSSSS::XV {0.}
protected

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