Dave_Holmes
2006-01-27, 00:05
I am using ABAQUS/Standard 6.5-4 and have written a UMAT incorporating a spring in parallel with a Maxwell element (in 3D) with Ogden potentials for each of the spring stiffnesses. For certain loading cases (i.e. about 10% strain) the simple 1 element model I am using to verify the UMAT solves very well. Unfortunately for higher loading cases and for some other loading rates the simulations dies without any indication of why. Now I am aware using UMATs can be problematic an will more often than not be the cause of unexpected termination however by incorporating detailed WRITE statement tracers throughout the UMAT generally allows any of these type of terminations to be found or at least has in my past experiences. Unfortunately the problem seems to be more sinister because when I run the program interactively, it would appear to be 'stuck' more so than terminated because ABAQUS stays in the simulation with all the pending solution type files (.023 .CID .LCK. STT etc) still present in the working directory however all the file sizes get to a point and stop, no mention of any error. I then have to delete these files and reopen my X interface to restart a problem.
The point where the simulation falls down is generally straight after a time increments has been completed following anywhere up to several hundred previously converged successful increments. Upon checking the odb in Viewer the simulation looks to be going in the right direction up until this point in as much as the stress vs strain curves are that which would be expected (i.e. no unexpected instabilities etc) and the simulation can continue to values even as high as 150% strain. Then trying to reduce the load or specified displacement in such a way as to try and reproduce the solved part of the previous attempt, the simulation gets hung up part the way to the new desired end point??
When the simulation gets stuck, the .DAT and .MSG files have no mention of failure and look as if they were opened mid solution. The tracer WRITE statements from the UMAT are written to the .DAT file up to a random point which can stop before a new increment, after a full statement or even in the middle of writing a statement (i.e. like halfway through writing out a 3x3 tensor???). Given the same solution parameters, the simulation always gets stuck at the same place however any change in these can mean a very different outcome which would be unexpected were any one error in the UMAT to be to blame.
Because of the seemingly random point at which the records in the dat file get stuck, I have a feeling the problem is something along the lines of decimal discrepancies somewhere between when stress, state variable and modulus are updated and when the UMAT is subsequently called again. The feeling is that the UMAT has read values, continues on its way but as an after thought gets confused and locks. One would assume that if the problem occurred in the ABAQUS solution algorithm then at least some error message would be produced.
Can anyone suggest what possible cause there could be for unexplained hanging when using a UMAT bearing in mind that I have debugged all the usual physical coding culprits and now I seem left with a more intrinsic program language type problem?
Alternatively, are there more detailed methods of debugging that can monitor the passing in and out of variables between ABAQUS and a UMAT subroutine?
Apologies for the long post but it would seem the problem is as complicated as it is frustrating.
The point where the simulation falls down is generally straight after a time increments has been completed following anywhere up to several hundred previously converged successful increments. Upon checking the odb in Viewer the simulation looks to be going in the right direction up until this point in as much as the stress vs strain curves are that which would be expected (i.e. no unexpected instabilities etc) and the simulation can continue to values even as high as 150% strain. Then trying to reduce the load or specified displacement in such a way as to try and reproduce the solved part of the previous attempt, the simulation gets hung up part the way to the new desired end point??
When the simulation gets stuck, the .DAT and .MSG files have no mention of failure and look as if they were opened mid solution. The tracer WRITE statements from the UMAT are written to the .DAT file up to a random point which can stop before a new increment, after a full statement or even in the middle of writing a statement (i.e. like halfway through writing out a 3x3 tensor???). Given the same solution parameters, the simulation always gets stuck at the same place however any change in these can mean a very different outcome which would be unexpected were any one error in the UMAT to be to blame.
Because of the seemingly random point at which the records in the dat file get stuck, I have a feeling the problem is something along the lines of decimal discrepancies somewhere between when stress, state variable and modulus are updated and when the UMAT is subsequently called again. The feeling is that the UMAT has read values, continues on its way but as an after thought gets confused and locks. One would assume that if the problem occurred in the ABAQUS solution algorithm then at least some error message would be produced.
Can anyone suggest what possible cause there could be for unexplained hanging when using a UMAT bearing in mind that I have debugged all the usual physical coding culprits and now I seem left with a more intrinsic program language type problem?
Alternatively, are there more detailed methods of debugging that can monitor the passing in and out of variables between ABAQUS and a UMAT subroutine?
Apologies for the long post but it would seem the problem is as complicated as it is frustrating.