Comparison between disp controlled and force controlled results

Dear all, I was focued on the bearing capacities of a mono suction bucket in last days. I have created the model by using the liner elements for the bucket and some beam elements for one leg of jacket as you see in the first picuture. First of all, I have loaded at the top of Beam with a force of 3000 kN (2nd picture). The results, like the shear force and the displacement contour, were reasonable. Then I have initialized a horizontal velocity at the top of Beam in another case, 2.13e-5 m/s last in 10000 steps (3rd picture). However, the results were quite different in comparion with the force-controlled results. The shear force in Beam were unexpected large and the displacement contour of bucket shown a different rotation center. By the way, the force and velocity was applied with follwing commands:

force: structure node apply force 3000 0 0 system global range component-id 1

velocity: structure node fix velocity-x range component-id 1
structure node initialize velocity-x 2.13e-5 range component-id 1

I kindly ask for a possible reason for that, thanks in advance!!



Could you please send datafile to flac3dsupport@itascacg.com?

Thanks, Cheng! The datafiles were sent to you via email.

(1) Let’s first assume that the model (zones and structures) is linear elastic. The full dynamic equations of motion are used, even when modeling systems that are essentially static. Only when the model is in equilibrium can the result be considered a solution. For a model with a large contrast of stiffness (such as this model with soil-structure interaction), a smaller unbalance ratio (e.g., 1e-7 or smaller) is required to achieve equilibrium.
a. For the velocity (displacement) control method, the velocity must be small enough to achieve equilibrium in each step. Even with very small velocity, during the initial steps, the local damping may not be sufficient and oscillation may occur.
b. For the force control method, a very small unbalance ratio (e.g., 1e-7 or even 1e-9) is required to achieve equilibrium, which may result in running many cycles to complete the model.

(2) If the zones are not linear elastic (e.g., with the modified cam-clay model in this case), things are more complex. The phenomenon of overshooting may occur, causing the yield surface of modified cam-clay to become overly enlarged if the loading step is not sufficiently small, whether in velocity (displacement) or force control.

(3) In sum, the loading step must be sufficiently small in this model. In my preliminary investigation, with a much smaller applied velocity of 2e-8, the force in the beam was about 3280 when the displacement was 0.231. I did not run the force control method, but a ramp-like loading scheme (via FISH) is recommended for the same reason.

Thanks cheng! I also found that issue, in which an equilibrium must be achieved in each step. Checking the convergence for a specific velcity in one step is able to find a suitable velocity. But I am still wondering how can I set a damping (e.g. finding the critical damping ratio) in a complex system to reduce the numerical osscillation. Maybe it is very diffcult…

Hi Xiang
I have been running similar modellings for some time. In general, what Cheng said above is correct, though the required unb ratio may be more case specific and can be relaxed in some cases for engineering purposes. As you may know, displacement-controlled conditions is easier to do. If you want load control, you may start with relatively bigger load increment, but will have to reduce later on. Necessity for such adjustment can be sensed by monitoring the unb ratio, which is the most important indicator to see whether the adopted increment is small enough.
Specific to your modelling, I think you need to step back and do some benchmarking. For example, push at the top of the bucketet (without beams) downward to see whether you can achieve the classic bearing factors by using the Tresca model (Mohr with zero friction angle, etc.). More rigrously, you should also try to push horizontally or rotate to compare with corresponding bearing factors.
After confirming above are working, you can then add beams and ensure they are interacting with the liners as you intended them to. Currently, looks like you may need to add number of beam element for those in contact with the lid of the bucket.
In short, you need to make sure it is working for simpler problems before performing more advanced analysis.
Hope it helps, and have fun with flacing! (Sometimes it can be frustrated, but eventually you will get there if persist meticulously.)

Thank you @FLAC3D_GEO very much for your replay! Yes, I have tested a simple case of liner-structed bucket for the bearing factors. As you know, the force must be summarized at the top of the bucket duing disp-controlled case. The problem is that was kind of unconvenient as I directly got the force in beam elements on top. Unfortunately, I haven’t got a correct ssummarized force in this case so far…

Hello Cheng, do you recommend a table ramp or a servo ramp (i dont know if it works) for the ramp-like loading scheme?

Can you suggest a command or a FISH function that I can use to apply the following load for the ramp?

structure node apply force 1.6e8 0.0 0.0 range component-id @PtAppID

Attached is a demo example. Generally, the key part is like 

[global n1 = struct.node.find(1)]
[global s0 = mech.step]
fish define ramp_apply
    local s1 = mech.step
    if (s1- s0) < 2000
        struct.node.apply(n1,1) = 2.5e4*(s1-s0)/2000
    else 
        struct.node.apply(n1,1) = 2.5e4
    endif
end
[struct.node.apply(n1,1) = 2.5e4]
model solve cycle 3000 fish-call -1 ramp_apply

If you wish to apply slower, a bigger ramp step is required (current I use 2000 steps).

LaterallyLoaded_ramp.dat (2.3 KB)

Thank you very much Cheng. It worked excellent with the code below

            fish define forcenodal
            local forcex = struct.node.apply(Topnode)
            return forcex(1)
            end
            fish history name='forceapplied' forcenodal  ; applied load