~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to dolfin/ode/Dual.cpp

  • Committer: Niclas Jansson
  • Date: 2011-06-10 14:33:43 UTC
  • Revision ID: njansson@csc.kth.se-20110610143343-d21p4am8rghiojfm
Added rudimentary header to binary files

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright (C) 2003-2005 Anders Logg.
2
 
// Licensed under the GNU LGPL Version 2.1.
3
 
//
4
 
// First added:  2003-11-28
5
 
// Last changed: 2005
6
 
 
7
 
#include <dolfin/log/dolfin_log.h>
8
 
#include <dolfin/math/dolfin_math.h>
9
 
#include "Dual.h"
10
 
 
11
 
using namespace dolfin;
12
 
 
13
 
// FIXME: BROKEN
14
 
 
15
 
/*
16
 
 
17
 
//-----------------------------------------------------------------------------
18
 
Dual::Dual(ODE& primal, Function& u) : ODE(primal.size()), rhs(primal, u)
19
 
{
20
 
  // Set sparsity to transpose of sparsity for the primal
21
 
  sparsity.transp(primal.sparsity);
22
 
 
23
 
  // Set end time
24
 
  T = primal.endtime();
25
 
}
26
 
//-----------------------------------------------------------------------------
27
 
Dual::~Dual()
28
 
{
29
 
  // Do nothing
30
 
}
31
 
//-----------------------------------------------------------------------------
32
 
real Dual::u0(unsigned int i)
33
 
{
34
 
  return 1.0 / sqrt(static_cast<real>(N));
35
 
}
36
 
//-----------------------------------------------------------------------------
37
 
real Dual::f(const Vector& phi, real t, unsigned int i)
38
 
{
39
 
  // FIXME: Here we can do some optimization. Since we compute the sum
40
 
  // FIXME: over all dual dependencies of i we will do the update of
41
 
  // FIXME: buffer values many times. Since there is probably some overlap
42
 
  // FIXME: we could precompute a new sparsity pattern taking all these
43
 
  // FIXME: dependencies into account and then updating the buffer values
44
 
  // FIXME: outside the sum.
45
 
 
46
 
  real sum = 0.0;  
47
 
  
48
 
  if ( sparsity.sparse() )
49
 
  {
50
 
    const Array<unsigned int>& row(sparsity.row(i));
51
 
    for (unsigned int pos = 0; pos < row.size(); pos++)
52
 
      sum += rhs.dfdu(row[pos], i, T - t) * phi(row[pos]);
53
 
  }
54
 
  else
55
 
  {
56
 
    for (unsigned int j = 0; j < N; j++)
57
 
      sum += rhs.dfdu(j, i, T - t) * phi(j);
58
 
  }
59
 
 
60
 
  return sum;
61
 
}
62
 
//-----------------------------------------------------------------------------
63
 
 
64
 
*/