Program fortran sem 2, dokumentacja, Opis programu


Rozwiązanie statyki belki

0x01 graphic

Reakcje

Układ równań:

0x01 graphic

Reakcje:

0x01 graphic

Przy obliczeniach reakcji posiłkowano się programem Derive 4 windows

Tnące i momenty

Przedział 1

0x01 graphic

Przedział 2

0x01 graphic

Przedział 3 i 4

0x01 graphic

Przedział 5

0x01 graphic

Przedział 6

0x01 graphic

Przedział 7

0x01 graphic

Przedział 8

0x01 graphic

Przedział 9

0x01 graphic

Przykład obliczeniowy

Dla danych wejściowych:

Dane do programu

l1[m]= 1.000

l2[m]= 2.000

l3[m]= 3.000

l4[m]= 4.000

l5[m]= 5.000

l6[m]= 4.000

l7[m]= 3.000

l8[m]= 2.000

l9[m]= 1.000

q1[kN/m]= 2.300

q2[kN/m]= 3.400

P[kN]= 10.000

M[kNm]= 12.000

Wyniki programu:

0x01 graphic

Wyniki programu graficznego:

0x01 graphic
Instrukcja użytkownika programu

Po uruchomieniu programu pojawia się menu, należy wybrać jedną z opcji.

Aby program graficzny zadziałał prawidłowo należy wyprowadzić wyniki do pliku (wyniki.grf), po uprzednim wprowadzeniu danych wejściowych.

Uwaga: Program graficzny nie uruchamia się w systemie Windows Vista.

Kod źródłowy programu liczącego

real l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,M,L

integer i,K

real minT,maxT,minM,maxM

integer opcja

10 write(*,"(20(/))")

write(*,"(20x,a)") ' MENU GLOWNE '

write(*,"(20x,a)") ' 1. Wejscie danych z klawiatury '

write(*,"(20x,a)") ' 2. Wejscie danych z pliku (dane.dat) '

write(*,"(20x,a)") ' 3. Wyjscie danych na ekran '

write(*,"(20x,a)") ' 4. Wyjscie danych do pliku (dane.dat) '

write(*,"(20x,a)") ' 5. Wyjscie wynikow na ekran '

write(*,"(20x,a)") ' 6. Wyjscie wynikow do pliku '

write(*,"(20x,a)") ' 99. KONIEC'

read(*,*) opcja

select case(opcja)

case(1)

write(*,"(25(/),a)") 'Dane z klawiatury:'

write(*,*) 'l1, l2, l3, l4, l5, l6, l7, l8, l9 [m]'

read(*,*) l1,l2,l3,l4,l5,l6,l7,l8,l9

write(*,*) 'q1, q2 [kN/m]'

read(*,*) q1,q2

write(*,*) 'P [kN]'

read(*,*) P

write(*,*) 'M [kNm]'

read(*,*) MM

L=l1+l2+l3+l4+l5+l6+l7+l8+l9

go to 10

case(2)

900 format((/),13(10x,f8.3,(/)))

open(1,file='dane.dat')

read(1,900) l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM

close(1)

L=l1+l2+l3+l4+l5+l6+l7+l8+l9

pause 'Odczytano dane z dane.dat [ENTER]'

go to 10

case(3)

1000 format(1x,'Dane do programu',(/),

$ 1x,' l1[m]=',f8.3,(/),

$ 1x,' l2[m]=',f8.3,(/),

$ 1x,' l3[m]=',f8.3,(/),

$ 1x,' l4[m]=',f8.3,(/),

$ 1x,' l5[m]=',f8.3,(/),

$ 1x,' l6[m]=',f8.3,(/),

$ 1x,' l7[m]=',f8.3,(/),

$ 1x,' l8[m]=',f8.3,(/),

$ 1x,' l9[m]=',f8.3,(/),

$ 1x,'q1[kN/m]=',f8.3,(/),

$ 1x,'q2[kN/m]=',f8.3,(/),

$ 1x,' P[kN]=',f8.3,(/),

$ 1x,' M[kNm]=',f8.3,(/)

$ )

write(*,1000) l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM

pause '[ENTER]'

go to 10

case(4)

open(1,file='dane.dat')

write(1,1000) l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM

close(1)

pause 'Zapisano dane do pliku [ENTER]'

go to 10

case(5)

write(*,*) ' Ile wynikow? >'

read(*,*) K

call blk(l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,M)

write(*,*) 'Ra=',Ra,', Rb=',Rb,', Rc=',Rc

do i=1,K

x=(i-1)*(L/K)

call blk(l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,M)

write(*,*) x,T,M

end do

pause '[ENTER]'

go to 10

case(6)

