Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

VUMAT Double Precision 1

Status
Not open for further replies.

martmachado

Materials
Nov 10, 2010
9
Hi all,

Can anybody help me out running a VUMAT with double precision?

If I define my variables in VUMAT as double precision and run "abaqus user=... job=..." the values do not match those in the inp file.

On the other hand, if I run "abaqus double user=... job=... " I get the following error:
Abaqus Error: Abaqus/Explicit user subroutines cannot be supplied as an object
file when double precision is used.
Abaqus/Analysis exited with error(s).

I know maybe it's a stupid question but I'd really appreciate if someone could give me a hint.

Thanks a lot in advance,
Martín.-
 
Replies continue below

Recommended for you

Hi IceBreaker, thanks for your reply!

Sorry if I wasn't very clear. What I meant is that if I declare my variables as double precision in my VUMAT (for example, DOUBLE PRECISION props(nprops)) the values I set in the abaqus input file do not match those stored in the array 'props' (I'm printing the array 'props' to check this).

I'm pretty sure my problem is that my abaqus is linked to Single Precision Abaqus Explicit (in fact I get the message in the cmd "Begin linking Single Precision ABAQUS/explicit"). Does anybody know how to change this to double precision?

Thanks a lot!
Martín.-
 
That seems to be the problem. I have not seen this error before. You might want to talk to Simulia or, at the very least, post this question in their own community (it is free to register/join).

Are you new to this forum? If so, please read these FAQ:

 
Thanks! I contacted the guy from abaqus support I usually contact but he's out of office until Thursday.

Could you plese give a direct link to a forum in the "community"? I'm already registered in 3ds.com but somehow I can't find a forum like this to post. Thanks a lot once again!
 
Hi,

Abaqus use implicit declaration of variable type in FORTRAN subroutines.
All variables for letters a-h, o-z is real and i-n are integers.
This declaration is controlled with "include vaba_param.inc" statement.
You will not find this file but in your installation directory you will find files:
- vaba_param_sp.inc
- vaba_param_dp.inc

Now when you run an analysis with single precision Abaqus will use *_sp.inc file
and when you run Abaqus with option "double" *_dp.inc file will be used.

Depends what include file will be used you real variables will be single or double precision.

You MUST NEVER change declaration of variables passed with subroutine.
You can use your own type declaration for variables you use with subroutine but when they are not subroutine arguments.

Code:
DOUBLE PRECISION props(nprops)
This statement is prohibited since props array is part of subroutine arguments.
Since it starts for p letter it will be declared as real variable single or double in automatic way by Abaqus itself.

(in fact I get the message in the cmd "Begin linking Single Precision ABAQUS/explicit").
You should also get message "Begin linking Double Precision ABAQUS/explicit" later.
Abaqus always make two compilations, single and double precision independent what precision you use to run simulation.

I am not sure but I am thinking that is a chance values passed from inputdeck into subroutine can be a little bit different
even for double precision. But it will be software limitation I think.
For sure contact with support is a good idea.

One more point about double precision variables in FORTRAN.
Declaration is not enough, you have to also set a value in correct way.
Let see following two examples:

Code:
double precision rMyDoubleVal
rMyDoubleVal = 1.0e-10

Code:
double precision rMyDoubleVal
rMyDoubleVal = 1.0d-10

Value of double precision will be true only for second case.

Best,
Bartosz
 
Hi Bartosz,

Thanks a lot for your answer! It really helped me a lot to clarify these things.

I was always using "implicit none" on my codes because I'm used to that (from before I started with User Subroutines) and that's why I was declaring variables. Anyway, your explanation of Abaqus' implicit declaration of variables has enlightened me!


The values were really different, for example: inputdeck=1000; props(1)=1.2978E+19. Also, I definitely don't get the "Begin linking Double Precision ABAQUS/explicit". I'm pretty sure it has to be due to the way my Abaqus is linked with the Fortran Compiler (i.e. "magic" lines in Abaqus' environmental file) but since this linking turned out to be kind of problematic, I'll try to figure this out with the Support.

Once again thanks a lot for your help! I'm really learning a lot here. Thanks guys!

Regards,
Martín.-
 
Hi guys,

After getting lots of help from the support, we figured it out.

In my environmental file I had some settings which allowed me to compile f90 files in runtime (the support hadn't seen this before). The subroutines were treated as object files. I was always compiling standalone the subroutine before (what I actually didn't find that bad because it allowed me to debug the subroutine before submitting a job).

This work set-up worked without problems in Abaqus/Standard. When I tried to run Abaqus/Explicit with double precision using the command line abaqus double user=... job=... I got the following error:
Abaqus Error: Abaqus/Explicit user subroutines cannot be supplied as an object file when double precision is used.
Abaqus/Analysis exited with error(s).

Since Abaqus accepts only some extension (.f, .for, .obj, ...) but not f90, the support provide me with a short environmental file telling Abaqus to expect any format, in this way f90 will be used but you have to rename your subroutine file to .for

Please keep in mind I'm not any expert in this matter and I'm just posting the solution to my particular case in case it can help somebody else with a similar problem.

Thanks for your help!

Best,
Martín.-
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor