Documente Academic
Documente Profesional
Documente Cultură
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 GrindaI
!Masterand Chira Ilie Iulian
! trasare V,M la o grinda simplu rezemata
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,VA,VB,L,verif
integer bapel,ce,eroare
external calb,trasare
common a,b,c,d,e,f,q1,q2,P1,P2,M1,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,btras,trasare)
rez=dlgmodal(numint)
print *, 'Sfarsitul programului'
read *
end program GrindaI
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,eroare
character*20 text
real a,b,c,d,e,f,P1,P2,q1,q2,M1,VA,VB,L,verif
integer bapel,ce
common a,b,c,d,e,f,P1,P2,q1,q2,M1,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
if
((st1==0).and.(a>0.).and.(st2==0).and.(b>0.).and.(st3==0).and.(c>0.).and.(s
t4==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))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=(-P1*(b+c+d+e+f)-M1-P2*(d+e+f)-1.0/2.0*q1*e*(e/3.0+f)+q2*f**2/2.0)/L
write(text,2)VA
rez=dlgset(numint,txtVA,text)
VB=(-P1*a+M1-P2*(a+b+c)-
1.0/2.0*q1*e*(2.0/3.0*e+a+b+c+d)+q2*f*(a+b+c+d+e+f/2.0))/L
write(text,2)VB
rez=dlgset(numint,txtVB,text)
verif=VA+VB+P1+P2+q1/2.0*e-q2*f
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,VA,VB,L,verif
integer bapel,ce
common a,b,c,d,e,f,P1,P2,q1,q2,M1,VA,VB,L,eroare
integer,parameter::imax=1001
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+P1
pz(i)=VA*px(i)+P1*(px(i)-a)
elseif (px(i)<(a+b+c)) then
py(i)=VA+P1
pz(i)=VA*px(i)+P1*(px(i)-a)+M1
elseif (px(i)<(a+b+c+d))then
py(i)=VA+P1+P2
pz(i)=VA*px(i)+P1*(px(i)-a)+M1+P2*(px(i)-a-b-c)
elseif (px(i)<(a+b+c+d+e))then
py(i)=VA+P1+P2+1.0/2.0*(q1*(px(i)-a-b-c-d))/e*(px(i)-a-b-c-d)
pz(i)=VA*px(i)+P1*(px(i)-a)+M1+P2*(px(i)-a-b-c)+1.0/2.0*(q1*(px(i)-a-b-
c-d))/e*(px(i)-a-b-c-d)*1.0/3.0*(px(i)-a-b-c-d)
elseif (px(i)<(a+b+c+d+e+f))then
py(i)=VA+P1+P2+1.0/2.0*q1*e-q2*(px(i)-a-b-c-d-e)
pz(i)=VA*px(i)+P1*(px(i)-a)+M1+P2*(px(i)-a-b-
c)+1.0/2.0*q1*e*(e/3.0+px(i)-a-b-c-d-e)-q2*(px(i)-a-b-c-d-e)**2/2
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
Programul a fost rulat pentru mai multe serii de valori, unele intenionat eronate astfel
nct s fie verificat validitatea rezolvrii.
Cazul I:
Figura 1
Figura 2
Cazul II:
Figura 3
Figura 4: Diagrama de for tietoare
Figura 5: Diagrama de moment ncovoietor
5. Concluzii
Prin utilizarea seturilor de valori s-au pus n vedere eventualele posibiliti,
evidenierea acestora sugernd corectitudinea problemei. Se observ c n cazul introducerii
unor valori eronate programul afiseaza acest lucru fr a trasa diagramele corespunztoare.