K=600

call blk(l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,M)

open(1,file='wyniki.grf',access='direct',recl=16)

do i=1,K

x=(i-1)*(L/K)

call blk(l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,M)

if(x.eq.0.0) then

minT=T

maxT=T

minM=M

maxM=M

else

minT=min(minT,T)

maxT=max(maxT,T)

minM=min(minM,M)

maxM=max(maxM,M)

end if

write(1,rec=i) T,M

end do

write(1,rec=601) Ra,Rb,Rc

write(1,rec=602) minT,maxT,minM,maxM

close(1)

pause 'Zapisano do pliku wyniki.grf [ENTER]'

go to 10

case(99)

pause

stop

end select

end

subroutine blk(l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,

$M)

real l1,l2,l3,l4,l5,l6,l7,l8,l9,q1,q2,P,MM,Ra,Rb,Rc,x,T,M

Ra=(MM+P*l3)/(l2+l3)

Rb=-(2*MM*(l4+l5+l6+l7)-2*P*l2*(l4+l5+l6+l7)-(l2+l3)*(l6**2*q1+2*l

$6*l7*q1-l9*q2*(2*l8+l9)))/(2*(l2+l3)*(l5+l6+l7))

Rc=(2*MM*l4-2*P*l2*l4+(l2+l3)*(2*l5*(l6*q1+l9*q2)+l6**2*q1+2*l6*l9

$*q2+l9*q2*(2*l7+2*l8+l9)))/(2*(l2+l3)*(l5+l6+l7))

if(x.le.l1) then

T= 0

M= -MM

else if(x.gt.l1.and.x.le.(l1+l2)) then

T= 0+Ra

M= -MM+Ra*(x-l1)

else if(x.gt.(l1+l2).and.x.le.(l1+l2+l3)) then

T= 0+Ra+(-P)

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))

else if(x.gt.(l1+l2+l3).and.x.le.(l1+l2+l3+l4)) then

T= 0+Ra+(-P)

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))

else if(x.gt.(l1+l2+l3+l4).and.x.le.(l1+l2+l3+l4+l5)) then

T= 0+Ra+(-P)+Rb

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))+Rb*(x-(l1+l2+l3+l4))

else if(x.gt.(l1+l2+l3+l4+l5).and.x.le.(l1+l2+l3+l4+l5+l6)) then

T= 0+Ra+(-P)+Rb+(-q1*(x-(l1+l2+l3+l4+l5)))

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))+Rb*(x-(l1+l2+l3+l4))+(-q1*(x-

$(l1+l2+l3+l4+l5))*(x-(l1+l2+l3+l4+l5))*(0.5))

else if(x.gt.(l1+l2+l3+l4+l5+l6).and.x.le.(l1+l2+l3+l4+l5+l6+l7)

$) then

T= 0+Ra+(-P)+Rb+(-q1*((l1+l2+l3+l4+l5+l6)-(l1+l2+l3+l4+l5)))

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))+Rb*(x-(l1+l2+l3+l4))+(-q1*((l

$1+l2+l3+l4+l5+l6)-(l1+l2+l3+l4+l5))*(x-((l1+l2+l3+l4+l5)+((l1+l2+l

$3+l4+l5+l6)-(l1+l2+l3+l4+l5))*(0.5))))

else if(x.gt.(l1+l2+l3+l4+l5+l6+l7).and.x.le.(l1+l2+l3+l4+l5+l6+

$l7+l8)) then

T= 0+Ra+(-P)+Rb+(-q1*((l1+l2+l3+l4+l5+l6)-(l1+l2+l3+l4+l5)))+Rc

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))+Rb*(x-(l1+l2+l3+l4))+(-q1*((l

$1+l2+l3+l4+l5+l6)-(l1+l2+l3+l4+l5))*(x-((l1+l2+l3+l4+l5)+((l1+l2+l

$3+l4+l5+l6)-(l1+l2+l3+l4+l5))*(0.5))))+Rc*(x-(l1+l2+l3+l4+l5+l6+l7

$))

else if(x.gt.(l1+l2+l3+l4+l5+l6+l7+l8)) then

T= 0+Ra+(-P)+Rb+(-q1*((l1+l2+l3+l4+l5+l6)-(l1+l2+l3+l4+l5)))+(-

$q2*(x-(l1+l2+l3+l4+l5+l6+l7+l8)))+Rc

