subroutine plates(CHI,E,Q,S,ST,ND,NS) Cf77***************************************************************** C C Programmbeschreibung: C --------------------- C C Routine zum Aufbau der Elementsteifigkeitsmatrix und der C Kraft-Verschiebungsmatrix. C C C C Eingangsvariablen: C C Name | Beschreibung C --------------------------------------------------------------- C CHI | konstante Terme der Jacobi-Matrix C E | Elastizitätsmodul C Q | Querdehnzahl C T | Plattenhöhe C S | Elementsteifigkeitsmatrix (unbesetzt) C ST | Kraft-Verschiebungsmatrix (unbesetzt) C nd | Dimension der Steifigkeitsmatrix C ns | Dimension der Kraft Verschiebungsmatrix C C Ausgangsvariablen: C C Name | Beschreibung C --------------------------------------------------------------- C S | Elementsteifigkeitsmatrix C ST | Kraft-Verschiebungsmatrix C C C Interne Variablen: C C Name | C --------------------------------------------------------------- C gauss | Gausspunkt C nxhi | Lage der Knotenpunkte im Einheitselement in xhi-Richtung C neta | Lage der Knotenpunkte im Einheitselement in eta-Richtung C C1,C2,C3 | Elemente der Werkstoffmatrix C (Biegesteifigkeit) C G1 | Element der Werkstoffmatrix G (Schubsteifigkeit) C XHI | Lage der Gausspunkte in xhi-Richtung C ETA | Lage der Gausspunkte in eta-Richtung C DETJ | Determinate der Jacobi-Matrix C AXHI | Ableitung der Ansatzfunktionen im Einheitselement in xhi-Richtung C AETA | Ableitung der Ansatzfunktionen im Einheitselement in eta-Richtung C A | Formfunktion C AX | Ableitung nach den physikalischen Koordinaten in x-Richtung C AY | Ableitung nach den physikalischen Koordinaten in y-Richtung C BBCBB | ein Element der Steifigkeitsmatrix für den Biegeanteil C CBB | ein Element der Kraft-Verschiebungsmatrix für den Biegeanteil C SB | Elementsteifigkeitsmatrix für den Biegeanteil C SBT | Kraft-Verschiebungsmatrix für den Biegeanteil C SS | Elementsteifigkeitsmatrix für den Schubanteil C SST | Kraft-Verschiebungsmatrix für den Schubanteil C C Laufvariablen: i,j,k,w,l,u C C rufendes Programm: plate.f C C subroutine: C C common-blocks: C C Literatur: C C Erstellt von: Mark Fiolka C C Datum: 02.01.2002 C C Geändert: 17.01.2002 C C********************************************************************* ! INTEGER i,j,k,w,l,u,ND,NS REAL E,Q,T,C0,C1,C2,C3,G1,gauss,XHI,ETA REAL BBCBB,DETJ,AX,AY,CHI,CBB,SB,SBT,GBS,BSGBS, & AXHI,AETA,nxhi,neta,S,ST,SS,SST dimension nxhi(4),neta(4),A(4),AXHI(4),AETA(4),AX(4),AY(4), & CHI(10),S(12,12),BBCBB(12,12),ST(5,12),CBB(3,12), & SB(12,12),SBT(3,12),GBS(2,12),BSGBS(12,12), & SS(12,12),SST(2,12) WRITE(*,*) ' ---> SR PLATES' ! ! *** berechnen der Werte der C-Matrix Plattensteifigkeit ! T = 0.01 ! entspricht Plattendicke C0 = 1.0-Q*Q C1 = E*T**3.0/(C0*12.0) ! entspricht C(1,1) und C(2,2) C2 = C1*Q ! entspricht C(1,2) und C(2,1) C3 = C1*(1.0-Q)/2.0 ! entspricht C(3,3) ! ! *** berechnen der Werte der G-Matrix Scheibensteifigkeit G1 = E*T/(2.0*(1.0+Q)) ! entspricht G(1,1) und G(2,2) ! *** Werte der Matrizen S, SB, SBT gleich Null setzen do i=1,12 do j=1,12 SB(j,i)= 0.0 S(j,i) = 0.0 end do do j=1,3 SBT(j,i)= 0.0 end do end do ! write(*,*)'Steifigkeitsmatrix S' ! do 75 i=1,12 ! write(*,1000)i,(S(i,j),j=1,12) ! 75 continue ! ! write(*,*)'Matrix SBT' ! do 80 i=1,12 ! write(*,1000)i,(SBT(i,j),j=1,12) ! 80 continue ! *** berechnen der Matrizen SB und SBT für den Biegeanteil ! Integrationsschema für die Biegeanteile ! ! eta ! | ! | ! (-1,+1) | (+1,+1) ! o------------o ! |4 | 3| ! | x | x | ! | | | ! | ------|---- xhi ! | | ! | x x | ! |1 2| Knoten --> o ! o------------o Gausspunkt --> x ! (-1,-1) (+1,-1) ! ! Bild: Lage der Gauss-Punkte für die 2x2 Punktintegration ! gauss = sqrt(3.0) nxhi(1) = -1.0 nxhi(2) = 1.0 nxhi(3) = 1.0 nxhi(4) = -1.0 ! Lage der Knoten im Einheitselement neta(1) = -1.0 neta(2) = -1.0 neta(3) = 1.0 neta(4) = 1.0 do 500 i=1,4 ! Schleife über die Gausspunkte XHI = nxhi(i)/gauss ETA = neta(i)/gauss ! ! *** berechnen der Koeffizienten der Jacobi-Matrix und dessen Determinate ! CHI(7) = CHI(1) + ETA*CHI(5) ! a0+a1*eta=xs CHI(8) = CHI(2) + XHI*CHI(5) ! a2+a1*xhi=ys CHI(9) = CHI(3) + ETA*CHI(6) ! b2+b1*eta=xp CHI(10)= CHI(4) + XHI*CHI(6) ! b0+b1*xhi=yp DETJ = CHI(7)*CHI(10) - CHI(8)*CHI(9) c write(*,*)'DETJ',DETJ ! DETJ = xs*yp-ys*xp !Überprüft am 21.01.01 ! ! *** dn/dxhi (AXHI) bzw. dn/deta (AETA) bilden ! do j=1,4 AXHI(j) = nxhi(j)/4.0*(1.0+neta(j)*ETA) ! phis AETA(j) = neta(j)/4.0*(1.0+nxhi(j)*XHI) ! phip end do ! ! *** dn/dx (AX) bzw. dn/dy (AY) bilden ! ! h2= yp*phis-ys*phip ! h1=-xp*phis+xs*phip do j=1,4 AX(j) = CHI(10)*AXHI(j) - CHI(8)*AETA(j) AY(j) =-CHI( 9)*AXHI(j) + CHI(7)*AETA(j) end do ! ! *** berechnen der Matrix CBB = C*BB [CBB( , )] ! w = 0 do j=2,11,3 k = j+1 w = w +1 CBB(1,j) = -AY(w)*C2 CBB(2,j) = -AY(w)*C1 CBB(3,j) = -AX(w)*C3 CBB(1,k) = AX(w)*C1 CBB(2,k) = AX(w)*C2 CBB(3,k) = AY(w)*C3 end do ! write(*,*)'C1',C1,'C2',C2,'C3',C3 ! write(*,*)'AX1',AX(1),'AX2',AX(2),'AX3',AX(3),'AX4',AX(4) ! write(*,*)'AY1',AY(1),'AY2',AY(2),'AY3',AY(3),'AY4',AY(4) ! write(*,*)'CBB' ! do 210 k=1,3 ! write(*,1000)k,(CBB(k,j),j=1,12) ! 210 continue ! ! *** berechnen der Matrix BBCBB = BB'*CBB [BB'CBB( , )] ! do k=1,12 do l=1,12 BBCBB(k,l)=0.0 enddo enddo do k = 1,12 w = 0 do j = 2,11,3 l = j+1 w = w +1 BBCBB(j,k) = -AY(w)*CBB(2,k) - AX(w)*CBB(3,k) BBCBB(l,k) = AX(w)*CBB(1,k) + AY(w)*CBB(3,k) end do end do c write(*,*)'BBCBB' c do k=1,12 c write(*,1000)k,(BBCBB(k,j),j=1,12) c write(*,1000)k,(BBCBB(k,11)) c enddo ! ! *** addieren der einzelnen CBB und BBCBB-Matrizen ! ! Dreicksmatrix do j=1,12 do k=j,12 SB(j,k) = SB(j,k) + BBCBB(j,k)/DETJ end do ! Mittelwert aus 4 Punkten do k=1,3 SBT(k,j) = SBT(k,j) + CBB(k,j)/(4.0*DETJ) end do end do ! 500 continue ! write(*,*)'Matrix SBT' ! do 505 i=1,3 ! write(*,1000)i,(SBT(i,j),j=1,12) ! 505 continue c write(*,*)'Matrix SB' c do i=1,12 c write(*,1000)i,(SB(i,j),j=1,12) c enddo ! *** Berechnen der Matrizen SSt und SS für den Schubanteil ! Integrationsschema für die Schubanteile ! ! eta ! | ! | ! (-1,+1) | (+1,+1) ! o------------o ! |4 | 3| ! | | | ! | | | ! | x-----|---- xhi ! | | ! | | ! |1 2| Knoten --> o ! o------------o Gausspunkt --> x ! (-1,-1) (+1,-1) ! ! Bild: Lage der Gauss-Punkte für die 1 Punktintegration ! ! XHI = 0 ! Gausspunkt für die 1-Punktintegration ! ETA = 0 ! ! *** berechnen der Koeffizienten der Jacobi-Matrix und deren Determinate ! CHI(7) = CHI(1) + ETA*CHI(5) ! a0+a1*eta=xs CHI(8) = CHI(2) + XHI*CHI(5) ! a2+a1*xhi=ys CHI(9) = CHI(3) + ETA*CHI(6) ! b2+b1*eta=xp CHI(10)= CHI(4) + XHI*CHI(6) ! b0+b1*xhi=yp DETJ = CHI(7)*CHI(10) - CHI(8)*CHI(9) write(*,*)'DETJ',DETJ ! DETJ = xs*yp-ys*xp ! ! *** dn/dxhi (AXHI) bzw. dn/deta (AETA) bilden ! do j=1,4 A(j) = (1+nxhi(j)*XHI)*(1+neta(j)*ETA)/4. ! phi AXHI(j) = nxhi(j)/4.*(1+neta(j)*ETA) ! phis AETA(j) = neta(j)/4.*(1+nxhi(j)*XHI) ! phip end do ! ! *** dn/dx (AX) bzw. dn/dy (AY) bilden ! do j=1,4 AX(j) = CHI(10)*AXHI(j) - CHI(8)*AETA(j) ! h2= yp*phis-ys*phip AY(j) =-CHI( 9)*AXHI(j) + CHI(7)*AETA(j) ! h1=-xp*phis+xs*phip end do ! write(*,*)'A1',A(1),'A2',A(2),'A3',A(3),'A4',A(4) ! write(*,*)'AX1',AX(1),'AX2',AX(2),'AX3',AX(3),'AX4',AX(4) ! write(*,*)'AY1',AY(1),'AY2',AY(2),'AY3',AY(3),'AY4',AY(4) ! write(*,*)'G1',G1 ! ! *** berechnen der Matrix GBS = G*BS [GBS( , )] ! w = 0 do j=1,10,3 k = j+1 l = k+1 w = w +1 GBS(1,j) = AX(w)*G1/DETJ GBS(2,j) = AY(w)*G1/DETJ GBS(1,k) = 0 GBS(2,k) = -A(w)*G1 GBS(1,l) = A(w)*G1 GBS(2,l) = 0 end do ! write(*,*)'Matrix GBS' ! do 710 i=1,2 ! write(*,1000)i,(GBS(i,j),j=1,12) ! 710 continue ! ! *** berechnen der Matrix BSGBS = BS'*GBS [BS'GBS( , )] ! do k = 1,12 w = 0 do j = 1,10,3 l = j+1 u = l+1 w = w+1 BSGBS(j,k) = AX(w)*GBS(1,k)/DETJ + AY(w)*GBS(2,k)/DETJ BSGBS(l,k) = -A(w)*GBS(2,k) BSGBS(u,k) = A(w)*GBS(1,k) end do end do ! write(*,*)'Matrix BSGBS' ! do 810 i=1,12 ! write(*,1000)i,(BSGBS(i,j),j=1,12) ! 810 continue ! ! *** addieren der einzelnen GBS und BSGBS-Matrizen ! do j = 1,12 do k = j,12 SS(j,k) = BSGBS(j,k)*DETJ*4*5/6 ! 5/6 = Schubkorrektur end do ! Faktor 4 = Wichtung für numerische Integration do k = 1,2 SST(k,j) = GBS(k,j) end do end do ! write(*,*)'Matrix SS' ! do 910 i=1,12 ! write(*,1000)i,(SS(i,j),j=1,12) ! 910 continue ! write(*,*)'Matrix SST' ! do 920 i=1,2 ! write(*,1000)i,(SST(i,j),j=1,12) ! 920 continue ! ! *** Addieren der Matrizen: S = SB + SS do j = 1,12 do k=j,12 S(j,k) = SS(j,k) + SB(j,k) end do end do ! write(*,*)'Matrix S' ! do 930 i=1,12 ! write(*,1000)i,(S(i,j),j=1,12) ! 930 continue ! Zusammenfassen von SBT und SST zu ST ! write(*,*)'ST' ! do 940 i=1,5 ! write(*,1000)i,(ST(i,j),j=1,12) ! 940 continue do j = 1,12 ST(1,j) = SBT(1,j) ST(2,j) = SBT(2,j) ST(3,j) = SBT(3,j) ST(4,j) = SST(1,j) ST(5,j) = SST(2,j) end do ! write(*,*)'ST' ! do 957 i=1,5 ! write(*,1000)i,(ST(i,j),j=1,12) ! 957 continue ! *** "spiegeln" der Steifigkeitsmatrix S( , ) ! do j=1,12 do k=j,12 S(k,j) = S(j,k) end do end do ! write(*,*)'Matrix S gespiegelt' ! do 990 i=1,12 ! write(*,1000)i,(S(i,j),j=1,12) ! 990 continue ! *** Formatangaben 1000 Format(I2,12E9.3) end