Professional Documents
Culture Documents
parameter (nmax=10000)
real m,ixx,iyy,izz,ixy,iyz,izx,iyx,izy,ixz
real k_vt,k_pt,k_rt,k_vw,k_vq,k_wr,k_wp,k_uva,
&
k_uvd,k_up,k_ura,k_urd,k_pq,k_qr
real m_ut,m_wt,m_qt,m_uqa,m_uqd,m_uwa,m_uwd,m_vr,
&
m_vp,m_rr,m_pp,m_rp,m_wq,m_uu,m_wwa,m_wwd,
&
m_st,m_qt1,m_qt2
real n_ut,n_pt,n_rt,n_uva,n_uvd,n_up,n_ura,n_urd,
&
n_wp,n_vq,n_pq,n_qr,n_vw,n_vv
defineing arrays
dimension a(6,6),uu(6),udt(6),alfa(3),ro(3),tol(3),du(6),dalfa(6),
&
fs(6),fn(6),fs1(6),fs2(6),rs(3),rn(3),rs1(3),rs2(3),
&
ts(3),tn(3),ts1(3),ts2(3),un(6),alfn(3),ron(3),anew(6,6)
dimension tm(nmax),x(nmax),z(nmax),theta(nmax),ux(nmax)
dimension xp(8),zp(8),xgg(8),zgg(8)
common/space1/m,xg,yg,zg,ixx,iyy,izz,ixy,iyz,izx,iyx,izy,ixz,
&
vol,xb,yb,zb,rho,grav,by
common/spacex/x_ut,x_wt,x_qt,x_wq,x_qq,x_vr,x_rr,x_rp,x_uq,
&
x_v,x_vv,x_w,x_ww
common/spacey/y_vt,y_pt,y_rt,y_ura,y_urd,y_wp,y_pq,y_up,
&
y_wr,y_qr,y_uv,y_vv
common/spacez/z_ut,z_wt,z_qt,z_uqa,z_uqd,z_vp,z_rp,z_pp,
&
z_wq,z_qq,z_uw,z_ww,z_st
common/spacek/k_vt,k_pt,k_rt,k_vw,k_vq,k_wr,k_wp,k_uva,
&
k_uvd,k_up,k_ura,k_urd,k_pq,k_qr
common/spacem/m_ut,m_wt,m_qt,m_uqa,m_uqd,m_uwa,m_uwd,m_vr,
&
m_vp,m_rr,m_pp,m_rp,m_wq,m_uu,m_wwa,m_wwd,m_st
common/spacen/n_ut,n_pt,n_rt,n_uva,n_uvd,n_up,n_ura,n_urd,
&
n_wp,n_vq,n_pq,n_qr,n_vw,n_vv
common/space2/al,br
common/space3/ai(6,6)
common/spacep/x_uu,x_u
open(8,file='out_track')
open(20,file='out_plot')
= 3.14159265358979323846
factor = pi/180.
rho = 1.0217
grav = 9.806
Initialization
uu(1) = 0.
uu(2) = 0.
uu(3) = 0.
uu(4) = 0.
uu(5) = 0.
uu(6) = 0.
udt(1) = 0.
udt(2) = 0.
udt(3) = 0.
udt(4) = 0.
udt(5) = 0.
udt(6) = 0.
alfa(1) = 0.
alfa(2) = 0.
alfa(3) = 0.
ro(1) = 0.
ro(2) = 0.
ro(3) = 0.
do i = 1,6
do j = 1,6
a(i,j) = 0.
anew(i,j) = 0.
ai(i,j) = 0.
enddo
enddo
al = 7.20
br = 0.533
write(*,*)' enter length of the object in m'
read(*,*) al
write(*,*)' enter diameter of the object in m'
read(*,*) br
alb = 3.644
rad = br/2.
vol1 = pi*rad**2*(al-rad)
vol2 = (2./3.)*pi*(rad**3)
vol = pi*rad**2*(al-rad) + (2./3.)*pi*rad**3
by = vol * rho
m = by
write(*,*)' xg in mm'
read(*,*) xg
xg = xg/1000.
yg = 0
write(*,*)' zg in mm'
read(*,*) zg
zg = zg/1000.
xb = 0
yb = 0
zb = 0
alg = alb - xg
al1 = al - alg
al1 = al - alb
al2 = al - al1 - rad
xt = -al1 + xg
amt = rho * pi * rad**2
d1 = 0.5*rho*al
d2 = d1*al
d3 = d2*al
d4 = d3*al
d5 = d4*al
ixx = am*(0.34*br)**2
iyy = am*(0.2839*al)**2
izz = iyy
ixy = 0
iyz = 0
izx = 0
iyx = ixy
izy = izy
ixz = izx
dm = m/d3
adm =am/d3
x_ut = - rho*(2./3.)*pi*rad**3
x_wt = 0.
x_qt = 0.
dx_ut = x_ut / d3
dx_wt = x_wt / d3
dx_qt = x_qt / d4
y_vt = - rho*vol
y_pt = 0.0
y_rt1 = 0.5*rho*pi*rad**2*(al2**2-al1**2)
al22 = al2 + (3./8.)*rad
y_rt2 = (2./3.)*rho*pi*rad**3 * al22
y_rt = -(y_rt1 + y_rt2)
dy_vt = y_vt / d3
dy_pt = y_pt / d4
dy_rt = y_rt / d4
z_wt = y_vt
z_qt = - y_rt
dz_wt = z_wt / d3
dz_qt = z_qt / d4
dk_pt = -0.000000
dk_rt = 0.0
k_pt = dk_pt * d5
k_rt = dk_rt * d5
n_rt = m_qt
dn_rt = n_rt / d5
z_ut = x_wt
k_vt = y_pt
m_ut = x_qt
m_wt = z_qt
n_vt = y_rt
n_pt = k_rt
dz_ut = dx_wt
dk_vt = dy_pt
dm_ut = dx_qt
dm_wt = dz_qt
dn_vt = dy_rt
dn_pt = dk_rt
c
c
x-coefficients
added mass
x_wq = z_wt
x_qq = z_qt
x_vr = -y_vt
x_rr = -y_rt
x_rp = -y_pt
x_uq = x_wt
x_wq = 0.
x_qq = 0.
x_vr = 0.
x_rr = 0.
x_rp = 0.
x_uq = 0.
damping
x_v = 0.0
x_vv = 0.0
x_w = 0.0
x_ww = 0.0
y force coefficients
added mass
y_ura = x_ut
y_ura = 0.
y_wp = -z_wt
y_pq = -z_qt
y_up = -x_wt
y_wr = x_wt
y_qr = x_qt
damping
y_uv = -amt
y_vv = -0.0
* d2
y_urd = 0.00 * d3
y_urd = - xt * amt
z force coefficients
added mass
z_uqa = -x_ut
z_uqa = 0.
z_vp = y_vt
z_rp = y_rt
z_pp = y_pt
z_wq = -x_wt
z_qq = -x_qt
damping
c--------------c
estimating z coefficients
c-------------------z_st = 0.0 * d2
z_uw = - amt
z_ww = 0.0
* d2
z_uqd = + xt * amt
k-moment coefficients
added mass
k_wr = -(y_rt + z_qt)
k_wp = -y_pt
k_uva = x_wt
k_ura = -x_qt
k_pq = k_rt
k_qr = n_rt - m_qt
k_vw = z_wt - y_vt
k_vq = y_rt + z_qt
damping
k_uvd = 0.0
k_up = 0.0
k_urd = 0.0
m-moment equations
added mass
m_uwa = x_ut - z_wt
m_uqa = -z_qt
m_vr = y_pt
m_vp = -y_rt
m_rr = k_rt
m_pp = -k_rt
m_rp = k_pt - n_rt
m_wq = x_qt
m_uu = -x_wt
m_wwa = x_wt
damping
c------------------c
estimatng m coeff
c
m_st = 0.0 * d3
m_uwd = xt * amt
m_uwd = fact1 * m_uwd
m_wwd = 0. * d3
m_uqd = - xt**2 * amt
m_uqd = fact2 * m_uqd
c------------
n_moment equations
added mass
n_uva = y_vt - x_ut
n_up = x_qt + y_pt
n_ura = y_rt
n_wp = z_qt
n_vq = -(x_qt+y_pt)
n_pq = m_qt - k_pt
n_qr = -k_rt
n_vw = -x_wt
damping
n_uvd = -xt * amt
n_vv = 0.00 * d3
n_urd = - xt**2 * amt
dy_v = y_uv/d2
dn_r = (n_ura+n_urd)/d4
dn_v = (n_uva+n_uvd)/d3
dy_r = (y_ura+y_urd)/d3
dz_w = z_uw/d2
dm_q = (m_uqa+m_uqd)/d4
dm_w = (m_uwa+m_uwd)/d3
dz_q = (z_uqa+z_uqd)/d3
m = am
**********************
- x_wt
a(2,2) = m - y_vt
a(2,4) = -m*zg - y_pt
a(2,6) = m*xg - y_rt
a(3,1) =
- z_ut
a(3,3) = m - z_wt
a(3,4) = m*yg
a(3,5) = -m*xg - z_qt
a(6,1) = -m*yg
a(6,2) = m*xg - n_vt
a(6,4) = - izx - n_pt
a(6,5) = - izy
a(6,6) = izz - n_rt
tol(1) = al/10000
tol(2) = tol(1)
tol(3) = tol(1)
read(*,*) tmax
theta0 = 0.
theta0 = theta0 * pi/180.
read(*,*) r03
r03 = 0
write(*,*)'Delta t in sec'
read(*,*) delt
delt = 1./100.
uu(1) = uc
uu(1) = uc * cos(theta0)
uu(3) = uc * sin(theta0)
alfa(1) = alfa(1) * factor
alfa(2) = alfa(2) * factor
alfa(3) = alfa(3) * factor
100
c
continue
write(*,*)' n=',n,' time=',t
time = t
predictor step
if ( n .eq. 0 ) go to 10
do j = 1,6
fs2(j) = fs1(j)
enddo
do j = 1,3
rs2(j) = rs1(j)
ts2(j) = ts1(j)
enddo
10
continue
do j = 1,6
fs1(j) = fs(j)
enddo
do j = 1,3
rs1(j) = rs(j)
ts1(j) = ts(j)
enddo
if ( n .eq. 0 ) then
do j = 1,6
un(j) = uu(j) + delt*fs1(j)
enddo
do j = 1,3
alfn(j) = alfa(j) + delt*rs1(j)
ron(j) = ro(j) + delt*ts1(j)
enddo
else
do j = 1,6
un(j) = uu(j) + 0.5*delt*(3*fs1(j)-fs2(j))
enddo
do j = 1,3
alfn(j) = alfa(j) + 0.5*delt*(3*rs1(j)-rs2(j))
ron(j) = ro(j) + 0.5*delt*(3*ts1(j)-ts2(j))
enddo
endif
do j = 1,6
du(j) = un(j)
enddo
do j = 1,3
dalfa(j) = alfn(j)
enddo
corrector steps
if ( n .eq. 0 ) then
do j = 1,6
un(j) = uu(j) + 0.5*delt*(fn(j) + fs1(j))
enddo
do j = 1,3
alfn(j) = alfa(j) + 0.5*delt*(rn(j) + rs1(j))
ron(j) = ro(j) + 0.5*delt*(tn(j) + ts1(j))
enddo
else
do j = 1,6
un(j) = uu(j)+delt*(5.*fn(j)+8*fs1(j)-fs2(j))/12
enddo
do j = 1,3
alfn(j) = alfa(j)+delt*(5.*rn(j)+8*rs1(j)-rs2(j))/12
ron(j)=ro(j)+delt*(5.*tn(j)+8*ts1(j)-ts2(j))/12
enddo
endif
n= n+1
t = t + delt
do 71 j = 1,6
71
uu(j) = un(j)
do 72 j = 1,3
alfa(j) = alfn(j)
72
ro(j) = ron(j)
fac = 180/pi
write(8,88) n,t,ro(1),ro(3),alfa(2)/factor,uu(1)
tm(n) = t
x(n) = ro(1)
z(n) = - ro(3)
theta(n) = alfa(2)
ux(n) = uu(1)
go to 100
88
format(i8,f10.4,4f10.4)
505 continue
fac = 180/pi
ntot = n
write(8,*) ntot
do n = 1,n
write(8,88) n,tm(n),x(n),z(n),theta(n)/factor,ux(n)
enddo
for plotting
zp(5) = rad
xp(6) = -0.5*al
zp(6) = rad
xp(7) = -0.5*al
zp(7) = -rad
xp(8) = xp(1)
zp(8) = zp(1)
ndstep = 5
write(*,*)' after which steps plots needed'
read(*,*) ndstep
c
k=0
c
initial configuration
i= 0
tinit = 0.
write(20,*) k,i,tinit
do j = 1,8
write(20,*) j,xp(j),zp(j)
enddo
do i = 1,ntot
ii = i/ndstep
if ((i - ii*ndstep) .eq. 0 .or. i .eq. ntot ) then
k = k+1
x0 = x(i)
z0 = z(i)
th = theta(i)
cth = cos(th)
sth = sin(th)
write(20,*) k,i,tm(i)
do j = 1,8
xgg(j) = x0 + xp(j)*cth - zp(j)*sth
zgg(j) = z0 + xp(j)*sth + zp(j)*cth
write(20,*) j,xgg(j),zgg(j)
enddo
endif
enddo
stop
end
subroutine accln(time,uc,vv,beta,f,rr,t)
real m,ixx,iyy,izz,ixy,iyz,izx,iyx,izy,ixz
real k_vt,k_pt,k_rt,k_vw,k_vq,k_wr,k_wp,k_uva,
&
k_uvd,k_up,k_ura,k_urd,k_pq,k_qr
real m_ut,m_wt,m_qt,m_uqa,m_uqd,m_uwa,m_uwd,m_vr,
&
m_vp,m_rr,m_pp,m_rp,m_wq,m_uu,m_wwa,m_wwd,
&
m_st
real n_ut,n_pt,n_rt,n_uva,n_uvd,n_up,n_ura,n_urd,
&
n_wp,n_vq,n_pq,n_qr,n_vw,n_vv
common/space1/m,xg,yg,zg,ixx,iyy,izz,ixy,iyz,izx,iyx,izy,ixz,
&
vol,xb,yb,zb,rho,grav,by
common/spacex/x_ut,x_wt,x_qt,x_wq,x_qq,x_vr,x_rr,x_rp,x_uq,
&
x_v,x_vv,x_w,x_ww
common/spacey/y_vt,y_pt,y_rt,y_ura,y_urd,y_wp,y_pq,y_up,
&
y_wr,y_qr,y_uv,y_vv
common/spacez/z_ut,z_wt,z_qt,z_uqa,z_uqd,z_vp,z_rp,z_pp,
&
z_wq,z_qq,z_uw,z_ww,z_st
common/spacek/k_vt,k_pt,k_rt,k_vw,k_vq,k_wr,k_wp,k_uva,
&
k_uvd,k_up,k_ura,k_urd,k_pq,k_qr
common/spacem/m_ut,m_wt,m_qt,m_uqa,m_uqd,m_uwa,m_uwd,m_vr,
&
m_vp,m_rr,m_pp,m_rp,m_wq,m_uu,m_wwa,m_wwd,m_st
common/spacen/n_ut,n_pt,n_rt,n_uva,n_uvd,n_up,n_ura,n_urd,
&
n_wp,n_vq,n_pq,n_qr,n_vw,n_vv
common/space2/al,br
common/space3/ai(6,6)
common/spacep/x_uu,x_u
dimension vv(6),beta(3),f(6),rr(3),t(3),c(15,6),ssum(6)
dimension d(6),fi2(6),fd1(6),fs(6),fp(6),ft(6)
fi2(j) = 0.
fd1(j) = 0.
fs(j) = 0.
fp(j) = 0.
ft(j) = 0.
enddo
u = vv(1)
v = vv(2)
w = vv(3)
p = vv(4)
q = vv(5)
r = vv(6)
s1 = sin(beta(1))
s2 = sin(beta(2))
s3 = sin(beta(3))
c1 = cos(beta(1))
c2 = cos(beta(2))
c3 = cos(beta(3))
t2 = s2/c2
u2 = u**2
v2 = v**2
w2 = w**2
p2 = p**2
q2 = q**2
r2 = r**2
uv = u*v
uw = u*w
up = u*p
uq = u*q
ur = u*r
vw = v*w
vp = v*p
vq = v*q
vr = v*r
wp = w*p
wq = w*q
wr = w*r
pq = p*q
pr = p*r
qp = pq
qr = q*r
rp = pr
rq = r*q
c-----------------------------------------------------------c
c------------------------------------------------------------
c-----------------------------------------------------------c
&
- m*yg*(vp-uq) + m*zg*(ur-wp)
d(5) = (izz-ixx)*rp + iyx*qr + izx*(r2-p2) - iyz*qp
&
- m*zg*(wq-vr) + m*xg*(vp-uq)
d(6) = (ixx-iyy)*pq + izy*rp + ixy*(p2-q2) - izx*rq
&
- m*xg*(ur-wp) + m*yg*(wq-vr)
c------------------------------------------------------------
c-----------------------------------------------------------c
+ x_rp*rp + x_uq*uq
fi2(2) = y_ura*ur + y_wp*wp + y_pq*pq + y_up*up
&
+ y_wr*wr + y_qr*qr
fi2(3) = z_uqa*uq + z_vp*vp + z_rp*rp + z_pp*p2
&
+ z_wq*wq + z_qq*q2
fi2(4) = k_vw *vw + k_vq*vq + k_wr*wr + k_wp*wp
&
&
&
+ m_uu*u2+ m_wwa*w2
fi2(6) = n_uva*uv + n_up*up + n_ura*ur+ n_wp*wp
&
c-------------------------------------------------------------------
c------------------------------------------------------------------c
c----------------------------------------------------------------------c
wt = m*grav
b = by*grav
fs(1) = -(wt-b)*s2
fs(2) = (wt-b)*c2*s1
fs(3) = (wt-b)*c2*c1
fs(4) = (yg*wt - yb*b)*c2*c1 - (zg*wt - zb*b)*c2*s1
fs(5) = -(zg*wt - zb*b)*s2 - (xg*wt - xb*b)*c2*c1
fs(6) = (xg*wt - xb*b)*c2*s1 + (yg*wt - yb*b)*s2
c------------------------------------------------------------------------
c-----------------------------------------------------------------------c
fp_in = 0.
fp(1) = fp_in
fp(1) = fp(1) - res_t
write(10,1001) time,uc,fp_in,u,res_t,fp(1)
1001
format(6f12.4)
c------------------------------------------------------------------------------
c*****************************************************************************
c
c*****************************************************************************
c----------------------------------------------------------------------------c
c-----------------------------------------------------------------------------
c----------------------------------------------------------------------------c
do j = 1,6
ft(j)=d(j)+fi2(j)+fd1(j)+fs(j)+fp(j)
enddo
c-----------------------------------------------------------------------------
write(10,2222) time,(ft(j),j=1,6)
2222
format(f8.2,6f16.6)
do i = 1,6
f(i) = 0.
do j = 1,6
f(i) = f(i) + ai(i,j) * ft(j)
enddo
enddo
c--------------------------------------------------------------------------
c-------------------------------------------------------------------------c
c1*q -
s1*r
s1/c2*q + (c1/c2)*r
(s1*c2)*v +
(c1*c2)*w
c------------------------------------------------------------------------return
end
c-------------------------------------------------------------------------
subroutine area(n,dx,y,ar)
dimension y(25)
ar = 0.
do 1 i = 2,n
1
return
end
continue
y(i,i) = 1.
12 continue
call ludcmp(a,n,np,indx,d)
do 13 j = 1,n
call lubksb(a,n,np,indx,y(1,j))
13
continue
return
end
d=1
do 12 i = 1,n
aamax = 0.
do 11 j = 1,n
if (abs(a(i,j)) .gt. aamax) aamax = abs(a(i,j))
11 continue
c
continue
a(i,j) = sum
14 continue
aamax = 0.
do 16 i = j,n
sum = a(i,j)
do 15 k = 1,j-1
sum = sum - a(i,k) * a(k,j)
15
continue
a(i,j) = sum
dum = vv(i) * abs(sum)
if ( dum .ge. aamax ) then
imax = i
aamax = dum
endif
16
continue
if ( j .ne. imax ) then
do 17 k = 1,n
dum = a(imax,k)
a(imax,k) = a(j,k)
a(j,k) = dum
17
continue
d = -d
vv(imax) = vv(j)
endif
indx(j) = imax
if (a(j,j) .eq. 0.) a(j,j) = tiny
if ( j .ne. n ) then
dum = 1./a(j,j)
do 18 i = j+1,n
a(i,j) = a(i,j) * dum
18 continue
endif
19 continue
return
end
ll = indx(i)
sum = b(ll)
b(ll) = b(i)
if ( ii .ne. 0 ) then
do 11 j = ii,i-1
sum = sum - a(i,j) * b(j)
11
continue
else if ( sum .ne. 0. ) then
ii = i
endif
b(i) = sum
12 continue
do 14 i = n,1,-1
sum = b(i)
do 13 j = i+1,n
sum = sum - a(i,j) * b(j)
13 continue
b(i) = sum/a(i,i)
14 continue
return
end