MAST
MAST::NonlinearImplicitAssembly Class Reference

#include <nonlinear_implicit_assembly.h>

Inheritance diagram for MAST::NonlinearImplicitAssembly:
Collaboration diagram for MAST::NonlinearImplicitAssembly:

Classes

class  PostAssemblyOperation
 user-provided object to perform actions after assembly and before returning to the solver. More...
 

Public Member Functions

 NonlinearImplicitAssembly ()
 constructor associates this assembly object with the system More...
 
virtual ~NonlinearImplicitAssembly ()
 destructor resets the association of this assembly object with the system More...
 
Real res_l2_norm () const
 L2 norm of the last-assembled residual. More...
 
Real first_iter_res_l2_norm () const
 
void reset_residual_norm_history ()
 reset L2 norm of the last-assembled residual More...
 
void set_post_assembly_operation (MAST::NonlinearImplicitAssembly::PostAssemblyOperation &post)
 sets the PostAssemblyOperation object for use after assembly. 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 void linearized_jacobian_solution_product (const libMesh::NumericVector< Real > &X, const libMesh::NumericVector< Real > &dX, libMesh::NumericVector< Real > &JdX, libMesh::NonlinearImplicitSystem &S)
 calculates the product of the Jacobian and a perturbation in solution vector $ [J] \{\Delta X\} $. More...
 
virtual void second_derivative_dot_solution_assembly (const libMesh::NumericVector< Real > &X, const libMesh::NumericVector< Real > &dX, libMesh::SparseMatrix< Real > &d_JdX_dX, libMesh::NonlinearImplicitSystem &S)
 calculates $ d ([J] \{\Delta X\})/ dX $. More...
 
virtual bool sensitivity_assemble (const MAST::FunctionBase &f, libMesh::NumericVector< Real > &sensitivity_rhs)
 Assembly function. More...
 
- 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 clear_discipline_and_system ()
 clears association with a system to this discipline More...
 
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 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

MAST::NonlinearImplicitAssembly::PostAssemblyOperation_post_assembly
 this object, if non-NULL is user-provided to perform actions after assembly and before returning to the solver More...
 
Real _res_l2_norm
 L2 norm of the last-assembled residual. More...
 
Real _first_iter_res_l2_norm
 
- 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 36 of file nonlinear_implicit_assembly.h.

Constructor & Destructor Documentation

MAST::NonlinearImplicitAssembly::NonlinearImplicitAssembly ( )

constructor associates this assembly object with the system

Definition at line 40 of file nonlinear_implicit_assembly.cpp.

Here is the caller graph for this function:

MAST::NonlinearImplicitAssembly::~NonlinearImplicitAssembly ( )
virtual

destructor resets the association of this assembly object with the system

Definition at line 49 of file nonlinear_implicit_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Function Documentation

Real MAST::NonlinearImplicitAssembly::first_iter_res_l2_norm ( ) const
inline

Definition at line 76 of file nonlinear_implicit_assembly.h.

void MAST::NonlinearImplicitAssembly::linearized_jacobian_solution_product ( const libMesh::NumericVector< Real > &  X,
const libMesh::NumericVector< Real > &  dX,
libMesh::NumericVector< Real > &  JdX,
libMesh::NonlinearImplicitSystem &  S 
)
virtual

calculates the product of the Jacobian and a perturbation in solution vector $ [J] \{\Delta X\} $.

For a single discipline system the solution vector and linearized solution provided here are used. For a multiphysics system, the user must ensure that all relevant multidisciplinary data-structures are initialized before calling this method.

Definition at line 256 of file nonlinear_implicit_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Real MAST::NonlinearImplicitAssembly::res_l2_norm ( ) const
inline

L2 norm of the last-assembled residual.

Definition at line 74 of file nonlinear_implicit_assembly.h.

void MAST::NonlinearImplicitAssembly::reset_residual_norm_history ( )
inline

reset L2 norm of the last-assembled residual

Definition at line 81 of file nonlinear_implicit_assembly.h.

Here is the call graph for this function:

void MAST::NonlinearImplicitAssembly::residual_and_jacobian ( const libMesh::NumericVector< Real > &  X,
libMesh::NumericVector< Real > *  R,
libMesh::SparseMatrix< Real > *  J,
libMesh::NonlinearImplicitSystem &  S 
)
virtual

function that assembles the matrices and vectors quantities for nonlinear solution

Reimplemented from MAST::AssemblyBase.

Reimplemented in MAST::LevelSetNonlinearImplicitAssembly.

Definition at line 66 of file nonlinear_implicit_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::NonlinearImplicitAssembly::second_derivative_dot_solution_assembly ( const libMesh::NumericVector< Real > &  X,
const libMesh::NumericVector< Real > &  dX,
libMesh::SparseMatrix< Real > &  d_JdX_dX,
libMesh::NonlinearImplicitSystem &  S 
)
virtual

calculates $ d ([J] \{\Delta X\})/ dX $.

Definition at line 369 of file nonlinear_implicit_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

bool MAST::NonlinearImplicitAssembly::sensitivity_assemble ( const MAST::FunctionBase f,
libMesh::NumericVector< Real > &  sensitivity_rhs 
)
virtual

Assembly function.

This function will be called to assemble the RHS of the sensitivity equations (which is -1 times sensitivity of system residual) prior to a solve and must be provided by the user in a derived class. The method provides dR/dp for f parameter.

If the routine is not able to provide sensitivity for this parameter, then it should return false, and the system will attempt to use finite differencing.

Reimplemented from MAST::AssemblyBase.

Reimplemented in MAST::LevelSetNonlinearImplicitAssembly.

Definition at line 480 of file nonlinear_implicit_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MAST::NonlinearImplicitAssembly::set_post_assembly_operation ( MAST::NonlinearImplicitAssembly::PostAssemblyOperation post)

sets the PostAssemblyOperation object for use after assembly.

Note that calling clear_discipline_and_system() will clear this pointer and the user will have to call this function again.

Definition at line 57 of file nonlinear_implicit_assembly.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

Real MAST::NonlinearImplicitAssembly::_first_iter_res_l2_norm
protected

Definition at line 159 of file nonlinear_implicit_assembly.h.

MAST::NonlinearImplicitAssembly::PostAssemblyOperation* MAST::NonlinearImplicitAssembly::_post_assembly
protected

this object, if non-NULL is user-provided to perform actions after assembly and before returning to the solver

Definition at line 154 of file nonlinear_implicit_assembly.h.

Real MAST::NonlinearImplicitAssembly::_res_l2_norm
protected

L2 norm of the last-assembled residual.

Definition at line 159 of file nonlinear_implicit_assembly.h.


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