85
template<class T, class M>
90
typedef typename csr<T>::size_type size_type;
90
typedef typename csr<T,M>::size_type size_type;
91
91
typedef T value_type;
92
typedef typename scalar_traits<T>::type float_type; // TODO: when T=complex<scalar_type>
93
typedef space_basic<float_type> space_type;
94
typedef geo_basic<float_type> geo_type;
92
typedef typename scalar_traits<T>::type float_type;
93
typedef geo_basic<float_type,M> geo_type;
94
typedef space_basic<float_type,M> space_type;
96
96
// allocator/deallocator:
99
99
form_basic (const space_type& X, const space_type& Y, const std::string& name);
100
form_basic (const space_type& X, const space_type& Y, const std::string& name, const geo_basic<T,M>& gamma);
107
108
const communicator& comm() const;
113
const csr<T>& uu() const;
114
const csr<T>& ub() const;
115
const csr<T>& bu() const;
116
const csr<T>& bb() const;
118
110
// linear algebra:
120
form_basic<T> operator+ (const form_basic<T>& b) const;
121
form_basic<T> operator- (const form_basic<T>& b) const;
122
field_basic<T> operator* (const field_basic<T>& xh) const;
112
form_basic<T,M> operator+ (const form_basic<T,M>& b) const;
113
form_basic<T,M> operator- (const form_basic<T,M>& b) const;
114
field_basic<T,M> operator* (const field_basic<T,M>& xh) const;
125
float_type operator () (const field_basic<T>& uh, const field_basic<T>& vh) const;
116
float_type operator () (const field_basic<T,M>& uh, const field_basic<T,M>& vh) const;
130
oparstream& put (oparstream& ops, bool show_partition = true) const;
120
odiststream& put (odiststream& ops, bool show_partition = true) const;
131
121
void dump (std::string name) const;
143
void assembly (const geo_type& omega, const form_element<T>& form_e);
135
void assembly (const form_element<T,M>& form_e,
136
const geo_basic<T,M>& X_geo,
137
const geo_basic<T,M>& Y_geo,
138
bool X_geo_is_background = true);
145
typedef form_basic<Float> form;
140
typedef form_basic<Float,rheo_default_memory_model> form;
148
143
// ------------ inline'd -----------------------------------
145
template<class T, class M>
152
form_basic<T>::form_basic ()
153
: _X(), _Y(), _uu(), _ub(), _bu(), _bb()
147
form_basic<T,M>::form_basic ()
148
: _X(), _Y(), uu(), ub(), bu(), bb()
151
template<class T, class M>
158
const typename form_basic<T>::space_type&
159
form_basic<T>::get_first_space() const
153
const typename form_basic<T,M>::space_type&
154
form_basic<T,M>::get_first_space() const
158
template<class T, class M>
165
const typename form_basic<T>::space_type&
166
form_basic<T>::get_second_space() const
160
const typename form_basic<T,M>::space_type&
161
form_basic<T,M>::get_second_space() const
165
template<class T, class M>
172
const typename form_basic<T>::geo_type&
173
form_basic<T>::get_geo() const
167
const typename form_basic<T,M>::geo_type&
168
form_basic<T,M>::get_geo() const
175
170
return _X.get_geo();
208
form_basic<T>::uu() const
215
form_basic<T>::ub() const
222
form_basic<T>::bu() const
229
form_basic<T>::bb() const
172
template<class T, class M>
235
174
const communicator&
236
form_basic<T>::comm() const
175
form_basic<T,M>::comm() const
238
177
return get_geo().comm();
179
template<class T, class M>
243
form_basic<T>::operator+ (const form_basic<T>& b) const
182
form_basic<T,M>::operator+ (const form_basic<T,M>& b) const
246
c.uu() = uu() + b.uu();
247
c.ub() = ub() + b.ub();
248
c.bu() = bu() + b.bu();
249
c.bb() = bb() + b.bb();
191
template<class T, class M>
255
form_basic<T>::operator- (const form_basic<T>& b) const
194
form_basic<T,M>::operator- (const form_basic<T,M>& b) const
258
c.uu() = uu() - b.uu();
259
c.ub() = ub() - b.ub();
260
c.bu() = bu() - b.bu();
261
c.bb() = bb() - b.bb();