- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve:
I can now nicely run C# programs with the MKL libraries. Thanks for the help. The PARDISO routine is 100 times faster than the other inversion program I was using. It is a very nice addition to the FORTRAN tool kit.
Even though it is listed as a sparse matrix solver, it will actually solve dense matrices. It will do a 12500 by 12500 array in 167 seconds. But as soon as I go over the 12,500 I run into the 2GB limit for Windows. I could move to our supercomputer, but that is a pain, can I use allocate to break the 2GB limit?
JMN
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You need to build a 64bit application for > 2GB
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
https://software.intel.com/en-us/articles/memory-limits-applications-windows
Found this - which explains it - Steve wrote it
Thanks
JMN
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As well as the size limitations that Steve outlined for a 64-bit application, there are other limitations that need to be recognised.
Virtual memory limit: The maximum memory that can be allocated and used is limited by the size limits of the pagefile.sys. Although you can allocate a very large array, the limit of physical or virtual memory is not applied until the allocated array is being used. This can result in an error later in the program's execution.
Installed memory limit: The amount of installed memory also applies a practical limitation, as random access of virtual memory can significantly slow down the program run time. While this is not a limit on the addressable memory, it can be a definite practical limit. Use of programming techniques to localise memory usage can mitigate this problem. The aim is to sequentially address memory, which can be readily seen when using multi-dimension arrays. Simply re-ordering multiple DO loop sequences can result in a dramatic improvement of run time, much more so than the gains from other useful approaches like vector instructions or OpenMP approaches. The preferred solution is a combination of all these.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Interesting, when I first started on computing we had strict size limits, and we copied clever ways to minimize the pain, for a brief while in the 1990's and 2000's it was no longer a major issue for most programmers, but now it comes back. How big is big enough?
I used to be able to design 4000 tonne bins with this program, I did not write it; it comes from Powell's group at UCB. I think I had the only electronic copy of the code for a while, it was on punch cards, then magnetic tape, then floppy drives and then CD's and now USB. it took me 30 years to find the author - who works at Halliburton in Houston.
1EDGE BEAM FORCES FOR LOADING CASE NUMBER 1 - the 1 on the format line reminds me of the old punch cards at UNI -
!---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- PROGRAM SHELL !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- COMMON/ALL/NELEMS,R(100),Z(100),NODI(100),NODJ(100),NEQ,MBAND COMMON/MISD/NUMJTS,NUMLDS,KODE(100) DIMENSION TSTIFF(3000) CHARACTER*72 TITLE !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- 100 CALL INPUT ! ! ESTABLISH BAND WIDTH ! M=(MBAND-3)/3 DO 110 I =1,NELEMS J=IABS(NODJ(I)-NODI(I)) IF(J.GT.M)M=J 110 CONTINUE MBAND=3*M+3 NEQ=3*NUMJTS NA=NEQ*MBAND IF(NA-3000)130,130,120 120 WRITE(*,2000) WRITE(4,2000) GOTO 100 !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- 130 CALL STIFF(TSTIFF,NEQ,MBAND) !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- CALL DISPL(TSTIFF,NEQ,MBAND) 77 WRITE(*,78) 78 FORMAT(/2X,'DO YOU WISH TO CONTINUE (1=Yes/2=No) ? '\) READ(*,88)N 88 FORMAT(I1) IF(N.LT.1.OR.N.GT.2)GOTO 77 CLOSE(3,STATUS='KEEP') CLOSE(4,STATUS='KEEP') IF(N.EQ.1)GOTO 100 IF(N.EQ.1)GOTO 100 2000 FORMAT(1H1,'NUMBER OF NODAL POINTS AND/OR NODAL POINT','EXCEEDS MAXIMUM ALLOWABLE.') 135 END !------------------------------------------------------------------------------------------------ ! ! Subroutine Input for Data Files ! !------------------------------------------------------------------------------------------------ SUBROUTINE INPUT !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- COMMON/ALL/NELEMS,R(100),Z(100),NODI(100),NODJ(100),NEQ,MBAND COMMON/MISD/NUMJTS,NUMLDS,KODE(100) COMMON/ISS/C11I(100),C12I(100),C22I(100),C33I(100),C34I(100), C44I(100),& C11J(100),C12J(100),C22J(100),C33J(100),C34J(100), C44J(100) COMMON/ISDS/STATIC(600),SPRING(300),TLOAD(300),S(10),NFORM COMMON/BEAM/LOCJ(10,6),LOCC(10),BSTRES(30),BMOD(10),BAREA(10),& YY(10),ZZ(10),PHI(10),TDIM(10),NBEAMS CHARACTER*64 FILEI,FILEO CHARACTER*72 TITLE !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- WRITE(*,76) 76 FORMAT(//2X,'------------------------------------------------'/& ,/' SHELL ANALYSIS PROGRAM',//,& ' Program date : 7 July 2013'/' Code Amendments : J.M. Nichols'/' Version : 1.1'//2X,& '------------------------------------------------'//) WRITE(*,79) 79 FORMAT(2X,'Input Filename (e.g. B:file.ext) ? '\) READ(*,77)FILEI 77 FORMAT(A) WRITE(*,86) 86 FORMAT(1X,'Output Filename (e.g. B:file.ext) ? '\) READ(*,87)FILEO 87 FORMAT(A) ! ! OPEN EXISTING ( INPUT #3 ) AND NEW ( INPUT #4 ) FILES ! OPEN(3,FILE=FILEI,STATUS='OLD') OPEN(4,FILE=FILEO,STATUS='UNKNOWN') ! WRITE(4,111)FILEI,FILEO 111 FORMAT(//2X,'Input File : ',A,//1X,'Output File : ',A//) !---------------------------------------------------------------------------------------- ! ! Wriie Out Header Data ! !---------------------------------------------------------------------------------------- WRITE(4,76) ! ! CONTROL CARDS ! !---------------------------------------------------------------------------------------- ! ! Read the Title Cards ! !---------------------------------------------------------------------------------------- READ(3,1000)TITLE WRITE(4,2001)TITLE Write(*,213) 213 Format('Reading Joint Cards') !Pause READ(3,*)NUMJTS,NELEMS,NUMLDS,NBEAMS,NFORM WRITE(4,2000)NUMJTS,NELEMS,NUMLDS,NBEAMS,NFORM WRITE(*,2000)NUMJTS,NELEMS,NUMLDS,NBEAMS,NFORM ! ! JOINT CARDS ! WRITE(4,2010) WRITE(*,2010) NJ=1 MJ=1 DO 100 N=1,NUMJTS IF(MJ-NJ.GE.1) GOTO 90 READ(3,*, END=4000)NJ, R(NJ),Z(NJ),KODE(NJ),S1,S2,S3 IF(NJ-MJ.LE.1) GOTO 95 DIV=NJ-MJ DR=(R(NJ)-R(MJ))/DIV DZ=(Z(NJ)-Z(MJ))/DIV NNJ=MJ MJ=NJ NJ=NNJ 90 NJ=NJ+1 R(NJ)=R(NJ-1)+DR Z(NJ)=Z(NJ-1)+DZ KODE(NJ)=KODE(MJ) SPRING(3*NJ-2)=R(NJ)*S1 SPRING(3*NJ-1)=R(NJ)*S2 SPRING(3*NJ)=R(NJ)*S3 GOTO 1011 95 MJ=NJ SPRING(3*NJ-2)=R(NJ)*S1 SPRING(3*NJ-1)=R(NJ)*S2 SPRING(3*NJ)=R(NJ)*S3 1011 WRITE(*,2020)NJ, R(NJ),Z(NJ),KODE(NJ),S1,S2,S3 WRITE(4,2020)NJ,R(NJ),Z(NJ),KODE(NJ),S1,S2,S3 100 End Do ! ! ELEMENT CARDS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- Write(*,214) 214 Format('Reading Element Cards') WRITE(4,2030) Write(*,2030) !Pause M=0 NE=1 ME=1 DO 130 N=1,NELEMS IF(ME-NE.GE.1) GO TO 101 Write(*,*)NE Read(3,*)NE Write(*,*)NE READ(3,*)NODI(N),NODJ(N),MTYPE,INC Write(*,*)NODI(N),NODJ(N),MTYPE,INC !Pause IF(INC.EQ.0) INC=1 IF(NE-ME.LE.1)GOTO 105 ! ! GENERATE INPUT DATA ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- TL=0.0 NN=NE-ME-1 DO 75 L=1,NN NODI(ME+L)=NODI(ME+L-1)+INC NODJ(ME+L)=NODJ(ME+L-1)+INC I=NODI(ME+L) J=NODJ(ME+L) DR=R(J)-R(I) DZ=Z(J)-Z(I) DL=SQRT(DR**2+DZ**2) TL=TL+DL 75 End Do IF(MTYPE.GT.1) GOTO 80 READ(3,*)TMI,E1MI,E2MI,P12MI,TBI,E1BI,E2BI,P12BI Write(3,*)TMI,E1MI,E2MI,P12MI,TBI,E1BI,E2BI,P12BI !Pause D1=(TMI-TMJ)/TL D2=(E1MI-E1MJ)/TL D3=(E2MI-E2MJ)/TL D4=(P12MI-P12MJ)/TL D5=(TBI-TBJ)/TL D6=(E1BI-E1BJ)/TL D7=(E2BI-E2BJ)/TL D8=(P12BI-P12BJ)/TL GOTO 85 80 READ(3,1040)YMODI,AREA1I,AREA2I,BEND1I,BEND2I D1=(YMODI-YMODJ)/TL D2=(AREA1I-AREA1J)/TL D3=(AREA2I-AREA2J)/TL D4=(BEND1I-BEND1J)/TL D5=(BEND2I-BEND2J)/TL 85 NNE=ME ME=NE NE=NNE 101 NE=NE+1 IF(NE.EQ.ME) GO TO 102 I=NODI(NE) J=NODJ(NE) DR=R(J)-R(I) DZ=Z(J)-Z(I) DL=SQRT(DR**2+DZ**2) ! ! MATERIAL PROPERTIES ! 102 IF(MTYPE.GT.1)GOTO 103 ! ! MATERIAL ORTHOTROPY ! TMI=TMJ TMJ=TMI+D1*DL E1MI=E1MJ E1MJ=E1MI+D2*DL E2MI=E2MJ E2MJ=E2MI+D3*DL P12MI=P12MJ P12MJ=P12MI+D4*DL TBI=TBJ TBJ=TBI+D5*DL E1BI=E1BJ E1BJ=E1BI+D6*DL E2BI=E2BJ E2BJ=E2BI+D7*DL P12BI=P12BJ P12BJ=P12BI+D8*DL IF(NE.EQ.ME)READ(3,1030)TMJ,E1MJ,E2MJ,P12MJ,TBJ,E1BJ,E2BJ,P12BJ WRITE(4,2050)NE,NODI(NE),TMI,E1MI,E2MI,P12MI,TBI,E1BI,E2BI,P12BI WRITE(4,2060)NODJ(NE),TMJ,E1MJ,E2MJ,P12MJ,TBJ,E1BJ,E2BJ,P12BJ GOTO 115 ! ! GEOMETRIC ORTHOTROPY ! 103 YMODI=YMODJ YMODJ=YMODI+D1*DL AREA1I=AREA1J AREA1J=AREA1I+D2*DL AREA2I=AREA2J AREA2J=AREA2I+D3*DL BEND1I=BEND1J BEND1J=BEND1I+D4*DL BEND2I=BEND2J BEND2J=BEND2I+D5*DL IF(NE.EQ.ME)READ(3,1040)YMODJ,AREA1J,AREA2J,BEND1J,BEND2J WRITE(4,2080)NE,NODI(NE),YMODI,AREA1I,AREA2I,BEND1I,BEND2I WRITE(4,2090)NODJ(NE),YMODJ,AREA1J,AREA2J,BEND1J,BEND2J GOTO 125 ! ! READ INPUT DATA ! ! MATERIAL PROPERTIES ! 105 ME=NE IF(MTYPE.GT.1)GOTO 120 ! ! MATERIAL ORTHOTROPY ! IF(M.EQ.1)GOTO 110 WRITE(4,2040) WRITE(*,2040) 110 READ(3,*)TMI,E1MI,E2MI,P12MI,TBI,E1BI,E2BI,P12BI WRITE(4,2050)NE,NODI(NE),TMI,E1MI,E2MI,P12MI,TBI,E1BI,E2BI,P12BI WRITE(*,2050)NE,NODI(NE),TMI,E1MI,E2MI,P12MI,TBI,E1BI,E2BI,P12BI READ(3,*)TMJ,E1MJ,E2MJ,P12MJ,TBJ,E1BJ,E2BJ,P12BJ WRITE(4,2060)NODJ(NE),TMJ,E1MJ,E2MJ,P12MJ,TBJ,E1BJ,E2BJ,P12BJ WRITE(*,2060)NODJ(NE),TMJ,E1MJ,E2MJ,P12MJ,TBJ,E1BJ,E2BJ,P12BJ M=1 ! ! FORM MATERIAL STIFFNESS COEFFICIENTS ! 115 C11I(NE)=TMI*E1MI**2/(E1MI-E2MI*P12MI**2) C22I(NE)=C11I(NE)*E2MI/E1MI C12I(NE)=P12MI*C22I(NE) C33I(NE)=TBI**3*E1BI**2/(12.0*(E1BI-E2BI*P12BI**2)) C44I(NE)=C33I(NE)*E2BI/E1BI C34I(NE)=-P12BI*C44I(NE) C11J(NE)=TMJ*E1MJ**2/(E1MJ-E2MJ*P12MJ**2) C22J(NE)=C11J(NE)*E2MJ/E1MJ C12J(NE)=P12MJ*C22J(NE) C33J(NE)=TBJ**3*E1BJ**2/(12.0*(E1BJ-E2BJ*P12BJ**2)) C44J(NE)=C33J(NE)*E2BJ/E1BJ C34J(NE)=-P12BJ*C44J(NE) GOTO 130 ! ! GEOMETRIC ORTHOTROPY ! 120 IF(M.EQ.2)GOTO 121 WRITE(4,2070) 121 READ(3,*)YMODI,AREA1I,AREA2I,BEND1I,BEND2I WRITE(4,2080)NE,NODI(NE),YMODI,AREA1I,AREA2I,BEND1I,BEND2I READ(3,*)YMODJ,AREA1J,AREA2J,BEND1J,BEND2J WRITE(4,2090)NODJ(NE),YMODJ,AREA1J,AREA2J,BEND1J,BEND2J M=2 ! ! FORM MATERIAL STIFFNESS COEFFICIENTS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- 125 C11I(NE)=YMODI*AREA1I C22I(NE)=YMODI*AREA2I C12I(NE)=0.0 C33I(NE)=YMODI*BEND1I C44I(NE)=YMODI*BEND2I C34I(NE)=0.0 C11J(NE)=YMODJ*AREA1J C22J(NE)=YMODJ*AREA2J C12J(NE)=0.0 C33J(NE)=YMODJ*BEND1J C44J(NE)=YMODJ*BEND2J C34J(NE)=0.0 130 CONTINUE ! ! EDGE BEAM CARDS ! M=0 IF(NBEAMS.EQ.0) GOTO 160 WRITE(4,3000) Write(*,2140) 2140 format('Edge beams') !Pause WRITE(*,3000) DO 150 L=1,NBEAMS READ(3,*)N,LOCC(N),(LOCJ(N,I),I=1,6) READ(3,*)BMOD(N),BAREA(N),YY(N),ZZ(N),PHI(N),TDIM(N) WRITE(4,3010)N,LOCC(N),LOCJ(N,1),BMOD(N),BAREA(N),YY(N),ZZ(N),PHI(N),TDIM(N) WRITE(*,3010)N,LOCC(N),LOCJ(N,1),BMOD(N),BAREA(N),YY(N),ZZ(N),PHI(N),TDIM(N) KK=0 DO 140 K=1,6 IF(LOCJ(N,K).LE.0) GOTO 145 J=IABS(LOCC(N)-LOCJ(N,K)) IF(J.GT.M) M=J KK=KK+1 140 CONTINUE 145 WRITE(4,3020)(LOCJ(N,K),K=2,KK) 150 CONTINUE 160 MBAND=3*M+3 RETURN !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- 1000 FORMAT( A72) 1010 FORMAT(I3,2F10.1,I3,3F10.1) 1020 FORMAT(5I3) 1030 FORMAT(3F10.1,F7.4,3F10.1,F7.4) 1040 FORMAT(5F10.1) 1050 FORMAT(8I3) 1060 FORMAT(6F10.1) 2001 FORMAT( A72) 2000 FORMAT(/////,& 35H NUMBER OF NODAL POINTS ---------- ,I3// & 35H NUMBER OF ELEMENTS -------------- ,I3// & 35H NUMBER OF LOADING CONDITIONS ---- ,I3// & 35H NUMBER OF EDGE BEAMS ------------ ,I3//& 35H Stress Condition Output---------- ,I3) 2010 FORMAT(11H JOINT DATA//5H NODE,5X,6HRADIUS,5X,8HORDINATE,5X,& 4HCODE,6X,35H********** JOINT SPRINGS **********/44X, & 35HVERTICAL HORIZONTAL ROTATIONAL/) 2020 FORMAT(1H ,I3,5X,F7.2,5X,F7.2,6X,I3,6X,1PE10.3,3X,E10.3,3X,E10.3) 2030 FORMAT('ELEMENT DATA'/) 2040 FORMAT(14H0ELEMENT NODE,5X,47H************* MEMBRANE PROPERTIES *& ************,5X,47H************** BENDING PROPERTIES *************& //19X,9HTHICKNESS,6X,14HYOUNGS MODULUS,4X,14HPOISSONS RATIO,5X, & 9HTHICKNESS,6X,14HYOUNGS MODULUS,4X,14HPOISSONS RATIO/33X, & 5H(ONE),7X,5H(TWO),5X,9H(ONE-TWO),21X,& 5H(ONE),7X,5H(TWO),5X,9H(ONE-TWO)//) 2050 FORMAT(2X,I3,5X,I3,7X,F7.4,3X,1PE10.3,2X,E10.3,5X,0PF6.3,10X,F7.4,& 3X,1PE10.3,2X,E10.3,5X,0PF6.3) 2060 FORMAT(10X,I3,7X,F7.4,3X,1PE10.3,2X,E10.3,5X,0PF6.3,10X,F7.4,3X,1PE10.3,2X,E10.3,5X,0PF6.3/) 2070 FORMAT(14H0ELEMENT NODE,4X,14HYOUNGS MODULUS,6X,14HEFFECTIVE AREA& ,6X,27HEFFECTIVE MOMENT OF INERTIA/37X,5H(ONE),7X,5H(TWO),9X, & 5H(ONE),7X,5H(TWO)//) 2080 FORMAT(2X,I3,5X,I3,7X,1PE10.3,4X,1PE10.3,2X,1PE10.3,4X,1PE10.3,2X,& 1PE10.3) 2090 FORMAT(10X,I3,7X,1PE10.3,4X,1PE10.3,2X,1PE10.3,4X,1PE10.3,2X,1PE10.3/) 3000 FORMAT(15H EDGE BEAM DATA///10H EDGE BEAM,4X,13HJOINT INDICES,4X,& 14HYOUNGS MODULUS,5X,4HAREA,10X,17HMOMENT OF INERTIA,5X,& 14HPRINCIPAL AXIS,3X,17HLARGEST DIMENSION/& 13X,15HCENTROID NODES,36X,5H(IYY),7X,5H(IZZ)/) 3010 FORMAT(/4X,I3,8X,I3,5X,I3,7X,1PE10.3,4X,E10.3,4X,E10.3,2X,E10.3,& 5X,E10.3,8X,E10.3) 3020 FORMAT(23X,I3) 4000 Write(*,4001) 4001 Format('Read Error') ! 3021 END !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- SUBROUTINE STIFF(TSTIFF,NQQ,MBND) ! COMMON/ALL/NELEMS,R(100),Z(100),NODI(100),NODJ(100),NEQ,MBAND COMMON/MISD/NUMJTS,NUMLDS,KODE(100) COMMON/ISS/C11I(100),C12I(100),C22I(100),C33I(100),C34I(100),C44I(100),& C11J(100),C12J(100),C22J(100),C33J(100),C34J(100), & C44J(100) COMMON/ISDS/STATIC(600),SPRING(300),TLOAD(300),S(10),NFORM COMMON/BEAM/LOCJ(10,6),LOCC(10),BSTRES(30),BMOD(10),BAREA(10),& YY(10),ZZ(10),PHI(10),TDIM(10),NBEAMS DIMENSION H(10),ESTIFF(7,7),F(7,7),ALAM(7,7),A(6,6),LM(6) DIMENSION TSTIFF(NQQ,MBND) ! ! WEIGHTING COEFFICIENTS FOR NUMERICAL INTERGRATION ! S(1)=0.046910077030668 S(2)=0.2307653449471585 S(3)=0.5 S(4)=1.0-S(2) S(5)=1.0-S(1) H(1)=0.236926885056189 H(2)=0.478628670499366 H(3)=0.568888888888889 H(4)=H(2) H(5)=H(1) ! ! CLEAR TOTAL STIFFNESS MATRIX ! DO 100 I =1,NEQ DO 100 J =1,MBAND 100 TSTIFF(I,J)=0.0 ! ! FORM ELEMENT STIFFNESS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- DO 200 L =1,NELEMS I=NODI(L) J=NODJ(L) DR=R(J)-R(I) DZ=Z(J)-Z(I) DL=SQRT(DR**2+DZ**2) COSA=DR/DL SINA=DZ/DL DO 110 M=1,7 DO 110 N=M,7 110 ESTIFF(M,N)=0.0 DO 140 K=1,5 !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- ! ! FORM MATERIAL STIFFNESS MATRIX ! X=S(K) C11=C11I(L)+(C11J(L)-C11I(L))*X C12=C12I(L)+(C12J(L)-C12I(L))*X C22=C22I(L)+(C22J(L)-C22I(L))*X C33=C33I(L)+(C33J(L)-C33I(L))*X C34=C34I(L)+(C34J(L)-C34I(L))*X C44=C44I(L)+(C44J(L)-C44I(L))*X ! ! GENERALIZED DISPLACEMENT TRANSFORMATION MATRIX ! IF(R(I).EQ.0.0)R(I)=0.000001 120 RAD=R(I)+DL*COSA*X B1=(-3.0+4.0*X)/DL B2=(-1.0+4.0*X)/DL B3=(1.0-3.0*X+2.0*X*X)*COSA/RAD B4=(1.0-(3.0-2.0*X)*X**2)*SINA/RAD B5=X*(1.0-2.0*X+X**2)*DL*SINA/RAD B6=(-X+2.0*X*X)*COSA/RAD B7=X**2*(3.0-2.0*X)*SINA/RAD B8=X**2*(-1.0+X)*DL*SINA/RAD B9=(-6.0+12.0*X)/DL**2 B10=(-4.0+6.0*X)/DL B11=-B9 B12=(-2.0+6.0*X)/DL B13=(6.0*X-6.0*X*X)*COSA/(DL*RAD) B14=(-1.0+4.0*X-3.0*X*X)*COSA/RAD B15=-B13 B16=(2.0*X-3.0*X*X)*COSA/RAD B17=(4.0-8.0*X)/DL B18=(4.0*X-4.0*X*X)*COSA/RAD ! ! EVALUATE F(X) ! F(1,1)=B1*B1*C11+2.0*B1*B3*C12+B3*B3*C22 F(1,2)=B1*B4*C12+B3*B4*C22 F(1,3)=B1*B5*C12+B3*B5*C22 F(1,4)=B1*B2*C11+B2*B3*C12+B1*B6*C12+B3*B6*C22 F(1,5)=B1*B7*C12+B3*B7*C22 F(1,6)=B1*B8*C12+B3*B8*C22 F(1,7)=B1*B17*C11+B3*B17*C12+B1*B18*C12+B3*B18*C22 F(2,2)=B4*B4*C22+B9*B9*C33+2.0*B9*B13*C34+B13*B13*C44 F(2,3)=B4*B5*C22+B9*B10*C33+(B10*B13+B9*B14)*C34+B13*B14*C44 F(2,4)=B2*B4*C12+B4*B6*C22 F(2,5)=B4*B7*C22+B9*B11*C33+(B11*B13+B9*B15)*C34+B13*B15*C44 F(2,6)=B4*B8*C22+B9*B12*C33+(B12*B13+B9*B16)*C34+B13*B16*C44 F(2,7)=B4*B17*C12+B4*B18*C22 F(3,3)=B5*B5*C22+B10*B10*C33+2.0*B10*B14*C34+B14*B14*C44 F(3,4)=B2*B5*C12+B5*B6*C22 F(3,5)=B5*B7*C22+B10*B11*C33+(B11*B14+B10*B15)*C34+B14*B15*C44 F(3,7)=B5*B17*C12+B5*B18*C22 F(4,4)=B2*B2*C11+2.0*B2*B6*C12+B6*B6*C22 F(4,5)=B2*B7*C12+B6*B7*C22 F(4,6)=B2*B8*C12+B6*B8*C22 F(4,7)=B2*B17*C11+(B6*B17+B2*B18)*C12+B6*B18*C22 F(5,5)=B7*B7*C22+B11*B11*C33+2.0*B11*B15*C34+B15*B15*C44 F(5,6)=B7*B8*C22+B11*B12*C33+(B12*B15+B11*B16)*C34+B15*B16*C44 F(5,7)=B7*B17*C12+B7*B18*C22 F(6,6)=B8*B8*C22+B12*B12*C33+2.0*B12*B16*C34+B16*B16*C44 F(6,7)=B8*B17*C12+B8*B18*C22 F(7,7)=B17*B17*C11+2.0*B17*B18*C12+B18*B18*C22 ! ! ADD PARTIAL AREA TO ELEMENT STIFFNESS MATRIX ! DO 130 M=1,7 DO 130 N=M,7 130 ESTIFF(M,N)=ESTIFF(M,N)+H(K)*F(M,N)*RAD*DL/2.0 140 CONTINUE ! ! COMPLETE ELEMENT STIFFNESS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- DO 150 M=1,7 DO 150 N=M,7 150 ESTIFF(N,M)=ESTIFF(M,N) ! ! TRANSFORMATION MATRIX (GLOBAL COORDINATES) ! DO 160 M=1,6 DO 160 N=1,6 160 ALAM(M,N)=0.0 ALAM(1,1)=SINA ALAM(1,2)=COSA ALAM(2,1)=-COSA ALAM(2,2)=SINA ALAM(3,3)=-1.0 ALAM(4,4)=SINA ALAM(4,5)=COSA ALAM(5,4)=-COSA ALAM(5,5)=SINA ALAM(6,6)=-1.0 ! ! STATIC CONDENSATION OF ELEMENT STIFFNESS MATRIX ! DO 151 M=1,6 151 ESTIFF(7,M)=-(1.0/ESTIFF(7,7))*ESTIFF(7,M) DO 152 M=1,6 N=6*L+M-6 STATIC(N)=0.0 DO 152 K=1,6 152 STATIC(N)=STATIC(N)+ESTIFF(7,K)*ALAM(K,M) DO 153 M=1,6 DO 153 N=1,6 153 A(M,N)=ESTIFF(M,7)*ESTIFF(7,N) DO 154 M=1,6 DO 154 N=1,6 154 ESTIFF(M,N)=ESTIFF(M,N)+A(M,N) ! ! MULTIPLY ELEMENT STIFFNESS AND TRANSFORMATION MATRICES ! DO 170 M=1,6 DO 170 N=1,6 A(M,N)=0.0 DO 170 K=1,6 170 A(M,N)=A(M,N)+ESTIFF(M,K)*ALAM(K,N) ! ! ELEMENT STIFFNESS IN GLOBAL COORDINATES ! DO 180 M=1,6 DO 180 N=1,6 ESTIFF(M,N)=0.0 DO 180 K=1,6 180 ESTIFF(M,N)=ESTIFF(M,N)+ALAM(K,M)*A(K,N) ! ! ADD ELEMENT STIFFNESS TO TOTAL STIFFNESS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- LM(1)=3*I-2 LM(2)=LM(1)+1 LM(3)=LM(1)+2 LM(4)=3*J-2 LM(5)=LM(4)+1 LM(6)=LM(4)+2 DO 190 M=1,6 II=LM(M) DO 190 N=M,6 JJ=LM(N)-II+1 190 TSTIFF(II,JJ)=TSTIFF(II,JJ)+ESTIFF(M,N) 200 CONTINUE ! ! ESTABLISH LINKING BEAMS FOR EDGE BEAMS ! IF(NBEAMS.EQ.0) GOTO 260 DO 250 L=1,NBEAMS EI=BMOD(L)*TDIM(L)**3/12.0 EA=BMOD(L)*TDIM(L) ANG=PHI(L)*0.01745329 DO 230 K=1,6 IF(LOCJ(L,K).LE.0) GOTO 240 IF(LOCJ(L,K).GT.LOCC(L)) GOTO 205 I=LOCJ(L,K) J=LOCC(L) GOTO 206 205 I=LOCC(L) J=LOCJ(L,K) 206 DR=R(J)-R(I) DZ=Z(J)-Z(I) DL=SQRT(DR**2+DZ**2) COSA=DR/DL SINA=DZ/DL DO 210 M=1,6 DO 210 N=M,6 210 ESTIFF(M,N)=0.0 ESTIFF(1,1)=12.0*EI*COSA**2/DL**3+EA*SINA**2/DL ESTIFF(1,2)=-12.0*EI*SINA*COSA/DL**3+EA*SINA*COSA/DL ESTIFF(1,3)=6.0*EI*COSA/DL**2 ESTIFF(1,4)=-ESTIFF(1,1) ESTIFF(1,5)=-ESTIFF(1,2) ESTIFF(1,6)=ESTIFF(1,3) ESTIFF(2,2)=12.0*EI*SINA**2/DL**3+EA*COSA**2/DL ESTIFF(2,3)=-6.0*EI*SINA/DL**2 ESTIFF(2,4)=ESTIFF(1,5) ESTIFF(2,5)=-ESTIFF(2,2) ESTIFF(2,6)=ESTIFF(2,3) ESTIFF(3,3)=4.0*EI/DL ESTIFF(3,4)=-ESTIFF(1,3) ESTIFF(3,5)=-ESTIFF(2,3) ESTIFF(3,6)=2.0*EI/DL ESTIFF(4,4)=ESTIFF(1,1) ESTIFF(4,5)=ESTIFF(1,2) ESTIFF(4,6)=-ESTIFF(1,3) ESTIFF(5,5)=ESTIFF(2,2) ESTIFF(5,6)=-ESTIFF(2,3) ESTIFF(6,6)=ESTIFF(3,3) ! ! ADD LINK BEAM STIFFNESS TO TOTAL STIFFNESS ! LM(1)=3*I-2 LM(2)=LM(1)+1 LM(3)=LM(1)+2 LM(4)=3*J-2 LM(5)=LM(4)+1 LM(6)=LM(4)+2 DO 220 M=1,6 II=LM(M) DO 220 N=M,6 JJ=LM(N)-II+1 220 TSTIFF(II,JJ)=TSTIFF(II,JJ)+ESTIFF(M,N)*(R(I)+R(J))/2.0 230 CONTINUE ! ! ADD EDGE BEAM STIFFNESS TO TOTAL STIFFNESS ! 240 COSA=COS(ANG) SINA=SIN(ANG) I=LOCC(L) II=3*I-1 TSTIFF(II,1)=TSTIFF(II,1)+BMOD(L)*BAREA(L)/R(I) TSTIFF(II+1,1)=TSTIFF(II+1,1)+(ZZ(L)*SINA**2+YY(L)*COSA**2)*BMOD(L)/R(I) ! ! STORE EDGE BEAM STRESS MATRIX ! BSTRES(3*L-2)=BMOD(L)*BAREA(L)/R(I) BSTRES(3*L-1)=SINA*BMOD(L)*ZZ(L)/R(I) 250 BSTRES(3*L)=-COSA*BMOD(L)*YY(L)/R(I) 260 CONTINUE ! ! ADD SPRING STIFFNESS TO TOTAL STIFFNESS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- DO 270 L=1,NUMJTS L4 = (3*L)-2 Write(*,*)L4,NUMJTS TSTIFF(3*L-2,1)=TSTIFF(3*L-2,1)+SPRING(3*L-2) TSTIFF(3*L-1,1)=TSTIFF(3*L-1,1)+SPRING(3*L-1) 270 TSTIFF(3*L,1)=TSTIFF(3*L,1)+SPRING(3*L) ! RETURN ! END !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- SUBROUTINE DISPL(TSTIFF,NQQ,MBND) ! COMMON/ALL/NELEMS,R(100),Z(100),NODI(100),NODJ(100),NEQ,MBAND COMMON/MISD/NUMJTS,NUMLDS,KODE(100) COMMON/ISDS/STATIC(600),SPRING(300),TLOAD(300),S(10),NFORM DIMENSION TSTIFF(NQQ,MBND) ! ! MODIFY TOTAL STIFFNESS MATRIX FOR SPECIFIED JOINT DISPLACEMENTS ! DO 50 N=1,NUMJTS KK=KODE(N) KD=100 DO 40 M=1,3 IF(KK.LT.KD) GOTO 30 NR=3*N-3+M DO 10 J=2,MBAND TSTIFF(NR,J)=0.0 NNR=NR-J+1 IF(NNR.LT.1) GOTO 10 TSTIFF(NNR,J)=0.0 10 CONTINUE 20 TSTIFF(NR,1)=1.0 KK=KK-KD 30 KD=KD/10 40 CONTINUE 50 CONTINUE DO 60 I =1,NEQ 60 TLOAD(I)=0.0 ! ! REDUCE THE MODIFIED TOTAL STIFFNESS MATRIX ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- KKK=1 CALL SYMSOL(TSTIFF,TLOAD,NEQ,MBAND,KKK) DO 150 L=1,NUMLDS ! ! READ IN NODAL LOADS FOR ONE LOADING CASE ! DO 70 I=1,NEQ 70 TLOAD(I)=0.0 READ(3,*)LOAD,NUMNLD,NUMELD WRITE(4,2000)LOAD,TITLE IF(NUMNLD.LT.1) GOTO 90 WRITE(4,2010) DO 80 I=1,NUMNLD READ(3,*)NJ,TLOAD(3*NJ-2),TLOAD(3*NJ-1),TLOAD(3*NJ) 80 WRITE(4,2020)NJ,TLOAD(3*NJ-2),TLOAD(3*NJ-1),TLOAD(3*NJ) ! ! READ ELEMENT LOADS FOR THIS CASE AND FORM EQUIVALENT NODAL LOADS ! 85 IF(NUMELD.LT.1) GOTO 110 WRITE(4,2000)LOAD,TITLE 90 IF(NUMELD.LT.1) GOTO 110 WRITE(4,2030) DO 100 K=1,NUMELD READ(3,1020)NE,QNORM,QVERT,QHORIZ WRITE(4,2040)NE,QNORM,QVERT,QHORIZ I=NODI(NE) J=NODJ(NE) DR=R(J)-R(I) DZ=Z(J)-Z(I) DL=SQRT(DR**2+DZ**2) COSA=DR/DL SINA=DZ/DL QU=QVERT*SINA+QHORIZ*COSA QW=QNORM-QVERT*COSA+QHORIZ*SINA ! ! EQUIVALENT LOADS IN LOCAL COORDINATES ! R1=(R(I)*DL/2.0+DL*DL*COSA/6.0)*QU R2=(R(I)*DL/2.0+3.0*DL*DL*COSA/20.0)*QW R3=(R(I)*DL*DL/12.0+(DL**3)*COSA/30.0)*QW R4=(R(I)*DL/2.0+DL*DL*COSA/3.0)*QU R5=(R(I)*DL/2.0+7.0*DL*DL*COSA/20.0)*QW R6=(-R(I)*DL*DL/12.0-(DL**3)*COSA/20.0)*QW ! ! TRANSFORM EQUIVALENT LOADS TO GLOBAL COORDINATES ! TLOAD(3*I-2)=TLOAD(3*I-2)+R1*SINA-R2*COSA TLOAD(3*I-1)=TLOAD(3*I-1)+R1*COSA+R2*SINA TLOAD(3*I)=TLOAD(3*I)-R3 TLOAD(3*J-2)=TLOAD(3*J-2)+R4*SINA-R5*COSA TLOAD(3*J-1)=TLOAD(3*J-1)+R4*COSA+R5*SINA 100 TLOAD(3*J)=TLOAD(3*J)-R6 ! ! MODIFY LOAD VECTOR FOR DISPLACEMENT BOUNDARY CONDITIONS ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- 110 DO 140 N=1,NUMJTS KK=KODE(N) KD=100 DO 130 M=1,3 IF(KK.LT.KD) GOTO 120 NR=3*N-3+M TLOAD(NR)=0.0 KK=KK-KD 120 KD=KD/10 130 CONTINUE 140 CONTINUE ! ! SOLVE THIS LOAD CASE FOR JOINT DISPLACEMENTS ! KKK=2 CALL SYMSOL(TSTIFF,TLOAD,NEQ,MBAND,KKK) ! ! PRINT JOINT DISPLACEMENTS ! WRITE(4,2050)LOAD WRITE(4,2060)(NJ,TLOAD(3*NJ-2),TLOAD(3*NJ-1),TLOAD(3*NJ),NJ=1,NUMJTS) ! !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- ! SOLVE FOR THE ELEMENT STRESSES ! CALL STRESS(LOAD) ! 150 CONTINUE ! RETURN ! 1000 FORMAT(3I3) 1010 FORMAT(I3,3F10.2) 1020 FORMAT(I3,3F10.2) 2000 FORMAT(19HLOADING CASE NUMBER,I3,4H FOR,/1X,12A6) 2010 FORMAT(1H0,19HAPPLIED NODAL LOADS//5H NODE,5X,36H VERTICAL HORIZONTAL ROTATIONAL//) 2020 FORMAT(1X,I3,6X,1PE10.3,3X,E10.3,3X,E10.3) 2030 FORMAT(1H0,21HAPPLIED ELEMENT LOADS//8H ELEMENT,7X,'NORMAL','VERTICAL HORIZONTAL'//) 2040 FORMAT(3X,I3,7X,1PE10.3,3X,E10.3,3X,E10.3) 2050 FORMAT(1H1,43HJOINT DISPLACEMENTS FOR LOADING CASE NUMBER,I3,//15H NODE ,5X,' VERTICAL HORIZONTAL ROTATIONAL'/) 2060 FORMAT(1X,I3,6X,1PE10.3,3X,E10.3,3X,E10.3) ! END SUBROUTINE SYMSOL (A,B,NN,MM,KKK) ! DIMENSION A(NN,MM),B(1) ! ! A = COEFFICIENT MATRIX. ! B = RIGHT HAND SIDE MATRIX. ! NN = NUMBER OF EQUATIONS (MAX 800 HERE). ! MM = HALF BAND WIDTH (MAX 20 HERE). ! GOTO (1000,2000),KKK ! ! REDUCE COEFFICIENT MATRIX. ! 1000 DO 280 N=1,NN DO 260 L=2,MM C=A(N,L)/A(N,1) I = N+L-1 IF(NN-I) 260,240,240 240 J=0 DO 250 K=L,MM J=J+1 250 A(I,J)=A(I,J)-C*A(N,K) 260 A(N,L)=C 280 CONTINUE GOTO 500 ! ! REDUCE RIGHT HAND SIDE MATRIX. ! 2000 DO 290 N=1,NN DO 285 L=2,MM I=N+L-1 IF(NN-I) 290,285,285 285 B(I)=B(I)-A(N,L)*B(N) 290 B(N)=B(N)/A(N,1) ! ! CARRY OUT BACK SUBSTITUTION. ! N=NN 300 N = N-1 IF(N) 350,500,350 350 DO 400 K=2,MM L = N+K-1 IF(NN-L) 400,370,370 370 B(N) = B(N) - A(N,K) * B(L) 400 CONTINUE GOTO 300 500 RETURN END !---------------------------------------------------------------------------------------- ! ! ! !---------------------------------------------------------------------------------------- SUBROUTINE STRESS(LOAD) ! COMMON/ALL/NELEMS,R(100),Z(100),NODI(100),NODJ(100),NEQ,MBAND COMMON/ISS/C11I(100),C12I(100),C22I(100),C33I(100),C34I(100),C44I(100), & C11J(100),C12J(100),C22J(100),C33J(100),C34J(100),C44J(100) COMMON/ISDS/STATIC(600),SPRING(300),TLOAD(300),S(10),NFORM COMMON/BEAM/LOCJ(10,6),LOCC(10),BSTRES(30),BMOD(10),BAREA(10),& YY(10),ZZ(10),PHI(10),TDIM(10),NBEAMS DIMENSION EJDIS(7),SIGMA(6),STRES(4,7) ! WRITE(4,2000)LOAD DO 120 L=1,NELEMS ! ! FORM MATRIX OF ELEMENT JOINT DISPLACEMENTS ! WRITE(4,2010)L I=NODI(L) J=NODJ(L) EJDIS(1)=TLOAD(3*I-2) EJDIS(2)=TLOAD(3*I-1) EJDIS(3)=TLOAD(3*I) EJDIS(4)=TLOAD(3*J-2) EJDIS(5)=TLOAD(3*J-1) EJDIS(6)=TLOAD(3*J) ! ! FIND MID-SIDE DISPLACEMENT ! EJDIS(7)=0.0 DO 105 M=1,6 N=6*L+M-6 105 EJDIS(7)=EJDIS(7)+STATIC(N)*EJDIS(M) ! ! CONSTANT TERMS FOR ELEMENT STRESS MATRIX ! S(1)=0.0 S(2)=0.5 S(3)=1.0 DR=R(J)-R(I) DZ=Z(J)-Z(I) DL=SQRT(DR**2+DZ**2) COSA=DR/DL SINA=DZ/DL M1=2 M2=2 IF(NFORM.GE.1)M1=1 IF(NFORM.GE.1)M2=3 DO 110 K=M1,M2 ! ! FORM MATERIAL STIFFNESS MATRIX ! X=S(K) C11=C11I(L)+(C11J(L)-C11I(L))*X C12=C12I(L)+(C12J(L)-C12I(L))*X C22=C22I(L)+(C22J(L)-C22I(L))*X C33=C33I(L)+(C33J(L)-C33I(L))*X C34=C34I(L)+(C34J(L)-C34I(L))*X C44=C44I(L)+(C44J(L)-C44I(L))*X ! ! GENERALIZED DISPLACEMENT TRANSFORMATION MATRIX ! RAD=R(I)+DL*COSA*X B1=(-3.0+4.0*X)/DL B2=(-1.0+4.0*X)/DL B3=(1.0-3.0*X+2.0*X*X)*COSA/RAD B4=(1.0-(3.0-2.0*X)*X**2)*SINA/RAD B5=X*(1.0-2.0*X+X**2)*DL*SINA/RAD B6=(-X+2.0*X*X)*COSA/RAD B7=X**2*(3.0-2.0*X)*SINA/RAD B8=X**2*(-1.0+X)*DL*SINA/RAD B9=(-6.0+12.0*X)/DL**2 B10=(-4.0+6.0*X)/DL B11=-B9 B12=(-2.0+6.0*X)/DL B13=(6.0*X-6.0*X*X)*COSA/(DL*RAD) B14=(-1.0+4.0*X-3.0*X*X)*COSA/RAD B15=-B13 B16=(2.0*X-3.0*X*X)*COSA/RAD B17=(4.0-8.0*X)/DL B18=(4.0*X-4.0*X*X)*COSA/RAD ! ! EVALUATE STRESS MATRIX AT POINT S ! STRES(1,1)=SINA*B1*C11+(SINA*B3-COSA*B4)*C12 STRES(1,2)=COSA*B1*C11+(COSA*B3+SINA*B4)*C12 STRES(1,3)=-B5*C12 STRES(1,4)=SINA*B2*C11+(SINA*B6-COSA*B7)*C12 STRES(1,5)=COSA*B2*C11+(COSA*B6+SINA*B7)*C12 STRES(1,6)=-B8*C12 STRES(1,7)=B17*C11+B18*C12 STRES(2,1)=SINA*B1*C12+(SINA*B3-COSA*B4)*C22 STRES(2,2)=COSA*B1*C12+(COSA*B3+SINA*B4)*C22 STRES(2,3)=-B5*C22 STRES(2,4)=SINA*B2*C12+(SINA*B6-COSA*B7)*C22 STRES(2,5)=COSA*B2*C12+(COSA*B6+SINA*B7)*C22 STRES(2,6)=-B8*C22 STRES(2,7)=B17*C12+B18*C22 STRES(3,1)=-COSA*(B9*C33+B13*C34) STRES(3,2)=SINA*(B9*C33+B13*C34) STRES(3,3)=-B10*C33-B14*C34 STRES(3,4)=-COSA*(B11*C33+B15*C34) STRES(3,5)=SINA*(B11*C33+B15*C34) STRES(3,6)=-B12*C33-B16*C34 STRES(3,7)=0.0 STRES(4,1)=-COSA*(B9*C34+B13*C44) STRES(4,2)=SINA*(B9*C34+B13*C44) STRES(4,3)=-B10*C34-B14*C44 STRES(4,4)=-COSA*(B11*C34+B15*C44) STRES(4,5)=SINA*(B11*C34+B15*C44) STRES(4,6)=-B12*C34-B16*C44 STRES(4,7)=0.0 ! ! MULTIPLY ELEMENT STRESS MATRIX AND JOINT DISPLACEMENT MATRIX ! DO 100 M=1,4 SIGMA(M)=0.0 DO 100 N=1,7 100 SIGMA(M)=SIGMA(M)+STRES(M,N)*EJDIS(N) ! ! PRINT ELEMENT STRESSES AT POINT S ! DX=X*DL WRITE(4,2020)DX,(SIGMA(M),M=1,4) ! 110 CONTINUE 120 CONTINUE ! ! EDGE BEAM FORCES ! IF(NBEAMS.LT.1) GOTO 140 WRITE(4,2030)LOAD DO 130 K=1,NBEAMS L=LOCC(K) FXX=BSTRES(3*K-2)*TLOAD(3*L-1) ZZM=BSTRES(3*K-1)*TLOAD(3*L) YYM=BSTRES(3*K)*TLOAD(3*L) 130 WRITE(4,2040)K,FXX,YYM,ZZM 140 CONTINUE ! WRITE(*,141) 141 FORMAT(//2X,'ANALYSIS COMPLETED.'//) RETURN ! 2000 FORMAT( 'ELEMENT STRESS RESULTANTS FOR LOADING CASE NUMBER :',I4////15X,8HLOCATION,4X,27H****** NORMAL FORCES ******,3X,27H***** BENDING MOMENTS *****//27X,27HMERIDIONAL CIRCUMFERENTIAL,3X,27HMERIDIONAL CIRCUMFERENTIAL/) 2010 FORMAT(8H ELEMENT,I3) 2020 FORMAT(15X,F6.2,6X,1PE10.3,4X,E10.3,6X,E10.3,4X,E10.3) 2030 FORMAT(1H1,40HEDGE BEAM FORCES FOR LOADING CASE NUMBER,I3///10H EDGE BEAM,5X,11HAXIAL FORCE,8X,15HBENDING MOMENTS/18X,5H(FXX),10X,5H(MYY),7X,5H(MZZ)/) 2040 FORMAT(3X,I3,9X,1PE10.3,5X,E10.3,3X,E10.3) ! END
Input File : sample.in Output File : s.out ------------------------------------------------ SHELL ANALYSIS PROGRAM Program date : 7 July 2013 Code Amendments : J.M. Nichols Version : 1.1 ------------------------------------------------ This is a Sample input file. NUMBER OF NODAL POINTS ---------- 11 NUMBER OF ELEMENTS -------------- 10 NUMBER OF LOADING CONDITIONS ---- 1 NUMBER OF EDGE BEAMS ------------ 2 Stress Condition Output---------- 1 JOINT DATA NODE RADIUS ORDINATE CODE ********** JOINT SPRINGS ********** VERTICAL HORIZONTAL ROTATIONAL 1 1.00 1.00 0 0.000E+00 0.000E+00 0.000E+00 2 1.00 0.95 0 0.000E+00 0.000E+00 0.000E+00 3 1.00 0.90 0 0.000E+00 0.000E+00 0.000E+00 4 1.00 0.85 0 0.000E+00 0.000E+00 0.000E+00 5 1.00 0.80 0 0.000E+00 0.000E+00 0.000E+00 6 1.00 0.75 0 0.000E+00 0.000E+00 0.000E+00 7 1.00 0.70 0 0.000E+00 0.000E+00 0.000E+00 8 1.00 0.65 0 0.000E+00 0.000E+00 0.000E+00 9 1.00 0.60 0 0.000E+00 0.000E+00 0.000E+00 10 1.00 0.55 0 0.000E+00 0.000E+00 0.000E+00 11 1.00 0.50 111 0.000E+00 0.000E+00 0.000E+00 ELEMENT DATA 0ELEMENT NODE ************* MEMBRANE PROPERTIES ************* ************** BENDING PROPERTIES ************* THICKNESS YOUNGS MODULUS POISSONS RATIO THICKNESS YOUNGS MODULUS POISSONS RATIO (ONE) (TWO) (ONE-TWO) (ONE) (TWO) (ONE-TWO) 1 1 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 2 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 2 2 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 3 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 3 3 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 4 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 4 4 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 5 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 5 5 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 6 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 6 6 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 7 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 7 7 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 8 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 8 8 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 9 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 9 9 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 10 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 10 10 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 11 0.2000 1.000E+01 1.000E+01 0.200 0.1000 1.100E+01 1.100E+01 0.200 EDGE BEAM DATA EDGE BEAM JOINT INDICES YOUNGS MODULUS AREA MOMENT OF INERTIA PRINCIPAL AXIS LARGEST DIMENSION CENTROID NODES (IYY) (IZZ) 1 3 0 2.000E+01 2.000E-01 1.200E+01 1.200E+01 0.000E+00 3.000E+00 2 5 0 2.000E+01 2.000E-01 1.200E+01 1.200E+01 0.000E+00 3.000E+00 LOADING CASE NUMBER 1 FOR pB 0APPLIED NODAL LOADS NODE VERTICAL HORIZONTAL ROTATIONAL 4 0.000E+00 2.000E+00 0.000E+00 1JOINT DISPLACEMENTS FOR LOADING CASE NUMBER 1 NODE VERTICAL HORIZONTAL ROTATIONAL 1 4.585E-02 -4.966E-01 6.330E-02 2 4.090E-02 -4.946E-01 2.831E-02 3 3.595E-02 -4.947E-01 -1.200E-03 4 3.055E-02 -6.204E-01 -4.107E+00 5 2.343E-02 -7.686E-01 -2.099E-03 6 1.537E-02 -8.404E-01 3.232E-01 7 7.175E-03 -7.470E-01 6.639E+00 8 1.286E-03 -3.977E-01 1.059E+01 9 -7.543E-04 -4.065E-02 6.966E+00 10 -3.590E-04 6.672E-02 6.097E-01 11 0.000E+00 0.000E+00 0.000E+00 ELEMENT STRESS RESULTANTS FOR LOADING CASE NUMBER : 1 LOCATION ****** NORMAL FORCES ****** ***** BENDING MOMENTS ***** MERIDIONAL CIRCUMFERENTIAL MERIDIONAL CIRCUMFERENTIAL ELEMENT 1 0.00 -7.248E-05 -9.933E-01 1.288E-03 -2.576E-04 0.03 2.987E-05 -9.908E-01 6.682E-04 -1.336E-04 0.05 -5.007E-05 -9.892E-01 4.840E-05 -9.683E-06 ELEMENT 2 0.00 -8.583E-05 -9.892E-01 2.420E-03 -4.840E-04 0.03 2.458E-05 -9.890E-01 5.636E-04 -1.127E-04 0.05 -1.907E-05 -9.895E-01 -1.293E-03 2.586E-04 ELEMENT 3 0.00 -8.086E-03 -9.911E-01 1.310E-01 -2.620E-02 0.02 3.563E-03 -1.063E+00 7.841E-02 -1.568E-02 0.05 -6.173E-03 -1.242E+00 2.582E-02 -5.164E-03 ELEMENT 4 0.00 5.231E-03 -1.240E+00 2.576E-02 -5.151E-03 0.03 -3.565E-03 -1.441E+00 -7.839E-02 1.568E-02 0.05 9.019E-03 -1.535E+00 -1.825E-01 3.651E-02 ELEMENT 5 0.00 -2.763E-03 -1.538E+00 1.767E-01 -3.534E-02 0.03 -2.841E-04 -1.613E+00 -6.212E-03 1.242E-03 0.05 3.889E-03 -1.680E+00 -1.891E-01 3.783E-02 ELEMENT 6 0.00 7.600E-03 -1.679E+00 6.437E-02 -1.287E-02 0.03 -5.485E-03 -1.667E+00 -1.206E-01 2.412E-02 0.05 1.433E-02 -1.491E+00 -3.056E-01 6.112E-02 ELEMENT 7 0.00 3.468E-03 -1.493E+00 1.113E-01 -2.226E-02 0.03 -3.436E-03 -1.195E+00 -7.554E-02 1.511E-02 0.05 1.026E-02 -7.934E-01 -2.624E-01 5.247E-02 ELEMENT 8 0.00 -9.718E-03 -7.973E-01 2.571E-01 -5.142E-02 0.02 3.148E-03 -3.924E-01 6.931E-02 -1.386E-02 0.05 -2.888E-03 -8.187E-02 -1.185E-01 2.370E-02 ELEMENT 9 0.00 -1.445E-02 -8.419E-02 3.093E-01 -6.187E-02 0.03 5.515E-03 1.066E-01 1.214E-01 -2.428E-02 0.05 -7.619E-03 1.319E-01 -6.658E-02 1.332E-02 ELEMENT 10 0.00 -4.475E-03 1.325E-01 1.995E-01 -3.989E-02 0.03 5.270E-04 7.444E-02 1.164E-02 -2.329E-03 0.05 2.354E-03 4.709E-04 -1.762E-01 3.524E-02 1EDGE BEAM FORCES FOR LOADING CASE NUMBER 1 EDGE BEAM AXIAL FORCE BENDING MOMENTS (FXX) (MYY) (MZZ) 1 -1.979E+00 2.881E-01 0.000E+00 2 -3.074E+00 5.037E-01 0.000E+00
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
John,
Thanks for the example. This is a very early version of code from Graham Powell as he published a banded solver by 1974. Is this an axisymmetric shell element ? I have not used this analysis. If it is axisymmetric, then it would be a challenge to exceed the memory requirement of even 32-bit.
Do you recall the real and integer precision and computer that was used when this code was developed ?
You will notice that this code was developed before virtual memory was a consideration, as it would now run faster if
SUBROUTINE SYMSOL (A,B,NN,MM,KKK) ! DIMENSION A(NN,MM),B(1) ! A(neq,mband)
was changed to
SUBROUTINE SYMSOL (A,B,NN,MM,KKK) ! DIMENSION A(MM,NN),B(1) ! A(mband,neq)
I have changed the program you have provided to:
- Declare variables as either integer*4 or real*8, to cope with the expected precision,
- include parameters for key dimensions
- Introduced some fortran 90 syntax for the do loops in SYMSOL
- Changed the subscript order in TSTIFF
I guessed the sample data file and produced similar results. Hopefully I have included minimal bugs.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page