M= -MM+Ra*(x-l1)+(-P*(x-(l1+l2)))+Rb*(x-(l1+l2+l3+l4))+(-q1*((l

$1+l2+l3+l4+l5+l6)-(l1+l2+l3+l4+l5))*(x-((l1+l2+l3+l4+l5)+((l1+l2+l

$3+l4+l5+l6)-(l1+l2+l3+l4+l5))*(0.5))))+(-q2*(x-(l1+l2+l3+l4+l5+l6+

$l7+l8))*(x-(l1+l2+l3+l4+l5+l6+l7+l8))*(0.5))+Rc*(x-(l1+l2+l3+l4+l5

$+l6+l7))

end if

end

Kod źródłowy programu graficznego
include 'c:\f5e\fgraph.fi'

include 'c:\f5e\fgraph.fd'

real minT,maxT,minM,maxM,T,M,Ra,Rb,Rc

integer i,d

real skalaT, skalaM, xB, mT, mM

character*80 napis

record /xycoord/ xy

d=setvideomode($VRES16COLOR)

d=registerfonts("*.fon")

d=setcolor(14)

d=rectangle($GBORDER,10,10,630,470)

d=setcolor(15)

d=setfont("t'helv'h22w10b")

write(napis,"(a)") 'Wykres tnacych i momentow'

call moveto(170,10,xy)

call outgtext(napis)

open(1,file='wyniki.grf',access='direct',recl=16)

read(1,rec=601) Ra,Rb,Rc

read(1,rec=602) minT,maxT,minM,maxM

d=setfont("t'helv'h12w8b")

call moveto(100,50,xy)

write(napis,"(a,f4.1,a)") 'Ra=',Ra,'[kN]'

call outgtext(napis)

call moveto(100,65,xy)

write(napis,"(a,f4.1,a)") 'Rb=',Rb,'[kN]'

call outgtext(napis)

call moveto(100,80,xy)

write(napis,"(a,f4.1,a)") 'Rc=',Rc,'[kN]'

call outgtext(napis)

call moveto(250,60,xy)

write(napis,"(a,f4.1,a)") 'min T=',minT,'[kN]'

call outgtext(napis)

call moveto(250,75,xy)

write(napis,"(a,f4.1,a)") 'max T=',maxT,'[kN]'

call outgtext(napis)

call moveto(400,60,xy)

write(napis,"(a,f4.1,a)") 'min M=',minM,'[kNm]'

call outgtext(napis)

call moveto(400,75,xy)

write(napis,"(a,f4.1,a)") 'max M=',maxM,'[kNm]'

call outgtext(napis)

mT=max(abs(minT),abs(maxT))

mM=max(abs(minM),abs(maxM))

if(mT.gt.0.0) skalaT=80.0/mT

if(mM.gt.0.0) skalaM=80.0/mM

d=setcolor(14)

call moveto(20,107,xy)

call outgtext('Tnace')

call moveto(20,287,xy)

call outgtext('Momenty')

d=setcolor(9)

d=rectangle($GBORDER,20,120,620,280)

d=rectangle($GBORDER,20,300,620,460)

c ------------------------------ WYKRES TNACYCH I MOMENTOW

xB=20

d=setcolor(15)

do i=1,600

read(1,rec=i) T,M

call moveto(xB,120+80,xy)

d=lineto(xB,120+80-(skalaT*T))

call moveto(xB,300+80,xy)

d=lineto(xB,300+80+(skalaM*M))

xB=xB+1

end do

close(1)

pause ' '

d=setvideomode($DEFAULTMODE)

end



Wyszukiwarka

Podobne podstrony:
Program fortran sem 2, schemat
Przeglądarki dokumentów opis
DOKUMENTY OPIS
opis zegarów GOLF IV, Nowy Dokument programu Microsoft Word
Przedmioty obieralne 2 st 2 sem gik - treści programowe, SEM II Dokumentacja pomiarów inżynieryjnych
Opis środowiska programowania Tomasz Wiśniewski nr indeksu 59983, sem V, gr V
Opis programu komputerowego Twierdzenie Pitagorasa-dowód i z, wrzut na chomika listopad, Informatyka
Indywidualny program terapeutyczny dla uczniów upośledzonych, DOKUMENTY AUTYZM< REWALIDACJA, re
Jakich programów diagnostycznych używać, Diagnostyka dokumety
Program Wychowawczy, Dokumenty(1)
PROGRAM PROFILAKTYCZNY, zajęcia z dziećmi, Dokumenty(1)
Cenniki bud ~$wy Dokument programu Microsoft Office Word
Pytania na egzamin nowa podstawa programowa, sem I
Nowy Dokument programu Microsoft Office Word (2)
Nowy Dokument programu Microsoft Office Word (16)
Nowy Dokument programu Microsoft Office Word (3)
Nowy Dokument programu Microsoft Word (5)
Nowy Dokument programu Microsoft Office Word (19)

więcej podobnych podstron