pmgbergen / porepy

Python Simulation Tool for Fractured and Deformable Porous Media

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Contact mechanics tolerance

IvarStefansson opened this issue · comments

We need to decide what to do with the tolerance in the tangential contact mechanics equation. This at least involves revisiting Hüeber/Wohlmuth and ensuring our value does not violate their recommendations.

Very good idea as I have very little intuition for its impact (it being absolute for instance) and thus having always some doubts. I will try to do this in the following two days.

I believe this is also related to issue #926 about possibly re-defining the friction bound.

I agree that it's related. But I don't think it's covered by that issue, is it?

While I do mention the possibility of changing the tolerance in that issue, the main focus of that issue is still the definition of the friction bound. But resolving one of these issues could influence the other one, since the tolerance is related to the definition of the friction bound.

While looking at the code for the first time I am raising some stupid questions. I will make use of this platform to collect them. I do not necessarily expect them to be relevant for the actual topic.

My first question is. Should one be afraid of a switch in sign of the derivative of the tangential_fracture_deformation_equation when b < tol and b>tol? In the former it is 1, while in the latter it is b-norm_tantgenial_sum, it being zero for b being less than norm_tangential_sum. Does not sound like a very smooth function. When switching between states is a particular problem, my intuition would be, Newton could struggle more, when the piecewise defined derivative makes such unnecessary jumps. One could even consider weighting characteristic * t_t with a smaller number than 1 to allow for a smoother transition. A natural and smooth extension would be to use tol - norm_tangential_sum as weighting factor.

Maybe this comment is completely off, I wanted to state it nevertheless.

Are you talking about the derivative w.r.t. t_t? Should we discuss in person?

After discussion with @IvarStefansson:

  1. It may be of interest to consider a setup in which fracture is very close to just in contact, and being trouble some for Newton. Hardcoded modifications of the code would allow testing of the idea of "preconditioning" the tangential function through the partial rescaling, entering the derivative of the equation wrt. t_t.

  2. The tolerance of interest enters the characteristic function, aiming at detecting open and closed cells based on b. To simplify the intuition, it holds b = -F t_n, and F is of order 1, such that the criterion is directly related with comparing whether the normal traction is small (smaller than tol=1e-5) or large. The normal traction is a part of the elasticity problem and thereby strongly related to the material parameters, in particular the Lame parameters. One could think of two scenarios: 1. Lame parameters of order 1, 2. Lame parameters of order 1e9. The normal traction would be proportional to these parameters for adequately scaled boundary conditions aiming at the creating the same scenario. Thus, it could be sensible to scale tol with some elasticity modulus, e.g., drained bulk modulus or so, consistent with the conditioning of the problem. By this, one would consider a relative normal traction force detecting open and closed cells. One possibility would be to scale such elasticity modulus with machine precision eps or slightly larger number, if eps turns out to be way to small.

@keileg @mariusnevland what do you think, especially regarding point 2? If this is meaningful for you, one suggestion would be, that @mariusnevland who has identified cases in which the choice of the tolerance of interest plays an important role, runs his test cases and compare the current setup. @IvarStefansson would implement the possibility to choose the tolerance from outside prior to testing.

I think point 2 sounds reasonable. Since we check whether a cell is open or closed based on the value of t_n, it would make sense to have the tolerance somehow related to some "characteristic value" of t_n.

Also, as I mention in issue #926, changing the definition of the friction bound from $b=-F\lambda_n$ to $b=-F(\lambda_n+\tilde{c}([[\mathbf{u}]]_n-g))$ might make it safer to lower the tolerance, since the presence of the $\tilde{c}([[\mathbf{u}]]_n-g)$ term should reduce $b$ further in the case of an open cell. I can imagine that this would give us more distinctly different values of $b$ for open and closed cells, which is probably a good thing. Here we also have the interesting possibility of adding more or less weight to $\tilde{c}([[\mathbf{u}]]_n-g)$ by adjusting $\tilde{c}$.

Regarding the derivative with respect to t_t, I can mention that for the regularized complementary functions that I use in the Uzawa algorithm I'm working on, this derivative becomes 1 for both open and closed cells.

To elaborate a bit on the second paragraph above: If $b=-F\lambda_n$, then theoretically, a cell is open if $b=0$ and closed if $b&gt;0$. However, if $b=-F(\lambda_n+\tilde{c}([[\mathbf{u}]]_n-g))$, then a cell is open if $b&lt;0$ and closed if $b \geq 0$. The latter sounds better to me, as the distinction between the states is clearer.

It all makes sense to me.