TALK=T;RUN(1,1)
TALK=f;RUN(1,1) DISPLAY A cubical block is subjected to a tensile force, under three possible lateral-constraint conditions: 1. no constraint 2. lateral displacement in y and z directions prevented 3. lateral displacement prevented only in y direction The boolean variable 'direct' toggles which end is fixed and which is pulled. The stresses and strains are calculated; and their textbook values are also printed for comparison. One fluid cell is provided at each to facilitate application of boundary conditions ENDDIS ************************************************************ Group 1. Run Title and Number ************************************************************ TEXT(x-direction mechanical stress in cube integer(caseno) mesg(caseno = 1 ! 1=x-direction tension, y & z free mesg(caseno = 2 ! ditto , y & z fixed mesg(caseno = 3 ! ditto , y fixed, z free caseno=1 label ask mesg(caseno=:caseno: Enter 1, 2 or 3 or blank readvdu(caseno,int,1) if(caseno.lt.1) then goto ask endif if(caseno.gt.3) then goto ask endif caseno real(appstr) appstr = 1.e9 ! applied stress appstr boolean(direct) direct=t direct ************************************************************ Group 2. Time dependence STEADY = T ************************************************************ Group 3. X-Direction Grid Spacing CARTES = t NX = 10 NX = 5 XULAST = 1.0*(NX+2) ************************************************************ Group 4. Y-Direction Grid Spacing NY = 1 YVLAST=1.0 #UNIGRID ************************************************************ Group 5. Z-Direction Grid Spacing NZ = 1 ZWLAST = 1.000000E+00 ************************************************************ Group 7. Variables: STOREd,SOLVEd,NAMEd ONEPHS = T SOLVE(P1,U1) STORE(PRPS,DEN1,ENUL,DVO1,DRH1) STORE(PTH) ! TH signifies 'theoretical' i.e. 'textbook' STORE(STRX,SXTH) STORE(STRY,SYTH) STORE(STRZ,SZTH) STORE(EPSX,EXTH) STORE(EPSY,EYTH) STORE(EPSZ,EZTH) Group 8. iteration numbers etc RESREF(U1)=0.0 ************************************************************ GROUP 9. PROPERTIES CSG10='Q1' ! signal use of the following properties line ! which correspond to steel MATFLG=T;NMAT=1 160 7800.0 0.3 473.0 43.0 0.37e-5 0.5E-11 REAL(YOUNG, POISSON) POISSON = 0.3 ! must conform with matflg value YOUNG = 1/(0.5E-11) ! must conform with matflg value ************************************************************ GROUP 11. INITIAL VALUES FIINIT(PRPS)=0 FIINIT(P1)=0.0 FIINIT(U1)=0.0 FIINIT(V1)=0.0 FIINIT(W1)=0.0 FIINIT(EXTH)=-1.234E-11 ! to print as none FIINIT(EYTH)=-1.234E-11 ! to print as none FIINIT(EZTH)=-1.234E-11 ! to print as none FIINIT(SXTH)=-1.234E-11 ! to print as none FIINIT(SYTH)=-1.234E-11 ! to print as none FIINIT(SZTH)=-1.234E-11 ! to print as none PATCH(BLOCK,INIVAL,2,NX-1,1,1,1,1,1,1) INIT (BLOCK,PRPS,FIXVAL,160) ************************************************************ GROUP 13. BOUNDARY & SPECIAL SOURCES IF(DIRECT) THEN PATCH(WES,WEST,1,1,1,1,1,1,1,1) COVAL(WES,U1,FIXVAL, 0.0) PATCH(EFORCE,EAST,NX-1,NX-1,1,1,1,1,1,1) COVAL(EFORCE,U1,FIXFLU,APPSTR) ELSE PATCH(EAS,EAST,NX-1,NX-1,1,1,1,1,1,1) COVAL(EAS,U1,FIXVAL, 0.0) PATCH(EFORCE,EAST,1,1,1,1,1,1,1,1) COVAL(EFORCE,U1,FIXFLU,-APPSTR) ENDIF ************************************************************ GROUP 15. TERMINATE SWEEPS LSWEEP = 100 ISG21 = 20 ! to ensure at least isg21 sweeps ************************************************************ GROUP 17. RELAXATION #CONPROM ************************************************************ GROUP 19. DATA TRANSMITTED TO GROUND STRA = T To activate stress analysis ************************************************************ GROUP 23.FIELD PRINT-OUT & PLOT CONTROL NYPRIN=1 TSTSWP=-1 #MAXABS #ENDPAUSE REAL(PTH,EXTH,EYTH,EZTH,SXTH,SYTH,SZTH,TERM) Formulae for the theoretical values IF(CASENO.EQ.1) THEN SXTH=APPSTR EXTH=APPSTR/YOUNG EYTH=-EXTH*POISSON EZTH=-EXTH*POISSON SYTH=0.0 SZTH=0.0 ENDIF IF(CASENO.EQ.2) THEN EYTH=0.0 EZTH=0.0 TERM=APPSTR EXTH=(APPSTR/YOUNG)*(1+POISSON)*(1-2*POISSON)/(1-POISSON) SXTH=TERM SYTH=TERM*POISSON/(1-POISSON) SZTH=TERM*POISSON/(1-POISSON) ENDIF IF(CASENO.EQ.3) THEN EYTH=0 SZTH=0 SXTH=APPSTR EXTH=(SXTH/YOUNG)*(1+POISSON)*(1-POISSON) EZTH=-EXTH*POISSON/(1-POISSON) PTH=EXTH+EZTH SYTH=PTH*YOUNG*POISSON/(1-2*POISSON)/(1+POISSON) ENDIF (STORED VAR SXTH IS :SXTH: WITH IMAT>100) (STORED VAR SYTH IS :SYTH: WITH IMAT>100) (STORED VAR SZTH IS :SZTH: WITH IMAT>100) (STORED VAR EXTH IS :EXTH: WITH IMAT>100) (STORED VAR EYTH IS :EYTH: WITH IMAT>100) (STORED VAR EZTH IS :EZTH: WITH IMAT>100) PTH=EXTH+EYTH+EZTH (STORED VAR PTH IS :PTH:) SPEDAT(RLXFAC,RLXU1D,R,0.1) IF(CASENO.EQ.2) THEN SPEDAT(BOUNDARY,YCONST,R,1.E20) ! prevent y displacement SPEDAT(BOUNDARY,ZCONST,R,1.E20) ! prevent z displacement ENDIF IF(CASENO.EQ.3) THEN SPEDAT(BOUNDARY,YCONST,R,1.E20) ! prevent y displacement ENDIF STOP