MAST
MAST::SecondOrderNewmarkTransientSolver Class Reference

This class implements the Newmark solver for solution of a second-order ODE. More...

#include <second_order_newmark_transient_solver.h>

Inheritance diagram for MAST::SecondOrderNewmarkTransientSolver:
Collaboration diagram for MAST::SecondOrderNewmarkTransientSolver:

Public Member Functions

 SecondOrderNewmarkTransientSolver ()
 
virtual ~SecondOrderNewmarkTransientSolver ()
 
virtual void update_velocity (libMesh::NumericVector< Real > &vec, const libMesh::NumericVector< Real > &sol)
 update the transient velocity based on the current solution More...
 
virtual void update_acceleration (libMesh::NumericVector< Real > &vec, const libMesh::NumericVector< Real > &sol)
 update the transient acceleration based on the current solution More...
 
virtual void update_sensitivity_velocity (libMesh::NumericVector< Real > &vel, const libMesh::NumericVector< Real > &sol)
 update the transient sensitivity velocity based on the current sensitivity solution More...
 
virtual void update_sensitivity_acceleration (libMesh::NumericVector< Real > &acc, const libMesh::NumericVector< Real > &sol)
 update the transient sensitivity acceleration based on the current sensitivity solution More...
 
virtual void update_delta_velocity (libMesh::NumericVector< Real > &vel, const libMesh::NumericVector< Real > &sol)
 update the perturbation in transient velocity based on the current perturbed solution More...
 
virtual void update_delta_acceleration (libMesh::NumericVector< Real > &acc, const libMesh::NumericVector< Real > &sol)
 update the perturbation in transient acceleration based on the current perturbed solution More...
 
virtual void set_element_data (const std::vector< libMesh::dof_id_type > &dof_indices, const std::vector< libMesh::NumericVector< Real > * > &sols)
 provides the element with the transient data for calculations More...
 
virtual void extract_element_sensitivity_data (const std::vector< libMesh::dof_id_type > &dof_indices, const std::vector< libMesh::NumericVector< Real > * > &sols, std::vector< RealVectorX > &local_sols)
 provides the element with the sensitivity of transient data for calculations More...
 
virtual void set_element_perturbed_data (const std::vector< libMesh::dof_id_type > &dof_indices, const std::vector< libMesh::NumericVector< Real > * > &sols)
 provides the element with the transient data for calculations More...
 
virtual void elem_calculations (bool if_jac, RealVectorX &vec, RealMatrixX &mat)
 performs the element calculations over elem, and returns the element vector and matrix quantities in mat and vec, respectively. More...
 
- Public Member Functions inherited from MAST::TransientSolverBase
 TransientSolverBase (unsigned int o, unsigned int n)
 constructor requires the number of iterations to store for the derived solver. More...
 
virtual ~TransientSolverBase ()
 
virtual void set_assembly (MAST::AssemblyBase &assembly)
 sets the assembly object More...
 
virtual void clear_assembly ()
 clears the assembly object More...
 
virtual void set_elem_operation_object (MAST::TransientAssemblyElemOperations &elem_ops)
 Attaches the assembly elem operations object that provides the x_dot, M and J quantities for the element. More...
 
virtual MAST::TransientAssemblyElemOperationsget_elem_operation_object ()
 
virtual void clear_elem_operation_object ()
 Clears the assembly elem operations object. More...
 
libMesh::NumericVector< Real > & solution (unsigned int prev_iter=0) const
 
libMesh::NumericVector< Real > & solution_sensitivity (unsigned int prev_iter=0) const
 
libMesh::NumericVector< Real > & velocity (unsigned int prev_iter=0) const
 
libMesh::NumericVector< Real > & velocity_sensitivity (unsigned int prev_iter=0) const
 
libMesh::NumericVector< Real > & acceleration (unsigned int prev_iter=0) const
 
libMesh::NumericVector< Real > & acceleration_sensitivity (unsigned int prev_iter=0) const
 
virtual void solve (MAST::AssemblyBase &assembly)
 solves the current time step for solution and velocity More...
 
virtual void sensitivity_solve (MAST::AssemblyBase &assembly, const MAST::FunctionBase &f)
 solvers the current time step for sensitivity wrt f More...
 
void solve_highest_derivative_and_advance_time_step (MAST::AssemblyBase &assembly)
 To be used only for initial conditions. More...
 
