documenttt
DESCRIPTION
tttTRANSCRIPT
Universitatea Tehnică “Gh. Asachi” din IaşiFacultatea de Construcţii şi Instalaţii
Master: Inginerie Structurală
Lucrarea nr.3
Masterand: ing. Zub Ciprian-Ionuţ
-2013-
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
1. Să se traseze diagramele de moment încovoietor şi forţă tăietoare pentru grinda încărcată ca în figură, folosind limbajul Fortran şi procesorul de grafică Intel Visualizer.
Programarea problemei:
program Diagramedeeforturigrindasr
use iflogm implicit none include 'resource.fd' type(dialog) numint
logical rez character*40 text common a,b,c,d,e,f,q1,q2,M1,M2,P1,VA,VB,L,eroare real*8 a,b,c,d,e,f,q1,q2,M1,M2,P1,VA,VB,L,eroare external calb,trasare
eroare=1 rez=dlginit(Fereastra5,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,txtM1,calb) rez=dlgsetsub(numint,txtM2,calb) rez=dlgsetsub(numint,btras,trasare) rez=dlgmodal(numint)
end program Diagramedeeforturigrindasr
2
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
subroutine calb(numint,bapel,ce) use iflogm implicit none include 'resource.fd' type(dialog) numint logical rez,st1,st2,st3,st4,st5,st6,st7,st8,st9,st10,st11,eroare character*40 text real*8 a,b,c,d,e,f,q1,q2,P1,M1,M2,VA,VB,L,verif integer bapel,ce common a,b,c,d,e,f,q1,q2,P1,M1,M2,VA,VB,L,eroare
rez=dlgget(numint,txta,text) read(text,1,iostat=st1) a 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,txtq1,text) read(text,1,iostat=st7) q1 rez=dlgget(numint,txtq2,text) read(text,1,iostat=st8) q2 rez=dlgget(numint,txtP1,text) read(text,1,iostat=st9) P1 rez=dlgget(numint,txtM1,text) read(text,1,iostat=st10) M1 rez=dlgget(numint,txtM2,text) read(text,1,iostat=st11) M2
1 format(f15.0)
if((st1==.false.).and.(a>0).and.(st2==.false.).and.(b>0).and.(st3==.false.).and.(c>0).and.(st4==.false.).and.(d>0).and.(st5==.false.).and.(e>0).and.(st6==.false.).and.(f>0).and.(st7==.false.).and.(st8==.false.).and.(st9==.false.).and.(st10==.false.).and.(st11==.false.)) then
rez=dlgset(numint,txtmesaj,'Date corecte')
eroare=0
L=a+b+c+d+e+f write(text,2)L 2 format(f5.2) rez=dlgset(numint,txtL,text) VB=(-q1*b*(0.5d0*b+a)+0.5d0*q2*d*(2./3.*d+a+b+c)-P1*(a+b+c+d+e)-M2+M1)/L write(text,2)VB rez=dlgset(numint,txtVB,text) VA=(0.5d0*q2*d*(1.d0/3.d0*d+e+f)-q1*b*(0.5d0*b+c+d+e+f)-M1+M2-P1*f)/L write(text,2)VA rez=dlgset(numint,txtVA,text)
3
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
verif=-VA-VB-q1*b+0.5d0*q2*d-P1 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 logical rez character*40 text real*8 a,b,c,d,e,f,q1,q2,P1,M1,M2,VA,VB,L,verif integer bapel,ce,eroare common a,b,c,d,e,f,q1,q2,P1,M1,M2,VA,VB,L,eroare
integer,parameter::im=1001 real px(im),py(im),pz(im),pl integer i,st,vid,hroot,hg
if(eroare==0)then
pl=L/(im-1) do i=1,im px(i)=(i-1)*pl if(px(i)<a)then py(i)=-VA pz(i)=-M1-VA*(px(i)) elseif(px(i)<(a+b))then py(i)=-VA-q1*(px(i)-a) pz(i)=-M1-VA*px(i)-(q1*(px(i)-a)**2/2.d0) elseif(px(i)<(a+b+c))then py(i)=-VA-q1*b pz(i)=-M1-VA*px(i)-q1*b*(px(i)-a-b/2.d0)
4
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
elseif(px(i)<(a+b+c+d))then py(i)=-VA-q1*b+0.5*(px(i)-a-b-c)*(q2*(px(i)-a-b-c)/d) pz(i)=-M1-VA*px(i)-q1*b*(px(i)-a-b/2.d0)+0.5d0*((q2*(px(i)-a-b-c))/d)*(1.d0/3.d0)*(px(i)-a-b-c)**2.d0 elseif(px(i)<(a+b+c+d+e))then py(i)=-VA-q1*b+0.5*q2*d pz(i)=-M1-VA*px(i)-q1*b*(px(i)-a-b/2.d0)+0.5d0*d*q2*(px(i)-a-b-c-2.d0/3.d0*d) else py(i)=-VA-q1*b+0.5*q2*d-P1 pz(i)=-M1-VA*px(i)-q1*b*(px(i)-a-b/2.d0)+0.5d0*d*q2*(px(i)-a-b-c-2.d0/3.d0*d)-P1*(px(i)-a-b-c-d-e) endif pz(i)=-pz(i) enddo
call AvStartWatch(loc(px),1,shape(px),AV_REAL4,'px',st) call AvStartWatch(loc(py),1,shape(py),AV_REAL4,'py',st) call AvStartWatch(loc(pz),1,shape(pz),AV_REAL4,'pz',st) call AvNewViewer(vid) hroot=AvGetObject('/') call AvCreateGraph2DObj(AvGraphs(hroot),'V|plot:xyplot,xsource:/px,ysource:/py',hg) call AvCreateGraph2DObj(AvGraphs(hroot),'M|plot:xyplot,xsource:/px,ysource:/pz',hg) call AvVisible(vid,1,st) call AvSaveImage('ft.jpg','graph:/V',1200,1600,72,st) call AvSaveImage('mi.jpg','graph:/M',1200,1600,72,st) endif
end subroutine trasare
5
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
Rezultate:
Cazul1:
6
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
Cazul 2:
7
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
Cazul 3:
8
Programare Avansată pentru Proiectare şi Cercetare în Construcţii Lucrarea nr.3
Diagramele de eforturi:
Diagrama de forţă tăietoare:
Diagrama de moment încovoietor:
9