tema3
TRANSCRIPT
Trasarea diagramelor de for tietoare i de moment ncovoietor pentru o grind simplu rezemat
Enunul problemeiS se traseze diagrama de for tietoare i de moment ncovoietor pentru urmtoarea structur:
Analiza problemei Date de intrare:
- distanele dintre ncrcrile ce apar pe grind: a, b, c, d, e, f;
- ncrcrile ce apar pe grind: q1, q2, M1, M2, P1.
Date de ieire:
- lungimea total a grinzii: L;
- reaciunile: VA, VB;
- diagramele de fore tietoare i momente ncovoietoare.
Reaciuni:
- din suma de momente n punctul B:
- din suma de momente n punctul A:
Funcia for tietoare:
Funcia moment ncovoietor:
Programarea problemeiProgramul surs n limbaj Fortran 90 este urmtorul:!Masteran Ciobanu Andrei-Florin program temaiiiuse iflogmimplicit noneinclude 'resource.fd'type(dialog) numintinteger rezcharacter*20 sirexternal cheama,graficeinteger dateerreal a,b,c,d,e,f,L,q1,q2,p1,m1,m2,Va,Vb,Vcommon a,b,c,d,e,f,L,q1,q2,p1,m1,m2,Va,Vb,V,dateer
dateer=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,txtq1,cheama)rez=dlgsetsub(numint,txtq2,cheama)rez=dlgsetsub(numint,txtp1,cheama)rez=dlgsetsub(numint,txtm1,cheama)rez=dlgsetsub(numint,txtm2,cheama)rez=dlgsetsub(numint,tras,grafice)rez=dlgmodal(numint) print *, 'stop' read * end program temaiii
subroutine cheama(numint,ctrl,ce)use iflogmimplicit noneinclude 'resource.fd'type(dialog) numintinteger rez,ctrl,ce,er1,er2,er3,er4,er5,er6,er7,er8,er9,er10,er11integer dateercharacter*20 sirreal a,b,c,d,e,f,L,q1,q2,p1,m1,m2,Va,Vb,Vcommon a,b,c,d,e,f,L,q1,q2,p1,m1,m2,Va,Vb,V,dateer
rez=dlgget(numint,txta,sir)read(sir,1,iostat=er1) a1 format(f15.0)rez=dlgget(numint,txtb,sir)read(sir,1,iostat=er2) brez=dlgget(numint,txtc,sir)read(sir,1,iostat=er3) crez=dlgget(numint,txtd,sir)read(sir,1,iostat=er4) drez=dlgget(numint,txte,sir)read(sir,1,iostat=er5) erez=dlgget(numint,txtf,sir)read(sir,1,iostat=er6) frez=dlgget(numint,txtq1,sir)read(sir,1,iostat=er7) q1rez=dlgget(numint,txtq2,sir)read(sir,1,iostat=er8) q2rez=dlgget(numint,txtp1,sir)read(sir,1,iostat=er9) p1rez=dlgget(numint,txtm1,sir)read(sir,1,iostat=er10) m1rez=dlgget(numint,txtm2,sir)read(sir,1,iostat=er11) m2
if ((er1==0).and.(er2==0).and.(er3==0).and.&(er4==0).and.(er5==0).and.(er6==0).and.(er7==0).and.&(er8==0).and.(er9==0).and.(er10==0).and.(er11==0).and.&(a>0.).and.(b>0.).and.(c>0.).and.(d>0.).and.&(e>0.).and.(f>0.)) then rez=dlgset(numint,txtmesaj,'date corecte') dateer=0 ! date corecte L=a+b+c+d+e+f write (sir,2) L 2 format(f6.2) rez=dlgset(numint,txtl,sir) Va=(m1-p1*(b+c+d+e+f)+q1*b*(b/2.+c+d+e+f)+m2-(q2*e)/2.*(1./3.*e+f))/L write (sir,3)Va 3 format(f8.3) rez=dlgset(numint,txtva,sir) Vb=(-(q2*e)/2.*(2./3.*e+d+c+b+a)-m2+q1*b*(b/2.+a)-p1*a-m1)/L write (sir,3)Vb rez=dlgset(numint,txtVb,sir) V=Va+Vb-q1*b+p1+(q2*e)/2. write (sir,3)V rez=dlgset(numint,txtv,sir) else rez=dlgset(numint,txtmesaj,'eroare') rez=dlgset(numint,txtl,'') rez=dlgset(numint,txtva,'') rez=dlgset(numint,txtvb,'') rez=dlgset(numint,txtv,'')endifend subroutine cheama
subroutine grafice()use iflogmuse avfrtuse avobjmodimplicit noneinclude 'resource.fd'type(dialog) numintinteger dateer, rezreal a,b,c,d,e,f,L,q1,q2,p1,m1,m2,Va,Vb,Vcommon a,b,c,d,e,f,L,q1,q2,p1,m1,m2,Va,Vb,V,dateerinteger i,st,vid,hroot,hginteger , parameter:: mx=1001real px(mx), py(mx),pz(mx)
if (dateer==0) then write(*,*)'se traseaza diagramele' !rez=dlgset(numint,txtmesaj,'se traseaza diagramele') do i=1,mx px(i)=(i-1)*L/(mx-1) if (px(i)