void solve_highest_derivative_and_advance_time_step_with_sensitivity (MAST::AssemblyBase &assembly, const MAST::FunctionBase &f)
 solves for the sensitivity of highest derivative and advances the time-step. More...
 
virtual void advance_time_step ()
 advances the time step and copies the current solution to old solution, and so on. More...
 
virtual void advance_time_step_with_sensitivity ()
 advances the time step and copies the current sensitivity solution to old sensitivity solution, and so on. More...
 
virtual void build_local_quantities (const libMesh::NumericVector< Real > &current_sol, std::vector< libMesh::NumericVector< Real > * > &qtys)
 localizes the relevant solutions for system assembly. More...
 
virtual void build_sensitivity_local_quantities (unsigned int prev_iter, std::vector< libMesh::NumericVector< Real > * > &qtys)
 localizes the relevant solutions for system assembly. More...
 
- Public Member Functions inherited from MAST::NonlinearImplicitAssemblyElemOperations
 NonlinearImplicitAssemblyElemOperations ()
 
virtual ~NonlinearImplicitAssemblyElemOperations ()
 
virtual void elem_linearized_jacobian_solution_product (RealVectorX &vec)=0
 performs the element calculations over elem, and returns the element vector quantity in vec. More...
 
virtual void elem_sensitivity_calculations (const MAST::FunctionBase &f, RealVectorX &vec)=0
 performs the element sensitivity calculations over elem, and returns the element residual sensitivity in vec . More...
 
virtual void elem_shape_sensitivity_calculations (const MAST::FunctionBase &f, RealVectorX &vec)=0
 performs the element shape sensitivity calculations over elem, and returns the element residual sensitivity in vec . More...
 
virtual void elem_topology_sensitivity_calculations (const MAST::FunctionBase &f, const MAST::FieldFunction< RealVectorX > &vel, RealVectorX &vec)=0
 performs the element topology sensitivity calculations over elem, and returns the element residual sensitivity in vec . More...
 
virtual void elem_second_derivative_dot_solution_assembly (RealMatrixX &mat)=0
 calculates $ d ([J] \{\Delta X\})/ dX $ over elem, and returns the matrix in vec . More...
 
void check_element_numerical_jacobian (RealVectorX &sol)
 a helper function to evaluate the numerical Jacobian and compare it with the analytical Jacobian. More...
 
- Public Member Functions inherited from MAST::AssemblyElemOperations
 AssemblyElemOperations ()
 
virtual ~AssemblyElemOperations ()
 
MAST::SystemInitializationget_system_initialization ()
 
MAST::PhysicsDisciplineBaseget_discipline ()
 
virtual void set_discipline_and_system (MAST::PhysicsDisciplineBase &discipline, MAST::SystemInitialization &system)
 attaches a system to this discipline More...
 
virtual void clear_discipline_and_system ()
 clears association with a system to this discipline More...
 
virtual MAST::AssemblyBaseget_assembly ()
 
virtual void set_elem_data (unsigned int dim, const libMesh::Elem &ref_elem, MAST::GeomElem &elem) const =0
 some analyses may want to set additional element data before initialization of the GeomElem. More...
 
virtual void init (const MAST::GeomElem &elem)=0
 initializes the object for calculation of element quantities for the specified elem. More...
 
virtual void clear_elem ()
 clears the element initialization More...
 
MAST::ElementBaseget_physics_elem ()
 
virtual void set_elem_solution (const RealVectorX &sol)
 sets the element solution More...
 
virtual void set_elem_solution_sensitivity (const RealVectorX &sol)
 sets the element solution sensitivity More...
 
virtual void set_elem_perturbed_solution (const RealVectorX &sol)
 sets the element perturbed solution More...
 
virtual void set_elem_velocity (const RealVectorX &vel)
 sets the element velocity More...
 
virtual void set_elem_velocity_sensitivity (const RealVectorX &vel)
 sets the element velocity sensitivity More...
 
virtual void set_elem_perturbed_velocity (const RealVectorX &vel)
 sets the element perturbed velocity More...
 
virtual void set_elem_acceleration (const RealVectorX &accel)
 sets the element acceleration More...
 
virtual void set_elem_acceleration_sensitivity (const RealVectorX &accel)
 sets the element acceleration More...
 
virtual void set_elem_perturbed_acceleration (const RealVectorX &accel)
 sets the element perturbed acceleration More...
 

Public Attributes

Real beta
 $ \beta $ parameter used by this solver. More...
 
Real gamma
 $ \gamma $ parameter used by this solver. More...
 
