programare avansata pe calculator in constructii

Post on 31-Dec-2015

41 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

Calculul unei grinzi simplu rezemate.

TRANSCRIPT

Universitatea Tehnică “Gheorghe Asachi” Iaşi

Facultatea de Construcţii şi Instalaţii

Masterand: Lupu Razvan

INGINERIA CLADIRILOR

NR. ORD. 28

TEMA NR. 3

GRINDA SIMPLU REZEMATĂ

1.Enunţul problemei

Să se calculeze lungimea grinzii,reacţiunile şi să se traseze diagramele de forţă tăietoare şi de moment pentru grinda simplu rezemată de mai jos:

Fig.1 2.Analiza problemei

Date de intrare: a,b,c,d,e,f ,M1, q1, P1,q2, P2,mx;

Date de ieşire: L;VA;VB; diagrama de forţă tăietoare şi de moment

Metoda de rezolvare: L=a+b+c+d+e+fVA=(M1+P1*(b+c+d+e+f)+M2-q1*d/2*(f+e+d/3)+q2*e*(f+e/2))/LVB=(-M1+P1*a-M2-q1*d/2*(a+b+c+2*d/3)+q2*e*(a+b+c+d+e/2))/L

verif=VA+VB-P1+q1*d/2-q2*e

unde:

L-lungimea totală a grinzii

VA-reacţiunea în reazemul A

VB-reacţiunea în reazemul B

px(i)=(i-1)*L/(mx-1)

py(i)- graficul pentru diagrama forţei tăietoare

pz(i)-graficul pentru diagrama de moment

i=1,mx

i- pasul problemei

3.Programarea problemei

Pentru rezolvarea problemei s–a folosit limbajul de programare Fortran 90 în cadrul mediului de programare Microsoft Visual Studio 2008,iar afişarea graficului s-a făcut în Array Visualizer. !Masterand Lupu Razvanprogram Tema3! Acest program traseaza graficele T si M pentru o grinda s.r.use iflogmimplicit noneinclude 'resource.fd'type(dialog) numintinteger rezcharacter*20 sirexternal cheama,graficeinteger daterreal a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verifcommon a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif,dater

dater=1 !date eronate

1

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,txtM1,cheama)rez=dlgsetsub(numint,txtM2,cheama)rez=dlgsetsub(numint,txtq1,cheama)rez=dlgsetsub(numint,txtq2,cheama)rez=dlgsetsub(numint,txtP1,cheama)rez=dlgsetsub(numint,tras,grafice)rez=dlgmodal(numint)

print *, 'Sfarsitul programului' read * end program Tema3

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,er11character*20 sirinteger daterreal a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verifcommon a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif,dater

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,txtM1,sir)read(sir,1,iostat=er7) M1rez=dlgget(numint,txtP1,sir)read(sir,1,iostat=er8)P1rez=dlgget(numint,txtM2,sir)read(sir,1,iostat=er9) M2rez=dlgget(numint,txtq1,sir)read(sir,1,iostat=er10) q1rez=dlgget(numint,txtq2,sir)read(sir,1,iostat=er11) q2if ((er1==0).and.(er2==0).and.(a>0.).and.(b>0.)& .and.(er3==0).and.(er4==0).and.(c>0.).and.(d>0.)& .and.(er5==0).and.(er6==0).and.(e>0.).and.(f>0.)& .and.(er7==0).and.(er8==0).and.(er9==0)& .and.(er10==0).and.(er11==0))then rez=dlgset(numint,txtmesaj,'date corecte') dater=0 !date corecte L=a+b+c+d+e+f VA=(M1+P1*(b+c+d+e+f)+M2-q1*d/2*(f+e+d/3)+q2*e*(f+e/2))/L VB=(-M1+P1*a-M2-q1*d/2*(a+b+c+2*d/3)+q2*e*(a+b+c+d+e/2))/L

2

