```txt IF(FNORM.LT.ALLOW) GO TO 70 SPVP 77 EPBAR=SQRT((2.0*(AVECT(1)*AVECT(1)+AVECT(2)*AVECT(2)+AVECT(4) SPVP 78 .*AVECT(4))+AVECT(3)*AVECT(3))/3.0) SPVP 79 TSBAR=SQRT((2.0*(SVECT(1)*SVECT(1)+SVECT(2)*SVECT(2)+SVECT(4) SPVP 80 .*SVECT(4))+SVECT(3)*SVECT(3))/3.0) SPVP 81 DELTM=TAUFT*TSBAR/EPBAR SPVP 82 IF(DELTM.LT.DNEXT) DNEXT=DELTM SPVP 83 70 CONTINUE SPVP 84 80 CONTINUE SPVP 85 DTIME=DNEXT SPVP 86 IF(ISTEP.EQ.1) DTIME=DTINT SPVP 87 KGAUS=0 SPVP 88 DO 140 IELEM=1,NELEM SPVP 89 LPROP=MATNO(IELEM) SPVP 90 DO 90 INODE=1,NNODE SPVP 91 LNODE=IABS(LNODS(IELEM,INODE)) SPVP 92 NPOSN=(LNODE-1)*NDOFN SPVP 93 DO 90 IDOFN=1,NDOFN SPVP 94 NPOSN=NPOSN+1 SPVP 95 90 ELCOD(IDOFN,INODE)=COORD(LNODE,IDOFN) SPVP 96 THICK=PROPS(LPROP,3) SPVP 97 KGASP=0 SPVP 98 DO 130 IGAUS=1,NGAUS SPVP 99 DO 130 JGAUS=1,NGAUS SPVP 100 EXISP=POSGP(IGAUS) SPVP 101 ETASP=POSGP(JGAUS) SPVP 102 KGAUS=KGAUS+1 SPVP 103 KGASP=KGASP+1 SPVP 104 CALL SFR2(DERIV,ETASP,EXISP,NNODE,SHAPE) SPVP 105 CALL JACOB2(CARTD,DERIV,DJACB,ELCOD,GPCOD,IELEM,KGASP,NNODE,SHAPE) SPVP 106 DVOLU=DJACB*WEIGP(IGAUS)*WEIGP(JGAUS) SPVP 107 IF(NTYPE.EQ.3) DVOLU=DVOLU*TWOPI*GPCOD(1,KGASP) SPVP 108 IF(THICK.NE.0.0) DVOLU=DVOLU*THICK SPVP 109 CALL BMATPS(BMATX,CARTD,NNODE,SHAPE,GPCOD,NTYPE,KGASP) SPVP 110 CALL MODPS(DMATX,LPROP,MMATS,NTYPE,PROPS) SPVP 111 DO 100 ISTR1=1,NSTR1 SPVP 112 100 STRES(ISTR1)=STRSG(ISTR1,KGAUS) SPVP 113 CALL INVAR(DEVIA,LPROP,MMATS,NCRIT,PROPS,SINT3,STEFF,STRES,THETA, SPVP 114 .VARJ2,YIELD) SPVP 115 IF(TIMEX.GT.0.0) CALL TANGVP(LPROP,STRES,PROPS,TIMEX,DTIME, SPVP 116 .NSTRE,NTYPE,MMATS,NCRIT,DMATX) SPVP 117 C SPVP 118 C*** CALCULATE THE RESIDUAL FORCES AND INCREMENTAL PSEUDO LOADS SPVP 119 C SPVP 120 DO 110 ISTRE=1,NSTRE SPVP 121 STRES(ISTRE)=0.0 SPVP 122 DO 110 JSTRE=1,NSTRE SPVP 123 110 STRES(ISTRE)=STRES(ISTRE)+DMATX(ISTRE,JSTRE)*VIVEL(JSTRE,KGAUS) SPVP 124 .*DTIME SPVP 125 MGASH=0 SPVP 126 DO 120 INODE=1,NNODE SPVP 127 DO 120 IDOFN=1,NNODFN SPVP 128 MGASH=MGASH+1 SPVP 129 DO 120 ISTRE=1,NSTRE SPVP 130 120 ELOAD(IELEM,MGASH)=ELOAD(IELEM,MGASH)+BMATX(ISTRE,MGASH) SPVP 131 .*(STRES(ISTRE)-STRSG(ISTRE,KGAUS))*DVOLU SPVP 132 130 CONTINUE SPVP 133 140 CONTINUE SPVP 134 DO 150 IELEM=1,NELEM SPVP 135 DO 150 IEVAB=1,NEVAB SPVP 136 150 ELOAD(IELEM,IEVAB)=ELOAD(IELEM,IEVAB)+TLOAD(IELEM,IEVAB) SPVP 137 RETURN SPVP 138 END SPVP 139 ``` SPVP 20 Compute 2π. SPVP 21–23 Zero the array in which the pseudo loads for the next time-step will be stored. SPVP 24 Zero the Gauss point counter over all elements. SPVP 25 Increase the timestep length from the value used for the previous step by the factor FTIME. If this new value is less than that predicted later in this routine, this step length will be employed for the next time step. SPVP 26 Loop over each element. SPVP 27 Identify the element material property number. SPVP 32-39 Store the element coordinates in array ELCOD, the incremental displacements $\Delta d^{n}$ in ELDIS and the total displacements $d^{n}$ in TLDIS. SPVP 40 Identify the element thickness. SPVP 41 Zero the local Gauss point counter. SPVP 42–45 Enter the loops for numerical integration and evaluate the local coordinates $(\xi, \eta)$ at the sampling point. SPVP 46–47 Increment the local and global Gauss point counters. SPVP 48 Compute the elasticity matrix, D. SPVP 49–50 Store the total current stresses $\sigma^{n}$ locally in STRES. SPVP 51–52 Evaluate the deviatoric stresses and $J_{2}^{\prime}$ . SPVP 53-54 For the implicit or semi-implicit time stepping scheme evaluate $\hat{D}^n$ . SPVP 55 Evaluate the shape functions $N_{i}$ and the derivatives $\partial N_{i}/\partial\xi$ , $\partial N_{i}/\partial\eta$ . SPVP 56 Evaluate the Gauss point coordinates GPCOD(IDIME, KGASP), the determinant of the Jacobian matrix $|J|$ and the Cartesian derivatives of the shape functions. SPVP 57–59 Calculate the elemental volume for numerical integration as $|J|W_{\xi}W_{\eta}$ taking care to multiply by $2\pi r$ for axisymmetric problems. SPVP 60–62 Call subroutine STRESS to evaluate the stress increment $\Delta\sigma^{n}$ according to (8.20) and also $\sigma^{n+1} = \sigma^{n} + \Delta\sigma^{n}$ . SPVP 63–65 Evaluate the incremental viscoplastic strain and the total current viscoplastic strain, $\epsilon_{vp}^{n+1}$ . SPVP 66–67 Accumulate the absolute value of the viscoplastic strain increment. This will allow us to monitor whether or not steady state conditions are being approached. SPVP 70 Also calculate the total current effective viscoplastic strain $\bar{\epsilon}_{vp}^{n+1}$ according to (8.47). SPVP 71–76 Evaluate the current viscoplastic flow rate $\dot{\epsilon}_{vp}^{n+1}$ according to (8.7). SPVP 77 If the Gauss point is elastic, avoid calculation of the new time step length. SPVP 78–79 Calculate $\bar{\epsilon}_{vp}^{n+1}$ , the effective value of the viscoplastic strain rate. SPVP 80-81 Calculate $\bar{\epsilon}^{n+1}$ , the total effective strain. SPVP 82-83 Evaluate the interval length for the next time step according to (8.29) as $$ \Delta t _ {n + 1} = \tau \left[ \frac {\bar {\epsilon} ^ {n + 1}}{\bar {\epsilon} _ {v p} ^ {n + 1}} \right] _ {\min} ^ {1 / 2}, $$ where TFACT is the parameter $\tau$ and the minimum value of $\Delta t_{n+1}$ is taken with respect to all Gauss points throughout the structure. SPVP 84–85 Termination of loops over Gauss points and elements respectively. SPVP 87 For the first time step of a load increment reset the step length equal to the initial value input. SPVP 88 Zero the Gauss point counter over all elements. SPVP 89 Loop over each element. SPVP 90 Identify the element material property number. SPVP 91-96 Store the element coordinates in array ELCOD. SPVP 97 Identify the element thickness. SPVP 98 Zero the local Gauss point counter. SPVP 99–102 Enter the loops for numerical integration and evaluate the local coordinates $(\xi, \eta)$ at the sampling point. SPVP 103-104 Increment the local and global Gauss point counters. SPVP 105 Evaluate the shape functions and their local derivatives. SPVP 106 Evaluate the Gauss point coordinates, determinant of the Jacobian matrix and the Cartesian derivatives of the shape functions. SPVP 107-109 Calculate the elemental volume for numerical integration. SPVP 110 Evaluate the B matrix. SPVP 111 Evaluate the D matrix. SPVP 112–113 Store the total current stresses $\sigma^{n+1}$ locally in STRES. SPVP 114–115 Calculate the deviatoric stresses and $J_{2}^{\prime}$ . SPVP 116–117 For the implicit or semi-implicit time stepping scheme evaluate $\hat{D}^{n+1}$ . SPVP 121-125 Calculate $\hat{D}^{n+1}\dot{\epsilon}_{vp}^{n+1}\Delta t_{n+1}$ and store locally in STRES. SPVP 126–132 Evaluate the pseudo loads to be applied for the next timestep, $\Delta V^{n+1}$ according to (8.28) and (8.34) as $$ \Delta V ^ {n + 1} = \int_ {\Omega} B ^ {T} \left\{\hat {D} ^ {n + 1} \dot {\epsilon} _ {r p} ^ {n + 1} \Delta t _ {n + 1} + \sigma^ {n + 1} \right\} d \Omega + f ^ {n + 1}. $$ SPVP 133-134 Termination of loops over Gauss points and elements respectively. SPVP 135–137 Complete the computations of SPVP 126–132 by adding the term $f^{n+1}$ . Subroutine INVAR which calculates the deviatoric stresses and $J_{2}^{\prime}$ is identical to that employed in Chapter 7 for elasto-plastic problems and is described in detail in Section 7.8.3. Subroutine YIELDF has been previously described in Section 7.8.4.1. # 8.9 Subroutine FLOWVP The function of this subroutine is to determine the viscoplastic strain rate according to (8.7). Subroutine FLOWVP is now presented and described. ```txt SUBROUTINE FLOWVP(AVECT, PROPS, LPROP, STEFF, NSTR1, MTOTG, VIVEL, YIELD, KGAUS, MMATS, NCRIT, FNORM, ALLOW) FLVP 1 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 DIMENSION AVECT(4), PROPS(MMATS, 10), VIVEL(5, MTOTG) FLVP 8 ALLOW=0.01 FLVP 9 IF(STEFF.EQ.0.0) GO TO 90 FLVP 10 YOUNG=PROPS(LPROP, 1) FLVP 11 POISS=PROPS(LPROP, 2) FLVP 12 HARDS=PROPS(LPROP, 6) FLVP 13 FRICT=PROPS(LPROP, 7) FLVP 14 GAMMA=PROPS(LPROP, 8) FLVP 15 DELTA=PROPS(LPROP, 9) FLVP 16 NFLOW=PROPS(LPROP, 10) FLVP 17 ROOT3=1.73205080757 FLVP 18 FDATM=PROPS(LPROP, 5) FLVP 19 FRICT=FRICT*0.017453292 FLVP 20 IF(NCRIT.EQ.3) FDATM=FDATM*COS(FRICT) FLVP 21 IF(NCRIT.EQ.4) FDATM=6.0*FDATM*COS(FRICT)/(ROOT3*(3.0-SIN(FRICT)))FLVP 22 IF(HARDS.GT.0.0) FDATM=FDATM+VIVEL(5, KGAUS)*HARDS FLVP 23 IF(FDATM.LT.0.001) FDATM=1.0 FLVP 24 FCURR=YIELD-FDATM FLVP 25 FNORM=FCURR/FDATM FLVP 26 IF(FNORM.LT.ALLOW) GO TO 90 FLVP 27 IF(NFLOW.EQ.1) GO TO 50 FLVP 28 CMULT=GAMMA*(EXP(DELTA*FNORM)-1.0) FLVP 29 GO TO 60 FLVP 30 50 CMULT=GAMMA*(FNORM**DELTA) FLVP 31 60 DO 70 ISTR1=1, NSTR1 FLVP 32 70 AVECT(ISTR1)=CMULT*AVECT(ISTR1) FLVP 33 DO 80 ISTR1=1, NSTR1 FLVP 34 80 VIVEL(ISTR1, KGAUS)=AVECT(ISTR1) FLVP 35 RETURN FLVP 36 90 DO 100 ISTR1=1, NSTR1 FLVP 37 100 VIVEL(ISTR1, KGAUS)=0.0 FLVP 38 RETURN FLVP 39 END FLVP 40 ``` FLVP 9 Specify ALLOW, the permitted tolerance by which the stress point is allowed to deviate from the yield surface. FLVP 10 For the (unlikely) case of a Gauss point with zero stress (identified by $J_2' = J_3' = 0$ ) avoid all viscoplastic calculations. FLVP 11 Identify YOUNG as the elastic modulus, E. FLVP 12 Identify POISS as the Poissons ratio, v. FLVP 13 Identify HARDS as $H'$ for linear strain hardening. FLVP 14 Identify FRICT as the friction angle $\phi$ for Mohr-Coulomb and Drucker-Prager materials. FLVP 15 Identify GAMMA as the fluidity parameter, $\gamma$ . FLVP 16 Identify DELTA as the index $M$ in (8.8) or $N$ in (8.9), according to the flow function specified. FLVP 17 Identify NFLOW as the parameter specifying type of flow function: NFLOW = 0 - flow function (8.8) to be used, NFLOW = 1 - flow function (8.9) to be used. FLVP 18 Compute √(3). FLVP 19–22 Identify FDATM as the effective yield stress, $\sigma_{Y}^{0}$ , according to Column 4, Table 7.2. FLVP 23 Evaluate the current yield stress as $F_0 = \sigma Y^0 + H' \bar{\epsilon}_{vp}$ , where $\bar{\epsilon}_{vp}$ is the current effective viscoplastic strain, according to (8.47). FLVP 24 For elastic creep problems, solved by setting $F_{0}=0$ , reset $F_{0}$ as a low value to avoid overflow in (8.8) and (8.9). FLVP 25–26 Calculate $(F-F_{0})/F_{0}$ where F is the effective stress value evaluated as YIELD in subroutine INVAR. FLVP 27 If $(F-F_{0})/F_{0}$ is less than ALLOW avoid any further visco-plastic calculations, i.e. the stress point is assumed to be sufficiently close to the yield surface. FLVP 29 Evaluate $\gamma\langle\phi\rangle$ for flow function (8.8). FLVP 31 Evaluate $\gamma\langle\Phi\rangle$ for flow function (8.9). FLVP 32-35 Use flow vector a to form $\dot{\epsilon}_{vp}^{n+1} = \gamma\langle\Phi\rangle a^{n+1}$ . FLVP 37–38 For elastic points only, set the viscoplastic strain rate to zero. # 8.10 Subroutine STRESS The function of this subroutine is to evaluate the increment in stress occurring during a time step according to (8.20). Subroutine STRESS is presented below: SUBROUTINE STRESS(DMATX, LPROP, NTYPE, PROPS, NDOFN, CARTD, ELDIS, STRS 1 . SHAPE, GPCOD, NSTRE, VIVEL, DTIME, STRSG, KGASP, STRS 2 . MTOTG, MMATS, SVECT, NNODE, NSTR1, KGAUS, TLDIS) STRS 3 CSTRS 4 C STRS 5 C\*\*\*\* EVALUATE THE INCREMENTS OF STRAIN AND STRESS STRS 6 C STRS 7 C $^{*}$ SSTRS 8 ```asm DIMENSION SVECT(4), PROPS(MMATS,10), ELDIS(2,9), CARTD(2,9), STRS 9 . DMATX(4,4), AGASH(2,2), STRES(4), STRAN(4), STRSG(4,MTOTG), STRS 10 . SHAPE(9), VIVEL(5,MTOTG), TLDIS(2,9), CGASH(2,2), STRS 11 . GPCOD(2,9) STRS 12 POISS=PROPS(LPROP,2) STRS 13 DO 10 IDOFN=1, NDOFN STRS 14 DO 10 JDOFN=1, NDOFN STRS 15 BGASH=0.0 STRS 16 DGASH=0.0 STRS 17 DO 20 INODE=1, NNODE STRS 18 DGASH=DGASH+CARTD(JDOFN, INODE)*TLDIS(IDOFN, INODE) STRS 19 20 BGASH=BGASH+CARTD(JDOFN, INODE)*ELDIS(IDOFN, INODE) STRS 20 CGASH(IDOFN, JDOFN)=BGASH STRS 21 10 AGASH(IDOFN, JDOFN)=DGASH STRS 22 C STRS 23 C*** CALCULATE THE TOTAL AND INCREMENTAL STRAINS STRS 24 C STRS 25 SVECT(1)=AGASH(1,1) STRS 26 SVECT(2)=AGASH(2,2) STRS 27 SVECT(3)=AGASH(1,2)+AGASH(2,1) STRS 28 IF(NTYPE.NE.3) GO TO 70 STRS 29 SVECT(4)=0.0 STRS 30 DO 60 INODE=1, NNODE STRS 31 SVECT(4)=SVECT(4)+TLDIS(1, INODE)*SHAPE(INODE)/GPCOD(1, KGASP) STRS 32 60 CONTINUE STRS 33 70 CONTINUE STRS 34 STRAN(1)=CGASH(1,1) STRS 35 STRAN(2)=CGASH(2,2) STRS 36 STRAN(3)=CGASH(1,2)+CGASH(2,1) STRS 37 IF(NTYPE.NE.3) GO TO 90 STRS 38 STRAN(4)=0.0 STRS 39 DO 80 INODE=1, NNODE STRS 40 STRAN(4)=STRAN(4)+ELDIS(1, INODE)*SHAPE(INODE)/GPCOD(1, KGASP) STRS 41 80 CONTINUE STRS 42 90 CONTINUE STRS 43 DO 50 ISTRE=1, NSTRE STRS 44 50 STRAN(ISTRE)=STRAN(ISTRE)-VIVEL(ISTRE, KGAUS)*DTIME STRS 45 C STRS 46 C*** AND THE INCREMENTAL STRESSES STRS 47 C STRS 48 DO 30 ISTRE=1, NSTRE STRS 49 STRES(ISTRE)=0.0 STRS 50 DO 30 JSTRE=1, NSTRE STRS 51 30 STRES(ISTRE)=STRES(ISTRE)+DMATX(ISTRE, JSTRE)*STRAN(JSTRE) STRS 52 IF(NTYPE.EQ.1) STRES(4)=0.0 STRS 53 IF(NTYPE.EQ.2) STRES(4)=POISS*(STRES(1)+STRES(2)) STRS 54 DO 40 ISTR1=1, NSTR1 STRS 55 40 STRSG(ISTR1, KGAUS)=STRSG(ISTR1, KGAUS)+STRES(ISTR1) STRS 56 RETURN STRS 57 END STRS 58 ``` STRS 13 Identify POISS as the material Poisson's ratio. STRS 14–22 Evaluate the Cartesian derivatives of both the displacement increment and the total displacement. STRS 26-33 Evaluate the total and incremental strains $Bd^{n}$ and $B\Delta d^{n}$ . STRS 34-45 Calculate the elastic portion of the strains, $B\Delta d^n - \dot{\epsilon}_{vp^n}\Delta t_n$ . STRS 49–52 Calculate the stresses according to (8.20). STRS 53–54 For plane stress and plane strain problems evaluate the out-of-plane stress component. STRS 55-56 Finally calculate the total current stress as $\sigma^{n+1} = \sigma^n + \Delta \sigma^n$ . # 8.11 Subroutine ZERO This subroutine performs the same task as the subroutine described in Section 7.8.2 for elasto-plastic problems. It merely initializes to zero some arrays required for the accumulation of data. Subroutine ZERO is presented below without further comment. ```asm SUBROUTINE ZERO(ELOAD,MELEM,MEVAB,MPOIN,MTOTG,MTOTV,NDOFN,NELEM, ZRO2 1 . NEVAB,NGAUS,NSTR1,NTOTG,NTOTV,NVFIX,STRSG, ZRO2 2 . TDISP,VIVEL,VISTN,TTIME,TLOAD,TREAC, ZRO2 3 . TFACT,MVFIX) ZRO2 4 C******************************* C******************************* C******************************* C******************************* C******************************* DIMENSION ELOAD(MELEM,MEVAB),STRSG(4,MTOTG),TDISP(MTOTV), ZRO2 10 . TLOAD(MELEM,MEVAB),TREAC(MVFIX,2),VIVEL(5,MTOTG), ZRO2 11 . VISTN(4,MTOTG) ZRO2 12 TTIME=0.0 ZRO2 13 TFACT=0.0 ZRO2 14 DO 30 IELEM=1,NELEM ZRO2 15 DO 30 IEVAB=1,NEVAB ZRO2 16 ELOAD(IELEM,IEVAB)=0.0 ZRO2 17 30 TLOAD(IELEM,IEVAB)=0.0 ZRO2 18 DO 40 ITOTV=1,NTOTV ZRO2 19 40 TDISP(ITOTV)=0.0 ZRO2 20 DO 50 IVFIX=1,NVFIX ZRO2 21 DO 50 IDOFN=1,NDOFN ZRO2 22 50 TREAC(IVFIX,IDOFN)=0.0 ZRO2 23 DO 60 ITOTG=1,NTOTG ZRO2 24 VIVEL(5,ITOTG)=0.0 ZRO2 25 DO 60 ISTR1=1,NSTR1 ZRO2 26 VISTN(ISTR1,ITOTG)=0.0 ZRO2 27 VIVEL(ISTR1,ITOTG)=0.0 ZRO2 28 60 STRSG(ISTR1,ITOTG)=0.0 ZRO2 29 RETURN ZRO2 30 END ZRO2 31 ``` # 8.12 Subroutine STEADY for monitoring steady state convergence The role of this subroutine is to check whether or not steady state conditions have been achieved at the end of each time step. Convergence to a steady state condition is monitored according to the increment in viscoplastic strain which occurs during the time step. For checking purposes the effective viscoplastic strain rate, $\dot{e}_{vp}^{n+1}$ , defined by (8.47) is employed and steady state conditions are deemed to have been achieved at the end of time step n, if $$ \left(\Delta t _ {n + 1} \sum_ {\text { All Gauss points }} \bar {\dot {\epsilon}} _ {v p} ^ {n + 1} / \Delta t _ {1} \sum_ {\text { All Gauss points }} \bar {\dot {\epsilon}} _ {v p} ^ {1}\right) \times 1 0 0 \leqslant \text { TOLER }, \tag {8.48} $$ where TOLER is a convergence tolerance value prescribed as input in Subroutine INCREM, described in Section 6.5.3. From (8.48) it is seen that a global measure of convergence is taken in the subroutine presented in this section. A local steady state convergence condition could alternatively be enforced by requiring (8.48) to be satisfied for each Gauss point in the structure which is yielding viscoplastically. The structure of this subroutine is identical to that of subroutine CONVP, presented in Section 4.9, for one-dimensional structures. Subroutine STEADY is now presented. ```csv SUBROUTINE STEADY(NELEM,NGAUS,NCHEK,VIVEL,ISTEP,FIRST,TOLER,PVALU,STDY 1 . MTOTG,DTIME,NSTR1,TTIME) STDY 2 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 C ``` # 8.13 The main, master or controlling segment This segment controls the timestepping process and accesses all the other subroutines appropriately. In particular it controls the increment of the applied loads and the output of results at selected time intervals. The frequency of output is controlled by means of two parameters NOUTP(1) and NOUTP(2) which are specified as input data for every load increment in subroutine INCREM described in Section 6.5.3. The precise specification of these parameters is however somewhat different for the present application. In this case NOUTP(1) controls the frequency of output of the displacements and NOUTP(2) the frequency of output of the stresses and viscoplastic strains. In particular, if NOUTP(1) is specified as 7 for a particular load increment, then the displacements will be output every 7th timestep within that increment. This is accomplished by evaluating for every timestep, ISTEP, the quantity $$ (\text { ISTEP } / \text { NOUTP } (1)) ^ {*} \text { NOUTP } (1) $$ and then checking this value against ISTEP. The two will be equal only when ISTEP is an exact multiple of NOUTP(1). A similar check for stress output is undertaken for NOUTP(2). The parameter MSTEP specifies the maximum number of timesteps to be considered for the load increment. If steady state conditions are achieved before MSTEP timesteps, the next load increment, is applied immediately condition (8.48) is satisfied. The role of the load incrementing factor, FACTO, is identical to that described in Section 6.5.3. In this segment input data is also received which controls the timestepping algorithm to be employed. The following information is input: TIMEX Parameter, $\Theta$ , which controls the type of timestepping algorithm to be employed: $$ \begin{array}{l} \text { TIMEX } = 0. 0 \text { -Explicit scheme }, \\ = 0. 5 - \text { Semi - implicit or trapezoidal scheme }, \\ = 1. 0 - \text { Fully implicit }. \\ \end{array} $$ TAUFT- The parameter $\tau$ discussed in Section 8.3. DTINT The initial time step length. This specifies the step length for the first time step of each load increment. The time step length needs to be readjusted at the beginning of a new load increment since the step length computed as steady state conditions are approached in the previous time step will in general be too large. FTIME The factor by which it is attempted to increase the step length from the value used for the previous time step. This parameter is generally input as 1.5 as mentioned in Section 8.3. The following channel numbers are employed by the program: 5 (card reader), 6 (line printer), 1, 2, 3, 4, 8 (scratch files). This main segment is now presented and descriptive notes provided where necessary. ```asm MASTER VISCO 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 DIMENSION ASDIS(120),COORD(60,2),ELOAD(20,18),ESTIF(18,18), EQRHS(10),EQUAT(40,10),FIXED(120), GLOAD(40),GSTIF(986), IFFIX(120),LNODS(20,9),LOCEL(18),MATNO(20), NACVA(40),NAMEV(10),NDEST(18),NDFRO(20),NOFIX(25), NOUTP(2),NPIVO(10), POSGP(4),PRESC(25,2),PROPS(5,10),RLOAD(20,18), STFOR(120),TREAC(25,2),VECRV(40),WEIGP(4), STRSG(4,180),TDISP(120), TLOAD(20,18),VIVEL(5,180),VISTN(4,180) TLOAD(20,18),VIVEL(5,180),VISTN(4,180) TLOAD(20,18),VIVEL(5,180),VISTN(4,180) TLOAD(20,18),VIVEL(5,180),VISTN(4,180) TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18), TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18) TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,18),VIVEL TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) VIVEL TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20 TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) TLOAD(20,12) ```