MAST
pseudo_arclength_continuation_solver.h
Go to the documentation of this file.
1 /*
2  * MAST: Multidisciplinary-design Adaptation and Sensitivity Toolkit
3  * Copyright (C) 2013-2019 Manav Bhatia
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__pseudo_arclength_continuation_solver_h__
21 #define __mast__pseudo_arclength_continuation_solver_h__
22 
23 // MAST includes
25 
26 
27 namespace MAST {
28 
51 
52  public:
53 
55 
57 
62  virtual void initialize(Real dp);
63 
64 
65  protected:
66 
67  virtual void
68  _solve_NR_iterate(libMesh::NumericVector<Real> &X,
69  MAST::Parameter &p);
70 
75  void
76  _update_search_direction(const libMesh::NumericVector<Real> &X,
77  const MAST::Parameter &p,
78  libMesh::SparseMatrix<Real> &jac,
79  /*libMesh::NumericVector<Real> &dfdp,
80  libMesh::NumericVector<Real> &dXdp,*/
81  libMesh::NumericVector<Real> &t1_X,
82  Real &t1_p);
83 
84 
94  virtual Real
95  _g(const libMesh::NumericVector<Real> &X,
96  const MAST::Parameter &p);
97 
98 
110  void
111  _g(const libMesh::NumericVector<Real> &X,
112  const MAST::Parameter &p,
113  libMesh::NumericVector<Real> &t1_X,
114  Real &t1_p,
115  Real &g);
116 
120  virtual void _save_iteration_data();
121 
125  virtual void _reset_iterations();
126 
127  std::unique_ptr<libMesh::NumericVector<Real>> _t0_X, _t0_X_orig;
129  };
130 }
131 
132 
133 #endif // __mast__pseudo_arclength_continuation_solver_h__
134 
virtual Real _g(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p)
where, and .
void _update_search_direction(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::SparseMatrix< Real > &jac, libMesh::NumericVector< Real > &t1_X, Real &t1_p)
updates for the current iterate X and p, and stores these values to _t0_X and _t0_p for next computa...
virtual void _save_iteration_data()
method saves any data for possible resuse if the solution step is restarted
This is a scalar function whose value can be changed and one that can be used as a design variable in...
Definition: parameter.h:35
libMesh::Real Real
virtual void initialize(Real dp)
initializes the search direction using the specified load step dp.
the equation set is: the N-R updates are calculated such that This equation is solved using Schur-f...
std::unique_ptr< libMesh::NumericVector< Real > > _t0_X_orig
The constraint equation is defined along the path as where, , is the solution, is the load parame...
std::unique_ptr< libMesh::NumericVector< Real > > _t0_X
virtual void _solve_NR_iterate(libMesh::NumericVector< Real > &X, MAST::Parameter &p)
virtual void _reset_iterations()
method resets any data if a solution step is restarted