Sunteți pe pagina 1din 8

Universitatea TehnicGheorghe Asachidin Iai Facultatea de Construcii i Instalaii

LUCRAREA NR.3
Calculul grinzii simplu rezemate

1.Enunul problemei S se traseze diagramele de moment ncovoietor i for tietoare pentru grinda simplu rezemat din figur.

2.Analiza problemei a) Date de intrare: a,b,c,d,e,f,q1,q2,P1,P2, M1 b) Date de ieire: VA,VB ( reaciunile din reazeme) Trasarea diagramelor de eforturi Calculul reaciunilor VA=(q1/2.0*c*(2.0/3.0*c+d+e+f)+M1-M2-P1*(c+d+e+f)-q2*d*(d/2.0+e+f))/L VB=(1.0/2.0*q1*c*(a+b+1.0/3.0*c)-M1+M2-P1*(a+b)-q2*d*(d/2.0+a+b+c))/L Verificare VA+VB+P1-1.0/2.0*q1*c+q2*d= 0 Calculul eforturilor n fiecare seciune px(i)<a py(i)=VA pz(i)=VA*px(i) px(i)<(a+b) py(i)=VA pz(i)=VA*px(i)-M1 px(i)<(a+b+c) py(i)=VA+P1-q1*(px(i)-a-b)+1.0/2.0*q1/c*(px(i)-a-b)**2 pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1/2.0*(px(i)-a-b)**2+1.0/6.0*q1/c*(px(i)-ab)**3 px(i)<(a+b+c+d) py(i)=VA+P1-q1*c/2.0+q2*(px(i)-a-b-c) pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1*c/2.0*(px(i)-a-b-1.0/3.0*c)+q2/2.0*(px(i)-a-bc)**2 px(i)<(a+b+c+d+e)

py(i)=VA+P1-q1*c/2.0+q2*d pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1*c/2.0*(px(i)-a-b-1.0/3.0*c)+q2*d*(px(i)-a-bc-d/2.0) px(i)<(a+b+c+d+e+f) py(i)=VA+P1-q1*c/2.0+q2*d pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1*c/2.0*(px(i)-a-b-1.0/3.0*c)+q2*d*(px(i)-a-bc-d/2.0)+M2

3. Programarea problemei Pentru rezolvarea problemei s-a folosit limbajul Fortran 90 sub implementarea Intel versiunea de compilator 11.0.061 iar lucrul cu formatul surs, compilarea, linkeditarea i depanarea programului s-au efectuat n mediul Microsoft Visual Studio versiunea 8. Programul surs n limbaj Fortran 90 program grindaSD ! trasare T,M la o grinda simplu rezemata ! varianta 1, dialog minimal use iflogm implicit none include 'resource.fd' type(dialog) numint logical rez character*20 text real a,b,c,d,e,f,q1,q2,P1,P2,M1,M2,VA,VB,L,verif integer bapel,ce,eroare external calb,trasare common a,b,c,d,e,f,q1,q2,P1,P2,M1,M2,VA,VB,L,verif,eroare rez=dlginit(fereastra,numint) rez=dlgsetsub(numint,txta,calb) rez=dlgsetsub(numint,txtb,calb) rez=dlgsetsub(numint,txtc,calb) rez=dlgsetsub(numint,txtd,calb) rez=dlgsetsub(numint,txte,calb) rez=dlgsetsub(numint,txtf,calb) rez=dlgsetsub(numint,txtq1,calb) rez=dlgsetsub(numint,txtq2,calb) rez=dlgsetsub(numint,txtP1,calb) rez=dlgsetsub(numint,txtP2,calb) rez=dlgsetsub(numint,txtM1,calb) rez=dlgsetsub(numint,txtM2,calb) rez=dlgsetsub(numint,btras,trasare) rez=dlgmodal(numint) print *, 'Sfarsitul programului' read *

end program grindaSD subroutine calb(numint,bapel,ce) use iflogm implicit none include 'resource.fd' type(dialog) numint integer rez,st1,st2,st3,st4,st5,st6,st7,st8,st9,st10,st11,st12,eroare character*20 text real a,b,c,d,e,f,P1,P2,q1,q2,M1,M2,VA,VB,L,verif integer bapel,ce common a,b,c,d,e,f,P1,P2,q1,q2,M1,M2,VA,VB,L,eroare rez=dlgget(numint,txta,text) read(text,1,iostat=st1) a 1 format(f15.0) rez=dlgget(numint,txtb,text) read(text,1,iostat=st2) b rez=dlgget(numint,txtc,text) read(text,1,iostat=st3) c rez=dlgget(numint,txtd,text) read(text,1,iostat=st4) d rez=dlgget(numint,txte,text) read(text,1,iostat=st5) e rez=dlgget(numint,txtf,text) read(text,1,iostat=st6) f rez=dlgget(numint,txtP1,text) read(text,1,iostat=st7) P1 rez=dlgget(numint,txtP2,text) read(text,1,iostat=st8) P2 rez=dlgget(numint,txtq1,text) read(text,1,iostat=st9) q1 rez=dlgget(numint,txtq2,text) read(text,1,iostat=st10) q2 rez=dlgget(numint,txtM1,text) read(text,1,iostat=st11) M1 rez=dlgget(numint,txtM2,text) read(text,1,iostat=st12) M2 if ((st1==0).and.(a>0.).and.(st2==0).and.(b>0.).and.(st3==0).and.(c>0.).and.(st4==0).and.(d>0.) .and.(st5==0).and.(e>0.).and.(st6==0).and.(f>0.) .and. & (st7==0).and.(st8==0).and.(st9==0).and.(st10==0).and.(st11==0).and.(st12==0))then rez=dlgset(numint,txtmesaj,'date corecte') eroare=0 L=a+b+c+d+e+f write(text,2)L 2 format(f7.2) rez=dlgset(numint,txtL,text) VA=(q1/2.0*c*(2.0/3.0*c+d+e+f)+M1-M2-P1*(c+d+e+f)-q2*d*(d/2.0+e+f))/L

