Merhaba arkadaşlar;
Bu makalede Force/Fortran ile herhangi bir yüke maruz kalan bir kiriş üzerinde, herhangi bir noktadaki deplasman ve dönmeyi hesaplayacağız.
Bu hesaplamayı singularite yolu ile fortran yardımı ile yapalım.
Öncelikle fortran'ı bilmeyen arkadaşlar, korkmanıza gerek yok. Fortran; özellikle sayısal ve bilimsel hesaplamalar için uygun olan genel amaçlı, yordamsal, programlama dilidir. Fortranı ücretsiz olarak indirebilirsiniz. Kullanımı çok çok basittir. Ben fortran programlama dilini 1 günde öğrenip bu singularite algoritmasını tasarlayan biri olarak söylüyorum bunu size.
Programı geliştirmek isteyenler veya işleyişini merak edenler için kodlarını da ekledim, onun dışında sadece kullanmak isteyen arkadaşlar .exe uzantılı herhangi bir bilgisayarda kullanabilecekleri şekilde programı buradan indirebilirler.
Fortran Singularite ile Deplasman ve Dönme Hesabı
real k_b,t_y,x_p,Mo,x_Mo,w,x_w1,x_wm,E,I,x_b,x_w2,M,y,c2,c1,a_t
do
write(*,*)'KiriŸ boyunu girin (m) :'
read(*,*)k_b
write(*,*)'P ykn girin (kN) :'
read(*,*)t_y
write(*,*)'P yknn uygulama noktasn girin (m) :'
read(*,*)x_p
write(*,*)'Mo momentini girin (kNm) :'
read(*,*)Mo
write(*,*)'Mo momentinin uygulama noktasini girin (m) :'
read(*,*)x_Mo
write(*,*)'w yayl yk girin (kN/m) :'
read(*,*)w
write(*,*)'w yayl ykn baŸlang‡ noktasn girin :'
read(*,*)x_w1
write(*,*)'w yayl ykn uzunlu§unu girin (m) :'
read(*,*)x_wm
write(*,*)'Elastisite modln girin (GPa) :'
read(*,*)E
write(*,*)'Atalet momentini girin (m^4) :'
read(*,*)I
write(*,*)'Deplasman hesaplanacak noktay girin (m) :'
read(*,*)x_b
a_t=E*I
payda=k_b*a_t*1e3
py2=a_t*1e3
x_w2=x_w1+x_wm
x=0
c2=0
R1=(t_y*(k_b-x_p)/k_b)-(Mo/k_b)
$ +(w*(x_wm)*(k_b-(x_w1+x_w2)/2)/k_b)
R2=(t_y*x_p/k_b)+(Mo/k_b)+(w*(x_wm)*(x_w1+x_w2)/(2*k_b))
write(*,1)R1
1 format(22x,'R1 = ',f6.2)
write(*,2)R2
2 format(22x,'R2 = ',f6.2)
if(x.lt.x_p.and.x.lt.x_Mo.and.x.lt.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-((R1/6)*(x**3.)/(a_t*1e3)+c1*x+c2)
elseif(x.ge.x_p.and.x.lt.x_Mo.and.x.lt.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.)/(a_t*1e3)+c1*x+c2)
elseif(x.lt.x_p.and.x.ge.x_Mo.and.x.lt.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)+(Mo/2)*(x-x_Mo)**2.)/(a_t*1e3)+c1*x+c2)
elseif(x.lt.x_p.and.x.lt.x_Mo.and.x.ge.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(w/24)*(x-x_w1)**4.)/(a_t*1e3)+c1*x+c2)
elseif(x.lt.x_p.and.x.lt.x_Mo.and.x.lt.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)+(w/24)*(x-x_w2)**4.)/(a_t*1e3)+c1*x+c2)
elseif(x.ge.x_p.and.x.ge.x_Mo.and.x.lt.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.+(Mo/2)*(x-x_Mo)**2.)/(py2
$ )+c1*x+c2)
elseif(x.ge.x_p.and.x.lt.x_Mo.and.x.ge.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.-(w/24)*(x-x_w1)**4.)/(py2
$ )+c1*x+c2)
elseif(x.ge.x_p.and.x.lt.x_Mo.and.x.ge.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.-(w/24)*(x-x_w1)**4.)/(py2
$ )+c1*x+c2)
elseif(x.ge.x_p.and.x.lt.x_Mo.and.x.lt.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.+(w/24)*(x-x_w2)**4.)/(py2
$ )+c1*x+c2)
elseif(x.lt.x_p.and.x.ge.x_Mo.and.x.ge.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)+(Mo/2)*(x-x_Mo)**2.-(w/24)*(x-x_w1)**4.)
$ /(a_t*1e3)+c1*x+c2)
elseif(x.lt.x_p.and.x.ge.x_Mo.and.x.lt.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)+(Mo/2)*(x-x_Mo)**2.+(w/24)*(x-x_w2)**4.)
$ /(a_t*1e3)+c1*x+c2)
elseif(x.lt.x_p.and.x.lt.x_Mo.and.x.ge.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(w/24)*(x-x_w1)**4.+(w/24)*(x-x_w2)**4.)
$ /(a_t*1e3)+c1*x+c2)
elseif(x.ge.x_p.and.x.ge.x_Mo.and.x.ge.x_w1.and.x.lt.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.+(Mo/2)*(x-x_Mo)**2.
$ -(w/24)*(x-x_w1)**4.)/(a_t*1e3)+c1*x+c2)
elseif(x.ge.x_p.and.x.ge.x_Mo.and.x.lt.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.+(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w2)**4.)/(a_t*1e3)+c1*x+c2)
elseif(x.ge.x_p.and.x.lt.x_Mo.and.x.ge.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.-(w/24)*(x-x_w1)**4.
$ +(w/24)*(x-x_w2)**4.)/(a_t*1e3)+c1*x+c2)
elseif(x.lt.x_p.and.x.ge.x_Mo.and.x.ge.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)+(Mo/2)*(x-x_Mo)**2.-(w/24)*(x-x_w1)**4.
$ +(w/24)*(x-x_w2)**4.)/(a_t*1e3)+c1*x+c2)
elseif(x.ge.x_p.and.x.ge.x_Mo.and.x.ge.x_w1.and.x.ge.x_w2)then
x=k_b
c1=(-(R1/6)*(x**3.)+(t_y/6)*(x-x_p)**3.-(Mo/2)*(x-x_Mo)**2.
$ +(w/24)*(x-x_w1)**4.-(w/24)*(x-x_w2)**4.-c2)/payda
write(*,4)c1
x=x_b
y=-(((R1/6)*(x**3.)-(t_y/6)*(x-x_p)**3.+(Mo/2)*(x-x_Mo)**2.
$ -(w/24)*(x-x_w1)**4.+(w/24)*(x-x_w2)**4.)/(a_t*1e3)+c1*x+c2)
endif
write(*,3)y
3 format(23x,'y = ',f6.2)
4 format(/,23x,'c = ',f6.2)
read(*,*)dur
end do
end
Faydalı olması dileğiyle..
Toplam 1 Yorum
cengiz aksu
04.11.2017 22:39:44
Öncelikle program güzel benim sorum mesnetler ankastre mi seçiyoruz başka mesnet tipi seçilebiliyor mu?
Hafzullah Yıldırım
12.11.2017 19:38:14
Maalesef mesnet seçemiyorsunuz.