MAST
MAST::StructuralBucklingEigenproblemAssembly Class Reference

#include <structural_buckling_eigenproblem_assembly.h>

Inheritance diagram for MAST::StructuralBucklingEigenproblemAssembly:
Collaboration diagram for MAST::StructuralBucklingEigenproblemAssembly:

Public Member Functions

 StructuralBucklingEigenproblemAssembly ()
 constructor associates the eigen system with this assembly object More...
 
virtual ~StructuralBucklingEigenproblemAssembly ()
 destructor resets the association with the eigen system from this assembly object More...
 
virtual void eigenproblem_assemble (libMesh::SparseMatrix< Real > *A, libMesh::SparseMatrix< Real > *B)
 assembles the global A and B matrices for the modal eigenvalue problem More...
 
void set_buckling_data (bool use_linearized_approach, MAST::Parameter &p, const Real lambda1, const Real lambda2, libMesh::NumericVector< Real > &x1, libMesh::NumericVector< Real > &x2)
 set the states and load factors for buckling eigenproblem. More...
 
Real critical_point_estimate_from_eigenproblem (Real v) const
 calculates the critical load factor based on the eigensolution More...
 
virtual void clear_discipline_and_system ()
 clears the states and load factors for buckling eigenproblem More...
 
- Public Member Functions inherited from MAST::EigenproblemAssembly
 EigenproblemAssembly ()
 constructor associates the eigen system with this assembly object More...
 
virtual ~EigenproblemAssembly ()
 destructor resets the association with the eigen system from this assembly object More...
 
libMesh::SparseMatrix< Real > & A_matrix ()
 
libMesh::SparseMatrix< Real > & B_matrix ()
 
virtual bool eigenproblem_sensitivity_assemble (const MAST::FunctionBase &f, libMesh::SparseMatrix< Real > *sensitivity_A, libMesh::SparseMatrix< Real > *sensitivity_B)
 Assembly function. More...
 
void set_base_solution (const libMesh::NumericVector< Real > &sol, bool if_sens=false)
 if the eigenproblem is defined about a non-zero base solution, then this method provides the object with the base solution. More...
 
void clear_base_solution (bool if_sens=false)
 Clears the pointer to the solution. More...
 
bool if_linearized_about_nonzero_solution () const
 
const libMesh::NumericVector< Real > & base_sol (bool if_sens=false) const
 
libMesh::NumericVector< Real > & base_sol (bool if_sens=false)
 
- Public Member Functions inherited from MAST::AssemblyBase
 AssemblyBase ()
 constructor takes a reference to the discipline that provides the boundary conditions, volume loads, properties, etc. More...
 
virtual ~AssemblyBase ()
 virtual destructor More...
 
const MAST::PhysicsDisciplineBasediscipline () const
 
MAST::PhysicsDisciplineBasediscipline ()
 
MAST::AssemblyElemOperationsget_elem_ops ()
 
virtual void set_discipline_and_system (MAST::PhysicsDisciplineBase &discipline, MAST::SystemInitialization &system)
 attaches a system to this discipline More...
 
void attach_elem_parameter_dependence_object (MAST::AssemblyBase::ElemParameterDependence &dep)
 This object, if provided by user, will be used to reduce unnecessary computations in sensitivity analysis assembly operations. More...
 
void clear_elem_parameter_dependence_object ()
 
virtual void set_elem_operation_object (MAST::AssemblyElemOperations &elem_ops)
 attaches a element operation to this object, and associated this with the element operation object. More...
 
virtual void clear_elem_operation_object ()
 clears the association of this object with the assembly element operation object. More...
 
const MAST::NonlinearSystemsystem () const
 
MAST::NonlinearSystemsystem ()
 
MAST::SystemInitializationsystem_init ()
 
void set_solver_monitor (MAST::AssemblyBase::SolverMonitor &monitor)
 attaches the solver monitor, which is a user provided routine that is called each time More...
 
MAST::AssemblyBase::SolverMonitorget_solver_monitor ()
 
void clear_solver_monitor ()
 clears the monitor object More...
 
void attach_solution_function (MAST::MeshFieldFunction &f)
 tells the assembly object that this function is will need to be initialized before each residual evaluation More...
 
void detach_solution_function ()
 removes the attachment of the solution function More...
 
virtual void residual_and_jacobian (const libMesh::NumericVector< Real > &X, libMesh::NumericVector< Real > *R, libMesh::SparseMatrix< Real > *J, libMesh::NonlinearImplicitSystem &S)
 function that assembles the matrices and vectors quantities for nonlinear solution More...
 
