StandingLift - Failed to resolve force-dependent kinematics

Hello,

I am working on the StandingLift model, which I modified by including the lumbar ligaments and the FDK drivers for the lumbar spine that I copied from the Spine Fixation Model. Also, I changed the JointsandDrivers.any file to better fit my needs.
When I run a simple 1-step static simulation of the standing model with the box in front of the human model, I get this error message:

Failed to resolve force-dependent kinematics. Too many iterations used (final force error = 6.216520E+001). Continue anyhow…

(If I also try to use FDK on translational DOFs of the lumbar joints the final force error is in the order of E+003).

Could you please help me in finding the cause of that error?
I am attaching the model files, and I am using AMMR V. 1.6.2.

Many thanks,

Michele

Hi Michele,

We tried to debug your model and takes a really long time to run, which eventually does not help diagnose the problem. How about we simplify the model and start with a single level first? I would in general recommend moving from simple to complex. Could I ask you to try this first?

It will hopefully give you an insight into why you get errors in the first place.

I am sorry it takes a lot of time, but given the amount of time it was taking to solve we had to postpone the answer a few times.

Kind regards,
Pavel

Hello Pavel,

no worries, I know it is a slow-running model. I’m not sure I understand what you mean when you propose to start with a single level; could you please further explain your suggestion?

Thank you,

Michele

Hi Michele,

At the moment you have 6 FDK joints. I suggest to drive 5 of them with hard drivers to “expected” positions, and leave 1 joint to be FDK. You could also try to model a motion just in the sagittal plane. Add complexity little by little. Hopefully that will explain something.

Kind regards,
Pavel

Hello Pavel,

I followed your suggestions and performed some tests varying the number of DOFs. Keeping the spine rhythm on and adding the translation DOFs one at a time, the simulations run with no problems even when all 3 DOF are introduced and set as FDK.

Then I tried having only the 3 rotational DOFs, also set as FDK one at a time, by turning the spine rhythm OFF and then modifying the JointsAndDrivers.any file: in the FDK_Measure driver section I would only keep one column of the vector CType as ForceDep at a time, setting the other two as Hard -and setting the correspondent reactions as On- (please correct me if this is not the right way to proceed).

All runs fast and with no errors if the last two columns are ForceDep and the first is Hard, but when I set the first column of CType as ForceDep, being therefore the only DOF, the simulation is much slower and it ends with the error: “Failed to resolve force-dependent kinematics. Too small steps for GSS search causes looping of Newton method (final force error = 5.976225E+001). Continue anyhow…” (if also translations are added the error grows to 1.843928E+003).

So it would seem the problems is in that DOF represented by the first column of CType (Flexion/extension?).

Would you have any idea why that happens? I am attaching the model I used with the last configuration of drivers.

And I also have another question: if I use the default model, with spine rhythm on (so joints with 3 DOF, all driven), I get a certain value for the load on L4L5 joint (1700 N). If I turn off the spine rhythm, but I set all of the components of the CType vector of the FDK_Measure driver as “Hard”, I would expect a result reasonably close to those 1700 N, as I still have only 3 DOF and all driven. Instead I get a force of 1868 N, much higher.
What is the cause of this difference? Is it the initial guess positions in the FDK_Measure drivers that are different from the spine rhythm positions?

Many thanks,

Michele

Hi Michele,

I am not sure that you did it right. If you used spherical joints at the same time as adding FDK constraints on the linear dof - you would allow reactions to be computed, and FDK would accumulate residuals, which would be 0. So it really depends how you did it.

I meant something else, I suggested to start with a single joint. I would drive all joints using hard constraints, except one, where I would gradually add FD dof. And actually it has to be 2 - please read the topic in the link below.

Yes, one of the joints does not directly affect the solution, and we have discussed this in one of the threads. Please check the solution here.

You can construct a similar driver, and leave two FDK dofs for flexion (third and fourth). And start from this reduced configuration.

And last thing, having an error of this magnitude indicates that you are missing linear disc stiffness component, or it starts at 0 and cannot reach needed value using allowed number of steps. This is what we discussed before - the disc should not allow sinking in and have some precompression.

Kind regards,
Pavel

Hello Pavel,

I did some tests on the model as you suggested:

  • I copy/pasted the driver definition in the thread you linked (pasted 3 times -flexion, lat bending, axial rotation-) setting all DOF as Hard driven, and leaving only 2 joints (L5Sacrum and L4L5) as ForceDep in Flexion (setting Hard the lat bending and axial rot). I got this error: Failed to resolve force-dependent kinematics. Too many iterations used (final force error = 6.017855E+000). Continue anyhow…

  • So I tried leaving only one of the two joints as FDK in Flexion, getting same error message, only with a smaller final force error.

  • I check what would happen allowing translations in x and y for the joint that was set as ForceDep in the previous step and final force error grew to 1.740805E+003.

  • Then I tried with some more basic FDK drivers, without any linear combination, still setting all DOFs as Hard constrained except for 1 joint, where I allowed a ForceDep Flexion and 2 translations. This time I didn’t get any error and simulation gave reasonable values (compared to the spine rhythm ON situation), but I got a few warning like this one: “WARNING(OBJ1) : C:/U…s/M…e/D…s/A…l/A…o/Body/A…n/Arm/Muscle.any(832) : subscapularis_2.SPLine : Number of allowed iterations for contact solution has been exceeded in Main.HumanModel.BodyModel.Left.ShoulderArm.Mus.subscapularis_2.SPLine. Final error at time 0.000000e+000: 1.727134e-008 rel error, 1.000669e-006 abs error”

  • Since that was positive I tried to allow Flex rotation and 2 translations also to the adjacent joint, keeping all the other DOFs as Hard driven. I got the same contact warnings, but this time also an error at the end: Failed to resolve force-dependent kinematics. Too many iterations used (final force error = 4.202224E+000). Continue anyhow…
    I imagine incrementing the number of freed joints the error could only increase.

As a side note, when I first used the driver in the thread you linked, I tried to drive all of the DOF as Hard driven and I didn’t get any error, but for the same output measure there was a 700 N difference with the simple case of spine rhythm on; results were quite unrealistic.

I hope I was clear in explaining myself.
Do you think there is anything else I should try to do?

Many thanks,

Michele

Hi Michele,

Sorry for replying late. Any progress on this topic?

Kind regards,
Pavel

Hello Pavel,

no progress, I didn’t know what else I should try and I was wondering whether you would have any ideas.
I only tried to have the box mass to be time dependent and to increment it step by step, but apparently AnyBody does not allow the mass of a segment to be time dependent.
I don’t know how to make that model work with FDK on.

Best,

Michele