35 SUBROUTINE ruser46(NEL,IOUT ,IPROP ,UVAR ,NUVAR ,
36 2 FX ,FY ,FZ ,XMOM ,YMOM ,
37 3 ZMOM ,E ,OFF ,STIFM ,STIFR ,
38 4 VISCM ,VISCR ,MASS ,XINER ,DT ,
39 5 XL ,VX ,RY1 ,RZ1 ,RX ,
115#include "implicit_f.inc"
119 INTEGER IOUT,NEL,NUVAR,IPROP,
120 . GET_U_PNU,GET_U_PID,GET_U_MID,GET_U_MNU,
124 . fx(*), fy(*), fz(*), e(*), vx(*),mass(*) ,xiner(*),
125 . ry1(*), rz1(*), off(*), xmom(*), ymom(*),
126 . zmom(*), rx(*), ry2(*), rz2(*),xl(*),
127 . stifm(*) ,stifr(*) , viscm(*) ,viscr(*) ,fr_wave(*) ,
128 . get_u_mat, get_u_geo, get_u_func, get_u_time
129 EXTERNAL get_u_mnu,get_u_pnu,get_u_mid,get_u_pid,
130 . get_u_mat,get_u_geo, get_u_func, get_u_time
151 elastif= get_u_geo(2,iprop)
152 xlim1 = get_u_geo(3,iprop)
153 xlim2 = get_u_geo(4,iprop)
154 damp = get_u_geo(6,iprop)
155 scalet = get_u_geo(8,iprop)
156 scalex = get_u_geo(9,iprop)
157 scalev = get_u_geo(10,iprop)
158 scalef = get_u_geo(11,iprop)
160 epsi = int(get_u_geo(7,iprop))
161 ifunc1= get_u_pnu(1,iprop,kfunc)
162 ifunc2= get_u_pnu(2,iprop,kfunc)
163 ifunc3= get_u_pnu(3,iprop,kfunc)
164 ifunc4= get_u_pnu(4,iprop,kfunc)
165 ifunc5= get_u_pnu(5,iprop,kfunc)
178 newlen = uvar(3,i) + uvar(1,i)
181 deltalen = newlen/uvar(3,i) - one
185 deltalendot = newlen/uvar(3,i)*vx(i)/xlim1
193 fux1 = get_u_func(ifunc1,tt,dxdy)
195 IF(epsi/= 0)deltalen = deltalen / scalex
196 fux2 = get_u_func(ifunc2,deltalen,dxdy)
199 deltalendot = deltalendot / scalev
200 fux3 = get_u_func(ifunc3,deltalendot,dxdy)
202 fux4 = get_u_func(ifunc4,deltalen,dxdy)
207 fx(i) = xlim2 * fux1 * fux2 * fux3 + fux4 + damp*xlim1
208 ELSEIF (vx(i)<-xlim1)
THEN
209 fx(i) = xlim2 * fux1 * fux2 * fux3 + fux4 - damp*xlim1
211 fx(i) = xlim2 * fux1 * fux2 * fux3 + fux4 + damp*vx(i)
219 IF(deltalen /= zero)
THEN
220 slope = abs(fx(i)-uvar(4,i))/abs(dx)
subroutine ruser46(nel, iout, iprop, uvar, nuvar, fx, fy, fz, xmom, ymom, zmom, e, off, stifm, stifr, viscm, viscr, mass, xiner, dt, xl, vx, ry1, rz1, rx, ry2, rz2, fr_wave)