From: Vladimir Kolobov <vik@cf...>  20070926 21:05:58

Stephane, Looks like the new Poisson Solver works well now. We still use g.a = 0 and g.b = gfs_cell_dirichlet_gradient_flux... at the solid face. We tried to subtract and then add the cell value of potential (at different time/iteration levels) to get nonzero g.a, but did not succeed. When we use a high level of refinement at the solid surface (like > 1112), we need to use erelax = 2 to make it converge. It slows down computations but the solution converges. The new Poisson Solver also works when a solid surface intersects the box boundaries. However the latest Gerris release cannot insert an ellipse with high refinement level (e.g., 13). Solid (ellipse(0.5, 0.5, 0.12, 0.06)) Refine {if(((x+0.5)*(x+0.5)/(0.12*0.12) + (y+0.5)*(y+0.5)/(0.06*0.06)) < 1.1) return 13; else return 6;} Gerris exits with the following error: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GfsWARNING **: file solid.c: line 929 (): cm (0.409542,0.460572,0)/13 is not inside cell [(0.409668,0.460693,0),(0.409546,0.460571,0)] GfsERROR **: file solid.c: line 931 (check_area_fractions): should not be reached aborting... Abort ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Please have a look what might be a problem. Thanks, Vladimir. Stephane Popinet wrote: >> We believe that we do not get good convergence for the new Poisson >> Solver since we use only g.b = gfs_cell_dirichlet_gradient_flux with g.a >> = 0 on surface faces. >> > > This is a very good point. You should be able to construct the function > you need using gfs_cell_dirichlet_gradient() as a starting point (and > extracting the correct coefficients from the bilinear interpolation matrix). > > Please keep me posted, I am very interested in merging your final > version with the main branch. > > 