3359 lines
22 KiB
Markdown
3359 lines
22 KiB
Markdown
<!-- source-page: 1021 -->
|
||
|
||
```csv
|
||
C . STA00627
|
||
C . - - INPUT VARIABLES - -
|
||
C . A(NWK) = STIFFNESS MATRIX STORED IN COMPACTED FORM STA00628
|
||
C . V(NN) = RIGHT-HAND-SIDE LOAD VECTOR STA00629
|
||
C . MAXA(NNM) = VECTOR CONTAINING ADDRESSES OF DIAGONAL STA00630
|
||
C . ELEMENTS OF STIFFNESS MATRIX IN A STA00631
|
||
C . NN = NUMBER OF EQUATIONS STA00632
|
||
C . NWK = NUMBER OF ELEMENTS BELOW SKYLINE OF MATRIX STA00633
|
||
C . NNM = NN + 1 STA00634
|
||
C . KKK = INPUT FLAG STA00635
|
||
C . EQ. 1 TRIANGULARIZATION OF STIFFNESS MATRIX STA00636
|
||
C . EQ. 2 REDUCTION AND BACK-SUBSTITUTION OF LOAD VECTOR STA00637
|
||
C . IOUT = UNIT USED FOR OUTPUT STA00638
|
||
C . STA00639
|
||
C . STA00640
|
||
C . - - OUTPUT - -
|
||
C . A(NWK) = D AND L - FACTORS OF STIFFNESS MATRIX STA00641
|
||
C . V(NN) = DISPLACEMENT VECTOR STA00642
|
||
C . STA00643
|
||
C . STA00644
|
||
C . STA00645
|
||
C . IMPLICIT DOUBLE PRECISION (A-H,O-Z) STA00646
|
||
C . COMMON /TAPES/ IELMNT,ILOAD,IIN,IOUT STA00647
|
||
C . DIMENSION A(NWK),V(1),MAXA(1) STA00648
|
||
C . STA00649
|
||
C . PERFORM L*D*L(T) FACTORIZATION OF STIFFNESS MATRIX STA00650
|
||
C . STA00651
|
||
C . IF (KKK-2) 40,150,150 STA00652
|
||
40 DO 140 N=1,NN STA00653
|
||
KN=MAXA(N) STA00654
|
||
KL=KN + 1 STA00655
|
||
KU=MAXA(N+1) - 1 STA00656
|
||
KH=KU - KL STA00657
|
||
IF (KH) 110,90,50 STA00658
|
||
50 K=N - KH STA00659
|
||
IC=0 STA00660
|
||
KLT=KU STA00661
|
||
DO 80 J=1,KH STA00662
|
||
IC=IC + 1 STA00663
|
||
KLT=KLT - 1 STA00664
|
||
KI=MAXA(K) STA00665
|
||
ND=MAXA(K+1) - KI - 1 STA00666
|
||
IF (ND) 80,80,60 STA00667
|
||
60 KK=MIN0(IC,ND) STA00668
|
||
C=0. STA00669
|
||
DO 70 L=1,KK STA00670
|
||
70 C=C + A(KI+L)*A(KLT+L) STA00671
|
||
A(KLT)=A(KLT) - C STA00672
|
||
80 K=K + 1 STA00673
|
||
90 K=N STA00674
|
||
B=0. STA00675
|
||
DO 100 KK=KL,KU STA00676
|
||
K=K - 1 STA00677
|
||
KI=MAXA(K) STA00678
|
||
C=A(KK)/A(KI) STA00679
|
||
B=B + C*A(KK) STA00680
|
||
100 A(KK)=C STA00681
|
||
A(KN)=A(KN) - B STA00682
|
||
110 IF (A(KN)) 120,120,140 STA00683
|
||
120 WRITE (IOUT,2000) N,A(KN) STA00684
|
||
GO TO 800 STA00685
|
||
140 CONTINUE STA00686
|
||
GO TO 900 STA00687
|
||
C STA00688
|
||
C REDUCE RIGHT-HAND-SIDE LOAD VECTOR STA00689
|
||
C STA00690
|
||
150 DO 180 N=1,NN STA00691
|
||
KL=MAXA(N) + 1 STA00692
|
||
KU=MAXA(N+1) - 1 STA00693
|
||
IF (KU-KL) 180,160,160 STA00694
|
||
160 K=N STA00695
|
||
C=0. STA00696
|
||
```
|
||
|
||
<!-- source-page: 1022 -->
|
||
|
||
```csv
|
||
DO 170 KK=KL,KU
|
||
K=K - 1
|
||
170 C=C + A(KK)*V(K)
|
||
V(N)=V(N) - C
|
||
180 CONTINUE
|
||
C
|
||
C BACK-SUBSTITUTE
|
||
C
|
||
DO 200 N=1,NN
|
||
K=MAXA(N)
|
||
200 V(N)=V(N)/A(K)
|
||
IF (NN.EQ.1) GO TO 900
|
||
N=NN
|
||
DO 230 L=2,NN
|
||
KL=MAXA(N) + 1
|
||
KU=MAXA(N+1) - 1
|
||
IF (KU-KL) 230,210,210
|
||
210 K=N
|
||
DO 220 KK=KL,KU
|
||
K=K - 1
|
||
220 V(K)=V(K) - A(KK)*V(N)
|
||
230 N=N - 1
|
||
GO TO 900
|
||
C
|
||
800 STOP
|
||
900 RETURN
|
||
C
|
||
2000 FORMAT (/// STOP - STIFFNESS MATRIX NOT POSITIVE DEFINITE',///,
|
||
1 ' NONPOSITIVE PIVOT FOR EQUATION ',I8,//,
|
||
2 ' PIVOT = ',E20.12 )
|
||
C
|
||
END
|
||
SUBROUTINE LOADV (R,NEQ)
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
```
|
||
|
||
<!-- source-page: 1023 -->
|
||
|
||
```csv
|
||
DO 120 I=1,3 STA00767
|
||
KK=ID(I,II) STA00768
|
||
IL=I STA00769
|
||
120 IF (KK.NE.0) D(IL)=DISP(KK) STA00770
|
||
C STA00771
|
||
100 WRITE (IOUT,2010) II,D STA00772
|
||
C STA00773
|
||
RETURN STA00774
|
||
C STA00775
|
||
2000 FORMAT (///,' D I S P L A C E M E N T S',//,' NODE ',10X, STA00776
|
||
1 'X-DISPLACEMENT Y-DISPLACEMENT Z-DISPLACEMENT') STA00777
|
||
2010 FORMAT (1X,I3,8X,3E18.6) STA00778
|
||
C STA00779
|
||
END STA00780
|
||
SUBROUTINE STRESS (AA) STA00781
|
||
C STA00782
|
||
C STA00783
|
||
C PRO GR A M STA00784
|
||
C TO CALL THE ELEMENT SUBROUTINE FOR THE CALCULATION OF STA00785
|
||
C STRESSES STA00786
|
||
C STA00787
|
||
C STA00788
|
||
COMMON /VAR/ NG,MODEX STA00789
|
||
COMMON /EL/ IND,NPAR(10),NUMEG,MTOT,NFIRST,NLAST,ITWO STA00790
|
||
COMMON /TAPES/ IELMNT,ILOAD,IIN,IOUT STA00791
|
||
DIMENSION AA(1) STA00792
|
||
C STA00793
|
||
C LOOP OVER ALL ELEMENT GROUPS STA00794
|
||
C STA00795
|
||
C REWIND IELMNT STA00796
|
||
C STA00797
|
||
DO 100 N=1,NUMEG STA00798
|
||
NG=N STA00799
|
||
C READ (IELMNT) NUMEST,NPAR,(AA(I),I=1,NUMEST) STA00800
|
||
C CALL ELEMNT STA00801
|
||
C STA00802
|
||
C STA00803
|
||
C STA00804
|
||
100 CONTINUE STA00805
|
||
C STA00806
|
||
RETURN STA00807
|
||
END STA00808
|
||
SUBROUTINE TRUSS STA00809
|
||
C STA00810
|
||
C STA00811
|
||
C P R O G R A M STA00812
|
||
C TO SET UP STORAGE AND CALL THE TRUSS ELEMENT SUBROUTINE STA00813
|
||
C STA00814
|
||
C STA00815
|
||
COMMON /SOL/ NUMNP,NEQ,NWK,NUMEST,MIDEST,MAXEST,MK STA00816
|
||
COMMON /DIM/ N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15 STA00817
|
||
COMMON /EL/ IND,NPAR(10),NUMEG,MTOT,NFIRST,NLAST,ITWO STA00818
|
||
COMMON /TAPES/ IELMNT,ILOAD,IIN,IOUT STA00819
|
||
COMMON A(1) STA00820
|
||
C STA00821
|
||
C EQUIVALENCE (NPAR(2),NUME),(NPAR(3),NUMMAT) STA00822
|
||
C STA00823
|
||
NFIRST=N6 STA00824
|
||
IF (IND.GT.1) NFIRST=N5 STA00825
|
||
N101=NFIRST STA00826
|
||
N102=N101 + NUMMAT*ITWO STA00827
|
||
N103=N102 + NUMMAT*ITWO STA00828
|
||
N104=N103 + 6*NUME STA00829
|
||
N105=N104 + 6*NUME*ITWO STA00830
|
||
N106=N105 + NUME STA00831
|
||
NLAST=N106 STA00832
|
||
C STA00833
|
||
IF (IND.GT.1) GO TO 100 STA00834
|
||
IF (NLAST.GT.MTOT) CALL ERROR (NLAST-MTOT,3) STA00835
|
||
GO TO 200 STA00836
|
||
```
|
||
|
||
<!-- source-page: 1024 -->
|
||
|
||
```csv
|
||
100 IF (NLAST.GT.MTOT) CALL ERROR (NLAST-MTOT,4) STA00837
|
||
200 MIDEST=NLAST - NFIRST STA00838
|
||
CALL RUSS (A(N1),A(N2),A(N3),A(N4),A(N4),A(N5),A(N101),A(N102),1 A(N103),A(N104),A(N105)) STA00840
|
||
RETURN STA00841
|
||
END STA00842
|
||
SUBROUTINE RUSS (ID,X,Y,Z,U,MHT,E,AREA,LM,XYZ,MATP) STA00843
|
||
TRUSS ELEMENT SUBROUTINE STA00844
|
||
IMPLICIT DOUBLE PRECISION (A-H,O-Z) STA00845
|
||
REAL A STA00854
|
||
COMMON /SOL/ NUMNP,NEQ,NWK,NUMEST,MIDEST,MAXEST,MK STA00855
|
||
COMMON /DIM/ N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15 STA00856
|
||
COMMON /EL/ IND,NPAR(10),NUMEG,MTOT,NFIRST,NLAST,ITWO STA00857
|
||
COMMON /VAR/ NG,MODEX STA00858
|
||
COMMON /TAPES/ IELMNT,ILOAD,IIN,IOUT STA00859
|
||
COMMON A(1) STA00860
|
||
DIMENSION X(1),Y(1),Z(1),ID(3,1),E(1),AREA(1),LM(6,1),XYZ(6,1),MATP(1),U(1),MHT(1) STA00862
|
||
DIMENSION S(21),ST(6),D(3) STA00863
|
||
EQUIVALENCE (NPAR(1),NPAR1),(NPAR(2),NUME),(NPAR(3),NUMMAT) STA00864
|
||
ND=6 STA00865
|
||
GO TO (300,610,800),IND STA00866
|
||
READ AND GENERATE ELEMENT STA00867
|
||
INFORMATION STA00868
|
||
READ MATERIAL INFORMATION STA00869
|
||
WRITE (IOUT,2000) NPAR1,NUME STA00870
|
||
IF (NUMMAT.EQ.0) NUMMAT=1 STA00871
|
||
WRITE (IOUT,2010) NUMMAT STA00872
|
||
WRITE (IOUT,2020) STA00873
|
||
DO 10 I=1,NUMMAT STA00874
|
||
READ (IIN,1000) N,E(N),AREA(N) STA00875
|
||
WRITE (IOUT,2030) N,E(N),AREA(N) STA00876
|
||
READ ELEMENT INFORMATION STA00877
|
||
WRITE (IOUT,2040) STA00878
|
||
N=1 STA00879
|
||
READ (IIN,1020) M,II,JJ,MTYP,KG STA00880
|
||
IF (KG.EQ.0) KG=1 STA00881
|
||
IF (M.NE.N) GO TO 200 STA00882
|
||
I=II STA00883
|
||
J=JJ STA00884
|
||
MTYPE=MTYP STA00885
|
||
KKK=KG STA00886
|
||
SAVE ELEMENT INFORMATION STA00887
|
||
200 XYZ(1,N)=X(I) STA00888
|
||
XYZ(2,N)=Y(I) STA00889
|
||
XYZ(3,N)=Z(I) STA00890
|
||
XYZ(4,N)=X(J) STA00891
|
||
XYZ(5,N)=Y(J) STA00892
|
||
XYZ(6,N)=Z(J) STA00893
|
||
STA00894
|
||
STA00895
|
||
STA00896
|
||
STA00897
|
||
STA00898
|
||
STA00899
|
||
STA00900
|
||
STA00901
|
||
STA00902
|
||
STA00903
|
||
STA00904
|
||
STA00905
|
||
STA00906
|
||
```
|
||
|
||
<!-- source-page: 1025 -->
|
||
|
||
```csv
|
||
C
|
||
MATP(N)=MTYPE
|
||
C
|
||
DO 390 L=1,6
|
||
390 LM(L,N)=0
|
||
DO 400 L=1,3
|
||
LM(L,N)=ID(L,I)
|
||
400 LM(L+3,N)=ID(L,J)
|
||
C
|
||
UPDATE COLUMN HEIGHTS AND BANDWIDTH
|
||
CALL COLHT (MHT,ND,LM(1,N))
|
||
WRITE (IOUT,2050) N,I,J,MTYPE
|
||
IF (N.EQ.NUME) GO TO 900
|
||
N=N + 1
|
||
I=I + KKK
|
||
J=J + KKK
|
||
IF (N.GT.M) GO TO 100
|
||
GO TO 120
|
||
C
|
||
ASSEMBLE STRUCTURE STIFFNESS MATRIX
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
390
|
||
LM(L,N)=0
|
||
DO 400 L=1,3
|
||
LM(L,N)=ID(L,I)
|
||
LM(L+3,N)=ID(L,J)
|
||
UPDATE COLUMN HEIGHTS AND BANDWIDTH
|
||
CALL COLHT (MHT,ND,LM(1,N))
|
||
WRITE (IOUT,2050) N,I,J,MTYPE
|
||
IF (N.EQ.NUME) GO TO 900
|
||
N=N + 1
|
||
I=I + KKK
|
||
J=J + KKK
|
||
IF (N.GT.M) GO TO 100
|
||
GO TO 120
|
||
ASSEMBLE STRUCTURE STIFFNESS MATRIX
|
||
610 DO 500 N=1,NUME
|
||
MTYPE=MATP(N)
|
||
XL2=0.
|
||
DO 505 L=1,3
|
||
D(L)=XYZ(L,N) - XYZ(L+3,N)
|
||
XL2=XL2 + D(L)*D(L)
|
||
XL=SQRT(XL2)
|
||
XX=E(MTYPE)*AREA(MTYPE)*XL
|
||
DO 510 L=1,3
|
||
ST(L)=D(L)/XL2
|
||
ST(L+3)=-ST(L)
|
||
KL=0
|
||
DO 600 L=1,6
|
||
YY=ST(L)*XX
|
||
DO 600 K=L,6
|
||
KL=KL + 1
|
||
600 S(KL)=ST(K)*YY
|
||
CALL ADDBAN (A(N3),A(N2),S,LM(1,N),ND)
|
||
500 CONTINUE
|
||
GO TO 900
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
610
|
||
DO 500 N=1,NUME
|
||
MTYPE=MATP(N)
|
||
XL2=0.
|
||
DO 505 L=1,3
|
||
D(L)=XYZ(L,N) - XYZ(L+3,N)
|
||
XL2=XL2 + D(L)*D(L)
|
||
XL2=0.
|
||
DO 600 L=1,6
|
||
YY=ST(L)*XX
|
||
DO 600 K=L,6
|
||
KL=KL + 1
|
||
600 S(KL)=ST(K)*YY
|
||
CALL ADDBAN (A(N3),A(N2),S,LM(1,N),ND)
|
||
500 CONTINUE
|
||
GO TO 900
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C1
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
S
|
||
T
|
||
R
|
||
E
|
||
S
|
||
C
|
||
A
|
||
L
|
||
C
|
||
C
|
||
U
|
||
L
|
||
A
|
||
T
|
||
O
|
||
N
|
||
S
|
||
C
|
||
L
|
||
A
|
||
C
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
C
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
S
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
O
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
C
|
||
D
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
O
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
U
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
P
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
L
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
O
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
O
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
O
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
M
|
||
M
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
O
|
||
O
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
O
|
||
O
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
M
|
||
O
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
M
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
M
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
N
|
||
O
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
O
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
N
|
||
O
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
S
|
||
T
|
||
R
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
S
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
S
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
S
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
M
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
N
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
O
|
||
N
|
||
M
|
||
N
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
M
|
||
```
|
||
|
||
<!-- source-page: 1026 -->
|
||
|
||
```csv
|
||
806 CONTINUE STA00979
|
||
P=STR*AREA(MTYPE) STA00980
|
||
WRITE (IOUT,2070) N,P,STR STA00981
|
||
830 CONTINUE STA00982
|
||
C STA00983
|
||
900 RETURN STA00984
|
||
C STA00985
|
||
1000 FORMAT (I5,2F10.0) STA00986
|
||
1010 FORMAT (2F10.0) STA00987
|
||
1020 FORMAT (5I5) STA00988
|
||
2000 FORMAT (' ELEMENT DEFINITION',///, STA00989
|
||
1 ' ELEMENT TYPE ',13(' .'),'( NPAR(1) ) . . =',I5,// STA00990
|
||
2 ' EQ.1, TRUSS ELEMENTS',// STA00991
|
||
3 ' EQ.2, ELEMENTS CURRENTLY',// STA00992
|
||
4 ' EQ.3, NOT AVAILABLE',/// STA00993
|
||
5 ' NUMBER OF ELEMENTS.',10(' .'),'( NPAR(2) ) . . =',I5,// STA00994
|
||
2010 FORMAT (' MATERIAL DEFINITION',///, STA00995
|
||
1 ' NUMBER OF DIFFERENT SETS OF MATERIAL',// STA00996
|
||
2 ' AND CROSS-SECTIONAL CONSTANTS ', STA00997
|
||
3 4(' .'),'( NPAR(3) ) . . =',I5,// STA00998
|
||
2020 FORMAT (' SET YOUNG'S CROSS-SECTIONAL',// STA00999
|
||
1 ' NUMBER MODULUS',10X,'AREA',// STA01000
|
||
2 15X,'E',14X,'A') STA01001
|
||
2030 FORMAT (/,I5,4X,E12.5,2X,E14.6) STA01002
|
||
2040 FORMAT (///,' ELEMENT INFORMATION',///, STA01003
|
||
1 ' ELEMENT NODE NODE MATERIAL',// STA01004
|
||
2 ' NUMBER-N I J SET NUMBER',// STA01005
|
||
2050 FORMAT (I5,6X,I5,4X,I5,7X,I5) STA01006
|
||
2060 FORMAT (///,' STRESS CALCULATIONS FOR ', STA01007
|
||
1 ' ELEMENT GROUP',I4,// STA01008
|
||
2 ' ELEMENT',13X,'FORCE',12X,'STRESS',// STA01009
|
||
3 ' NUMBER',// STA01010
|
||
2070 FORMAT (1X,I5,11X,E13.6,4X,E13.6) STA01011
|
||
C STA01012
|
||
END STA01013
|
||
SUBROUTINE SECOND (TIM) STA01014
|
||
C STA01015
|
||
SUBROUTINE TO OBTAIN TIME STA01016
|
||
THIS SUBROUTINE HAS BEEN USED ON AN IBM RS/6000 WORKSTATION STA01017
|
||
C STA01018
|
||
TIM=0.01*MCLOCK() STA01019
|
||
C STA01020
|
||
RETURN STA01021
|
||
END STA01022
|
||
```
|
||
|
||
# 12.5 EXERCISES AND PROJECTS
|
||
|
||
# Exercises
|
||
|
||
12.1. Consider the truss structure shown. Use the program STAP to solve for the response of the structure. Check your answer.
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
2
|
||
1 (= applied load)
|
||
10
|
||
5
|
||
5
|
||
Each Young
|
||
</details>
|
||
|
||
Each bar has cross-sectional area A = 1, Young's modulus E = 200,000
|
||
|
||
<!-- source-page: 1027 -->
|
||
|
||
12.2. Consider the truss structure shown. Use the program STAP to solve for the response of the structure. Check your answer.
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
1
|
||
8
|
||
10
|
||
8
|
||
</details>
|
||
|
||
Each bar has cross-sectional area A = 1, Young's modulus E = 200,000
|
||
|
||
12.3. Consider the truss structure shown. Use the program STAP to solve for the response of the structure. Check your answer.
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
10
|
||
20
|
||
20
|
||
</details>
|
||
|
||
Each bar has cross-sectional area A = 1, Young's modulus E = 200,000
|
||
|
||
12.4. Consider the truss structure shown. Use the program STAP to solve for the response of the structure. Check your answer.
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
1
|
||
10
|
||
10
|
||
10
|
||
</details>
|
||
|
||
Each bar has cross-sectional area A = 1, Young's modulus E = 200,000
|
||
|
||
<!-- source-page: 1028 -->
|
||
|
||
# Projects
|
||
|
||
Below we give descriptions of some projects using STAP. Of course, once the program implementations have been performed, various analysis problems could be solved, and we point out only some possibilities. The student is encouraged to solve additional analysis problems.
|
||
|
||
Project 12.1. Extend the program STAP to be also applicable to static two-dimensional plane stress, plane strain, and axisymmetric analyses. For this purpose incorporate the subroutine QUADS in Section 5.6 into STAP. Verify the program implementation by solving the patch test problems in Fig. 4.17 and the cantilever plate problem discussed in Example 4.6.
|
||
|
||
Project 12.2. Proceed as in project 12.1 but incorporate a modified program QUADS, modified for the u/p formulation and the 4/1 element (see Section 4.4.3).
|
||
|
||
Project 12.3. Extend the program STAP to be also applicable to dynamic analysis by direct step-by-step integration. Allow for the selection of a lumped or consistent mass matrix and allow for the use of the central difference method or the Newmark method.
|
||
|
||
Use the extended program STAP to solve the problem considered in Example 9.14.
|
||
|
||
Project 12.4. Extend the program STAP to be also applicable to dynamic analysis by mode superposition. Allow for the selection of a lumped or consistent mass matrix.
|
||
|
||
Incorporate the subroutine JACOBI in Section 11.3.2 to calculate the frequencies and mode shapes and allow for the selection of the number of modes to be included in the mode superposition from 1 to p, where $p \leq n$ and n = number of degrees of freedom.
|
||
|
||
Use the extended program STAP to solve the problem considered in Example 9.14.
|
||
|
||
Project 12.5. Extend the program STAP as in project 12.4 but allow for the selection and use of all modes with frequencies between $\omega_{l}$ and $\omega_{u}$ . Then solve the following problem. Let $R(t) = \sin \omega_{R} t$ , $\omega_{R} = 2000$ . The bar is initially at rest (i.e., at zero displacement and at zero velocity). Perform the analysis using 4, 8, 40, 60, $\ldots$ , equal two-node truss elements in the finite element discretization of the bar. Compare your response predictions.
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
100 cm
|
||
R(t)
|
||
</details>
|
||
|
||
Bar of cross-sectional area $A = 4\mathrm{cm}^2$
|
||
Young's modulus E = 4.4 MPa
|
||
$\rho =$ mass density $= 1560\mathrm{kg / m^3}$
|
||
|
||
Project 12.6. Extend the program STAP to allow for large displacements (but small strains) in the analysis of truss structures. Use the information given in Example 6.16. Then solve the analysis problem in Example 6.3.
|
||
|
||
<!-- source-page: 1029 -->
|
||
|
||
Project 12.7. Extend the program STAP to allow for large displacement two-dimensional plane stress, plane strain, and axisymmetric analysis. Use the program QUADS in Section 5.6 as the basis of the element subroutine and extend this program for the total Lagrangian formulation described in Section 6.3.4. Assume an elastic material with Young's modulus E and Poisson's ratio $\nu$ . Test the program on the simple analysis problems shown and compare your results with analytical calculations.
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
P
|
||
P
|
||
</details>
|
||
|
||

