# Thread: problems in vumat for beam element

1. Junior Member
Join Date
2012-05
Posts
7

## problems in vumat for beam element

Dear All，
I am coding one vumat subroutine for beam applications. In Abaqus manual there are some descriptions about vumat for Beam elements:

".....,For beams in space you must define the thickness strains, strainInc(*,2) and strainInc(*,3). ........"

My questions are:
1) what is the "thickness strains" ? Are they shear strains?
2) In vumat, the variables corresponding to the thickness strains are strainInc(*,2) and strainInc(*,3)? If not, strainInc(*,2) and strainInc(*,3) are what and how and why to define them?

3) In the manual, the strainInc(nblock, ndir+nshr) are grouped to variables passed in for information and not the variables to be defined.
Is it necessary and right to define strainInc(*,2) and strainInc(*,3) in vumat? As I think, they are increments of strains and should be determined by abaqus itself.

Thank you all!

Yours truly,

Xu Ziguo

2. Member
Join Date
2006-09
Location
Sweden
Posts
81
No, they are the transverse normal strains, i.e. affecting the thickness of your beam. And, no, ABAQUS does not do this by itself, because it cannot. The transverse normal STRESSES are, by definition, zero. ABAQUS does not know which transverse STRAINS produce zero STRESSES. That's your job in your VUMAT calculation -- you have to calculate the axial stress and shear stresses as well as the transverse strains that produce zero transverse stresses. The reason ABAQUS needs the transverse strains is in the calculation of a stable time step. So there's no way around it.

Mats

3. Junior Member
Join Date
2012-05
Posts
7
Hi Mats

I wonder two more things:

1) Is there some relationships between axial stress, shear stress and transvers strains? For simple case, the transverse strains can be defined as possion ratio multiply the axial strain or just let them zero?

2) which variables in vumat correspond to the transverse strains that i should update? Are strainInc(*,2) and strainInc(*,3)?

Originally Posted by matsgd
No, they are the transverse normal strains, i.e. affecting the thickness of your beam. And, no, ABAQUS does not do this by itself, because it cannot. The transverse normal STRESSES are, by definition, zero. ABAQUS does not know which transverse STRAINS produce zero STRESSES. That's your job in your VUMAT calculation -- you have to calculate the axial stress and shear stresses as well as the transverse strains that produce zero transverse stresses. The reason ABAQUS needs the transverse strains is in the calculation of a stable time step. So there's no way around it.

Mats

4. Member
Join Date
2006-09
Location
Sweden
Posts
81
Originally Posted by Aguo
Hi Mats

I wonder two more things:

1) Is there some relationships between axial stress, shear stress and transvers strains? For simple case, the transverse strains can be defined as possion ratio multiply the axial strain or just let them zero?

2) which variables in vumat correspond to the transverse strains that i should update? Are strainInc(*,2) and strainInc(*,3)?
1) Not an expert on beams, but in general, stresses are given by the elastic strains and the elastic moduli. Take a look at Hooke's law for the 3-D case, and impose sig22=sig33=0. Then you should get the elastic transverse strains. If the material is elastic-plastic, you get the plastic transverse strains from the plastic incompressibility constraint (if the material is plastically incompressible).

2) Yes, I believe so.
Last edited by matsgd; 2012-06-01 at 02:29.

5. Junior Member
Join Date
2012-05
Posts
7
Hi Mats

Thank you so much!

But I still wonder that how abaqus take the strainInc(*,2) and strainInc(*,3) to calculate the stable time increment, which are updated in vumat. In fact, I ignor updating the strainInc(*,2) and strainInc(*,3) in my vumat by now and abaqus/explicit still can give me reasonable results.

There is one very strange thing to me that when i add the following four-line codes in my vumat the time increment will change much!

if(nelem.eq.1246) then
open(222,file="ttt.txt")
close(222)
endif

Do you know why?

Hope to discuss more with you if you have any interests.

Ziguo

6. Member
Join Date
2006-09
Location
Sweden
Posts
81
Ziguo,

The strain increment is used by ABAQUS to estimate a globally stable time step. Without going into detail (mostly because I really don't know these things well enough!), the stable time step is related to the wave speed, which in turn will depend on the size of individual elements. Since ABAQUS has no idea how your plane stress constraint affects strains in the out-of-plane direction(s), you have to provide this information. See section 6.3.3 of the User's manual, and section 2.4.5 of the Theory manual (version 6.11).

The element number isn't provided to you through the VUMAT subroutine header. In a UMAT it is, but not in a VUMAT. So, your VUMAT looks into the memory position of NELEM (which is anyway implicitly allocated through the include 'vaba_param.inc' statement). In that memory position there will be garbage. Nonetheless, I am thinking that whatever that block of memory contains, it could be parsed as an integer, so in a way it shouldn't harm anything. But the chance of that garbage being parsed into 1246 is ... slim. I have no idea why the time increment changes. A question though: Do you actually manage to create a ttt.txt this way? If yes, I am lost...

7. Junior Member
Join Date
2012-05
Posts
7
Hi Mats
As I know, the stable time step deterimined by abaqus is based on the dilatational wave speed. For beam element, one dimension "line" element, the dilatational wave speed may be related to the axial stiffness and shear stiffness only. How the transverse strain affects the dilatational wave speed in beam element? And why the transverse strain need vumat be updateted with
the strain increment variables?

The element number is not provided to user in the variable list of subroutine vumat. I found one method to get the element number at the web site:http://imechanica.org/node/2540. It does work well.
I do not want to create and write anything to the ttt.txt. I found the strange thing that the two line code could make the stable time step change much when i debugged my vumat.
I have no idea about it. If you have interests on it i can send you my vumat and example.

best

Ziguo

Originally Posted by matsgd
Ziguo,

The strain increment is used by ABAQUS to estimate a globally stable time step. Without going into detail (mostly because I really don't know these things well enough!), the stable time step is related to the wave speed, which in turn will depend on the size of individual elements. Since ABAQUS has no idea how your plane stress constraint affects strains in the out-of-plane direction(s), you have to provide this information. See section 6.3.3 of the User's manual, and section 2.4.5 of the Theory manual (version 6.11).

The element number isn't provided to you through the VUMAT subroutine header. In a UMAT it is, but not in a VUMAT. So, your VUMAT looks into the memory position of NELEM (which is anyway implicitly allocated through the include 'vaba_param.inc' statement). In that memory position there will be garbage. Nonetheless, I am thinking that whatever that block of memory contains, it could be parsed as an integer, so in a way it shouldn't harm anything. But the chance of that garbage being parsed into 1246 is ... slim. I have no idea why the time increment changes. A question though: Do you actually manage to create a ttt.txt this way? If yes, I am lost...

8. Member
Join Date
2007-09
Posts
54
You can assign the element number to the state variables.

In Abaqus Standard this is easily done using SDVINI.

In Abaqus Explicit you likely have to use the command

*INITIAL CONDITIONS,TYPE=SOLUTION
element number, element number

for each individual element.

Good luck

Frank

9. Junior Member
Join Date
2012-05
Posts
7
Hi Frank,

You give me another great method to get the element number. Thank you very much!

Originally Posted by Frank
You can assign the element number to the state variables.

In Abaqus Standard this is easily done using SDVINI.

In Abaqus Explicit you likely have to use the command

*INITIAL CONDITIONS,TYPE=SOLUTION
element number, element number

for each individual element.

Good luck

Frank