MAST
|
#include <structural_buckling_eigenproblem_assembly.h>
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::PhysicsDisciplineBase & | discipline () const |
MAST::PhysicsDisciplineBase & | discipline () |
MAST::AssemblyElemOperations & | get_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::NonlinearSystem & | system () const |
MAST::NonlinearSystem & | system () |
MAST::SystemInitialization & | system_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::SolverMonitor * | get_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 . More... | |
virtual void | calculate_output_derivative (const libMesh::NumericVector< Real > &X, MAST::OutputAssemblyElemOperations &output, libMesh::NumericVector< Real > &dq_dX) |
calculates 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... | |
Definition at line 33 of file structural_buckling_eigenproblem_assembly.h.
MAST::StructuralBucklingEigenproblemAssembly::StructuralBucklingEigenproblemAssembly | ( | ) |
constructor associates the eigen system with this assembly object
Definition at line 39 of file structural_buckling_eigenproblem_assembly.cpp.
|
virtual |
destructor resets the association with the eigen system from this assembly object
Definition at line 54 of file structural_buckling_eigenproblem_assembly.cpp.
|
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.
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.
|
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.
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 , where and 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 , in which case is the location between the load factors and 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 .
Usually it is better to solve the first problem since the second case is highly ill-posed and nonlinear around .
Definition at line 62 of file structural_buckling_eigenproblem_assembly.cpp.
|
protected |
map of local incompatible mode solution per 3D elements
Definition at line 101 of file structural_buckling_eigenproblem_assembly.h.
|
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.
|
protected |
Definition at line 119 of file structural_buckling_eigenproblem_assembly.h.
|
protected |
load parameter used to define the two stiffness matrices
Definition at line 112 of file structural_buckling_eigenproblem_assembly.h.
|
protected |
the equilibrium solutions associated with _lambda1 and _lambda2 load factors.
Definition at line 125 of file structural_buckling_eigenproblem_assembly.h.
|
protected |
the equilibrium solution sensitivity
Definition at line 131 of file structural_buckling_eigenproblem_assembly.h.
|
protected |
Definition at line 125 of file structural_buckling_eigenproblem_assembly.h.
|
protected |
Definition at line 131 of file structural_buckling_eigenproblem_assembly.h.
|
protected |
whether or not to use the linearized formulation
Definition at line 107 of file structural_buckling_eigenproblem_assembly.h.