Home › Forum › SOFA › Using SOFA › Incremental-Iterative Nonlinear FEA with deformation-dependent loads
Tagged: Linux_ubuntu, nonlinear, SOFA_2012
- This topic has 6 replies, 2 voices, and was last updated 3 years, 9 months ago by jnbrunet.
-
AuthorPosts
-
21 March 2021 at 17:12 #18930OlumideBlocked
Hi Sofa Community,
I am looking to solve a nonlinear problem that requires the incremental-iterative technique as described in the famous video lectures by Klaus-Jurgen Bathe. In addition, the loading is also deformation dependent i.e. the direction of the loading changes with the deformation.
Basically, the incremental-iterative technique involves iteratively (1) solving for the incremental displacement under a given load, (2) based on the incremental displacement, updating the force corresponding to the work done by internal stresses until the (3) “out-of-balance” virtual work becomes zero.
From what I can see the static solver is vaguely similar. Can anyone confirm whether static solver is able to handle incremental-iterative iterative problems, as described above, specially under deformation dependent loads.
Regards,
– Olumide
23 March 2021 at 09:25 #18963jnbrunetModeratorHey @olumide,
Yes, the static solver is in fact a Newton-Raphson iterative solver. It can therefore solve any deformation dependent forces, either linear or non-linear with respect to the displacement
u(x)
.You will have however to implement this load force
f(u)
manually by creating a new SOFA ForceField“. Moreover, you will have to override three methods of the force field:addForce(f, x, v)
: This function fills up thef
force “vector”, which is in fact a nx3 matrix containing n nodal force vectors (1×3) for a mesh having n nodes. Here, the parameterx
is a nx3 “vector” containing the current positions of the nodes, and “v” contains the nodal velocities.addKToMatrix(A, k)
: This function adds the jacobian matrixJ
of your load force to the matrixA
(times a scalar valuek
, i.e.A += k*J
). It therefore computes the derivative off(u)
with respect to the displacement vector fieldu
evaluated at the current displacementu_i
:J(u_i) = dF(u_i) / du
, wherei
is the current Newton iteration number.Finally,
addDForce(df, dx)
simply computesdf = J*dx
where againJ
is the same jacobian matrix computed inaddKToMatrix
.J-N
24 March 2021 at 01:53 #18967OlumideBlockedThanks @jnbrunet. I suppose this means that the problem is much too sophisticated to be modeled with an XML scn file.
BTW, the problem that I hope to solve is characterized by multiple non-boundary loads, i.e. acting on nodal points in the interior of the body. I’ve only encountered boundary forces in literature but I assume multiple non-boundary loads will not require special treatment.
25 March 2021 at 12:48 #18981jnbrunetModeratorHey @olumide,
Boundary and non-boundary terms are treated the same way in SOFA: it is up to the component to assemble a force vector and its jacobian (in the case the force depends upon the deformation), and feed them to the ODE solver. If your force was constant, then you could have used the
ConstantForceField
component to give the nodal forces directly in your XML file. However, since yours isn’t constant, you need to provide its jacobian matrix and a way to update the force at each time step (or load increment).J-N
26 March 2021 at 03:18 #18998OlumideBlockedThanks @jnbrunet. Finally, Is Newton-Raphson (NR) the only iterative solver that sofa supports? I can’t see any others e.g. arc length, BFGS, line search etc. Do you know if there any plans to introduce some of these solvers, or is sufficient for soft tissue deformation problems? (Much of the literature on nonlinear incremental-iterative methods that I’ve come across are biased towards structural mechanics and often use the other techniques.)
26 March 2021 at 13:26 #19010jnbrunetModeratorYeah, for the moment only a (full) Newton-Raphson is implemented, which means that the system matrix is assembled and inverted at each Newton steps.
There is work being done right now to unify the NR solver for all ODE solvers (static and dynamic). Once this is finished, I’m pretty sure a line search and BFGS could follow closely.
-
AuthorPosts
- You must be logged in to reply to this topic.