Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

Using DISP subroutine 1

Status
Not open for further replies.

eispiata

Materials
Feb 18, 2008
48
Hi,
For my simulation I need to use the DISP subroutine for applying boundary conditions.

Since i am completely new in the subroutine process i am trying to start with simple examples. And i am trying to apply uniaxial tension conditions using the DISP surboutine. I know i can do it without any subroutine but it is a start point. Honestly i am completely lost. I am using Abaqus 6.5.6 and included the following fortran file as a subroutine in the job manager but it didn't work:

SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(2),COORDS(3)
C
U(1)=2
RETURN
END

I know U(1) means whatever i want but i want it to be only a displacement in a specific direction (let's say normal to the surface) . How could i do that?

Thanks


 
Replies continue below

Recommended for you

hi eispiata,
what u say in your post is partially correct, but as far as I rember:
- U(1): used to impose displacement
- U(2): used to impose velocity
- U(3): used to impose acceleration
- You can apply to a specific node (the label is stored in the variable NODE) displacement, velocity or acceleration in one direction using the variable JDOF, for examble your user subroutine become:
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(2),COORDS(3)
C
IF(NODE.EQ.10.AND.JDOF.EQ.1)
U(1)=2
END IF
RETURN
END
The above subroutine impose to the node 10 a displacement equal to 2 (m, cm ,mm according to the unit used in your input) along the DOF 1.
I hope that this can help u

Regards
 
Thanks for you help.

I was trying to start with a very very simple simulation. But i am gonna say that everybody needs to start with simple things to learn more complicated ones.

To come back to my question. I understand now that i can choose in which direction i want to impose the displacement with JDOF. So basicaly if i want to impose the displacement in direction 1 i should write: JDOF.EQ.1 and if i want to do the same but in direction 2 i should write JDOF.EQ.1.

Actually i want to apply uniform displacement to a surface using the DISP subroutine.

Here is my subroutine:

SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(2),COORDS(3)
C
IF(JDOF.EQ.2)
U(1)=2
END IF
RETURN
END

The above subroutine was made to impose the displacement in direction 2 (uniaxial tensile test). The Boundary Condition is of type: Displacement/Rotation with a User-Defined distribution which is actually my DISP subroutine?

Is everything ok? Why i always get the following message when i submit the analysis:

Error in job tafsut: Problem during compilation - df.exe not found in PATH.
Job tafsut aborted due to errors.
 
I don't think barney is correct there as U(i), i=1 to n, is the displacement in the i direction and has nothing to do with velocity or acceleration.

Your IF statement makes no sense to me. Simply write U(1)=x, U(2)=y if you want to impose displacemnts in the 1 or 2 directions. There's no need for an IF statement at all.

I've not heard of df.exe before. Do you have a Fortran compiler to compile the subroutine?

corus
 
Hi Corus,
please take a look to the file attached, that is an extract from Abaqus Documentation.

As u can see U(1), U(2) and U(3) are respectively, in case of u want to impose displacement, node displacement, velocity and acceleration.

At the end of the day, to impose boundary along one specific direction u need to use an IF statement using the label DOF...otherwise why should it exist?

Do u agree?

Regards
 
 http://files.engineering.com/getfile.aspx?folder=b9235d90-e20f-4861-a09b-9c12ccf40105&file=DISP.doc
Okay

I suppose i have a Fortran Compiler. I am using G77. It is a GNU Fortran compiler. I think it should work with this compiler. Maybe i should change the Path to the Fortran compiler??

What Compiler do you advise me to use. Because Itel Fortran Compiler requires Visual Studio to be installed before and i don't have it!

Thanks
 
Actually I'm using Visual Studio togheter with Fortran compiler v9.0 and it works corretcly both with User subr. and for make executable postprocessing file. I don't know exactly what u need instead of Visual Studio...sorry :-(
 
I recommend you to check the requirements for Abaqus version that u are using. For example V6.7.1 requires Frotran V9.1, then search in the Fortran installation folder where the file df.exe is located (in my case is located in a folder called Bin). Then u should add the complete address of this folder into the PATH in the environment variables.

This should work

Ciao
 
Here are the only compilers to be supported in the version 6.5.6 of Abaqus (Windows/x86-32):

Compaq Visual Fortran 6.0
Microsoft Visual C++ Version 6.0

Do you know if i can download one of these compilers for free of do i really need to pay for it?

Thanks
 
I'm afraid that u need to pay for it unless, as it is an (very) old version, u find someone that do not use it anymore.....but I'm not sure wether it's legal or not

bye
 
My apologies barney. I checked the manual for the full text on DISP and you're quite correct. Must read first before opening gob.

corus
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor