MAST
Multidisciplinary-design Adaptation and Sensitivity Toolkit (MAST)
nonlinear_implicit_assembly_elem_operations.h
Go to the documentation of this file.
1 /*
2  * MAST: Multidisciplinary-design Adaptation and Sensitivity Toolkit
3  * Copyright (C) 2013-2020 Manav Bhatia and MAST authors
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #ifndef __mast_nonlinear_implicit_assembly_elem_operation_h__
21 #define __mast_nonlinear_implicit_assembly_elem_operation_h__
22 
23 // MAST includes
25 #include "base/mast_data_types.h"
26 
27 
28 namespace MAST {
29 
30  // Forward declerations
31  class LevelSetIntersection;
32  template <typename ValType> class FieldFunction;
33 
34 
37 
38  public:
40 
42 
43 
50  virtual void elem_calculations(bool if_jac,
51  RealVectorX& vec,
52  RealMatrixX& mat) = 0;
53 
54 
62  virtual void
64 
65 
70  virtual void
72  RealVectorX& vec) = 0;
73 
78  virtual void
80  RealVectorX& vec) = 0;
81 
86  virtual void
88  RealVectorX& vec) = 0;
89 
90 
95  virtual void
98  RealVectorX& vec) = 0;
99 
104  virtual void
106 
107 
113 
114  protected:
115 
116  };
117 }
118 
119 
120 #endif // __mast_nonlinear_implicit_assembly_elem_operation_h__
121 
void check_element_numerical_jacobian(RealVectorX &sol)
a helper function to evaluate the numerical Jacobian and compare it with the analytical Jacobian...
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...
virtual void elem_calculations(bool if_jac, RealVectorX &vec, RealMatrixX &mat)=0
performs the element calculations over elem, and returns the element vector and matrix quantities in ...
virtual void elem_second_derivative_dot_solution_assembly(RealMatrixX &mat)=0
calculates over elem, and returns the matrix in vec .
Matrix< Real, Dynamic, Dynamic > RealMatrixX
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 sensi...
virtual void elem_topology_sensitivity_calculations(const MAST::FunctionBase &f, RealVectorX &vec)=0
performs the element topology sensitivity calculations over elem, and returns the element residual se...
Matrix< Real, Dynamic, 1 > RealVectorX
virtual void elem_linearized_jacobian_solution_product(RealVectorX &vec)=0
performs the element calculations over elem, and returns the element vector quantity in vec...