MAST
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__arclength_continuation_solver_h__
21 #define __mast__arclength_continuation_solver_h__
22 
23 // MAST includes
25 
26 
27 namespace MAST {
28 
37 
38  public:
39 
41 
43 
48  virtual void initialize(Real dp);
49 
50  protected:
51 
52  virtual void
53  _solve_NR_iterate(libMesh::NumericVector<Real> &X,
54  MAST::Parameter &p);
55 
56  virtual void
57  _dXdp(const libMesh::NumericVector<Real> &X,
58  const MAST::Parameter &p,
59  libMesh::NumericVector<Real> &dfdp,
60  libMesh::NumericVector<Real> &dXdp);
61 
69  virtual Real
70  _g(const libMesh::NumericVector<Real> &X,
71  const MAST::Parameter &p);
72 
82  void
83  _g(const libMesh::NumericVector<Real> &X,
84  const MAST::Parameter &p,
85  libMesh::NumericVector<Real> &dfdp,
86  libMesh::NumericVector<Real> &dXdp,
87  Real &g,
88  Real &dgdp,
89  libMesh::NumericVector<Real> *dgdX);
90 
95  virtual void _save_iteration_data() {}
96 
101  virtual void _reset_iterations() {}
102 
103  Real
105  };
106 }
107 
108 #endif // __mast__arclength_continuation_solver_h__
109 
virtual void _solve_NR_iterate(libMesh::NumericVector< Real > &X, MAST::Parameter &p)
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
constraint equation is defined along the path as where, is the solution, is the load parameter...
virtual void _save_iteration_data()
method saves any data for possible resuse if the solution step is restarted.
virtual void _reset_iterations()
method resets any data if a soltion step is restarted.
the equation set is: the N-R updates are calculated such that This equation is solved using Schur-f...
virtual Real _g(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p)
virtual void initialize(Real dp)
sets the arc length using a nonlinear solution using a step dp.
virtual void _dXdp(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::NumericVector< Real > &dfdp, libMesh::NumericVector< Real > &dXdp)