prsridhara
Chemical
- May 9, 2018
- 5
Hello Everyone,
I'm currently working on abaqus user subroutine VDisp and I want to specify displacement boundary condition on a particular node set. When I am specifying return variable as displacement and running on Multi-core cluster, then it runs into some error but if I run the simulation on single core processor then I see no such error and simulation runs fine. Did anyone face any such issue before, if so do you have any suggestions for me?
Any comments/suggestions on the issue are much appreciated.
If it helps, My VDisp code is as given below:
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)
integer i,j,k
real*8 Dist
REAL*8, DIMENSION (3) :: Disp
real*8 DistY, A0, A1,Xi
real*8 DistZ
real*8 DistSum, timN
REAL*8, DIMENSION (3, 48) :: Acc, v1
REAL*8 b
A0 = 0.0
A1 = 1.0
kstep = 1
timN = dtNext
c
c Impose Displacement
c
if( jBCType .eq. 0 ) then
c
Xi = (stepTime)/15.0
if( stepTime .lt. zero ) then
c
c Initialization 1
c
a0 = one
do 310 k=1, nblock
do 310 j=1, nDof
if ( jDof(j) .gt. 0 ) then
v1(j,k) = 0.0
rval(j,k) = 0.0
end if
310 continue
c
else if( stepTime .eq. zero ) then
c
c Initialization 2
c
a0 = one
do 320 k=1, nblock
do 320 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = 0.0
end if
320 continue
else
c
c Time incrementation
c
c amplitude relation
b = A0 + ((A1 - A0)*((Xi**3)*(10-15*Xi+(6*(Xi)**2))))
c Time incrementation
Disp(1) = 0.0
Disp(2) = 0.0
Disp(3) = b * (-5.0)
c
do 350 k=1, nblock
do 350 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = Disp(j)
end if
350 continue
end if
end if
c
return
end
I'm currently working on abaqus user subroutine VDisp and I want to specify displacement boundary condition on a particular node set. When I am specifying return variable as displacement and running on Multi-core cluster, then it runs into some error but if I run the simulation on single core processor then I see no such error and simulation runs fine. Did anyone face any such issue before, if so do you have any suggestions for me?
Any comments/suggestions on the issue are much appreciated.
If it helps, My VDisp code is as given below:
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)
integer i,j,k
real*8 Dist
REAL*8, DIMENSION (3) :: Disp
real*8 DistY, A0, A1,Xi
real*8 DistZ
real*8 DistSum, timN
REAL*8, DIMENSION (3, 48) :: Acc, v1
REAL*8 b
A0 = 0.0
A1 = 1.0
kstep = 1
timN = dtNext
c
c Impose Displacement
c
if( jBCType .eq. 0 ) then
c
Xi = (stepTime)/15.0
if( stepTime .lt. zero ) then
c
c Initialization 1
c
a0 = one
do 310 k=1, nblock
do 310 j=1, nDof
if ( jDof(j) .gt. 0 ) then
v1(j,k) = 0.0
rval(j,k) = 0.0
end if
310 continue
c
else if( stepTime .eq. zero ) then
c
c Initialization 2
c
a0 = one
do 320 k=1, nblock
do 320 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = 0.0
end if
320 continue
else
c
c Time incrementation
c
c amplitude relation
b = A0 + ((A1 - A0)*((Xi**3)*(10-15*Xi+(6*(Xi)**2))))
c Time incrementation
Disp(1) = 0.0
Disp(2) = 0.0
Disp(3) = b * (-5.0)
c
do 350 k=1, nblock
do 350 j=1, nDof
if ( jDof(j) .gt. 0 ) then
rval(j,k) = Disp(j)
end if
350 continue
end if
end if
c
return
end