verif=VA+VB-P1+q1*d/2-q2*e write(sir,2)L 2 format(f5.2) rez=dlgset(numint,txtL,sir) write(sir,3)VA 3 format(f8.3) rez=dlgset(numint,txtVA,sir) write(sir,3)VB rez=dlgset(numint,txtVB,sir) write(sir,3)verif rez=dlgset(numint,txtverif,sir) else rez=dlgset(numint,txtmesaj,'eroare') dater=1 !date incorecte rez=dlgset(numint,txtL,'') rez=dlgset(numint,txtVA,'') rez=dlgset(numint,txtVB,'') rez=dlgset(numint,txtverif,'')endif

end subroutine cheama

subroutine grafice()use iflogmuse avfrtuse avobjmodimplicit noneinclude 'resource.fd'type(dialog) numint

integer rezinteger daterreal a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verifcommon a,b,c,d,e,f,q1,q2,P1,M1,M2,L,VA,VB,verif,dater integer,parameter::mx=1001 real px(mx),py(mx),pz(mx) !px=x,py=forta taietoare,pz=moment incovoietor integer i,st,vid,hroot,hg if(dater==0)then write(*,*)'Se traseaza diagramele' do i=1,mx px(i)=(i-1)*L/(mx-1) if(px(i)<a)then py(i)=VA pz(i)=-(-M1+VA*px(i)) elseif(px(i)<(a+b))then py(i)=VA-P1 pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)) elseif(px(i)<(a+b+c))then py(i)=VA-P1 pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)-M2) elseif(px(i)<(a+b+c+d))then py(i)=VA-P1+q1*(px(i)-a-b-c)*(px(i)-a-b-c)/(2.0*d) pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)-M2+(q1*(px(i)-a-b-c)/d)*(px(i)-a-b-c)/2.0*(px(i)-a-b-c)/3.0) elseif(px(i)<(a+b+c+d+e))then py(i)=VA-P1+(q1*d/2.0)-q2*(px(i)-a-b-c-d) pz(i)=-(-M1+VA*px(i)-P1*(px(i)-a)-M2+q1*d/2.0*(px(i)-a-b-c-2.0*d/3.0)-q2*(px(i)-a-b-c-d)*(px(i)-a-b-c-d)/2.0) else

3

py(i)=VA-P1+q1*d/2.0-q2*e pz(i)=-VB*(L-px(i)) endif enddo call AvCloseViewer(vid,st) call AvEndWatch(loc(px),st) call AvEndWatch(loc(py),st) call AvEndWatch(loc(pz),st) 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),& 'fT1|plot:xyplot,xsource:/px,ysource:/py',hg) call AvVisible(vid,1,st) call AvSaveImage('fT.jpg','graph:/fT1',1200,1600,72,st) call AvCreateGraph2Dobj(AvGraphs(hroot),& 'Mom1|plot:xyplot,xsource:/px,ysource:/pz',hg) call AvVisible(vid,1,st) call AvSaveImage('mom.jpg','graph:/Mom1',1200,1600,72,st) else write(*,*)'diagramele nu se pot trasa' endif end subroutine grafice

Se prezintă în continuare o imagine a mediului Visual studio cu lucrul asupra programului:

Fig.2

4

Fig.3

4.Rezultate

Exemplu de date:

a=2m; b=2m; c=2m; d=4m; e=4m; f=4m

M1=10kN*m

P1=5Kn

M2=20kN*m

q1=5kN/m

q2=10kN/m

Fig.4

5

Diagrama de forţă tăietoare

Fig.5 Diagrama de moment

Fig.6

5.Concluzii şi recomandări

Afişarea diagramelor s-a făcut în Array Visualizer cu ajutorul programului Microsoft Visual Studio 2008.

Pentru a nu da eroare se recomandă ca valorile lui a,b,c,d,e,f să fie pozitive, iar valorile lui M1,q1,P1,q2,P2 să fie diferite de 0.

6

top related