write(text,2)VA rez=dlgset(numint,txtVA,text) VB=(1.0/2.0*q1*c*(a+b+1.0/3.0*c)-M1+M2-P1*(a+b)-q2*d*(d/2.0+a+b+c))/L write(text,2)VB rez=dlgset(numint,txtVB,text) verif=VA+VB+P1-1.0/2.0*q1*c+q2*d write(text,2) verif rez=dlgset(numint,txtverif,text) else rez=dlgset(numint,txtmesaj,'Eroare la citire date') eroare=1 rez=dlgset(numint,txtL,'') rez=dlgset(numint,txtVA,'') rez=dlgset(numint,txtVB,'') rez=dlgset(numint,txtverif,'') endif end subroutine calb subroutine trasare() use AvFRT use AvObjMod use iflogm implicit none include 'resource.fd' type(dialog) numint integer rez,eroare character*20 text real a,b,c,d,e,f,P1,P2,q1,q2,M1,M2,VA,VB,L,verif integer bapel,ce common a,b,c,d,e,f,P1,P2,q1,q2,M1,M2,VA,VB,L,eroare integer,parameter::imax=30001 real px(imax),py(imax),pL,pz(imax) integer i,stare,vid,hroot,hg rez=dlgget(numint,txtmesaj,text) if(eroare==0)then write(*,*)('Trasare posibila') pL=L/(imax-1) do i=1,imax px(i)=(i-1)*pL if(px(i)<a)then py(i)=VA pz(i)=VA*px(i) elseif(px(i)<(a+b))then py(i)=VA pz(i)=VA*px(i)-M1 elseif (px(i)<(a+b+c)) then py(i)=VA+P1-q1*(px(i)-a-b)+1.0/2.0*q1/c*(px(i)-a-b)**2

pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1/2.0*(px(i)-a-b)**2+1.0/6.0*q1/c*(px(i)-a-b)**3 elseif (px(i)<(a+b+c+d))then py(i)=VA+P1-q1*c/2.0+q2*(px(i)-a-b-c) pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1*c/2.0*(px(i)-a-b-1.0/3.0*c)+q2/2.0*(px(i)-a-bc)**2 elseif (px(i)<(a+b+c+d+e))then py(i)=VA+P1-q1*c/2.0+q2*d pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1*c/2.0*(px(i)-a-b-1.0/3.0*c)+q2*d*(px(i)-a-b-cd/2.0) elseif (px(i)<(a+b+c+d+e+f))then py(i)=VA+P1-q1*c/2.0+q2*d pz(i)=VA*px(i)-M1+P1*(px(i)-a-b)-q1*c/2.0*(px(i)-a-b-1.0/3.0*c)+q2*d*(px(i)-a-b-cd/2.0)+M2 endif pz(i)=-pz(i) enddo call AvStartWatch(loc(px),1,shape(px),AV_REAL4,'px',stare) call AvStartWatch(loc(py),1,shape(py),AV_REAL4,'py',stare) call AvStartWatch(loc(pz),1,shape(pz),AV_REAL4,'pz',stare) call AvNewViewer(vid) hroot=AvGetObject('/') call AvCreateGraph2DObj(AvGraphs(hroot),'FTaiet|plot:xyplot,xsource:/px,ysource:/py',hg) call AvCreateGraph2DObj(AvGraphs(hroot),'MIncov|plot:xyplot,xsource:/px,ysource:/pz',hg) call AvVisible(vid,1,stare) call AvSaveImage('grafic1.jpg','graph:/FTaiet',1200,1600,72,stare) call AvSaveImage('grafic2.jpg','graph:/MIcov',1200,1600,72,stare) else write(*,*)('Trasare imposibila') endif endsubroutine trasare 4. Rezultate

Figura 1

Figura 2

Figura 4: Diagrama de for tietoare

Figura 5: Diagrama de moment ncovoietor

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