an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 #ifndef _RHEOLEF_FIELD_COMPONENT_H
2 #define _RHEOLEF_FIELD_COMPONENT_H
52 #include "rheolef/field.h"
53 #include "rheolef/field_indirect.h"
60 template<
class T,
class M>
61 class field_component {
84 =
typename std::enable_if<
125 template<
class Iterator>
142 template<
class T,
class M>
187 template<
class T,
class M>
195 template<
class T,
class M>
203 template<
class T,
class M>
204 template<
class Iterator>
216 "field component index "<<i_comp<<
" is out of range [0:"<<n_comp<<
"[");
218 for (
size_type j_comp = 0; j_comp < i_comp; j_comp++) {
219 shift += sup_constit [j_comp].
ndof();
221 constit = sup_constit [i_comp];
228 "field component index "<<i_comp<<
" is out of range [0:"<<n_comp<<
"[");
231 last += i_comp + n_comp*constit.
ndof();
232 start.set_increment (n_comp);
233 last.set_increment (n_comp);
236 template<
class T,
class M>
244 template<
class T,
class M>
252 template<
class T,
class M>
260 template<
class T,
class M>
263 : _constit (uh_comp.get_constitution()),
265 _last(uh_comp.end_dof())
268 template<
class T,
class M>
274 fatal_macro (
"try to assign const field in field[i_comp] = field[j_comp]");
277 template<
class T,
class M>
279 field_component_const<T,M>&
287 template<
class T,
class M>
292 _constit = uh_comp.get_constitution();
293 _start = uh_comp.begin_dof();
294 _last = uh_comp.end_dof();
297 template<
class T,
class M>
302 dis_dof_indexes_requires_update();
305 template<
class T,
class M>
312 template<
class T,
class M>
319 template<
class T,
class M>
329 template <
class T,
class M>
334 template <
class T,
class M>
337 return ods << field_basic<T,M>(uh_comp);
339 template <
class T,
class M>
343 return ods << field_basic<T,M>(uh_comp);
349 template <
class T,
class M>
352 : _V(uh_comp.get_space()),
353 _W(dom, _V.get_basis().
name()),
355 _indirect(_V.build_indirect_array (_W, _dom.
name())),
359 template <
class T,
class M>
366 template <
class T,
class M>
375 #endif // _RHEOLEF_FIELD_COMPONENT_H
const space_constitution< T, M > & get_constitution() const
const communicator & comm() const
static void initialize(const space_constitution< T, M > &sup_constit, size_type i_comp, space_constitution< T, M > &constit, Iterator &start, Iterator &last)
generic mesh with rerefence counting
size_type dis_ndof() const
const space_type & get_space() const
space_constitution< T, M > _constit
const_iterator begin_dof() const
Float alpha[pmax+1][pmax+1]
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
bool is_hierarchical() const
const communicator_type & comm() const
const distributor & ownership() const
float_traits< T >::type float_type
field_basic< T, M >::size_type size_type
space_basic< T, M > get_space() const
bool have_homogeneous_space(space_basic< T, M > &Xh) const
const communicator & comm() const
bool have_homogeneous_space(space_basic< T, M > &Xh) const
see the distributor page for the full documentation
field_component< T, M > & proxy_assign(field_component< T, M > &&uh_comp)
scalar_traits< T >::type scalar_type
field_basic< T, M >::size_type size_type
const T & dof(size_type idof) const
size_type dis_ndof() const
field_basic< T, M >::const_iterator const_iterator
const basis_basic< T > & get_basis() const
field_basic< T, M >::iterator iterator
float_traits< T >::type float_type
field_indirect(field_basic< T, M > &uh, const geo_basic< T, M > &dom)
geo_basic< T, M > get_geo() const
static const size_type _unset
const_iterator begin_dof() const
#define fatal_macro(message)
scalar_traits< T >::type scalar_type
std::istream & operator>>(std::istream &is, const catchmark &m)
This file is part of Rheolef.
const_iterator end_dof() const
size_type dis_size() const
global and local sizes
field_component_const< T, M > & proxy_assign(const field_component_const< T, M > &uh_comp)
const distributor & ownership() const
const geo_basic< T, M > & get_geo() const
const T & dof(size_type idof) const
odiststream: see the diststream page for the full documentation
const_iterator begin_dof() const
space_basic< T, M > get_space() const
field_component< T, M > & operator=(const T &alpha)
static const size_type _unset
field_indirect< T, M > operator[](const geo_basic< T, M > &dom)
field_indirect< T, M > operator[](const geo_basic< T, M > &dom)
void get_geo(istream &in, my_geo &omega)
const space_constitution< T, M > & get_constitution() const
std::ostream & operator<<(std::ostream &os, const catchmark &m)
field_basic< T, M >::const_iterator const_iterator
geo_basic< T, M > get_geo() const
size_type size(size_type iproc) const
const_iterator end_dof() const
space_constitution< T, M > _constit