In any FEM problem involving mechanics, we try to solve the differential equation for the displacement field, $u$ given the force vector in the nodes, $F$. In industry, we often see our automobiles getting deformed in ways we had not expected it to. Now, the reason is we simplify the real-world problem with approximate forces and boundary conditions. Is there any way to predict the forces acting on the body when we know the displacements/ deformation on the model? There might be some research that has been done in this area. All I can think of is using Machine Learning, but isn't there some mathematical models available to solve the problem?
-
$\begingroup$ Where do you know the deformation? Everywhere? Or just at a few points? $\endgroup$– Wolfgang BangerthCommented Mar 14, 2023 at 23:29
-
2$\begingroup$ If you have sufficiently resolved data and your FEM solves aren't completely prohibitive, you can use adjoints to compute gradients and Hessians of a cost function w.r.t. $F$ and optimize this using gradient descent, BFGS, etc. The first few chapters of Borzi and Schulz as well as this report by Alex Alexanderian may be of interest: aalexan3.math.ncsu.edu/articles/… $\endgroup$– whpowell96Commented Mar 14, 2023 at 23:48
-
$\begingroup$ Some time ago I did work on identification forces acting on some surfaces from displacements. Cell engineering. Have look. doi.org/10.5281/zenodo.439395 $\endgroup$– likaskCommented Mar 17, 2023 at 7:07
1 Answer
Indeed, as @whpowell96 says, we can use optimization. Let us assume, for simplicity that your problem is governed by the equations of linear elasticity. Let us assume that you have displacement data (all components or some components) over part of the domain $\Omega_u$. You seek to find the boundary forces (tractions $\mathbf{h}$) from knowledge of the displacement field (or some of its components) on $\Omega_d$. Assuming that you know the material properties of the body, this can be formulated as an optimization problem as shown below.
Let the known displacement field be denoted by $\mathbf{u}^m$. Then you seek to minimize
$$ \pi(\mathbf{u}(\mathbf{h}))=\frac{1}{2}\|\mathbf{u}-\mathbf{u}^{m}\|^2_{\Omega_u} \tag{1} $$
as a function of $\mathbf{h}$, because the displacement field $\mathbf{u}$ depends on the traction $\mathbf{h}$. You would guess the boundary tractions $\mathbf{h}$, compute $\mathbf{u}$ by solving a linear elasticity problem, compute $\pi$ (the objective function) and its gradient with respect to $\mathbf{h}$. Using the gradient in a gradient based quasi-Newton optimization algorithm such as BFGS, you can update your guess for $\mathbf{h}$. Let's see now how to compute the gradient of (1) with respect to $\mathbf{h}$.
Let us define the differential of a function $f(x)$ as $\delta{f}$
$$ \delta{f}=\frac{d}{d\epsilon}\Big{|}_{\epsilon\rightarrow{0}} f(x+\epsilon\delta{x}) \tag{2} $$
Using the above definition we can compute the differential of (1) wrt $\mathbf{u}$
$$ \delta\pi = (\mathbf{u}-\mathbf{u}^m,\delta\mathbf{u})_{\Omega_u} \tag{3} $$
Now, the thing to note, is that $\delta\mathbf{u}$ is not arbitrary. It is related to the variations in the traction, $\delta{\mathbf{h}}$ through the equations of elasticity
$$ a(\mathbf{w},\mathbf{u};\lambda,\mu) - (\mathbf{w},\mathbf{h})_{\Gamma_h} = 0 \,\, \forall \mathbf{w} \tag{4} $$
Applying (2) to (4) we get
$$ \frac{d}{d\epsilon}\Big{|}_{\epsilon\rightarrow{0}} a(\mathbf{w},\mathbf{u}+\epsilon\delta\mathbf{u};\lambda,\mu) - (\mathbf{w},\mathbf{h}+\epsilon\delta\mathbf{h})_{\Gamma_h} = 0 $$ $$ a(\mathbf{w},\delta\mathbf{u};\lambda,\mu) - (\mathbf{w},\delta\mathbf{h})_{\Gamma_h} = 0 \tag{5} $$
(3) can be written as
$$ \delta\pi = (\mathbf{u}-\mathbf{u}^m,\delta\mathbf{u})_{\Omega_u} + 0 $$
But from (5) we know that $0$ is nothing but $a(\mathbf{w},\delta\mathbf{u};\lambda,\mu) - (\mathbf{w},\delta\mathbf{h})_{\Gamma_h}$ and putting it in the above equation we get
$$ \delta\pi = (\mathbf{u}-\mathbf{u}^m,\delta\mathbf{u})_{\Omega_u} + a(\mathbf{w},\delta\mathbf{u};\lambda,\mu) - (\mathbf{w},\delta\mathbf{h})_{\Gamma_h} \,\, \forall \delta\mathbf{w} \tag{6} $$
Note that the above equation is true for all $\mathbf{w}$. We have freedom to pick $\mathbf{w}$. If we pick $\mathbf{w}$ such that the sum of the first two terms vanishes $\forall\delta{\mathbf{u}}$, then $\delta\mathbf{u}$ drops out of equation (6). So, we choose $\mathbf{w}$ such that
$$ (\mathbf{u}-\mathbf{u}^m,\delta\mathbf{u})_{\Omega_u} + a(\mathbf{w},\delta\mathbf{u};\lambda,\mu) \,\, \forall \delta{\mathbf{u}} \tag{7} $$
This is the "dual problem". When $\mathbf{w}$ is chosen to satisfy the dual problem, equation (7) becomes
$$ \delta\pi = - (\mathbf{w},\delta\mathbf{h})_{\Gamma_h} \tag{8} $$
If you put in a finite element expansion for $\delta\mathbf{h}$ you will be able to get the gradient of $\pi$ with respect to the nodal values of the traction.
So, this is how you would proceed
- Guess the value of traction on the boundary
- Solve (4) to find $\mathbf{u}$
- Compute $\pi$ using (1)
- Compute $\mathbf{w}$ using (7)
- Put $\mathbf{w}$ in the discrete form of (8) to get the gradient of $\pi$ wrt the nodal values of traction
- Use the gradient computed in the above step to update your guess for the traction using a suitable gradient based optimization algorithm