~ubuntu-branches/ubuntu/raring/rheolef/raring-proposed

« back to all changes in this revision

Viewing changes to nfem/basis/basis_symbolic_hermite.cc

  • Committer: Package Import Robot
  • Author(s): Pierre Saramito
  • Date: 2012-04-06 09:12:21 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20120406091221-m58me99p1nxqui49
Tags: 6.0-1
* New upstream release 6.0 (major changes):
  - massively distributed and parallel support
  - full FEM characteristic method (Lagrange-Gakerkin method) support
  - enhanced users documentation 
  - source code supports g++-4.7 (closes: #667356)
* debian/control: dependencies for MPI distributed solvers added
* debian/rules: build commands simplified
* debian/librheolef-dev.install: man1/* to man9/* added
* debian/changelog: package description rewritted (closes: #661689)

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
using namespace GiNaC;
25
25
 
26
26
basis_symbolic_hermite_on_geo::size_type 
27
 
basis_symbolic_hermite_on_geo::size_family(reference_element::dof_family_type family) const
 
27
basis_symbolic_hermite_on_geo::size_family(dof_family_type family) const
28
28
 {
29
 
   if (family==reference_element::Lagrange) return _node.size();
30
 
   else if (family==reference_element::Hermite) return _node_derivative.size();
31
 
   else if (family==reference_element::dof_family_max) return size();
 
29
   if      (family == element_constant::Lagrange) return _node.size();
 
30
   else if (family == element_constant::Hermite) return _node_derivative.size();
 
31
   else if (family == element_constant::dof_family_max) return size();
32
32
   else return 0;
33
33
 }
34
34
basis_symbolic_hermite_on_geo::value_type 
35
35
basis_symbolic_hermite_on_geo::eval (
36
36
    const polynom_type&    p, 
37
 
    const basic_point<ex>& xi, 
 
37
    const point_basic<ex>& xi, 
38
38
    size_type              d) const
39
39
{
40
40
    ex expr = p;
55
55
 
56
56
    for (unsigned int i = 0; i < m; i++) {
57
57
    
58
 
        const basic_point<ex>& xi = _node[i];
 
58
        const point_basic<ex>& xi = _node[i];
59
59
        for (unsigned int j = 0; j < n; j++) {
60
60
          vdm(i,j) = eval (p[j], xi, d);
61
61
        }
62
62
    }
63
63
    for (unsigned int i = m; i < n; i++) {
64
 
        const basic_point<ex>& xi = _node_derivative[i-m];
 
64
        const point_basic<ex>& xi = _node_derivative[i-m];
65
65
        for (unsigned int j = 0; j < n; j++) {
66
66
          vdm(i,j) = eval 
67
67
                ( (_derivative_sign[i-m]*(p[j]).diff(_derivative_variable[i-m])).expand().normal(),
157
157
  }
158
158
 
159
159
  // Family of basis functions: Lagrange for i<m, else Hermite
160
 
  _poly_family.resize(n, reference_element::Hermite);
161
 
  for (size_type i = 0; i < m; i++) _poly_family[i] = reference_element::Lagrange;
 
160
  _poly_family.resize(n, element_constant::Hermite);
 
161
  for (size_type i = 0; i < m; i++) _poly_family[i] = element_constant::Lagrange;
162
162
 
163
163
  // derivatives of the basis
164
164
  Float d_der=d;
180
180
  }
181
181
 
182
182
  // Hessian of the basis
183
 
  basic_point<GiNaC::ex> ini_g;
184
 
  basic_point<basic_point<GiNaC::ex> > ini_h(ini_g,ini_g,ini_g);
 
183
  point_basic<GiNaC::ex> ini_g;
 
184
  point_basic<point_basic<GiNaC::ex> > ini_h(ini_g,ini_g,ini_g);
185
185
  _hessian_basis.resize(n, ini_h);
186
186
  for (size_type i = 0; i < n; i++) {
187
187
    if (d_der > 0) _hessian_basis [i][0][0] = _basis[i].diff(x).diff(x).expand().normal();