~ubuntu-branches/ubuntu/trusty/rheolef/trusty

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "rheolef.h"
using namespace rheolef;
using namespace std;
#include "p_laplacian_fixed_point.icc"
#include "dirichlet.icc"
int main(int argc, char**argv) {
  environment rheolef (argc,argv);
  geo omega (argv[1]);
  string approx   = (argc > 2) ?      argv[2]  : "P1";
  Float  p        = (argc > 3) ? atof(argv[3]) : 1.5;
  Float tol       = (argc > 4) ? atof(argv[4]) : 1e-10;
  size_t max_iter = 500;
  derr << "# P-Laplacian problem by fixed-point:" << endl
       << "# geo = " << omega.name() << endl
       << "# approx = " << approx << endl
       << "# p = " << p << endl;
  space Xh (omega, approx);
  Xh.block ("boundary");
  field uh (Xh);
  uh ["boundary"] = 0;
  field lh = riesz (Xh, 1);
  dirichlet (lh, uh);
  int status = p_laplacian_fixed_point (p, lh, uh, tol, max_iter);
  dout << catchmark("p") << p << endl
       << catchmark("u") << uh;
  return status;
}