Download - Problema Fortran
![Page 1: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/1.jpg)
Universitatea Tehnică”Gheorghe Asachi”din Iaşi
Facultatea de Construcţii şi Instalaţii
LUCRAREA NR.3 Calculul grinzii simplu rezemate
![Page 2: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/2.jpg)
1.Enunţul problemei
Să se traseze diagramele de moment încovoietor şi forţă tăietoare 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 ieşire: VA,VB ( reacţiunile din reazeme)
Trasarea diagramelor de eforturi
Calculul reacțiunilor
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 secțiune
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)-a-
b)**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-b-
c)**2
px(i)<(a+b+c+d+e)
![Page 3: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/3.jpg)
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-
c-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-b-
c-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 *
![Page 4: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/4.jpg)
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
![Page 5: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/5.jpg)
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
![Page 6: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/6.jpg)
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-b-
c)**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-c-
d/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-c-
d/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
![Page 7: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/7.jpg)
Figura 1
Figura 2
Figura 4: Diagrama de forţă tăietoare
![Page 8: Problema Fortran](https://reader035.vdocumente.com/reader035/viewer/2022071703/55cf993b550346d0339c501b/html5/thumbnails/8.jpg)
Figura 5: Diagrama de moment încovoietor