Commit e61adf8b authored by Jakub Both's avatar Jakub Both

Fix Poisson test case.

Higher order RT elements require more delicate mechanism to mark boundary indices.
    
Working:
2D: RT0 x P0, RT1 x P1, BDM1 x P0, BDM2 x P1
3D: RT0 x P0, RT1 x P1
    
Not working:
2D: RT2 x P2 - solver does not converge.
3D: BDM1 x P0 - no interpolation provided by dune-localfunctions.
parent 6b211ba7
Pipeline #2592 failed with stage
in 68 minutes and 48 seconds
......@@ -450,14 +450,22 @@ int main (int argc, char *argv[]) try
// Mark top boundary.
auto topBoundaryIndicator = [&l] (Domain x)
{
double isBoundary = x[dim-1] > l[dim-1] - 1e-8 ? x[0] : 0.0;
#ifdef DIM2
double isBoundary = x[dim-1] > l[dim-1] - 1e-8 ? x[0]: 0.0;
#else
double isBoundary = x[dim-1] > l[dim-1] - 1e-8 ? x[0] * x[1]: 0.0;
#endif
return isBoundary;
};
// Mark lower boundary.
auto lowerBoundaryIndicator = [&l] (Domain x)
{
double isBoundary = x[dim-1] < 1e-8 ? x[0] : 0.0;
#ifdef DIM2
double isBoundary = x[dim-1] < 1e-8 ? x[0]: 0.0;
#else
double isBoundary = x[dim-1] < 1e-8 ? x[0] * x[1]: 0.0;
#endif
return isBoundary;
};
......@@ -517,7 +525,7 @@ int main (int argc, char *argv[]) try
// Preconditioned GMRES / BiCGSTAB solver
//RestartedGMResSolver<VectorType> solver (op, preconditioner, 1e-6, 1000, 10000, 2);
BiCGSTABSolver<VectorType> solver(op, preconditioner, 1e-6, 10000, 2);
BiCGSTABSolver<VectorType> solver(op, preconditioner, 1e-6, 4000, 2);
// Object storing some statistics about the solving process
InverseOperatorResult statistics;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment