an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 #ifndef _RHEOLEF_FORM_CONCAT_H
2 #define _RHEOLEF_FORM_CONCAT_H
25 #include "rheolef/form.h"
26 #include "rheolef/csr_concat.h"
27 #include "rheolef/field_expr_recursive.h"
29 namespace rheolef {
namespace details {
36 template <
class T,
class M>
39 std::vector<field_basic<T,M> >
vv;
44 template <
class T,
class M>
54 template <
class T,
class M>
55 class form_concat_value {
86 =
typename std::enable_if<
100 if (x.variant ==
scalar)
return o <<
"s";
101 else if (x.variant ==
field)
return o <<
"f";
105 else return o <<
"m";
111 std::vector<field_basic<T,M>>
vv;
115 template <
class T,
class M>
136 typedef typename std::initializer_list<value_type>::const_iterator
const_iterator;
149 for(
typename std::list<value_type>::const_iterator iter = x.
_l.begin(); iter != x.
_l.end(); ++iter) {
150 std::cout << *iter <<
" ";
152 return std::cout <<
"}";
164 std::list<value_type>
_l;
172 template <
class T,
class M>
175 : _X(), _Y(), _uu(), _ub(), _bu(), _bb()
187 template <
class T,
class M>
197 static constexpr
size_type undef = std::numeric_limits<size_type>::max();
208 typedef typename std::initializer_list<line_type>::const_iterator
const_iterator;
215 for(
typename std::list<line_type>::const_iterator iter = x.
_l.begin(); iter != x.
_l.end(); ++iter) {
216 std::cout << *iter <<
" ";
218 return std::cout <<
"}";
225 std::list<line_type>
_l;
230 template <
class T,
class M>
233 : _X(), _Y(), _uu(), _ub(), _bu(), _bb()
240 #endif // _RHEOLEF_FORM_CONCAT_H
std::pair< size_type, size_type > sizes_type
csr< T, M >::size_type size_type
see the field page for the full documentation
std::vector< field_basic< T, M > > vv
ostream & operator<<(ostream &os, const tiny_element &K)
This file is part of Rheolef.
vector_field_trans(const std::vector< field_basic< T, M > > &vv1)
csr< T, sequential > trans(const csr< T, sequential > &a)
trans(a): see the form page for the full documentation
std::pair< sizes_type, sizes_type > sizes_pair_type