Need help validating hyperelastic VUMAT
I'm currently working on hyperelastic VUMAT for a custom variation of the Neo-Hookean material model. As a first step I tried using Dr Bergstroms model as well as Mr Hohenbergers "Generalized Yeoh - routine" posted here in the forums. For my tests I tried to validate my implementation by comparing the results of these models to the built-in Neo Hookean model. I've used both plane strain and 3D analysis but the only cases where the VUMAT's give the same results as the built-in model are cases of uniaxial tension.
As the cases where the subroutines don't give the same result as the built in models are rotations and shear are present I was wondering if perhaps some error could be introduced from Abaqus using the Green-Nagdhi rate?
(Although I am running the built ins with an explicit anlysis as well). I am ruling out that the rotation of the stress would be wrong as stresses are indeed formulated in terms of stretch and I double checked that the stretch actually corresponded to the deformation gradient.
Another observation I made is that without a fixed time increment the built in models would yield a different initial time increment than the VUMAT models. Is that indicative of something wrong in the linearly elastic regime?
Yet another thought I had was the perhaps that perhaps the material parameters could be in the wrong range and cause problem.
I'm currently using rho = 1E-9, C_10 = 0.5 and D1 = 0.04. Is this worth investigating further?
Also, is there any other approach I could take to find the source of my errors?
All the best
I included an image of the a loadcase (3D) and the corresponding shear stress for the VUMAT as well as built-in Neo hookean.
Did you test your subroutine in planar tension and equibiaxial loading modes? If not, I would check those modes before moving on to simple shear or inhomogeneous deformations.
I too have wondered the impact of the stress-rate formulation. In the gen-Yeoh paper, I studied large rotations of a block and got good agreement with the built-in Yeoh function until some threshold, at which point the computations became noisy. The onset of the noise was beyond the rotation I used in the paper, which I don't recall offhand. I suspected the problem may relate to the stress-rate.
In the subroutine code that I shared in the originating paper, the code is missing a parameter definition (but it still runs in some compilers). The definition lines should look like this:
REAL*8 zero, one, two, three
PARAMETER( zero=0.d0, one=1.d0, two=2.d0, three=3.d0 )
I did test several load cases and in the end what my analysis was missing was element distortion control (which is added natively for Abaqus built-in hyperelastic models). Including distortion control as well as hourglassing got me very good agreeance between the built-in and user subroutine so I'm hoping this will carry over to more complex applications.
Thanks a lot for taking the time to answer and great work with your article!
All the best,
Thanks Fred. Glad you got it working. I usually run my rubber simulations with distortion control, reduced integration, linear element, and hourglassing control. My recollection is that this aligns with recommendations in the Abaqus manual.