20
20
/// =========================================================================
21
21
// check field_indirect_const::const_iterator
22
22
#include "rheolef.h"
23
#include "rheolef/rounder.h"
24
24
using namespace rheolef;
25
25
using namespace std;
26
26
Float g (const point& x) { return sin(x[0]+x[1]+0.5); }
27
void ff (const field& gh, const field fh, string dom_name, Float prec) {
28
field zh (gh.get_space());
29
zh = 0.5*(gh + fh[dom_name]);
30
dout << setprecision(15) << field(compose (rounder(prec),zh));
27
32
int main(int argc, char**argv) {
28
environment distributed(argc, argv);
33
environment rheolef(argc, argv);
29
34
geo omega (argv[1]);
30
string dom_name = (argc > 2) ? argv[2] : "right";
31
Float prec = (argc > 3) ? atof(argv[3]) : 1e-10;
32
space Vh (omega, "P1");
33
space Wh (omega[dom_name], "P1");
35
space Vh (omega, argv[2]);
36
string dom_name = (argc > 3) ? argv[3] : "right";
37
space Wh (omega[dom_name], argv[2]);
38
Float prec = (argc > 4) ? atof(argv[4]) : 1e-10;
34
39
field fh = interpolate(Vh, g);
35
40
field gh = interpolate(Wh, g);
37
const field& fh2 = fh; // becomes const: check for fieild_indirect_const<T,M>
38
zh = 0.5*(gh + fh2[dom_name]);
39
dcout << setprecision(15) << compose (rounder(prec),zh);
41
ff (gh, fh, dom_name, prec);