Logo  0.95.0-final
Finite Element Embedded Library and Language in C++
Feel++ Feel++ on Github Feel++ community
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
systemimplicit.hpp
Go to the documentation of this file.
1 /* -*- mode: c++; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; show-trailing-whitespace: t -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2 
3  This file is part of the Feel library
4 
5  Author(s): Christophe Prud'homme <christophe.prudhomme@feelpp.org>
6  Date: 2009-01-04
7 
8  Copyright (C) 2009 Université Joseph Fourier (Grenoble I)
9 
10  This library is free software; you can redistribute it and/or
11  modify it under the terms of the GNU Lesser General Public
12  License as published by the Free Software Foundation; either
13  version 3.0 of the License, or (at your option) any later version.
14 
15  This library is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public
21  License along with this library; if not, write to the Free Software
22  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 */
30 #ifndef __SystemImplicit_H
31 #define __SystemImplicit_H 1
32 
34 
35 namespace Feel
36 {
44 template<typename SpaceType>
45 class SystemImplicit : SystemExplicit<SpaceType>
46 {
48 public:
49 
50 
54 
55 
57 
61 
63 
64  typedef typename super::value_type value_type;
65  typedef typename super::functionspace_type functionspace_type;
66  typedef typename super::functionspace_type functionspace_ptrtype;
67  typedef typename super::element_type element_type;
68 
70  typedef boost::shared_ptr<backend_type> backend_ptrtype;
71 
72  /*matrix*/
74  typedef typename backend_type::sparse_matrix_ptrtype sparse_matrix_ptrtype;
75  /* vector */
76  typedef typename backend_type::vector_type vector_type;
77  typedef typename backend_type::vector_ptrtype vector_ptrtype;
78 
79 
81 
85 
86  SystemImplicit( functionspace_ptrtype const& Xh, po::variables_map const& vm );
87 
89  SystemImplicit( SystemImplicit const & si );
90 
93 
95 
99 
102  {
103  if ( this != &o )
104  {
105  super::operator=( o );
106  M_backend = o.M_backend;
107  }
108 
109  return *this;
110  }
112 
116 
118  backend_ptrtype& backend()
119  {
120  return M_backend;
121  }
122 
124  backend_ptrtype const& backend() const
125  {
126  return M_backend;
127  }
128 
130 
134 
136  void backend( backend_ptrtype const& b )
137  {
138  M_backend = b;
139  }
140 
142 
146 
147 
149 
150 
151 
152 protected:
153 
154  backend_ptrtype M_backend;
155 
156 
157 private:
158 
159 };
160 template<typename SpaceType>
161 SystemImplicit<SpaceType>::SystemImplicit( functionspace_ptrtype const& Xh,
162  po::variables_map const& vm )
163  :
164  super( Xh, vm ),
165  M_backend( backend_type::build( vm ) )
166 {}
167 template<typename SpaceType>
169  :
170  super( sil ),
171  M_backend( sil.M_backend )
172 {}
173 
174 
175 } // Feel
176 #endif /* __SystemImplicit_H */

Generated on Sun Oct 20 2013 08:25:05 for Feel++ by doxygen 1.8.4