|
||
|
||
<details>
|
||
<summary>text_image</summary>
|
||
|
||
P
|
||
P
|
||
</details>
|
||
|
||
Project 12.8. Proceed as in project 12.7 but use the u/p formulation and implement the 4/1 element.
|
||
|
||
Project 12.9. Extend the program STAP for one-dimensional transient conduction heat transfer analysis, including linear convection boundary conditions. Then solve the problem in Fig. E7.2 with h = 2, L = 20, $q^{s} = 2$ , k = 1.0, $\rho c = 1.0$ , and neglecting the radiation heat transfer. Assume various temperature initial conditions and also change the values of k and $\rho c$ .
|
||
|
||
Project 12.10. Extend the program STAP for the analysis of steady-state two-dimensional planar and axisymmetric linear heat transfer by conduction. Use the subroutine QUADS in Section 5.6 as the basis to develop the element routine. Then solve the analysis problem in Exercise 7.7.
|
||
|
||
Project 12.11. Extend the program STAP to the analysis of one of the field problems: seepage (see Section 7.3.1), incompressible inviscid fluid flow (see Section 7.3.2), solution of torsional stiffness (see Section 7.3.3), or analysis of acoustic fluids (see Section 7.3.4). In each case consider only planar conditions and solve an analysis problem of your choice.
|
||
|
||
Project 12.12. Extend the program STAP for the analysis of viscous incompressible fluid flow at a very low Reynolds number (Stokes flow). Use the u/p formulation and the 4/1 element. Solve a problem of your choice (for example, the problem in Exercise 7.28).
|
||
|
||
<!-- source-page: 1030 -->
|
||
|
||
# References
|
||
|
||
AHMAD, S., IRONS, B. M., and ZIENKIEWICZ, O.C.
|
||
|
||
[A] "Analysis of Thick and Thin Shell Structures by Curved Finite Elements," International Journal for Numerical Methods in Engineering, Vol. 2, pp. 419-451, 1970.
|
||
|
||
AINSWORTH, M., and ODEN, J. T.
|
||
|
||
[A] A Posteriori Error Estimation in Finite Element Analysis, John Wiley & Sons, Inc., New York, 2000.
|
||
|
||
ANAND, L.
|
||
|
||
[A] "On H. Hencky's Approximate Strain Energy Function for Moderate Deformations," Journal of Applied Mechanics, Vol. 46, pp. 78–82, 1979.
|
||
|
||
ARGYRIS, J. H.
|
||
|
||
[A] “Continua and Discontinua,” Proceedings, Conference on Matrix Methods in Structural Mechanics, Wright-Patterson A.F.B., Ohio, pp. 11–189, Oct. 1965.
|
||
|
||
[B] “An Excursion into Large Rotations,” Computer Methods in Applied Mechanics and Engineering, Vol. 32, pp. 85–155, 1982.
|
||
|
||
ARGYRIS, J. H., and KELSEY, S.
|
||
|
||
[A] "Energy Theorems and Structural Analysis," Aircraft Engineering, Vols. 26 and 27, Oct. 1954 to May 1955. Part I is by J. H. Argyris, and Part II is by J. H. Argyris and S. Kelsey.
|
||
|
||
ARNOLD, D. N., and BREZZI, F.
|
||
|
||
[A] “Some New Elements for the Reissner-Mindlin Plate Model” and “Locking Free Finite Elements for Shells,” Publicazioni N. 898, Istituto di Analisi Numerica del Consiglio Nazionale delle Ricerche, Pavia, Nov. 1993.
|
||
|
||
ARNOLD, D. N., BREZZI, F., COCKBURN, B., and MARINI, L. D.
|
||
|
||
[A] “Unified Analysis of Discontinuous Galerkin Methods for Elliptic Problems,” SIAM Journal on Numerical Analysis, Vol. 39, No. 5, pp. 1749–1779, 2002.
|
||
|
||
ARNOLD, D. N., BREZZI, F., and FORTIN, M.
|
||
|
||
[A] “A Stable Finite Element for the Stokes Equations,” Calcolo, Vol. 21, pp. 337–344, 1984.
|
||
|
||
ARNOLD, D. N., and FALK, R.S.
|
||
|
||
[A] “The Boundary Layer for the Reissner-Mindlin Plate Model,” SIAM Journal on Mathematical Analysis, Vol. 21, pp. 281–312, 1990.
|