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!

Fortran - variables management

Status
Not open for further replies.

idaapm

Mechanical
Mar 11, 2013
8
Hi everyone,

I've recently started to implement an UMAT in Fortran to use with Abaqus/standard. I'm fairly new in this topic and I'm struggling with some issues related with variables initialization.

My questions are:
- Do I have to declare and initialize all the variables I use within the code?
- What does the statement "IMPLICIT DOUBLE PRECISION(A-H,O-Z" exactly means?

I used the above statement in my subroutine interface and I got the following error: "ABA_PARAM.INC(1): error #6214: The same letter must not appear as a single letter or be included in a range of letters more than once in all IMPLICIT statements in a scoping unit." What does this means?

Thanks!
 
Replies continue below

Recommended for you

IMPLICIT DOUBLE PRECISION (A-H,O-Z)

means any variable beginning with letters between A and H or O and Z are double precision. Variables beginning with letters between I and N will probably be integers.

Your error probably means there is an overlap with the letters somewhere. Possibly something like

IMPLICIT DOUBLE PRECISION (O-Z)
IMPLICIT REAL(T-X)

If a variable began with T, the compiler wouldn't know whether it was real or DP. That is the Fortran bit done. I've got no idea what UMAT or Abaqus but google is your friend.
 
There is an Abaqus forum: forum799 so perhaps you might consider red-flagging this and reposting in that forum.

TTFN
faq731-376
7ofakss

Need help writing a question or understanding a reply? forum1529
 
There are LOTS and LOTS of online Fortran tutorials, for beginners and even for non-beginners.

As for management of variables, I HIGHLY suggest that you place an "Implicit None" statement at the top of each of your routines. Then, you must explicity declare every variable that your subroutine uses or needs, ie..

Subroutine Dog_N_Cat_Fight()
Implicit None
Integer :: i1, i2
Real :: dog(10), cat(10)

If you don't do things this way... I can very safely bet money that you will always be attempting to chase down seemingly elusive bugs in your code.

Dan :)
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor