Vdisp - 2
Vdisp - 2
Vdisp - 2
VDISP
User subroutine VDISP: Related Topics
Products: Abaqus/Explicit
Initial velocity
At the beginning of each step user subroutine VDISP is called once to establish the initial velocity; and then, it is called once on each configuration, including the initial configuration, to
establish the nodal acceleration.
The first call to user subroutine VDISP is made to establish the initial velocity, which is indicated by the passing of a step time value of −dt into the subroutine, where dt is the current
time increment. If displacement is prescribed, the returned variable, rval, corresponds to uo − vo dt, where uo and vo are the initial displacement and velocity respectively. If velocity
vo
is prescribed, the returned variable corresponds to the initial velocity vo . If acceleration is prescribed, the returned variable corresponds to , where vo is the initial velocity.
dt
The default value of rval is consistent with the velocity at the end of previous step or that specified as an initial condition in case of the first step. You only need to reset the rval if a
different initial velocity is desired. The arrays u and v stand for the default initial displacement and velocity, respectively. The array a contains a zero value.
Acceleration
During time incrementation user subroutine VDISP is called once for each configuration, including the initial configuration, to establish the nodal acceleration.
If displacement is prescribed, the returned variable should be set equal to the displacement at stepTime+dtNext, where stepTime is the step time and dtNext is the next time
increment. If velocity is prescribed, the returned variable should be set equal to the mean velocity at stepTime+dtNext/2. If acceleration is prescribed, the returned variable should be
set equal to the acceleration at stepTime. Note that stepTime is zero for the initial configuration.
The variable rval has a default value that is computed with the constraints not yet applied. You can leave rval at this value, if desired. The variable u contains values at stepTime.
Whereas, the variable v contains initial velocity when stepTime is zero and, otherwise, velocity at stepTime—dt/2. The variable a contains values at stepTime computed with the
constraints not yet applied.
Tip: If the node does not participate in any other conflicting constraints or connector elements, leaving rval at the incoming value would amount to leaving the node
unconstrained. Alternatively, if you want to apply a concentrated load at such a node (instead of the boundary condition), you can compute the change in acceleration
due to this load and modify the rval value to account for that change. The nodal mass and the rotary inertia are available in VDISP for computing the change in
http://bobcat.nus.edu.sg:2080/English/SIMACAESUBRefMap/simasub-c-vdisp.htm#simasub-c-vdisp 1/5
5/26/2018 VDISP
acceleration. In addition, the default value of rval at the node already reflects the forces from any contact, user-defined load, and elements (except for connectors) at
that node.
Variables to be defined
rval(nDof, nblock)
Values of the prescribed variable for degrees of freedom 1–6 (translation and rotation) at the nodes. The variable can be displacement, velocity, or acceleration, depending on
the type specified in the associated boundary condition. The variable type is indicated by jBCType. The variable rval has a default value that is computed without taking the
constraints into account. You may reset the rval.
http://bobcat.nus.edu.sg:2080/English/SIMACAESUBRefMap/simasub-c-vdisp.htm#simasub-c-vdisp 3/5
5/26/2018 VDISP
Input file
*HEADING
Test VDISP with S4R element
*NODE, NSET=NALL
1,
2, 2., 0.
3, 0., 2.
4, 2., 2.
9, 1., 1., 0.
*ELEMENT, TYPE=S4R, ELSET=SHELL
10, 1,2,4,3
*SHELL SECTION, ELSET=SHELL, MATERIAL=ELSHELL
2.0000000e-02, 3
*MATERIAL, NAME=ELSHELL
*DENSITY
7850.0,
*ELASTIC
2.5000000e+11, 3.0000000e-01
*RIGID BODY, REF NODE=9, ELSET=SHELL
*INITIAL CONDITIONS, Type=VELOCITY
9, 1, 0.4
*STEP
*DYNAMIC, EXPLICIT, DIRECT USER CONTROL
0.01, 0.8
*BOUNDARY, USER, TYPE=ACCELERATION
9, 1
*OUTPUT, HISTORY, TIME INTERVAL=0.01, OP=NEW
*NODE OUTPUT, NSET=NALL
U, V, A
*END STEP
User subroutine
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 acceleration
c
if( jBCType .eq. 2 ) then
c
if( stepTime .lt. zero ) then
c
c Initialization 1
http://bobcat.nus.edu.sg:2080/English/SIMACAESUBRefMap/simasub-c-vdisp.htm#simasub-c-vdisp 4/5
5/26/2018 VDISP
c
do 310 k=1, nblock
do 310 j=1, nDof
if ( jDof(j) .gt. 0 ) then
v0 = v(j,k)
rval(j,k) = v0/dt
end if
310 continue
c
else
c
c Time incrementation
c
amplitude = 2.0
period = 0.8
twopi = 6.2831853d0
c
do 350 k=1, nblock
do 350 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = amplitude*
* sin( twopi*stepTime / period )
end if
350 continue
end if
end if
c
return
end
http://bobcat.nus.edu.sg:2080/English/SIMACAESUBRefMap/simasub-c-vdisp.htm#simasub-c-vdisp 5/5