Anda di halaman 1dari 4

Subroutines! - DASSAULT: ABAQUS FEA Solver - Eng-Tips https://www.eng-tips.com/viewthread.cfm?

qid=339957

Home » Forums » Engineering Computer Programs » Simulation » DASSAULT: ABAQUS FEA Solver Forum

Subroutines!
thread799-339957

Hi All,

I use Abaqus for biofluids and biomechanical research. I was wondering if there was a comprehensive guide anywhere
for using subroutines? (i.e. book, powerpoint, etc.) I've searched these forums for a reference, and have also read over
the documentation but that hasn't been very helpful. Anything would be greatly appreciated. Especially on how to use
VDISP and VDLOAD, and implementing subroutines in general!

Thanks!

Replies continue below

BETA CAE Launches FEA Solver, Results Fluid Software STAR- Get CAE and FEA
New FEA Solver Viewing Tool Vibro- CCM+ Adds Solid Fundamentals
Aeroacoustic comes Mechanics Through Online
to STAR-CCM+ Education

You are aware that there is a Abaqus User Subroutines Reference Manual also right? :)
There is also an Abaqus course on using subroutines. If you are an academic user you get a discount.

If you want help from this forum, I suggest you ask more specific questions.

Why is everyone so cold on these forums? Ever post I read there's always a snarky response by someone, and I've seen
your name before. Anyways, when I said documentation I meant the user manuals. I really want to learn how to use
subroutines like VDSIP and VDLOAD. The things I have found online so far are not very helpful to me. I need to apply
parametric load equations to the nodes along a beam, in the three Cartesian directions. I was just wondering if there was
something other than the user manuals out there that might help?

Quote (rjd150 )
Why is everyone so cold on these forums? Ever post I read there's always a snarky response by someone,

If you also tried to compile the list of people asking questions that they could've looked up in Google or the
documentation or tried a simple example, you'll understand why, once in a blue moon, we lose our patience. Please
understand that people who are offering their help for free are human; I certainly am guilty of being one which explains
why I have put a couple of links as my signature. People who are taking time off to help others sometimes need to be
helped too.

Coming to your question, I have a counter-question: Have you managed to run any subroutine on your machine? Does

1 of 4 7/6/2018, 10:01 PM
Subroutines! - DASSAULT: ABAQUS FEA Solver - Eng-Tips https://www.eng-tips.com/viewthread.cfm?qid=339957

your machine have a Fortran compiler and Visual Studio (or equivalents) installed on it? Once this barrier is crossed, then
we can begin addressing your question. If you have never managed to get a subroutine to work with a model (plenty
available in the documentation), then please search the archives for instructions.

http://www.eng-tips.com/faqs.cfm?fid=376
http://www.eng-tips.com/faqs.cfm?fid=1083

"" I've been using abaqus for over a year now but I am still not familiar with how to use subroutines and have a problem
I need to address. Lets say I create a wire, with a certain length, and assign it a beam section. I then mesh the wire,
with a certain number of beam elements. Now I want to give this wire a certain shape using some parametric equations.
In order to do this, I need to apply a force or a displacement at each node of the wire mesh. Lets just say I want it to
take the shape defined by F(x)=sin(x), where x is the distance along the wire. How do I create a sub-routine to make
this happen? Is there already one that does this sort of thing. Thanks for the help! ""

If this is still your question, this is the answer:

subroutine vdisp(
c Read only variables -
* nblock, nDof, nCoord, kstep, kinc,
* stepTime, totalTime, dtNext, dt,
* cbname, jBCType, jDof, jNodeUid, amp,
* coordNp, u, v, a, rf, rmass, rotaryI,
c Write only variable -
* rval )
c
include 'vaba_param.inc'
parameter( zero = 0.d0, half = 0.5d0, one = 1.d0 )
c
character*80 cbname
dimension jDof(nDof), jNodeUid(nblock),
* amp(nblock), coordNp(nCoord,nblock),
* u(nDof,nblock), v(nDof,nblock), a(nDof,nblock),
* rf(nDof,nblock), rmass(nblock),
* rotaryI(3,3,nblock), rval(nDof,nblock)
c
c Impose displacement
c jBCType
c Indicator for type of prescribed variable: 0 for displacement, 1 for velocity, and 2 for acceleration.
c
if( jBCType .eq. 0 ) then
c
if( stepTime .lt. zero ) then
c
c Initialization 1
c
a0 = zero
do 310 k=1, nblock
do 310 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = 0
end if
310 continue
c
else if( stepTime .eq. zero ) then
c

2 of 4 7/6/2018, 10:01 PM
Subroutines! - DASSAULT: ABAQUS FEA Solver - Eng-Tips https://www.eng-tips.com/viewthread.cfm?qid=339957

c Initialization 2
c
a0 = zero
do 320 k=1, nblock
do 320 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = a0
end if
320 continue
c
else
c
c Time incrementation
c
c
do 350 k=1, nblock
do 350 j=1, nDof
if ( jDof(j) .gt. 0 ) then
Xcoord = coordNp(1, k)
rval(j,k) = sin (Xcoord)*amp(k)
end if
350 continue
end if
end if
c
return
end

this is when using the amplitude, else you can scale using stepTime.
Note: I just adjusted this from the example in the manual, I did not debug or anything and don't know if it'll work.
Also when c/p, make sure to obey all fortran syntax rules.
The initialization are a bit stupid and are only useful for giving velocities & accelerations.

sdebock, I appreciate the help. What is the example problem you looked at in the user manual? I use Abaqus 6.12.
Maybe you can help me if I define my exact problem for you. Assuming you are in bioengineering, you may know what a
catheter is used for. Basically what I need to do is push a straight wire from the inside of a catheter into a sphere with a
small opening, and I need the wire to take on a certain shape based on parametric equations. I assign a beam section to
the wire, and need it to form this shape as it is pushed into the sphere. So, for example, lets say I need it to take on the
shape:

x=sin(t)
y=cos(t)
z=sin(t)*cos(t)

where t is the distance along the wire, and the other three are the Cartesian directions.

Like I said before, how would I model this in order to apply these constraints so that this wire takes this shape when it is
pushed into a sphere? Would I use VDISP or VDLOAD in Exlicit, since I am modeling this wire as a beam section and
need it to be applied to the nodes along the beam as it's being pushed out?

Also does it help to learn Fortran? I really want to learn how to use subroutines?

Quote (rjd150)
.. does it help to learn Fortran?

3 of 4 7/6/2018, 10:01 PM
Subroutines! - DASSAULT: ABAQUS FEA Solver - Eng-Tips https://www.eng-tips.com/viewthread.cfm?qid=339957

Yes. You will need additional software to be installed (in the correct order) on your machine before you can get
subroutines to work.

http://www.eng-tips.com/faqs.cfm?fid=376
http://www.eng-tips.com/faqs.cfm?fid=1083

What version of Fortran does Abaqus use, 77?

Join | Advertise

Copyright © 1998-2018 engineering.com, Inc. All rights reserved.


Unauthorized reproduction or linking forbidden without expressed written permission. Registration on
or use of this site constitutes acceptance of our Privacy Policy.

4 of 4 7/6/2018, 10:01 PM

Anda mungkin juga menyukai