system.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_SYSTEM_H
21 #define LIBMESH_SYSTEM_H
22 
23 // Local Includes
24 #include "libmesh/auto_ptr.h"
25 #include "libmesh/elem_range.h"
26 #include "libmesh/enum_norm_type.h"
27 #include "libmesh/enum_xdr_mode.h"
30 #include "libmesh/fe_type.h"
31 #include "libmesh/libmesh_common.h"
32 #include "libmesh/tensor_value.h" // For point_hessian
33 #include "libmesh/qoi_set.h"
35 #include "libmesh/variable.h"
38 
39 // C++ includes
40 #include <cstddef>
41 #include <set>
42 #include <vector>
43 
44 namespace libMesh
45 {
46 
47 // Forward Declarations
48 class System;
49 class SystemNorm;
50 class EquationSystems;
51 class MeshBase;
52 class Xdr;
53 class DofMap;
54 template <typename Output> class FunctionBase;
55 class Parameters;
56 class ParameterVector;
57 class Point;
58 class SensitivityData;
59 template <typename T> class NumericVector;
60 template <typename T> class VectorValue;
61 typedef VectorValue<Number> NumberVectorValue;
63 class SystemSubset;
64 
77 // ------------------------------------------------------------
78 // System class definition
79 class System : public ReferenceCountedObject<System>,
80  public ParallelObject
81 {
82 public:
83 
89  const std::string& name,
90  const unsigned int number);
91 
99  {
100  public:
104  virtual ~Initialization () {}
105 
111  virtual void initialize () = 0;
112  };
113 
114 
115 
122  class Assembly
123  {
124  public:
128  virtual ~Assembly () {}
129 
135  virtual void assemble () = 0;
136  };
137 
138 
139 
147  {
148  public:
152  virtual ~Constraint () {}
153 
159  virtual void constrain () = 0;
160  };
161 
162 
163 
170  class QOI
171  {
172  public:
176  virtual ~QOI () {}
177 
183  virtual void qoi (const QoISet& qoi_indices) = 0;
184  };
185 
186 
187 
195  {
196  public:
200  virtual ~QOIDerivative () {}
201 
207  virtual void qoi_derivative (const QoISet& qoi_indices) = 0;
208  };
209 
210 
211 
215  virtual ~System ();
216 
220  typedef System sys_type;
221 
225  sys_type & system () { return *this; }
226 
231  virtual void clear ();
232 
237  void init ();
238 
245  virtual void reinit ();
246 
251  virtual void update ();
252 
259  virtual void assemble ();
260 
265  virtual void assemble_qoi
266  (const QoISet &qoi_indices = QoISet());
267 
272  virtual void assemble_qoi_derivative
273  (const QoISet &qoi_indices = QoISet());
274 
286  virtual void assemble_residual_derivatives (const ParameterVector& parameters);
287 
293  virtual void restrict_solve_to (const SystemSubset* subset,
294  const SubsetSolveMode subset_solve_mode=SUBSET_ZERO);
295 
299  virtual void solve () {}
300 
310  virtual std::pair<unsigned int, Real>
311  sensitivity_solve (const ParameterVector& parameters);
312 
323  virtual std::pair<unsigned int, Real>
324  weighted_sensitivity_solve (const ParameterVector& parameters,
325  const ParameterVector& weights);
326 
337  virtual std::pair<unsigned int, Real>
338  adjoint_solve (const QoISet& qoi_indices = QoISet());
339 
354  virtual std::pair<unsigned int, Real>
356  const ParameterVector& weights,
357  const QoISet& qoi_indices = QoISet());
362  { return adjoint_already_solved;}
363 
367  void set_adjoint_already_solved(bool setting)
368  { adjoint_already_solved = setting;}
369 
370 
388  virtual void qoi_parameter_sensitivity (const QoISet& qoi_indices,
389  const ParameterVector& parameters,
390  SensitivityData& sensitivities);
391 
397  virtual void adjoint_qoi_parameter_sensitivity (const QoISet& qoi_indices,
398  const ParameterVector& parameters,
399  SensitivityData& sensitivities);
400 
406  virtual void forward_qoi_parameter_sensitivity (const QoISet& qoi_indices,
407  const ParameterVector& parameters,
408  SensitivityData& sensitivities);
409 
420  virtual void qoi_parameter_hessian(const QoISet& qoi_indices,
421  const ParameterVector& parameters,
422  SensitivityData& hessian);
423 
436  virtual void qoi_parameter_hessian_vector_product(const QoISet& qoi_indices,
437  const ParameterVector& parameters,
438  const ParameterVector& vector,
439  SensitivityData& product);
440 
446  virtual bool compare (const System& other_system,
447  const Real threshold,
448  const bool verbose) const;
449 
453  const std::string & name () const;
454 
460  virtual std::string system_type () const { return "Basic"; }
461 
472  FunctionBase<Gradient> *g = NULL) const;
473 
484  FEMFunctionBase<Gradient> *g = NULL) const;
485 
493  void project_solution (Number fptr(const Point& p,
494  const Parameters& parameters,
495  const std::string& sys_name,
496  const std::string& unknown_name),
497  Gradient gptr(const Point& p,
498  const Parameters& parameters,
499  const std::string& sys_name,
500  const std::string& unknown_name),
501  const Parameters& parameters) const;
502 
513  void project_vector (NumericVector<Number>& new_vector,
515  FunctionBase<Gradient> *g = NULL) const;
516 
527  void project_vector (NumericVector<Number>& new_vector,
529  FEMFunctionBase<Gradient> *g = NULL) const;
530 
539  void project_vector (Number fptr(const Point& p,
540  const Parameters& parameters,
541  const std::string& sys_name,
542  const std::string& unknown_name),
543  Gradient gptr(const Point& p,
544  const Parameters& parameters,
545  const std::string& sys_name,
546  const std::string& unknown_name),
547  const Parameters& parameters,
548  NumericVector<Number>& new_vector) const;
549 
564  void boundary_project_solution (const std::set<boundary_id_type> &b,
565  const std::vector<unsigned int> &variables,
567  FunctionBase<Gradient> *g = NULL);
568 
581  void boundary_project_solution (const std::set<boundary_id_type> &b,
582  const std::vector<unsigned int> &variables,
583  Number fptr(const Point& p,
584  const Parameters& parameters,
585  const std::string& sys_name,
586  const std::string& unknown_name),
587  Gradient gptr(const Point& p,
588  const Parameters& parameters,
589  const std::string& sys_name,
590  const std::string& unknown_name),
591  const Parameters& parameters);
592 
607  void boundary_project_vector (const std::set<boundary_id_type> &b,
608  const std::vector<unsigned int> &variables,
609  NumericVector<Number>& new_vector,
611  FunctionBase<Gradient> *g = NULL) const;
612 
625  void boundary_project_vector (const std::set<boundary_id_type> &b,
626  const std::vector<unsigned int> &variables,
627  Number fptr(const Point& p,
628  const Parameters& parameters,
629  const std::string& sys_name,
630  const std::string& unknown_name),
631  Gradient gptr(const Point& p,
632  const Parameters& parameters,
633  const std::string& sys_name,
634  const std::string& unknown_name),
635  const Parameters& parameters,
636  NumericVector<Number>& new_vector) const;
637 
641  unsigned int number () const;
642 
648  void update_global_solution (std::vector<Number>& global_soln) const;
649 
655  void update_global_solution (std::vector<Number>& global_soln,
656  const unsigned int dest_proc) const;
657 
661  const MeshBase & get_mesh() const;
662 
666  MeshBase & get_mesh();
667 
671  const DofMap & get_dof_map() const;
672 
676  DofMap & get_dof_map();
677 
682 
687 
692  bool active () const;
693 
697  void activate ();
698 
702  void deactivate ();
703 
712  void set_basic_system_only ();
713 
717  typedef std::map<std::string, NumericVector<Number>* >::iterator vectors_iterator;
718  typedef std::map<std::string, NumericVector<Number>* >::const_iterator const_vectors_iterator;
719 
724 
729 
734 
739 
749  NumericVector<Number> & add_vector (const std::string& vec_name,
750  const bool projections=true,
751  const ParallelType type = PARALLEL);
752 
756  void remove_vector(const std::string& vec_name);
757 
764  { return _solution_projection; }
765 
770  bool have_vector (const std::string& vec_name) const;
771 
776  const NumericVector<Number> * request_vector (const std::string& vec_name) const;
777 
782  NumericVector<Number> * request_vector (const std::string& vec_name);
783 
789  const NumericVector<Number> * request_vector (const unsigned int vec_num) const;
790 
796  NumericVector<Number> * request_vector (const unsigned int vec_num);
797 
803  const NumericVector<Number> & get_vector (const std::string& vec_name) const;
804 
810  NumericVector<Number> & get_vector (const std::string& vec_name);
811 
817  const NumericVector<Number> & get_vector (const unsigned int vec_num) const;
818 
824  NumericVector<Number> & get_vector (const unsigned int vec_num);
825 
830  const std::string & vector_name (const unsigned int vec_num) const;
831 
835  const std::string & vector_name (const NumericVector<Number> & vec_reference) const;
836 
842  void set_vector_preservation (const std::string &vec_name, bool preserve);
843 
849  bool vector_preservation (const std::string &vec_name) const;
850 
856  NumericVector<Number> & add_adjoint_solution(unsigned int i=0);
857 
862  NumericVector<Number> & get_adjoint_solution(unsigned int i=0);
863 
868  const NumericVector<Number> & get_adjoint_solution(unsigned int i=0) const;
869 
876 
882 
887  const NumericVector<Number> & get_sensitivity_solution(unsigned int i=0) const;
888 
896 
903 
910 
917 
923 
929 
935  NumericVector<Number> & add_adjoint_rhs(unsigned int i=0);
936 
943  NumericVector<Number> & get_adjoint_rhs(unsigned int i=0);
944 
949  const NumericVector<Number> & get_adjoint_rhs(unsigned int i=0) const;
950 
956  NumericVector<Number> & add_sensitivity_rhs(unsigned int i=0);
957 
967  NumericVector<Number> & get_sensitivity_rhs(unsigned int i=0);
968 
973  const NumericVector<Number> & get_sensitivity_rhs(unsigned int i=0) const;
974 
980  unsigned int n_vectors () const;
981 
988  virtual unsigned int n_matrices () const;
989 
993  unsigned int n_vars() const;
994 
998  unsigned int n_variable_groups() const;
999 
1005  unsigned int n_components() const;
1006 
1010  dof_id_type n_dofs() const;
1011 
1016  dof_id_type n_active_dofs() const;
1017 
1023 
1029 
1034  dof_id_type n_local_dofs() const;
1035 
1040  unsigned int add_variable (const std::string& var,
1041  const FEType& type,
1042  const std::set<subdomain_id_type> * const active_subdomains = NULL);
1043 
1049  unsigned int add_variable (const std::string& var,
1050  const Order order = FIRST,
1051  const FEFamily = LAGRANGE,
1052  const std::set<subdomain_id_type> * const active_subdomains = NULL);
1053 
1058  unsigned int add_variables (const std::vector<std::string> &vars,
1059  const FEType& type,
1060  const std::set<subdomain_id_type> * const active_subdomains = NULL);
1061 
1067  unsigned int add_variables (const std::vector<std::string> &vars,
1068  const Order order = FIRST,
1069  const FEFamily = LAGRANGE,
1070  const std::set<subdomain_id_type> * const active_subdomains = NULL);
1071 
1075  const Variable & variable (unsigned int var) const;
1076 
1080  const VariableGroup & variable_group (unsigned int vg) const;
1081 
1085  bool has_variable(const std::string& var) const;
1086 
1090  const std::string & variable_name(const unsigned int i) const;
1091 
1096  unsigned short int variable_number (const std::string& var) const;
1097 
1102  void get_all_variable_numbers(std::vector<unsigned int>& all_variable_numbers) const;
1103 
1114  unsigned int variable_scalar_number (const std::string& var,
1115  unsigned int component) const;
1116 
1127  unsigned int variable_scalar_number (unsigned int var_num,
1128  unsigned int component) const;
1129 
1130 
1134  const FEType & variable_type (const unsigned int i) const;
1135 
1139  const FEType & variable_type (const std::string& var) const;
1140 
1145  bool identify_variable_groups () const;
1146 
1150  void identify_variable_groups (const bool);
1151 
1157  unsigned int var = 0,
1158  FEMNormType norm_type = L2) const;
1159 
1165  const SystemNorm &norm) const;
1166 
1170  void read_header (Xdr& io,
1171  const std::string &version,
1172  const bool read_header=true,
1173  const bool read_additional_data=true,
1174  const bool read_legacy_format=false);
1175 
1179  void read_legacy_data (Xdr& io,
1180  const bool read_additional_data=true);
1181 
1186  template <typename ValType>
1187  void read_serialized_data (Xdr& io,
1188  const bool read_additional_data=true);
1196  const bool read_additional_data=true)
1197  { read_serialized_data<Number>(io, read_additional_data); }
1198 
1204  template <typename InValType>
1205  std::size_t read_serialized_vectors (Xdr &io,
1206  const std::vector<NumericVector<Number>*> &vectors) const;
1207 
1215  std::size_t read_serialized_vectors (Xdr &io,
1216  const std::vector<NumericVector<Number>*> &vectors) const
1217  { return read_serialized_vectors<Number>(io, vectors); }
1218 
1225  template <typename InValType>
1226  void read_parallel_data (Xdr &io,
1227  const bool read_additional_data);
1228 
1238  const bool read_additional_data)
1239  { read_parallel_data<Number>(io, read_additional_data); }
1240 
1244  void write_header (Xdr& io,
1245  const std::string &version,
1246  const bool write_additional_data) const;
1247 
1252  void write_serialized_data (Xdr& io,
1253  const bool write_additional_data = true) const;
1254 
1261  const std::vector<const NumericVector<Number>*> &vectors) const;
1262 
1269  void write_parallel_data (Xdr &io,
1270  const bool write_additional_data) const;
1271 
1276  std::string get_info () const;
1277 
1281  void attach_init_function (void fptr(EquationSystems& es,
1282  const std::string& name));
1283 
1288  void attach_init_object (Initialization& init);
1289 
1294  void attach_assemble_function (void fptr(EquationSystems& es,
1295  const std::string& name));
1296 
1301  void attach_assemble_object (Assembly& assemble);
1302 
1306  void attach_constraint_function (void fptr(EquationSystems& es,
1307  const std::string& name));
1308 
1312  void attach_constraint_object (Constraint& constrain);
1313 
1318  void attach_QOI_function (void fptr(EquationSystems& es,
1319  const std::string& name,
1320  const QoISet& qoi_indices));
1321 
1326  void attach_QOI_object (QOI& qoi);
1327 
1333  void attach_QOI_derivative (void fptr(EquationSystems& es,
1334  const std::string& name,
1335  const QoISet& qoi_indices));
1336 
1342  void attach_QOI_derivative_object (QOIDerivative& qoi_derivative);
1343 
1348  virtual void user_initialization ();
1349 
1354  virtual void user_assembly ();
1355 
1360  virtual void user_constrain ();
1361 
1366  virtual void user_QOI (const QoISet& qoi_indices);
1367 
1372  virtual void user_QOI_derivative (const QoISet& qoi_indices);
1373 
1379  virtual void re_update ();
1380 
1384  virtual void restrict_vectors ();
1385 
1389  virtual void prolong_vectors ();
1390 
1411 
1416  virtual void disable_cache ();
1417 
1428 
1443 
1444 
1445  //--------------------------------------------------
1446  // The solution and solution access members
1447 
1452  Number current_solution (const dof_id_type global_dof_number) const;
1453 
1458 
1470 
1481 
1488  std::vector<Number> qoi;
1489 
1510  Number point_value(unsigned int var, const Point &p,
1511  const bool insist_on_success = true) const;
1512 
1520  Number point_value(unsigned int var, const Point &p, const Elem &e) const;
1521 
1526  Gradient point_gradient(unsigned int var, const Point &p,
1527  const bool insist_on_success = true) const;
1528 
1533  Gradient point_gradient(unsigned int var, const Point &p, const Elem &e) const;
1534 
1539  Tensor point_hessian(unsigned int var, const Point &p,
1540  const bool insist_on_success = true) const;
1541 
1547  Tensor point_hessian(unsigned int var, const Point &p, const Elem &e) const;
1548 
1553  void local_dof_indices (const unsigned int var,
1554  std::set<dof_id_type> & var_indices) const;
1555 
1560  void zero_variable (NumericVector<Number>& v, unsigned int var_num) const;
1561 
1562 protected:
1563 
1569  virtual void init_data ();
1570 
1575  void project_vector (NumericVector<Number>&) const;
1576 
1583  NumericVector<Number>&) const;
1584 
1585 private:
1592  System (const System&);
1593 
1600  System& operator=(const System&);
1601 
1607  unsigned int var,
1608  FEMNormType norm_type) const;
1609 
1616  template <typename iterator_type, typename InValType>
1618  const iterator_type begin,
1619  const iterator_type end,
1620  const InValType dummy,
1621  Xdr &io,
1622  const std::vector<NumericVector<Number>*> &vecs,
1623  const unsigned int var_to_read=libMesh::invalid_uint) const;
1624 
1631  unsigned int read_SCALAR_dofs (const unsigned int var,
1632  Xdr &io,
1633  NumericVector<Number> &vec) const;
1634 
1641  template <typename InValType>
1643  NumericVector<Number> &vec);
1644 
1654  NumericVector<Number> &vec)
1655  { return read_serialized_vector<Number>(io, vec); }
1656 
1663  template <typename iterator_type>
1665  const dof_id_type n_objects,
1666  const iterator_type begin,
1667  const iterator_type end,
1668  Xdr &io,
1669  const unsigned int var_to_write=libMesh::invalid_uint) const;
1670 
1676  unsigned int write_SCALAR_dofs (const NumericVector<Number> &vec,
1677  const unsigned int var,
1678  Xdr &io) const;
1679 
1687  const NumericVector<Number> &vec) const;
1688 
1693  const std::string& name);
1694 
1699 
1704  const std::string& name);
1705 
1710 
1715  const std::string& name);
1716 
1721 
1726  const std::string& name,
1727  const QoISet& qoi_indices);
1728 
1733 
1738  const std::string& name,
1739  const QoISet& qoi_indices);
1740 
1745 
1751 
1757 
1763 
1767  const std::string _sys_name;
1768 
1772  const unsigned int _sys_number;
1773 
1777  std::vector<Variable> _variables;
1778 
1782  std::vector<VariableGroup> _variable_groups;
1783 
1788  std::map<std::string, unsigned short int> _variable_numbers;
1789 
1793  bool _active;
1794 
1801  std::map<std::string, NumericVector<Number>* > _vectors;
1802 
1807  std::map<std::string, bool> _vector_projections;
1808 
1812  std::map<std::string, ParallelType> _vector_types;
1813 
1820 
1826 
1832 
1838 
1845 
1856  std::vector<unsigned int> _written_var_indices;
1857 
1864 };
1865 
1866 
1867 
1868 // ------------------------------------------------------------
1869 // System inline methods
1870 inline
1871 const std::string & System::name() const
1872 {
1873  return _sys_name;
1874 }
1875 
1876 
1877 
1878 inline
1879 unsigned int System::number() const
1880 {
1881  return _sys_number;
1882 }
1883 
1884 
1885 
1886 inline
1888 {
1889  return _mesh;
1890 }
1891 
1892 
1893 
1894 inline
1896 {
1897  return _mesh;
1898 }
1899 
1900 
1901 
1902 inline
1904 {
1905  return *_dof_map;
1906 }
1907 
1908 
1909 
1910 inline
1912 {
1913  return *_dof_map;
1914 }
1915 
1916 
1917 
1918 inline
1919 bool System::active() const
1920 {
1921  return _active;
1922 }
1923 
1924 
1925 
1926 inline
1928 {
1929  _active = true;
1930 }
1931 
1932 
1933 
1934 inline
1936 {
1937  _active = false;
1938 }
1939 
1940 
1941 
1942 inline
1944 {
1945  _basic_system_only = true;
1946 }
1947 
1948 
1949 
1950 inline
1951 unsigned int System::n_vars() const
1952 {
1953  return libmesh_cast_int<unsigned int>(_variables.size());
1954 }
1955 
1956 
1957 
1958 inline
1959 unsigned int System::n_variable_groups() const
1960 {
1961  return libmesh_cast_int<unsigned int>(_variable_groups.size());
1962 }
1963 
1964 
1965 
1966 inline
1967 unsigned int System::n_components() const
1968 {
1969  if (_variables.empty())
1970  return 0;
1971 
1972  const Variable& last = _variables.back();
1973  return last.first_scalar_number() + last.n_components();
1974 }
1975 
1976 
1977 
1978 inline
1979 const Variable & System::variable (const unsigned int i) const
1980 {
1981  libmesh_assert_less (i, _variables.size());
1982 
1983  return _variables[i];
1984 }
1985 
1986 
1987 
1988 inline
1989 const VariableGroup & System::variable_group (const unsigned int vg) const
1990 {
1991  libmesh_assert_less (vg, _variable_groups.size());
1992 
1993  return _variable_groups[vg];
1994 }
1995 
1996 
1997 
1998 inline
1999 const std::string & System::variable_name (const unsigned int i) const
2000 {
2001  libmesh_assert_less (i, _variables.size());
2002 
2003  return _variables[i].name();
2004 }
2005 
2006 
2007 
2008 inline
2009 unsigned int
2010 System::variable_scalar_number (const std::string& var,
2011  unsigned int component) const
2012 {
2013  return variable_scalar_number(this->variable_number(var), component);
2014 }
2015 
2016 
2017 
2018 inline
2019 unsigned int
2020 System::variable_scalar_number (unsigned int var_num,
2021  unsigned int component) const
2022 {
2023  return _variables[var_num].first_scalar_number() + component;
2024 }
2025 
2026 
2027 
2028 inline
2029 const FEType & System::variable_type (const unsigned int i) const
2030 {
2031  libmesh_assert_less (i, _variables.size());
2032 
2033  return _variables[i].type();
2034 }
2035 
2036 
2037 
2038 inline
2039 const FEType & System::variable_type (const std::string& var) const
2040 {
2041  return _variables[this->variable_number(var)].type();
2042 }
2043 
2044 
2045 
2046 inline
2048 {
2050 }
2051 
2052 
2053 
2054 inline
2056 {
2058 }
2059 
2060 
2061 
2062 inline
2064 {
2065  return this->n_dofs() - this->n_constrained_dofs();
2066 }
2067 
2068 
2069 
2070 inline
2071 bool System::have_vector (const std::string& vec_name) const
2072 {
2073  return (_vectors.count(vec_name));
2074 }
2075 
2076 
2077 
2078 inline
2079 unsigned int System::n_vectors () const
2080 {
2081  return libmesh_cast_int<unsigned int>(_vectors.size());
2082 }
2083 
2084 inline
2085 unsigned int System::n_matrices () const
2086 {
2087  return 0;
2088 }
2089 
2090 inline
2092 {
2093  return _vectors.begin();
2094 }
2095 
2096 inline
2098 {
2099  return _vectors.begin();
2100 }
2101 
2102 inline
2104 {
2105  return _vectors.end();
2106 }
2107 
2108 inline
2110 {
2111  return _vectors.end();
2112 }
2113 
2114 inline
2116 {
2117  libmesh_not_implemented();
2118 }
2119 
2120 inline
2122 
2123 inline
2124 std::pair<unsigned int, Real>
2126 {
2127  libmesh_not_implemented();
2128 }
2129 
2130 inline
2131 std::pair<unsigned int, Real>
2133  const ParameterVector&)
2134 {
2135  libmesh_not_implemented();
2136 }
2137 
2138 inline
2139 std::pair<unsigned int, Real>
2141 {
2142  libmesh_not_implemented();
2143 }
2144 
2145 inline
2146 std::pair<unsigned int, Real>
2148  const ParameterVector&,
2149  const QoISet&)
2150 {
2151  libmesh_not_implemented();
2152 }
2153 
2154 inline
2155 void
2157  const ParameterVector&,
2158  SensitivityData&)
2159 {
2160  libmesh_not_implemented();
2161 }
2162 
2163 inline
2164 void
2166  const ParameterVector&,
2167  SensitivityData&)
2168 {
2169  libmesh_not_implemented();
2170 }
2171 
2172 inline
2173 void
2175  const ParameterVector&,
2176  SensitivityData&)
2177 {
2178  libmesh_not_implemented();
2179 }
2180 
2181 inline
2182 void
2184  const ParameterVector&,
2185  const ParameterVector&,
2186  SensitivityData&)
2187 {
2188  libmesh_not_implemented();
2189 }
2190 
2191 
2192 } // namespace libMesh
2193 
2194 #endif // LIBMESH_SYSTEM_H

Site Created By: libMesh Developers
Last modified: February 07 2014 16:57:07 UTC

Hosted By:
SourceForge.net Logo