[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ff3d-users] Negative values, memory=none
From: |
Joerg R. Weimar |
Subject: |
[ff3d-users] Negative values, memory=none |
Date: |
Thu, 27 Nov 2003 10:19:50 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030312 |
I have a few questions:
1. Does ff3d have a bug preventing it from using negative values?
The attached problem "negtest.txt" should generate a linear solution
ranging from -1 to 1, but somehow generates 1-0-1. This is not just in
the output, but also in the data, as can be seen from the integral
evaluation.
2. When selecting option memory(matrix=none), one must also set
method(type=penalty)
if dirichlet boundary conditions are present. This is not the default,
contrary to the information in the docs. Is this correct?
3. Are any primitives beyond box,sphere,cylinder supported (or planned)?
I would like to see cone, surface of revolution, extrusion.
4. I am trying to solve a combined problem in two domains:
first solve on mesh M, then solve a similar problem on mesh M2, using
the first solution as boundary condition. I cannot figure out how to do
this correctly (See combined.txt).
Best regards, Jörg Weimar.
--
PD Dr. Joerg R. Weimar, Inst. f. Wissensch. Rechnen, TU-Braunschweig
address@hidden, http://www.tu-bs.de/institute/WiR/weimar
Tel. +49-531-391-3006 Mail: D-38092 Braunschweig
vector n = (3, 3, 3);
vertex a = (-1, -1, -1);
vertex b = ( 1, 1, 1);
mesh M = structured(n,a,b);
scene S = pov("empty.pov"); // the pov-ray file for the geometry
domain O = domain(S);
solve(u) in O by M
{
pde(u)
- div(grad(u)) = 0;
u = -1 on M zmin;
u = 1 on M zmax;
};
double I=int(M)(u);
double J=int(M)(1);
cout << I << " " << J << " Average: " <<I/J << "\n";
save(opendx,"u.dat",u,M);
vector n = (9, 9, 9);
vertex a = (-1, -1, -1);
vertex b = ( 1, 1, 1);
mesh M = structured(n,a,b);
vertex c = ( 1, 1, 2);
mesh M2 = structured(n,b,c);
scene S = pov("empty.pov"); // the pov-ray file for the geometry
domain O = domain(S);
solve(u) in O by M
{
pde(u)
- div(grad(u)) = 0;
u = 0 on M xmin;
u = 2 on M xmax;
};
double I=int(M)(u);
double J=int(M)(1);
cout << I << " " << J << " Average: " <<I/J << "\n";
solve(u2) in O by M2
{
pde(u2)
- div(grad(u2)) = 0;
u2 = u on M2 zmin;
u2 = 3 on M2 zmax;
};
double I2=int(M2)(u2);
double J2=int(M2)(1);
cout << I2 << " " << J2 << " Average: " <<I2/J2 << "\n";
save(opendx,"u.dat",u,M);