- Public Attributes inherited from MAST::TransientSolverBase
Real dt
 time step More...
 

Additional Inherited Members

- Protected Attributes inherited from MAST::AssemblyElemOperations
MAST::SystemInitialization_system
 
MAST::PhysicsDisciplineBase_discipline
 
MAST::AssemblyBase_assembly
 
MAST::ElementBase_physics_elem
 

Detailed Description

This class implements the Newmark solver for solution of a second-order ODE.

Definition at line 35 of file second_order_newmark_transient_solver.h.

Constructor & Destructor Documentation

MAST::SecondOrderNewmarkTransientSolver::SecondOrderNewmarkTransientSolver ( )

Definition at line 32 of file second_order_newmark_transient_solver.cpp.

MAST::SecondOrderNewmarkTransientSolver::~SecondOrderNewmarkTransientSolver ( )
virtual

Definition at line 39 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Member Function Documentation

void MAST::SecondOrderNewmarkTransientSolver::elem_calculations ( bool  if_jac,
RealVectorX vec,
RealMatrixX mat 
)
virtual

performs the element calculations over elem, and returns the element vector and matrix quantities in mat and vec, respectively.

if_jac tells the method to also assemble the Jacobian, in addition to the residual vector.

Implements MAST::NonlinearImplicitAssemblyElemOperations.

Reimplemented in MAST::GeneralizedAlphaTransientSolver.

Definition at line 281 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::extract_element_sensitivity_data ( const std::vector< libMesh::dof_id_type > &  dof_indices,
const std::vector< libMesh::NumericVector< Real > * > &  sols,
std::vector< RealVectorX > &  local_sols 
)
virtual

provides the element with the sensitivity of transient data for calculations

Reimplemented in MAST::GeneralizedAlphaTransientSolver.

Definition at line 84 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::set_element_data ( const std::vector< libMesh::dof_id_type > &  dof_indices,
const std::vector< libMesh::NumericVector< Real > * > &  sols 
)
virtual

provides the element with the transient data for calculations

Reimplemented in MAST::GeneralizedAlphaTransientSolver.

Definition at line 47 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::set_element_perturbed_data ( const std::vector< libMesh::dof_id_type > &  dof_indices,
const std::vector< libMesh::NumericVector< Real > * > &  sols 
)
virtual

provides the element with the transient data for calculations

Reimplemented in MAST::GeneralizedAlphaTransientSolver.

Definition at line 124 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::update_acceleration ( libMesh::NumericVector< Real > &  vec,
const libMesh::NumericVector< Real > &  sol 
)
virtual

update the transient acceleration based on the current solution

Implements MAST::TransientSolverBase.

Definition at line 185 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::update_delta_acceleration ( libMesh::NumericVector< Real > &  acc,
const libMesh::NumericVector< Real > &  sol 
)
virtual

update the perturbation in transient acceleration based on the current perturbed solution

Implements MAST::TransientSolverBase.

Definition at line 266 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::update_delta_velocity ( libMesh::NumericVector< Real > &  vel,
const libMesh::NumericVector< Real > &  sol 
)
virtual

update the perturbation in transient velocity based on the current perturbed solution

Implements MAST::TransientSolverBase.

Definition at line 252 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::update_sensitivity_acceleration ( libMesh::NumericVector< Real > &  acc,
const libMesh::NumericVector< Real > &  sol 
)
virtual

update the transient sensitivity acceleration based on the current sensitivity solution

Implements MAST::TransientSolverBase.

Definition at line 229 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::update_sensitivity_velocity ( libMesh::NumericVector< Real > &  vel,
const libMesh::NumericVector< Real > &  sol 
)
virtual

update the transient sensitivity velocity based on the current sensitivity solution

Implements MAST::TransientSolverBase.

Definition at line 207 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::SecondOrderNewmarkTransientSolver::update_velocity ( libMesh::NumericVector< Real > &  vec,
const libMesh::NumericVector< Real > &  sol 
)
virtual

update the transient velocity based on the current solution

Implements MAST::TransientSolverBase.

Definition at line 162 of file second_order_newmark_transient_solver.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

Real MAST::SecondOrderNewmarkTransientSolver::beta

$ \beta $ parameter used by this solver.

Definition at line 45 of file second_order_newmark_transient_solver.h.

Real MAST::SecondOrderNewmarkTransientSolver::gamma

$ \gamma $ parameter used by this solver.

Definition at line 50 of file second_order_newmark_transient_solver.h.


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