Using DISP subroutine
Using DISP subroutine
(OP)
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
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





RE: Using DISP subroutine
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
RE: Using DISP subroutine
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.
RE: Using DISP subroutine
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
RE: Using DISP subroutine
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
RE: Using DISP subroutine
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
RE: Using DISP subroutine
RE: Using DISP subroutine
This should work
Ciao
RE: Using DISP subroutine
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
RE: Using DISP subroutine
bye
RE: Using DISP subroutine
corus
RE: Using DISP subroutine
see u next thread
bye bye