Boundary conditions information loss

Hello everyone,

I have a question about the definition of boundary conditions. The model that I try to implement is complex but I will use a simple model to introduce my problem. In a simple 2D Darcy model we can apply a normal velocity “Vn” at a boundary by Neumann condition:

problem Darcy(p,q)
= int2d(Th)( K* (grad(p)‘* grad(q)’* ) )
+int1d(Th,1)(Vn * q)
+on(2, pDt=8)
;

Now, when I try to verify if my conditions were respected I compute the applied quantity after the resolution of the Darcy equation:

Vi=int1d(Th,1)(-k * grad(p)’ * [Nx,Ny] )/int1d(Th,1)(1);
Pi=int1d(Th,2)(p)/int1d(Th,2)(1);

For the pressure, I find exactly what I applied, but for the velocity I find a difference that depends on interpolation order, mesh size, curvature of the boundary in which the Neumann condition was applied …
Now for a complex model, I found a big difference, sometimes more than 50%, between applied and computed velocity but a good agreement with the applied and computed pressure. After improvement, for example define a quadratic interpolation for the pressure (so that the velocity takes linear interpolation) and refine the mesh, I found that the computed velocity at the boundary is only 60% of the applied one and the quantity Vi/Vn is exactly the same for all applied Vn. I can understand this numerical matter but here my question:
This loss of information occurs in the application of the condition or in the result reading?

if it occurs in the application of the condition, it will affect the results and my model is not accurate. If it happens in the lecture of results, it means that the model can be accurate but i need to correct my velocity result by taking into account this difference in post treatment.
If you have another solution, I will be thankful if you let me know it.

Thank you.

Yes , this problem is well know, the converge of Neuman Boundary Condition (BC) is in sort(h) (h is the mesh size) and you have no error on Dirichlet boundary condition.

AN other way is tho mixed formulation, then the Neumman BC because Dirichlete and Dirchlet become Neuman, but it is more expensive and more tricky to understand the formulation;