Sunteți pe pagina 1din 7

Universitatea Tehnic Gheorghe Asachi Iai Facultatea de Construcii i Instalaii

TEMA NR. 3

Masterand: Lupu Razvan INGINERIA CLADIRILOR NR. ORD. 28

GRINDA SIMPLU REZEMAT

1.Enunul problemei S se calculeze lungimea grinzii,reaciunile i s se traseze diagramele de for tietoare i de moment pentru grinda simplu rezemat de mai jos:

Fig.1

2.Analiza problemei Date de intrare: a,b,c,d,e,f ,M1, q1, P1,q2, P2,mx; Date de ieire: L;VA;VB; diagrama de for tietoare i de moment Metoda de rezolvare: L=a+b+c+d+e+f
VA=(M1+P1*(b+c+d+e+f)+M2-q1*d/2*(f+e+d/3)+q2*e*(f+e/2))/L VB=(-M1+P1*a-M2-q1*d/2*(a+b+c+2*d/3)+q2*e*(a+b+c+d+e/2))/L

verif=VA+VB-P1+q1*d/2-q2*e unde: L-lungimea total a grinzii VA-reaciunea n reazemul A VB-reaciunea n reazemul B px(i)=(i-1)*L/(mx-1) py(i)- graficul pentru diagrama forei tietoare pz(i)-graficul pentru diagrama de moment i=1,mx i- pasul problemei 3.Programarea problemei Pentru rezolvarea problemei sa folosit limbajul de programare Fortran 90 n cadrul mediului de programare Microsoft Visual Studio 2008,iar afiarea graficului s-a fcut n Array Visualizer.
!Masterand Lupu Razvan program Tema3 ! Acest program traseaza graficele T si M pentru o grinda s.r. use iflogm implicit none include 'resource.fd' type(dialog) numint integer rez character*20 sir external cheama,grafice integer dater real a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif common a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif,dater dater=1 !date eronate

rez=dlginit(fereastra,numint) rez=dlgsetsub(numint,txta,cheama) rez=dlgsetsub(numint,txtb,cheama) rez=dlgsetsub(numint,txtc,cheama) rez=dlgsetsub(numint,txtd,cheama) rez=dlgsetsub(numint,txte,cheama) rez=dlgsetsub(numint,txtf,cheama) rez=dlgsetsub(numint,txtM1,cheama) rez=dlgsetsub(numint,txtM2,cheama) rez=dlgsetsub(numint,txtq1,cheama) rez=dlgsetsub(numint,txtq2,cheama) rez=dlgsetsub(numint,txtP1,cheama) rez=dlgsetsub(numint,tras,grafice) rez=dlgmodal(numint) print *, 'Sfarsitul programului' read * end program Tema3 subroutine cheama(numint,ctrl,ce) use iflogm implicit none include 'resource.fd' type(dialog) numint integer rez,ctrl,ce,er1,er2,er3,er4,er5,er6,er7,er8,er9,er10,er11 character*20 sir integer dater real a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif common a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif,dater rez=dlgget(numint,txta,sir) read(sir,1,iostat=er1) a 1 format(f15.0) rez=dlgget(numint,txtb,sir) read(sir,1,iostat=er2) b rez=dlgget(numint,txtc,sir) read(sir,1,iostat=er3) c rez=dlgget(numint,txtd,sir) read(sir,1,iostat=er4) d rez=dlgget(numint,txte,sir) read(sir,1,iostat=er5) e rez=dlgget(numint,txtf,sir) read(sir,1,iostat=er6) f rez=dlgget(numint,txtM1,sir) read(sir,1,iostat=er7) M1 rez=dlgget(numint,txtP1,sir) read(sir,1,iostat=er8)P1 rez=dlgget(numint,txtM2,sir) read(sir,1,iostat=er9) M2 rez=dlgget(numint,txtq1,sir) read(sir,1,iostat=er10) q1 rez=dlgget(numint,txtq2,sir) read(sir,1,iostat=er11) q2 if ((er1==0).and.(er2==0).and.(a>0.).and.(b>0.)& .and.(er3==0).and.(er4==0).and.(c>0.).and.(d>0.)& .and.(er5==0).and.(er6==0).and.(e>0.).and.(f>0.)& .and.(er7==0).and.(er8==0).and.(er9==0)& .and.(er10==0).and.(er11==0))then rez=dlgset(numint,txtmesaj,'date corecte') dater=0 !date corecte L=a+b+c+d+e+f VA=(M1+P1*(b+c+d+e+f)+M2-q1*d/2*(f+e+d/3)+q2*e*(f+e/2))/L VB=(-M1+P1*a-M2-q1*d/2*(a+b+c+2*d/3)+q2*e*(a+b+c+d+e/2))/L