virtual bool sensitivity_assemble (const MAST::FunctionBase &f, libMesh::NumericVector< Real > &sensitivity_rhs)
 Assembly function. More...
 
virtual void calculate_output (const libMesh::NumericVector< Real > &X, MAST::OutputAssemblyElemOperations &output)
 calculates the value of quantity $ q(X,p) $. More...
 
virtual void calculate_output_derivative (const libMesh::NumericVector< Real > &X, MAST::OutputAssemblyElemOperations &output, libMesh::NumericVector< Real > &dq_dX)
 calculates $ \frac{\partial q(X, p)}{\partial X} $ More...
 
virtual void calculate_output_direct_sensitivity (const libMesh::NumericVector< Real > &X, const libMesh::NumericVector< Real > *dXdp, const MAST::FunctionBase &p, MAST::OutputAssemblyElemOperations &output)
 evaluates the sensitivity of the outputs in the attached discipline with respect to the parametrs in params. More...
 
virtual Real calculate_output_adjoint_sensitivity (const libMesh::NumericVector< Real > &X, const libMesh::NumericVector< Real > &dq_dX, const MAST::FunctionBase &p, MAST::AssemblyElemOperations &elem_ops, MAST::OutputAssemblyElemOperations &output, const bool include_partial_sens=true)
 Evaluates the total sensitivity of output wrt p using the adjoint solution provided in dq_dX for a linearization about solution X. More...
 
std::unique_ptr< libMesh::NumericVector< Real > > build_localized_vector (const libMesh::System &sys, const libMesh::NumericVector< Real > &global) const
 localizes the parallel vector so that the local copy stores all values necessary for calculation of the element quantities More...
 

Protected Attributes

std::map< const libMesh::Elem *, RealVectorX_incompatible_sol
 map of local incompatible mode solution per 3D elements More...
 
bool _use_linearized_formulation
 whether or not to use the linearized formulation More...
 
MAST::Parameter_load_param
 load parameter used to define the two stiffness matrices More...
 
Real _lambda1
 values of load factors for which the two stiffness matrices are calculated for the buckling eigenvalue problem. More...
 
Real _lambda2
 
libMesh::NumericVector< Real > * _sol1
 the equilibrium solutions associated with _lambda1 and _lambda2 load factors. More...
 
libMesh::NumericVector< Real > * _sol2
 
libMesh::NumericVector< Real > * _sol1_sens
 the equilibrium solution sensitivity More...
 
libMesh::NumericVector< Real > * _sol2_sens
 
- Protected Attributes inherited from MAST::EigenproblemAssembly
const libMesh::NumericVector< Real > * _base_sol
 base solution about which this eigenproblem is defined. More...
 
const libMesh::NumericVector< Real > * _base_sol_sensitivity
 sensitivity of base solution may be needed for sensitivity analysis. More...
 
- Protected Attributes inherited from MAST::AssemblyBase
MAST::AssemblyElemOperations_elem_ops
 provides assembly elem operations for use by this class More...
 
MAST::PhysicsDisciplineBase_discipline
 PhysicsDisciplineBase object for which this class is assembling. More...
 
MAST::SystemInitialization_system
 System for which this assembly is performed. More...
 
MAST::MeshFieldFunction_sol_function
 system solution that will be initialized before each solution More...
 
MAST::AssemblyBase::SolverMonitor_solver_monitor
 User provided solver monitor is attached to the linear nonlinear solvers, if provided. More...
 
MAST::AssemblyBase::ElemParameterDependence_param_dependence
 If provided by user, this object is used by sensitiivty analysis to check for whether or the current design parameter influences an element. More...
 

Additional Inherited Members

- Public Attributes inherited from MAST::AssemblyBase
bool close_matrix
 flag to control the closing fo the Jacobian after assembly More...
 

Detailed Description

Definition at line 33 of file structural_buckling_eigenproblem_assembly.h.

Constructor & Destructor Documentation

MAST::StructuralBucklingEigenproblemAssembly::StructuralBucklingEigenproblemAssembly ( )

constructor associates the eigen system with this assembly object

Definition at line 39 of file structural_buckling_eigenproblem_assembly.cpp.

Here is the call graph for this function:

MAST::StructuralBucklingEigenproblemAssembly::~StructuralBucklingEigenproblemAssembly ( )
virtual

