View Full Version : Question about DDSDDE and STRESS variables in UMAT
jingdejun
2006-08-31, 08:58
Hello,
I am a newbie of UMAT and just begin to learn how to use it.
Looking at the UMAT manual, I found DDSDDE should be updated as the Jacobian matrix, and Stress need to be updated as the stess at the end of the increment.
I am little confused. Since we already have Jacobian matrix, we can calculate stress increment from strain increment DSTRAIN. So, why we still need to define stress using STRESS variable?
Sorry for so simple question :oops:
Derek
The UMAT subroutine has two main purposes: (1) update the stress, (2) return the Jacobian matrix. The stress update has to be very exact, but the Jacobian only has to be accurate enough to give good convergence.
In practice, for many advanced models, it is quite challenging to create an algorithmic consistent Jacobian, and hence it is a good thing that the stress update can be done independent of the Jacobian.
- Jorgen
jingdejun
2006-09-02, 21:02
I see, this is what exactly I need.
Thank s a lot Jorgen for making this clear:
STRESS --> return exactly value
DDSDDE --> mainly for iteration and convergence purpose.
--------------------------------------------------
Now, I am using ABAQUS C3D8H continuum element to model muscle collagen network, and embed truss element T3D2 in these continuum elements to simulate muscle fiber.
The constitutive law I am temporarily using for the fiber is that it has no resistence to collagen network deformation, but it can generate active contraction force.
So in the fiber the passive stress will be zero, but active contraction stress should be non-zero.
If I use UMAT for the fiber, I shall set
STRESS = active contraction stress (a function of current stretch ratio of fiber)
DDSDDE = 0.
Is this ok? Will convergence problem occur due to zero DDSDDE?
Or, since STRESS is exactly given, I just set arbitrary non-zero DDSDDE to ensure convergence?
I am not sure I am following your description, but if you have a finite stress then DDSDDE cannot be 0.
- Jorgen
If I use UMAT for the fiber, I shall set
STRESS = active contraction stress (a function of current stretch ratio of fiber)
DDSDDE = 0.
Is this ok? Will convergence problem occur due to zero DDSDDE?
Or, since STRESS is exactly given, I just set arbitrary non-zero DDSDDE to ensure convergence?
The stress calculation has NOTHING to do with the tangent stiffness (Jacobian). The only thing the Jacobian is needed for (in an implicit analysis) is to ensure that the global equation solver produces a "good guess" for the next global iteration. If Newton-Raphson iterations are used and the Jacobian is "consistent", this means that the solution will converge quadratically (as long as we are not too too far from the solution). In some cases, the effort in calculating a consistent Jacobian (and by 'consistent' I mean consistent with the particular time integration procedure for the stress) is numerically involved. Therefore, people "cheat" and use a Jacobian that is much faster to calculate, but then at the expense of convergence rate in the global iterations. In general, I personally think this is a bad idea, because the robustness is compromised --you are fine in many cases, but all of a sudden, you are not. The best thing is to come up with a good Jacobian.
A side note: I think the ABAQUS manuals explain this really poorly, if at all. In large deformation analysis, what is DDSDDE? What's the stress and what's the strain? I am not sure. Anyone?
The ABAQUS User Subroutine Reference Manual specifies that the consistent Jacobian needs to be given by:
DDSDDE = [TeX:cbc4030130]\frac{1}{J}\frac{\partial\Delta(J\sigma)}{\partial \Delta\epsilon}[/TeX:cbc4030130]
or in words: DDSDDE is the partial derivative of the increment in Kirchhoff stress with respect to the increment in logarithmic strain.
I believe that LS-DYNA and MSC.Marc use the same definition. Other FE software packages might use other stress and strain definitions.
- Jorgen
The ABAQUS User Subroutine Reference Manual specifies that the consistent Jacobian needs to be given by:
DDSDDE = [TeX:9c241c178b]\frac{1}{J}\frac{\partial\Delta(J\sigma)}{\partial \Delta\epsilon}[/TeX:9c241c178b]
or in words: DDSDDE is the partial derivative of the increment in Kirchhoff stress with respect to the increment in logarithmic strain.
I believe that LS-DYNA and MSC.Marc use the same definition. Other FE software packages might use other stress and strain definitions.
- Jorgen
Are you sure about the strain increment? Because if you look at DSTRAN, it does not contain the incremental log strains, but rather the linear strain increments...
In large deformation analysis, should you be expected to use F instead of strain?
I ran a quick test that verified that ABAQUS provides logarithmic strain in the parameter STRAN, and the increments in logarithmic strain in DSTRAN.
You can use either the deformation gradient or the strain tensor as the deformation measure for large deformation analysis. Typically, however, most constitutive theories are formulated in terms of the deformation gradient.
- Jorgen
Hallo,
I have just started writing Umat for Abaqus, with no previous experience. My aim is to write a umat for multilayered composite with progressive damage using some bilinear softenning law. I am wrting This Umat for shell element S4 available in abaqus.
I think I am wrong in DDSDDE and updating STRESS. When even I am running all plies 0 deg. (4 plies total), with uniaxial tension along 0 deg. plies, it is running perfect. I have checked with abaqus reaction results with and without Umat, it is exactly the same.
But whenever I am placing plies in 0/90/90/0 symm fashion, my umat does not run, from the first iteration it has got convergence problem. The loading is same uniaxial along the 0 deg plies.
I am writing Umat for shell element S4 (or S4R) in abaqus. For mu umat with no damage, I am passing all ply properties in plane stress and inside umat, I am generating ply stiffness matrix, which is DDSDDE (constant), I am getting strain increment dstran, so get stress increment dstress, finally updating stress as --> stress=stress+dstress
Can anyone give some tips what could be the error? Please let me know if I am not clear about the problem. Also any suggestions to check further my umat for simple cases.
Thanks;
It sounds like you are doing things right. One comment: for shell elements you also need to return the new thickness of the shell. You should make sure that you updated the thickness correctly. Also, I recommend that you test your UMAT one ply at a time.
- Jorgen
Hi,
I am just started writing umat for abaqus/standard. I checked with one ply such as either 0 deg. or 90 deg., my umat gives exactly the same answer as that normal abaqus simulation (without umat) using S4 shell element with
*shell section, elset=XY, composite, orientation=AB
ply thickness, no. of int. pt, mat. name, ply orientation (layer 1)
ply thickness, no. of int. pt, mat. name, ply orientation (layer 2)
etc. etc.
But the moment I put two layer with 0/90, with my umat, simulation diverges out from the first increment. I checked with one layer +45 deg., results from abaqus (no umat) and same analysis with my umat differs greatly.
I don't know what is happening inside my umat. I know that stresses and strains are coming inside umat are in local ply coordinate, so transformation is NOT necessary. DDSDDE is my ply stiffness matrix (or Qij matrix in terms of composite) of 3x3 dimension which involves
Q11=E11/(1.0-pr12*pr21)
Q12=-pr12*E22/(1.0-pr12*pr21)
Q22=E22/(1.0-pr12*pr21)
Q66=g12
it is a symmetric matrix.
so, stress increment --> dstres=DDSDDE*dstran (dstran is strain increment)
stress update is:--> stress=stress+dstress
Since I did not put any damage still, so I am doing the above calculation for each gauss point in each ply.
I do not know where I am still making mistakes. This umat is not running for multilayered composite plate or angle ply with S4 elements with keyword composite to include more than one plane stress layers.
Can anybody provide some suggestion regarding my problem and hopefully solution of it?
Thanks.
I think that your approach to compare UMAT solution with no UMAT is going to be very important. I suggest that you try numerous different cases in an effort to figure out what works and what does not work.
It sounds like perhaps there is something wrong with your UMAT implementation...
- Jorgen
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.