MAST
|
This class implements the Newmark solver for solution of a second-order ODE. More...
#include <second_order_newmark_transient_solver.h>
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::TransientAssemblyElemOperations & | get_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 > ¤t_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 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::SystemInitialization & | get_system_initialization () |
MAST::PhysicsDisciplineBase & | get_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::AssemblyBase & | get_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::ElementBase & | get_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 |
parameter used by this solver. More... | |
Real | 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 |
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.
MAST::SecondOrderNewmarkTransientSolver::SecondOrderNewmarkTransientSolver | ( | ) |
Definition at line 32 of file second_order_newmark_transient_solver.cpp.
|
virtual |
Definition at line 39 of file second_order_newmark_transient_solver.cpp.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
Real MAST::SecondOrderNewmarkTransientSolver::beta |
parameter used by this solver.
Definition at line 45 of file second_order_newmark_transient_solver.h.
Real MAST::SecondOrderNewmarkTransientSolver::gamma |
parameter used by this solver.
Definition at line 50 of file second_order_newmark_transient_solver.h.