destructor resets the association with the eigen system from this assembly object

Definition at line 54 of file structural_buckling_eigenproblem_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Function Documentation

void MAST::StructuralBucklingEigenproblemAssembly::clear_discipline_and_system ( )
virtual

clears the states and load factors for buckling eigenproblem

Reimplemented from MAST::AssemblyBase.

Definition at line 79 of file structural_buckling_eigenproblem_assembly.cpp.

Here is the call graph for this function:

Real MAST::StructuralBucklingEigenproblemAssembly::critical_point_estimate_from_eigenproblem ( Real  v) const

calculates the critical load factor based on the eigensolution

Definition at line 206 of file structural_buckling_eigenproblem_assembly.cpp.

Here is the caller graph for this function:

void MAST::StructuralBucklingEigenproblemAssembly::eigenproblem_assemble ( libMesh::SparseMatrix< Real > *  A,
libMesh::SparseMatrix< Real > *  B 
)
virtual

assembles the global A and B matrices for the modal eigenvalue problem

Reimplemented from MAST::EigenproblemAssembly.

Definition at line 95 of file structural_buckling_eigenproblem_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::StructuralBucklingEigenproblemAssembly::set_buckling_data ( bool  use_linearized_approach,
MAST::Parameter p,
const Real  lambda1,
const Real  lambda2,
libMesh::NumericVector< Real > &  x1,
libMesh::NumericVector< Real > &  x2 
)

set the states and load factors for buckling eigenproblem.

If use_linearized_approach is true, then the approximate stability eigenproblem is solved as $ K_1 x = \xi dK x$, where $ dK = -(K_2 - K_1) $ and $ \xi $ has the meaning of the load increment that would lead to a zero eigenvalue of the tangent stiffness matrix. If the value is false, then the problem is solved as $ K_1 x = \xi (-K_2) x $, in which case $ \beta = \frac{\xi}{1+\xi} $ is the location between the load factors $\lambda_1 $ and $\lambda_2 $ that lead to a zero eigenvalue of the tangent stiffness matrix. In both cases the eigenproblem provides an approximation, and the exact case is satisfied with $ \xi = 0 $.

Usually it is better to solve the first problem since the second case is highly ill-posed and nonlinear around $ \xi = -1 $.

Definition at line 62 of file structural_buckling_eigenproblem_assembly.cpp.

Here is the caller graph for this function:

Member Data Documentation

std::map<const libMesh::Elem*, RealVectorX> MAST::StructuralBucklingEigenproblemAssembly::_incompatible_sol
protected

map of local incompatible mode solution per 3D elements

Definition at line 101 of file structural_buckling_eigenproblem_assembly.h.

Real MAST::StructuralBucklingEigenproblemAssembly::_lambda1
protected

values of load factors for which the two stiffness matrices are calculated for the buckling eigenvalue problem.

Definition at line 119 of file structural_buckling_eigenproblem_assembly.h.

Real MAST::StructuralBucklingEigenproblemAssembly::_lambda2
protected

Definition at line 119 of file structural_buckling_eigenproblem_assembly.h.

MAST::Parameter* MAST::StructuralBucklingEigenproblemAssembly::_load_param
protected

load parameter used to define the two stiffness matrices

Definition at line 112 of file structural_buckling_eigenproblem_assembly.h.

libMesh::NumericVector<Real>* MAST::StructuralBucklingEigenproblemAssembly::_sol1
protected

the equilibrium solutions associated with _lambda1 and _lambda2 load factors.

Definition at line 125 of file structural_buckling_eigenproblem_assembly.h.

libMesh::NumericVector<Real>* MAST::StructuralBucklingEigenproblemAssembly::_sol1_sens
protected

the equilibrium solution sensitivity

Definition at line 131 of file structural_buckling_eigenproblem_assembly.h.

libMesh::NumericVector<Real> * MAST::StructuralBucklingEigenproblemAssembly::_sol2
protected

Definition at line 125 of file structural_buckling_eigenproblem_assembly.h.

libMesh::NumericVector<Real> * MAST::StructuralBucklingEigenproblemAssembly::_sol2_sens
protected

Definition at line 131 of file structural_buckling_eigenproblem_assembly.h.

bool MAST::StructuralBucklingEigenproblemAssembly::_use_linearized_formulation
protected

whether or not to use the linearized formulation

Definition at line 107 of file structural_buckling_eigenproblem_assembly.h.


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