verif=VA+VB-P1+q1*d/2-q2*e write(sir,2)L 2 format(f5.2) rez=dlgset(numint,txtL,sir) write(sir,3)VA 3 format(f8.3) rez=dlgset(numint,txtVA,sir) write(sir,3)VB rez=dlgset(numint,txtVB,sir) write(sir,3)verif rez=dlgset(numint,txtverif,sir) else rez=dlgset(numint,txtmesaj,'eroare') dater=1 !date incorecte rez=dlgset(numint,txtL,'') rez=dlgset(numint,txtVA,'') rez=dlgset(numint,txtVB,'') rez=dlgset(numint,txtverif,'') endif end subroutine cheama subroutine grafice() use iflogm use avfrt use avobjmod implicit none include 'resource.fd' type(dialog) numint integer rez integer dater real a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif common a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif,dater integer,parameter::mx=1001 real px(mx),py(mx),pz(mx) !px=x,py=forta taietoare,pz=moment incovoietor integer i,st,vid,hroot,hg if(dater==0)then write(*,*)'Se traseaza diagramele' do i=1,mx px(i)=(i-1)*L/(mx-1) if(px(i)<a)then py(i)=VA pz(i)=-(-M1+VA*px(i)) elseif(px(i)<(a+b))then py(i)=VA-P1 pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)) elseif(px(i)<(a+b+c))then py(i)=VA-P1 pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)-M2) elseif(px(i)<(a+b+c+d))then py(i)=VA-P1+q1*(px(i)-a-b-c)*(px(i)-a-b-c)/(2.0*d) pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)-M2+(q1*(px(i)-a-b-c)/d)*(px(i)-a-bc)/2.0*(px(i)-a-b-c)/3.0) elseif(px(i)<(a+b+c+d+e))then py(i)=VA-P1+(q1*d/2.0)-q2*(px(i)-a-b-c-d) pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)-M2+q1*d/2.0*(px(i)-a-b-c-2.0*d/3.0)q2*(px(i)-a-b-c-d)*(px(i)-a-b-c-d)/2.0) else

py(i)=VA-P1+q1*d/2.0-q2*e pz(i)=-VB*(L-px(i)) endif enddo call call call call AvCloseViewer(vid,st) AvEndWatch(loc(px),st) AvEndWatch(loc(py),st) AvEndWatch(loc(pz),st) AvStartWatch(loc(px),1,shape(px),AV_REAL4,'px',st) AvStartWatch(loc(py),1,shape(py),AV_REAL4,'py',st) AvStartWatch(loc(pz),1,shape(pz),AV_REAL4,'pz',st) AvNewViewer(vid)

call call call call

hroot=AvGetObject('/') call AvCreateGraph2Dobj(AvGraphs(hroot),& 'fT1|plot:xyplot,xsource:/px,ysource:/py',hg) call AvVisible(vid,1,st) call AvSaveImage('fT.jpg','graph:/fT1',1200,1600,72,st) call AvCreateGraph2Dobj(AvGraphs(hroot),& 'Mom1|plot:xyplot,xsource:/px,ysource:/pz',hg) call AvVisible(vid,1,st) call AvSaveImage('mom.jpg','graph:/Mom1',1200,1600,72,st) else write(*,*)'diagramele nu se pot trasa' endif end subroutine grafice

Se prezint n continuare o imagine a mediului Visual studio cu lucrul asupra programului:

Fig.2

Fig.3

4.Rezultate Exemplu de date: a=2m; b=2m; c=2m; d=4m; e=4m; f=4m M1=10kN*m P1=5Kn M2=20kN*m q1=5kN/m q2=10kN/m

Fig.4

Diagrama de for tietoare

Fig.5

Diagrama de moment

Fig.6

5.Concluzii i recomandri Afiarea diagramelor s-a fcut n Array Visualizer cu ajutorul programului Microsoft Visual Studio 2008. Pentru a nu da eroare se recomand ca valorile lui a,b,c,d,e,f s fie pozitive, iar valorile lui M1,q1,P1,q2,P2 s fie diferite de 0.

S-ar putea să vă placă și