20 #ifndef __mast__nonlinear_implicit_assembly__    21 #define __mast__nonlinear_implicit_assembly__    27 #include "libmesh/nonlinear_implicit_system.h"    33     class NonlinearImplicitAssemblyElemOperations;
    51             virtual void post_assembly(
const libMesh::NumericVector<Real>& X,
    52                                        libMesh::NumericVector<Real>* R,
    53                                        libMesh::SparseMatrix<Real>*  J,
    54                                        libMesh::NonlinearImplicitSystem& S) = 0;
   101                                libMesh::NumericVector<Real>* R,
   102                                libMesh::SparseMatrix<Real>*  J,
   103                                libMesh::NonlinearImplicitSystem& S);
   116                                              const libMesh::NumericVector<Real>& dX,
   117                                              libMesh::NumericVector<Real>& JdX,
   118                                              libMesh::NonlinearImplicitSystem& S);
   126                                                 bool if_localize_sol,
   127                                                 const libMesh::NumericVector<Real>& dX,
   128                                                 bool if_localize_sol_sens,
   129                                                 libMesh::SparseMatrix<Real>& d_JdX_dX,
   130                                                 libMesh::NonlinearImplicitSystem& S);
   146                               bool if_localize_sol,
   148                               libMesh::NumericVector<Real>& sensitivity_rhs,
   149                               bool close_vector = 
true);
   170 #endif //__mast__nonlinear_implicit_assembly__ 
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 ...
Real _res_l2_norm
L2 norm of the last-assembled residual. 
virtual void second_derivative_dot_solution_assembly(const libMesh::NumericVector< Real > &X, bool if_localize_sol, const libMesh::NumericVector< Real > &dX, bool if_localize_sol_sens, libMesh::SparseMatrix< Real > &d_JdX_dX, libMesh::NonlinearImplicitSystem &S)
calculates . 
void reset_residual_norm_history()
reset L2 norm of the last-assembled residual 
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 . 
virtual void post_assembly(const libMesh::NumericVector< Real > &X, libMesh::NumericVector< Real > *R, libMesh::SparseMatrix< Real > *J, libMesh::NonlinearImplicitSystem &S)=0
NonlinearImplicitAssembly()
constructor associates this assembly object with the system 
MAST::NonlinearImplicitAssembly::PostAssemblyOperation * _post_assembly
this object, if non-NULL is user-provided to perform actions after assembly and before returning to t...
Real res_l2_norm() const
L2 norm of the last-assembled residual. 
virtual bool sensitivity_assemble(const libMesh::NumericVector< Real > &X, bool if_localize_sol, const MAST::FunctionBase &f, libMesh::NumericVector< Real > &sensitivity_rhs, bool close_vector=true)
Assembly function. 
virtual ~PostAssemblyOperation()
user-provided object to perform actions after assembly and before returning to the solver...
Real _first_iter_res_l2_norm
Real first_iter_res_l2_norm() const
void set_post_assembly_operation(MAST::NonlinearImplicitAssembly::PostAssemblyOperation &post)
sets the PostAssemblyOperation object for use after assembly. 
virtual ~NonlinearImplicitAssembly()
destructor resets the association of this assembly object with the system