Implicit IntegrationOverviewOlder versions of OrcaFlex used an explicit integration scheme for time domain simulation. Over the years this has proved extremely robust and flexible. However, for certain systems it is well known that an implicit solver will perform much faster than an explicit solver. Accordingly we have introduced an implicit scheme in OrcaFlex 9.0, in addition to the explicit solver which is still available. There are a number of issues associated with using the implicit solver which users of OrcaFlex should be aware of, as described below. We raise them here to give OrcaFlex users an introduction to some of the potential questions that need to be addressed, but please do not hesitate to contact us if you have any further questions. Performance of the implicit solverInteraction between statics and the implicit solverA good statics configuration is important when running a time domain simulation. If the model is far from its statics equilibrium at the start of a dynamic simulation then this can lead to instabilities. For implicit solvers this is much more significant than for explicit solvers which are much more robust to such treatment. An implicit solver will commonly have convergence problems if started out of equilibrium. If you are using a a variable time step this usually leads to very short time steps, at least at the start of a simulation. Whilst the solver may recover it can take some time to do so and this lead to significantly longer run times. Because of this we strongly recommend that you endeavour to put the model in a true static equilibrium position before attempting a simulation with the implicit solver. OrcaFlex has many different statics options and some of the techniques which can be used with the explicit solver prove less successful when using an implicit solver. We can make the following recommendations:
Releasing objectsA closely related issue is the release of an object, for example when modelling the breaking of a mooring line. The effect of a release event is that there is a step change in force applied to the object over the time step in which release occurs. Mathematically this is equivalent to starting out of equilibrium and the implicit solver is usually forced to use much shorter time steps for a period after the release. The implicit solver typically recovers and starts using longer time steps as the simulation progresses. However, there may be cases where the implicit solver becomes unstable as a result of an object release and you need to use the explicit solver. Identifying convergence problemsOrcaFlex makes available time histories of iteration count. If this is regularly in excess of 5 to 10 then you may have convergence problems. This can often be solved by reducing the time step. However, if problems persist then please do let us know, preferably e-mailing the OrcaFlex data file. Such feedback allows us to concentrate our efforts on optimising convergence for the cases which are causing problems for our users. "Time to go" reportingOrcaFlex reports an estimate of the time remaining during a dynamic simulation. For the explicit solver this is usually very accurate. For the implicit solver the estimate is less accurate because the number of iterations on each time step varies during the simulation. In addition, if you are using a variable time step then this can also make this estimate less accurate. This reporting inaccuracy is worse for cases with poor convergence and commonly under-estimates the time remaining during the early part of the simulation. We know how to improve the accuracy of the time remaining estimate and will do so in the next release of OrcaFlex. However, this estimate will always be subject to some uncertainty for the reasons outlined above. Relative merits of the implicit and explicit solversOrcaFlex is a general purpose package and can model many different and varied types of systems. It is well known that implicit and explicit solvers have different strengths and weaknesses. Because of this we do not recommend that you use one rather than the other in all situations. In practice the best way to choose is to experiment with each solver and use whichever one is faster. Note that because of the problems with time to go reporting for the implicit integrator it is best to time the implicit solver for a significant length of time, say 10 minutes. If your simulation takes much longer than this then you can simply reduce the stage duration data for the purposes of the timing exercise. With experience you will be able to predict which solver will be faster without comparing them in this way. Accuracy of the implicit solverThe OrcaFlex explicit solver is extremely robust and accurate. Like all explicit solvers it has the desirable property that if it is stable then the results are almost certainly accurate. Implicit solvers can in many cases run a lot faster. However, it is quite possible for an implicit solver to be stable and yet produce inaccurate answers. An implicit solver typically uses longer time steps than an explicit solver. If the system being modelled has responses at periods comparable to or shorter than the time step then an implicit solver simply cannot capture and accurately model those response. For such systems you need to reduce the time step to get accurate answers from implicit solvers, and often it is then the case that an explicit solver is faster! Some high frequency responses are phenomena that you wish to design out of a system, such as compressive waves, snatch loading etc. If this is the case then you can still use the implicit solver with a long time step because these phenomena will be detected. However, if you wish to model the extreme loads for such systems with accuracy then you need to use either shorter time steps or the explicit solver. Note that these issues of accuracy are common to all implicit solvers, not just the OrcaFlex implementation. Practical experience with both solversBased on our experience using the implicit solver we can give the following guidance which we hope will prove useful when deciding which solver to use:
TestingEvery new feature in OrcaFlex is thoroughly tested before release. We tested the new implicit solver simply by comparing results from both the implicit and explicit solvers. There were minor differences between results from the two solvers. The differences were proportional to the time step used and tended to zero as the time step tended to zero. OrcaFlex is such a general purpose package that a great many test cases needed to be generated to provide comprehensive coverage of the new code. We performed the test as part of our standard automated testing process and so this test can be repeated for future releases. This is important because as the implicit solver is extended we will need to make corresponding additions to the suite of test cases. In addition an automated, scripted testing process gives much greater levels of QA than comparisons carried out manually. |