programare avansata pe calculator in constructii

9
Universitatea Tehnică “Gheorghe Asachi” Iaşi Facultatea de Construcţii şi Instalaţii Masterand: Lupu Razvan INGINERIA CLADIRILOR TEMA NR. 3

Upload: lupu-razvan

Post on 31-Dec-2015

41 views

Category:

Documents


7 download

DESCRIPTION

Calculul unei grinzi simplu rezemate.

TRANSCRIPT

Page 1: Programare avansata pe calculator in constructii

Universitatea Tehnică “Gheorghe Asachi” Iaşi

Facultatea de Construcţii şi Instalaţii

Masterand: Lupu Razvan

INGINERIA CLADIRILOR

NR. ORD. 28

TEMA NR. 3

Page 2: Programare avansata pe calculator in constructii

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

Page 3: Programare avansata pe calculator in constructii

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

Page 4: Programare avansata pe calculator in constructii

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

Page 5: Programare avansata pe calculator in constructii

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

Page 6: Programare avansata pe calculator in constructii

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

Page 7: Programare avansata pe calculator in constructii

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