matrix is proportional to the mass and stiffness matrix. This is known as Rayleigh damping and we have $$ \boldsymbol {C} = \alpha \boldsymbol {M} + \beta \boldsymbol {K} \tag {10.47} $$ In the central difference method we can make the approximation that $\beta = 0$ so that $$ \boldsymbol {C} = \alpha \boldsymbol {M} \tag {10.48} $$ or $$ c _ {i i} = a m _ {i i} $$ where $$ a = 2 \xi_ {r} \omega_ {r} $$ in which $\xi_{r}$ and $\omega_{r}$ are the damping factor and circular frequency for the $r^{th}$ mode. This modelling of damping is rather poor since a is fixed for all modes of vibration. Thus if we take r = 1 then the higher modes will be less damped whereas the opposite would be more desirable. This is the price we pay for an otherwise convenient and efficient solution. # 10.5 Critical time step In explicit and implicit time integration schemes the selection of an appropriate time step is crucially important. Small time steps are required for accurate and stable solutions whereas for reasons of economy we would prefer large time steps. The analysis of the stability and accuracy characteristics $^{(2)}$ allows us to decide on a suitable time step for the various time stepping schemes. On this basis for the conditionally stable, central difference scheme, the stability considerations are of prime importance and the time step length is limited by the expression $$ \Delta t \leqslant \frac {2}{\omega_ {\max}} \tag {10.49} $$ where $\omega_{max}$ is the highest circular frequency of the finite element mesh. This severe time step limit, required for stability, ensures accuracy in practically all modes of vibration. Providing that $\omega_{max}$ represents the maximum nonlinear frequency, (10.49) holds for nonlinear problems. The estimate of the critical time step for conditionally stable schemes apparently necessitates the solution of the eigenvalue problem for the whole system. This is not so. The bound on the highest eigenvalue can be simply obtained by the consideration of an individual element. This is established by an important theorem proposed by Irons $^{(4)}$ which proves that the highest system eigenvalue must always be less than the highest eigenvalue of the individual elements. This allows a very easy estimate of critical time steps (by the above theorem) which will err on the safe side. To avoid the exact evaluation of the highest finite element mesh frequency approximate expressions are usually employed. The most common form for plane strain is $$ \Delta t \leqslant \mu L \left(\frac {\rho (1 + \nu) (1 - 2 \nu)}{E (1 - \nu)}\right) ^ {1 / 2} \tag {10.50} $$ where L is the smallest length between any two nodes and $\mu$ is a coefficient dependent on the type of element employed. $^{(5)}$ For problems in which many time steps are used it may be beneficial to calculate the exact highest linear frequency of the finite element mesh prior to the time stepping analysis. Recall that when an elasto-viscoplastic model is adopted care must be taken not to exceed the critical time step for the Euler scheme in evaluating the viscoplastic strains. (See Section 8.3). # 10.6 Program DYNPAK # 10.6.1 Overall structure of DYNPAK We now present program DYNPAK for the elasto-viscoplastic or geometrically nonlinear, transient dynamic analysis of plane stress, plane strain and axisymmetric problems. The basic structure of the program is shown in Fig. 10.2. Many of the subroutines used in DYNPAK have already been described in earlier chapters. The algorithm adopted has been presented schematically in Fig. 10.1. The program is written in a dynamically dimensioned form. Efficiency has sometimes been sacrificed for clarity of presentation and the reader may consider ways of making the program more efficient when reviewing this chapter. Isoparametric 4, 8 and 9-noded quadrilateral elements are included in the program. A special mass lumping procedure $^{(6)}$ has been adopted and separate Gauss–Legendre rules may be adopted in the evaluation of the stiffness and the lumped mass matrices. Impact and seismic loading can easily be specified. Material nonlinearity is based on elasto-viscoplastic models with Von Mises, Tresca, Mohr-Coulomb or Drucker-Prager yield criteria with isotropic hardening. A total Lagrangian formulation is used to allow for the geometric nonlinear behaviour. Subroutines GAUSSQ, SFR2 and JACOB2 have already been dealt with and only the remaining routines will be listed and described. # 10.6.2 Master routine DYNPAK The master routine organises the calling of the main routines as outlined in Fig. 10.2. In subroutine CONTOL the variables required for dynamic dimensioning are read and a check is made on the maximum available dimensions. Note that the values given in the DIMENSION statement in ![](images/page-403_016a82b195acd55b89f16ccfae044bcc87d3595172e60184b80669e135f061e5.jpg)
flowchart ```mermaid graph TD A["MASTER DYNPAK"] --> B["CONTOL"] A --> C["INPUTD"] C --> D["NODXYR"] C --> E["GAUSSQ"] A --> F["INTIME"] A --> G["PREVOS"] A --> H["LOADPLf(t)"] H --> I["MODPS"] H --> J["SFR2"] H --> K["JACOB2"] A --> L["LUMASS"] L --> M["GAUSSQ"] L --> N["SFR2"] L --> O["JACOB2"] A --> P["RESVPL"] P --> Q["MODPS"] P --> R["SFR2"] P --> S["JACOB2"] P --> T["JACOBD"] A --> U["EXPLIT"] U --> V["FUNCTS"] U --> W["FUNCTA"] U --> X["FUNCTA"] A --> Y["RESVPLp(t)"] Y --> Z["FWVVP"] Y --> AA["YIELDF"] A --> AB["OUTDYN"] A --> AC["DO LOOP 1, TO NSTEP"] ```
Fig. 10.2 Flow diagram for program DYNPAK. DYNPAK should agree with the values specified in CONTOL. Subroutines INPUTD, INTIME and PREVOS read the mesh data, the time integration data and data for the previous state of the structure. Subroutines LUMASS and LOADPL generate the lumped mass and applied force vectors respectively. FIXITY deals with fixed boundary nodes. In the time step do loop, EXPLIT performs the direct time integration and RESVPL calculates $$ \int_ {\Omega} [ \boldsymbol {B} ] _ {n} ^ {T} \boldsymbol {\sigma} _ {n} d \Omega $$ when an elasto-viscoplastic material model is adopted. In this version of DYNPAK it should be noted that the maximum dimensions imply that we can solve problems with no more than 50 elements, 200 nodal points, 50 fixed boundary nodes and 600 acceleration ordinates. Of course, larger problems can be accommodated by increasing the values in CONTOL and also the appropriate dimensions in the DIMENSION statement in the main routine DYNPAK.
PROGRAM DYNPAK (INPUT, TAPE5=INPUT, TAPE4, TAPE10, TAPE12, TAPE3, OUTPUT, TAPE6=OUTPUT, TAPE7, TAPE11, TAPE13)DYNK1
CDYNAMIC TRANSIENT ELASTO - VISCOPLASTIC PROGRAMDYNK2
CDYNAMIC TRANSIENT ELASTO - VISCOPLASTIC PROGRAMDYNK3
CDYNAMIC TRANSIENT ELASTO - VISCOPLASTIC PROGRAMDYNK4
CDYNAMIC TRANSIENT ELASTO - VISCOPLASTIC PROGRAMDYNK5
CDYNAMIC TRANSIENT ELASTO - VISCOPLASTIC PROGRAMDYNK6
CDYNAMIC TRANSIENT ELASTO - VISCOPLASTIC PROGRAMDYNK7
CDIMENSION ACCEH(600), ACCEV(600), COORD(200,2), DISPL(400), DYNKDYNK8
CFORCE(400), IFPRE(2,200), LNODS(50,9), MATNO(50), DYNKDYNK9
CINTGR(50), NPRQD(10), NGRQS(10), POSGP(4), DYNKDYNK10
CPROPS(10,13), RESID(400), RLOAD(50,18), STRIN(4,450), DYNKDYNK11
CSTRSG(4,450), TDISP(400), TEMPE(100), VELOC(400), DYNKDYNK12
CVISTN(4,450), VIVEL(5,450), WEIGP(4), YMASS(400)DYNK13
CDYNKDYNK14
CCALLCONTOL(NDOFN, NELEM, NMATS, NPOIN)DYNK15
CDYNKDYNK16
CCALLINPUTD(COORD, IFPRE, LNODS, MATNO, NCONM, NCRIT, DYNKDYNK17
CDYNKDYNK18
CCALLINTIME(NDIME, NDOFN, NELEM, NGAUM, NGAUS, NLAPS, DYNKDYNK19
CDYNKDYNK20
CCALLINTIME(NMATS, NNODE, NPOIN, NPREV, NSTRE, NTYPE, DYNKDYNK21
CDYNKDYNK22
CCALLINTIME(POSGP, PROPS, WEIGP)DYNK23
CDYNKDYNK24
CCALLINTIME(AALFA, ACCEH, ACCEV, AFACT, AZERO, BEETA, DYNKDYNK25
CDYNKDYNK26
CCALLINTIME(BZERO, DELTA, DTIME, DTEND, GAAMA, IFIXD, DYNKDYNK27
CDYNKDYNK28
CCALLPREVOSIFUNC, INTGR, KSTEP, MITER, NDOFN, NELEM, DYNKDYNK29
CDYNKDYNK30
CCALLLOADPLNGRQS, NOUTD, NOUTP, NPOIN, NPRQD, NREQD, DYNKDYNK31
CDYNKDYNK32
CCALLLOADPL(NREQS, NSTEP, OMEGA, TDISP, TOLER, VELOC, DYNKDYNK33
CDYNKDYNK34
CCALLLOADPL(NREQS, NSTEP, OMEGA, TDISP, TOLER, VELOC, DYNKDYNK35
CDYNKDYNK36
CCALLLOADPL(NREQS, NSTEP, OMEGA, TDISP, TOLER, VELOC, DYNKDYNK37
CDYNKDYNK38
CCALLLOADPL(NREQS, NSTEP, OMEGA, TDISP, TOLER, VELOC, DYNKDYNK39
```txt C CALL FIXITY (IFPRE, NDOFN, NPOIN, YMASS) DYNK 40 DYNK 41 DYNK 42 IF(NPREV.NE.O) .CALL RESVPL (COORD, DTIME, LNODS, MATNO, NCRIT, NDIME, NDOFN, NELEM, NGAUS, NLAPS, NNODE, NMATS, NPOIN, NSTRE, NTYPE, POSGP, PROPS, RESID, RLOAD, STRIN, STRSG, TDISP, VISTN, VIVEL, WEIGP) DYNK 43 DYNK 44 DYNK 45 DYNK 46 DYNK 47 DYNK 48 DYNK 49 DYNK 50 DYNK 51 CALL EXPLIT (ACCEH, ACCEV, AFACT, AZERO, AALFA, BZERO, DTIME, DTEND, FORCE, IFIXD, IFPRE, IFUNC, ISTEP, NDOFN, NPOIN, OMEGA, RESID, TDISP, VELOC, YMASS) DYNK 52 DYNK 53 DYNK 54 DYNK 55 DYNK 56 CALL RESVPL (COORD, DTIME, LNODS, MATNO, NCRIT, NDIME, NDOFN, NELEM, NGAUS, NLAPS, NNODE, NMATS, NPOIN, NSTRE, NTYPE, POSGP, PROPS, RESID, RLOAD, STRIN, STRSG, TDISP, VISTN, VIVEL, WEIGP) DYNK 57 DYNK 58 DYNK 59 DYNK 60 DYNK 61 DYNK 62 CALL OUTDYN (DISPL, DTIME, ISTEP, NDOFN, NELEM, NGAUS, NGRQS, NOUTD, NOUTP, NPOIN, NPRQD, NREQD, NREQS, NTYPE, STRSG, TDISP, VIVEL) DYNK 63 DYNK 64 DYNK 65 DYNK 66 500 CONTINUE STOP END DYNK 67 DYNK 68 DYNK 69 ``` # 10.6.3 Subroutine BLARGE This subroutine evaluates the strain-displacement matrix for geometrically nonlinear displacements using the deformation Jacobian matrix $[J_{D}]_{n}$ . Note that for small displacement analysis we pre-set NLAPS = 0. ```txt SUBROUTINE BLARGE (BMATX, CARTD, DJACM, DLCOD, GPCOD, KGASP, BLAR 1 NLAPS, NNODE, NTYPE, SHAPE) BLAR 2 C****************************************************************************************** BLAR 3 C BLAR 4 C*** LARGE DISPLACEMENT B MATRIX BLAR 5 C BLAR 6 C****************************************************************************************** BLAR 7 DIMENSION BMATX(4,18), CARTD(2,9), DJACM(2,2), DLCOD(2,9), BLAR 8 GPCOD(2,9), SHAPE(9) BLAR 9 NGASH=0 BLAR 10 DO 10 INODE=1, NNODE BLAR 11 MGASH=NGASH+1 BLAR 12 NGASH=MGASH+1 BLAR 13 BMATX(1, MGASH)=CARTD(1, INODE)*DJACM(1,1) BLAR 14 BMATX(1, NGASH)=CARTD(1, INODE)*DJACM(2,1) BLAR 15 BMATX(2, MGASH)=CARTD(2, INODE)*DJACM(1,2) BLAR 16 BMATX(2, NGASH)=CARTD(2, INODE)*DJACM(2,2) BLAR 17 BMATX(3, MGASH)=CARTD(2, INODE)*DJACM(1,1)+CARTD(1, INODE)*DJACM(1,2)BLAR 18 BMATX(3, NGASH)=CARTD(1, INODE)*DJACM(2,2)+CARTD(2, INODE)*DJACM(2,1)BLAR 19 10 CONTINUE BLAR 20 IF(NTYPE.NE.3) RETURN BLAR 21 FMULT=1. BLAR 22 IF(NLAPS.LT.2) GO TO 40 BLAR 23 FMULT=0.0 BLAR 24 ``` ```asm DO 20 JNODE=1, NNODE BLAR 25 20 FMULT=FMULT+DLCOD(1, JNODE)*SHAPE(JNODE) BLAR 26 FMULT=FMULT/GPCOD(1, KGASP) BLAR 27 40 NGASH=0 BLAR 28 DO 30 INODE=1, NNODE BLAR 29 MGASH=NGASH+1 BLAR 30 NGASH=MGASH+1 BLAR 31 BMATX(4, MGASH)=SHAPE(INODE)*FMULT/GPCOD(1, KGASP) BLAR 32 30 BMATX(4, NGASH)=0.0 BLAR 33 RETURN BLAR 34 END BLAR 35 ``` BLAR 10-20 Evaluate the complete strain matrix for plane stress/strain problems and the first three rows of the strain matrix for axisymmetric problems. BLAR 21-33 Evaluate the remainder of the strain matrix for axisymmetric problems, if applicable. # 10.6.4 Subroutine CONTOL The purpose of this subroutine is to set the values of variables for the dynamic dimensions which are used elsewhere in the program. If any change in the DIMENSION statement in the master routine is made, then a corresponding change in this subroutine should also be made. ```txt SUBROUTINE CONTOL (NDOFN, NELEM, NMATS, NPOIN) CONT 1 C******************************* C C*** READ CONTROL DATA AND CHECK FOR DIMENSIONS CONT 2 C C******************************* C READ(5,110) NPOIN, NELEM, NDOFN, NMATS CONT 3 IF(NELEM.GT. 50) GO TO 200 CONT 4 IF(NPOIN.GT.200) GO TO 200 CONT 5 IF(NMATS.GT. 10) GO TO 200 CONT 6 GO TO 210 CONT 7 200 WRITE(6,120) CONT 8 STOP CONT 9 120 FORMAT(/'SET DIMENSION EXCEEDED - CONTOL CHECK') CONT 10 110 FORMAT(16I5) CONT 11 210 CONTINUE CONT 12 RETURN CONT 13 END CONT 14 CONT 15 CONT 16 CONT 17 CONT 18 ``` # 10.6.5 Subroutine EXPLIT This subroutine performs the direct time integration using expressions (10.43) and (10.44) to evaluate the nodal displacements at every time step. Special provisions are made for the first time step. ```txt SUBROUTINE EXPLIT (ACCEH, ACCEV, AFACT, AZERO, AALFA, BZERO, EXPL 1 . DTIME, DTEND, FORCE, IFIXD, IFPRE, IFUNC, EXPL 2 . ISTEP, NDOFN, NPOIN, OMEGA, RESID, TDISP, EXPL 3 . VELOC, YMASS) EXPL 4 C*************** EXPL 5 C EXPL 6 C *** TIME STEPPING ROUTINE EXPL 7 C EXPL 8 C*************** EXPL 9 ``` ```csv DIMENSION YMASS(1), ACCEH(1), TDISP(1), RESID(1), EXPL 10 FORCE(1), ACCEV(1), VELOC(1), IFPRE(2,1) CFACT=1.0+0.5*AALFA*DTIME CFACT=1./CFACT CONS1=2.*CFACT RCONS=1./CONS1 CONS2=CONS1-1 CONS3=DTIME*DTIME*CFACT CONS4=-2.0*CONS2*DTIME IF(ISTEP.GT.1) CONS4=CONS2 NPOSN=0 FACTS=FUNCTS (AZERO, BZERO, DTEND, DTIME, IFUNC, ISTEP, OMEGA) FACTH=FUNCTA (ACCEH, AFACT, DTEND, DTIME, IFUNC, ISTEP) FACTV=FUNCTA (ACCEV, AFACT, DTEND, DTIME, IFUNC, ISTEP) DO 500 IPOIN=1, NPOIN DO 510 IDOFN=1, NDOFN FACTT=0.0 IF(IFUNC.NE.0) GO TO 200 IF(IFIXD.EQ.0.AND.IDOFN.EQ.1) FACTT=FACTH IF(IFIXD.EQ.0.AND.IDOFN.EQ.2) FACTT=FACTV IF(IFIXD.EQ.1.AND.IDOFN.EQ.2) FACTT=FACTV IF(IFIXD.EQ.2.AND.IDOFN.EQ.1) FACTT=FACTH IF(IFPRE(IDOFN, IPOIN).EQ.0) GO TO 200 FACTT=0.0 FACTS=1.0 200 CONTINUE NPOSN=NPOSN+1 DCURR=TDISP(NPOSN) RESID(NPOSN)=RESID(NPOSN)-FORCE(NPOSN)*FACTS TDISP(NPOSN)=-RESID(NPOSN)*CONS3/YMASS(NPOSN) .-FACTT*CONS3+DCURR*CONS1-VELOC(NPOSN)*CONS4 IF(ISTEP.EQ.1) TDISP(NPOSN)=TDISP(NPOSN)*RCONS VELOC(NPOSN)=DCURR 510 CONTINUE 500 CONTINUE RETURN END EXPL 10 EXPL 11 EXPL 12 EXPL 13 EXPL 14 EXPL 15 EXPL 16 EXPL 17 EXPL 18 EXPL 19 EXPL 20 EXPL 21 EXPL 22 EXPL 23 EXPL 24 EXPL 25 EXPL 26 EXPL 27 EXPL 28 EXPL 29 EXPL 30 EXPL 31 EXPL 32 EXPL 33 EXPL 34 EXPL 35 EXPL 36 EXPL 37 EXPL 38 EXPL 39 EXPL 40 EXPL 41 EXPL 42 EXPL 43 EXPL 44 EXPL 45 EXPL 46 ``` EXPL 12–19 Evaluate the various time integration constants. After the first time step modify variable CONS4. EXPL 21 Evaluate the value of the time varying Heaviside or harmonic function for a particular time step. EXPL 22–23 Evaluate the acceleration ordinates (FACTH for horizontal and FACTV for vertical acceleration respectively) at a particular time step. EXPL 24–31 The seismic force is only applied for particular degrees of freedom. For IFIXD = 1 only vertical, IFIXD = 2 only horizontal or radial and IFIXD = 0 both components of the acceleration are considered. EXPL 32-35 Assign appropriate values for restrained boundary nodes. EXPL 36–40 Evaluate displacements. EXPL 41 For the first time step modify the displacement. EXPL 42 Store the current displacements for the next time step. # 10.6.6 Subroutine FIXITY This subroutine deals with the restrained degrees of freedom (boundary points). The diagonal mass vector, XMASS, is modified—for restrained degrees of freedom. The component of the XMASS vector is set to a large value such as 1.E30, which artificially makes the displacement zero. ```fortran SUBROUTINE FIXITY (IFPRE, NDOFN, NPOIN, YMASS) FIXY 1 C********** 1 C 2 C 3 C *** DEALS WITH FIXED BOUNDARY NODES 4 C 5 C********** 6 DIMENSION IFPRE(2,1), YMASS(1) 7 NTOTV=NDOFN*NPOIN 8 IPOSN=0 9 DO 500 IPOIN=1, NPOIN 10 DO 500 IDOFN=1, NDOFN 11 IPOSN=IPOSN+1 12 500 IF(IFPRE(IDOFN, IPOIN).EQ.1) YMASS(IPOSN)=1.E30 13 WRITE(6,900) 14 900 FORMAT(/5X,19HNODAL LUMPED MASSES/) 15 WRITE(6,910) (ITOTV, YMASS(ITOTV), ITOTV=1, NTOTV) 16 910 FORMAT(6(1X, I5, E13.5)) 17 RETURN 18 END 19 ``` # 10.6.7 Subroutine FLOWVP This routine evaluates the viscoplastic strain rate. ```txt SUBROUTINE FLOWVP (AVECT, KGAUS, LPROP, NCRIT, NMATS, PROPS, STEFF, VIVEL, YIELD) FLOV 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(NMATS,1), VIVEL(5,1) IF(STEFF.EQ.0.0) GO TO 90 NSTR1=4 TOLOR=0.01 FDATM=PROPS(LPROP, 6) HARDS=PROPS(LPROP, 7) FRICT=PROPS(LPROP, 8) GAMMA=PROPS(LPROP, 9) DELTA=PROPS(LPROP,10) NFLOW=PROPS(LPROP,11) FRICT=FRICT*0.017453292 IF(NCRIT.EQ.3) FDATM=FDATM*COS(FRICT) IF(NCRIT.EQ.4) FDATM=6.0*FDATM*COS(FRICT)/ (1.73205080757*(3.0-SIN(FRICT))) IF(HARDS.GT.0.) FDATM=FDATM+VIVEL(5,KGAUS)*HARDS IF(FDATM.LT.0.001) FDATM=1.0 FCURR=YIELD-FDATM FNORM=FCURR/FDATM IF(FNORM.LT.TOLOR) GO TO 90 IF(NFLOW.EQ.1) GO TO 50 CMULT=GAMMA*(EXP(DELTA*FNORM)-1.0) GO TO 60 50 CMULT=GAMMA*(FNORM**DELTA) 60 CONTINUE DO 70 ISTR1=1,NSTR1 70 AVECT(ISTR1)=CMULT*AVECT(ISTR1) DO 80 ISTR1=1,NSTR1 80 VIVEL(ISTR1,KGAUS)=AVECT(ISTR1) RETURN 90 DO 100 ISTR1=1,NSTR1 100 VIVEL(ISTR1,KGAUS)=0. RETURN FLOV 10 ``` # 10.6.8 Function FUNCTA This function interpolates the accelerogram data for a particular time step. AFACT is the ratio of the accelerogram record time step length to the computational time step length. ```txt FUNCTION FUNCTA (ACCER, AFACT, DTEND, DTIME, IFUNC, JSTEP) FUNA 1 C******************************* C C*** ACCELEROGRAM INTERPOLATION FUNA 2 C C******************************* DIMENSION ACCER(1) FUNA 3 IF(IFUNC.NE.0) RETURN FUNA 4 FUNCTA=0.0 FUNA 5 IF(JSTEP.EQ.0.OR.FLOAT(JSTEP)*DTIME.GT.DTEND) RETURN FUNA 6 XGASH=(FLOAT(JSTEP)-1.0)/AFACT+1.0 FUNA 7 MGASH=XGASH FUNA 8 NGASH=MGASH+1 FUNA 9 XGASH=XGASH-FLOAT(MGASH) FUNA 10 FUNCTA=ACCER(MGASH)*(1.0-XGASH)+XGASH*ACCER(NGASH) FUNA 11 RETURN FUNA 12 END FUNA 13 FUNA 14 FUNA 15 FUNA 16 FUNA 17 ``` # 10.6.9 Function FUNCTS This function sets the value of the time varying function for a particular time step. Heaviside functions $(f(t) = 1.0 \ H(t))$ or harmonic functions, $(f(t) = a - b \sin \omega t)$ can be specified. ```txt FUNCTION FUNCTS (AZERO,BZERO,DTEND,DTIME,IFUNC,JSTEP,OMEGA) FUNS 1 C************************** FUNS 2 C FUNS 3 C*** HEAVISIDE AND HARMONIC TIME FUNCTION FUNS 4 C FUNS 5 C************************** FUNS 6 IF(IFUNC.EQ.0) RETURN FUNS 7 FUNCTS=0.0 FUNS 8 IF(JSTEP.EQ.0.OR uses FLOAT(JSTEP)*DTIME.GT.DTEND) RETURN FUNS 9 IF(IFUNC.EQ.1) FUNCTS = 1.0 FUNS 10 IF(IFUNC.EQ.2) ARGUM=OMEGA*JSTEP*DTIME FUNS 11 IF(IFUNC.EQ.2) FUNCTS = AZERO + BZERO*SIN(ARGUM) FUNS 12 RETURN FUNS 13 END FUNS 14 ``` # 10.6.10 Subroutine INPUTD This subroutine reads and writes most of the control parameters, nodal point coordinates, element connectivities, boundary conditions and material properties. It also writes the geometric data onto file 13 for deformation plotting. A similar routine was described in Chapter 6. ```c SUBROUTINE INPUTD (COORD, IFPRE, LNODS, MATNO, NCONM, NCRIT, NPUT 1 . NDIME, NDOFN, NELEM, NGAUM, NGAUS, NLAPS, NPUT 2 . NMATS, NNODE, NPOIN, NPREV, NSTRE, NTYPE, NPUT 3 . POSGP, PROPS, WEIGP) NPUT 4 C******************************* C******************************* C******************************* C*** DYNPAK INPUT ROUTINE C C******************************* DIMENSION COORD(NPOIN, 1), IFPRE(NDOFN, 1), WEIGP(1), MATNO(1), NPUT 10 ``` ```csv READ(5,913) TITLE NPUT 12 913 FORMAT(10A4) NPUT 13 WRITE(6,914) TITLE NPUT 14 914 FORMAT(//,5X,10A4) NPUT 15 C NPUT 16 C*** READ THE FIRST DATA CARD, AND ECHO IT IMMEDIATELY. NPUT 17 C NPUT 18 READ (5,900) NVFIX,NTYPE,NNODE,NPROP,NGAUS,NDIME,NSTRE,NCRIT, NPREV,NCONM,NLAPS,NGAUM,NRADS NPUT 19 WRITE(6,901) NPOIN,NELEM,NVFIX,NTYPE,NNODE,NDOFN,NMATS,NPROP, NGAUS,NDIME,NSTRE,NCRIT,NPREV,NCONM,NLAPS,NGAUM, NRADS NPUT 20 901 FORMAT (/5X,18HCONTROL PARAMETERS/ NPUT 21 /5X,8H NPOIN =,I10,5X,8H NELEM =,I10,5X,8H NVFIX =,I10/ NPUT 22 /5X,8H NTYPE =,I10,5X,8H NNODE =,I10,5X,8H NDOFN =,I10/ NPUT 23 /5X,8H NMATS =,I10,5X,8H NPROP =,I10,5X,8H NGAUS =,I10/ NPUT 24 /5X,8H NDIME =,I10,5X,8H NSTRE =,I10,5X,8H NCRIT =,I10/ NPUT 25 /5X,8H NPREV =,I10,5X,8H NCONM =,I10,5X,8H NLAPS =,I10/ NPUT 26 /5X,8H NGAUM =,I10,5X,8H NRADS =,I10/) NPUT 27 900 FORMAT(16I5) NPUT 28 NPUT 29 NPUT 30 NPUT 31 NPUT 32 NPUT 33 NPUT 34 NPUT 35 NPUT 36 NPUT 37 NPUT 38 NPUT 39 NPUT 40 NPUT 41 NPUT 42 NPUT 43 NPUT 44 NPUT 45 NPUT 46 NPUT 47 NPUT 48 NPUT 49 NPUT 50 NPUT 51 NPUT 52 NPUT 53 NPUT 54 NPUT 55 NPUT 56 NPUT 57 NPUT 58 NPUT 59 NPUT 60 NPUT 61 NPUT 62 NPUT 63 NPUT 64 NPUT 65 NPUT 66 NPUT 67 NPUT 68 NPUT 69 NPUT 70 NPUT 71 NPUT 72 NPUT 73 NPUT 74 NPUT 75 NPUT 76 NPUT 77 NPUT 78 NPUT 79 NPUT 80 NPUT 81 NPUT 82 NPUT 83 NPUT 84 NPUT 85 NPUT 86 NPUT 87 NPUT 88 NPUT 89 NPUT 90 NPUT 91 NPUT 92 NPUT 93 NPUT 94 NPUT 95 NPUT 96 NPUT 97 NPUT 98 NPUT 99 NPUT 100 NPUT 101 NPUT 102 NPUT 103 NPUT 104 NPUT 105 NPUT 106 NPUT 107 NPUT 108 NPUT 109 NPUT 110 NPUT 111 NPUT 112 NPUT 113 NPUT 114 NPUT 115 NPUT 116 NPUT 117 NPUT 118 NPUT 119 NPUT 120 NPUT 121 NPUT 122 NPUT 123 NPUT 124 NPUT 125 NPUT 126 NPUT 127 NPUT 128 NPUT 129 NPUT 130 NPUT 131 NPUT 132 NPUT 133 NPUT 134 NPUT 135 NPUT 136 NPUT 137 NPUT 138 NPUT 139 NPUT 140 NPUT 141 NPUT 142 NPUT 143 NPUT 144 NPUT 145 NPUT 146 NPUT 147 NPUT 148 NPUT 149 NPUT 150 NPUT 151 NPUT 152 NPUT 153 NPUT 154 NPUT 155 NPUT 156 NPUT 157 NPUT 158 NPUT 159 NPUT 160 NPUT 161 NPUT 162 NPUT 163 NPUT 164 NPUT 165 NPUT 166 NPUT 167 NPUT 168 NPUT 169 NPUT 170 NPUT 171 NPUT 172 NPUT 173 NPUT 174 NPUT 175 NPUT 176 NPUT 177 NPUT 178 NPUT 179 NPUT 180 NPUT 181 NPUT 182 NPUT 183 NPUT 184 NPUT 185 NPUT 186 NPUT 187 NPUT 188 NPUT 189 NPUT 190 NPUT 191 NPUT 192 NPUT 193 NPUT 194 NPUT 195 NPUT 196 NPUT 197 NPUT 198 NPUT 199 NPUT 200 NPUT 201 NPUT 202 NPUT 203 NPUT 204 NPUT 205 NPUT 206 NPUT 207 NPUT 208 NPUT 209 NPUT 210 NPUT 211 NPUT 212 NPUT 213 NPUT 214 NPUT 215 NPUT 216 NPUT 217 NPUT 218 NPUT 219 NPUT 220 NPUT 221 NPUT 222 NPUT 223 NPUT 224 NPUT 225 NPUT 226 NPUT 227 NPUT 228 NPUT 229 NPUT 230 NPUT 231 NPUT 232 NPUT 233 NPUT 234 NPUT 235 NPUT 236 NPUT 237 NPUT 238 NPUT 239 NPUT 240 NPUT 241 NPUT 242 NPUT 243 NPUT 244 NPUT 245 NPUT 246 NPUT 247 NPUT 248 NPUT 249 NPUT 250 NPUT 251 NPUT 252 NPUT 253 NPUT 254 NPUT 255 NPUT 256 NPUT 257 NPUT 258 NPUT 259 NPUT 260 NPUT 261 NPUT 262 NPUT 263 NPUT 264 NPUT 265 NPUT 266 NPUT 267 NPUT 268 NPUT 269 NPUT 270 NPUT 271 NPUT 272 NPUT 273 NPUT 274 NPUT 275 NPUT 276 NPUT 277 NPUT 278 NPUT 279 NPUT 280 NPUT 281 NPUT 282 NPUT 283 NPUT 284 NPUT 285 NPUT 286 NPUT 287 NPUT 288 NPUT 289 NPUT 290 NPUT 291 NPUT 292 NPUT 293 NPUT 294 NPUT 295 NPUT 296 NPUT 297 NPUT 298 NPUT 299 NPUT 300 NPUT 301 NPUT 302 NPUT 303 NPUT 304 NPUT 305 NPUT 306 NPUT 307 NPUT 308 NPUT 309 NPUT 310 NPUT 311 NPUT 312 NPUT 313 NPUT 314 NPUT 315 NPUT 316 NPUT 317 NPUT 318 NPUT 319 NPUT 320 NPUT 321 NPUT 322 NPUT 323 NPUT 324 NPUT 325 NPUT 326 NPUT 327 NPUT 328 NPUT 329 NPUT 330 NPUT 331 NPUT 332 NPUT 333 NPUT 334 NPUT 335 NPUT 336 NPUT 337 NPUT 338 NPUT 339 NPUT 340 NPUT 341 NPUT 342 NPUT 343 NPUT 344 NPUT 345 NPUT 346 NPUT 347 NPUT 348 NPUT 349 NPUT 350 NPUT 351 NPUT 352 NPUT 353 NPUT 354 NPUT 355 NPUT 356 NPUT 357 NPUT 358 NPUT 359 NPUT 360 NPUT 361 NPUT 362 NPUT 363 NPUT 364 NPUT 365 NPUT 366 NPUT 367 NPUT 368 NPUT 369 NPUT 370 NPUT 371 NPUT 372 NPUT 373 NPUT 374 NPUT 375 NPUT 376 NPUT 377 NPUT 378 NPUT 379 NPUT 380 NPUT 381 NPUT 382 NPUT 383 NPUT 384 NPUT 385 NPUT 386 NPUT 387 NPUT 388 NPUT 389 NPUT 390 NPUT 391 NPUT 392 NPUT 393 NPUT 394 NPUT 395 NPUT 396 NPUT 397 NPUT 398 NPUT 399 NPUT 400 NPUT 401 NPUT 402 NPUT 403 NPUT 404 NPUT 405 NPUT 406 NPUT 407 NPUT 408 NPUT 409 NPUT 410 NPUT 411 NPUT 412 NPUT 413 NPUT 414 NPUT 415 NPUT 416 NPUT 417 NPUT 418 NPUT 419 NPUT 420 NPUT 421 NPUT 422 NPUT 423 NPUT 424 NPUT 425 NPUT 426 NPUT 427 NPUT 428 NPUT 429 NPUT 430 NPUT 431 NPUT 432 NPUT 433 NPUT 434 NPUT 435 NPUT 436 NPUT 437 NPUT 438 NPUT 439 NPUT 440 NPUT 441 NPUT 442 NPUT 443 NPUT 444 NPUT 445 NPUT 446 NPUT 447 NPUT 448 NPUT 449 NPUT 450 NPUT 451 NPUT 452 NPUT 453 NPUT 454 NPUT 455 NPUT 456 NPUT 457 NPUT 458 NPUT 459 NPUT 460 NPUT 461 NPUT 462 NPUT 463 NPUT 464 NPUT 465 NPUT 466 NPUT 467 NPUT 468 NPUT 469 NPUT 470 NPUT 471 NPUT 472 NPUT 473 NPUT 474 NPUT 475 NPUT 476 NPUT 477 NPUT 478 NPUT 479 NPUT 480 NPUT 481 NPUT 482 NPUT 483 NPUT 484 NPUT 485 NPUT 486 NPUT 487 NPUT 488 NPUT 489 NPUT 490 NPUT 491 NPUT 492 NPUT 493 NPUT 494 NPUT 495 NPUT 496 NPUT 497 NPUT 498 NPUT 499 NPUT 500 NPUT 501 NPUT 502 NPUT 503 NPUT 504 NPUT 505 NPUT 506 NPUT 507 NPUT 508 NPUT 509 NPUT 510 NPUT 511 NPUT 512 NPUT 513 NPUT 514 NPUT 515 NPUT 516 NPUT 517 NPUT 518 NPUT 519 NPUT 520 NPUT 521 NPUT 522 NPUT 523 NPUT 524 NPUT 525 NPUT 526 NPUT 527 NPUT 528 NPUT 529 NPUT 530 NPUT 531 NPUT 532 NPUT 533 NPUT 534 NPUT 535 NPUT 536 NPUT 537 NPUT 538 NPUT 539 NPUT 540 NPUT 541 NPUT 542 NPUT 543 NPUT 544 NPUT 545 NPUT 546 NPUT 547 NPUT 548 NPUT 549 NPUT 550 NPUT 551 NPUT 552 NPUT 553 NPUT 554 NPUT 555 NPUT 556 NPUT 557 NPUT 558 NPUT 559 NPUT 560 NPUT 561 NPUT 562 NPUT 563 NPUT 564 NPUT 565 NPUT 566 NPUT 567 NPUT 568 NPUT 569 NPUT 570 NPUT 571 NPUT 572 NPUT 573 NPUT 574 NPUT 575 NPUT 576 NPUT 577 NPUT 578 NPUT 579 NPUT 580 NPUT 581 NPUT 582 NPUT 583 NPUT 584 NPUT 585 NPUT 586 NPUT 587 NPUT 588 NPUT 589 NPUT 590 NPUT 591 NPUT 592 NPUT 593 NPUT 594 NPUT 595 NPUT 596 NPUT 597 NPUT 598 NPUT 599 NPUT 600 NPUT 601 NPUT 602 NPUT 603 NPUT 604 NPUT 605 NPUT 606 NPUT 607 NPUT 608 NPUT 609 NPUT 610 NPUT 611 NPUT 612 NPUT 613 NPUT 614 NPUT 615 NPUT 616 NPUT 617 NPUT 618 NPUT 619 NPUT 620 NPUT 621 NPUT 622 NPUT 623 NPUT 624 NPUT 625 NPUT 626 NPUT 627 NPUT 628 NPUT 629 NPUT 630 NPUT 631 NPUT 632 NPUT 633 NPUT 634 NPUT 635 NPUT 636 NPUT 637 NPUT 638 NPUT 639 NPUT 640 NPUT 641 NPUT 642 NPUT 643 NPUT 644 NPUT 645 NPUT 646 NPUT 647 NPUT 648 NPUT 649 NPUT 650 NPUT 651 NPUT 652 NPUT 653 NPUT 654 NPUT 655 NPUT 656 NPUT 657 NPUT 658 NPUT 659 NPUT 660 NPUT 661 NPUT 662 NPUT 663 NPUT 664 NPUT 665 NPUT 666 NPUT 667 NPUT 668 NPUT 669 NPUT 670 NPUT 671 NPUT 672 NPUT 673 NPUT 674 NPUT 675 NPUT 676 NPUT 677 NPUT 678 NPUT 679 NPUT 680 NPUT 681 NPUT 682 NPUT 683 NPUT 684 NPUT 685 NPUT 686 NPUT 687 NPUT 688 NPUT 689 NPUT 690 NPUT 691 NPUT 692 NPUT 693 NPUT 694 NPUT 695 NPUT 696 NPUT 697 NPUT 698 NPUT 699 NPUT 700 NPUT 701 NPUT 702 NPUT 703 NPUT 704 NPUT 705 NPUT 706 NPUT 707 NPUT 708 NPUT 709 NPUT 710 NPUT 711 NPUT 712 NPUT 713 NPUT 714 NPUT 715 NPUT 716 NPUT 717 NPUT 718 NPUT 719 NPUT 720 NPUT 721 NPUT 722 NPUT 723 NPUT 724 NPUT 725 NPUT 726 NPUT 727 NPUT 728 NPUT 729 NPUT 730 NPUT 731 NPUT 732 NPUT 733 NPUT 734 NPUT 735 NPUT 736 NPUT 737 NPUT 738 NPUT 739 NPUT 740 NPUT 741 NPUT 742 NPUT 743 NPUT 744 NPUT 745 NPUT 746 NPUT 747 NPUT 748 NPUT 749 NPUT 750 NPUT 751 NPUT 752 NPUT 753 NPUT 754 NPUT 755 NPUT 756 NPUT 757 NPUT 758 NPUT 759 NPUT 760 NPUT 761 NPUT 762 NPUT 763 NPUT 764 NPUT 765 NPUT 766 NPUT 767 NPUT 768 NPUT 769 NPUT 770 NPUT 771 NPUT 772 NPUT 773 NPUT 774 NPUT 775 NPUT 776 NPUT 777 NPUT 778 NPUT 779 NPUT 780 NPUT 781 NPUT 782 NPUT 783 NPUT 784 NPUT 785 NPUT 786 NPUT 787 NPUT 788 NPUT 789 NPUT 790 NPUT 791 NPUT 792 NPUT 793 NPUT 794 NPUT 795 NPUT 796 NPUT 797 NPUT 798 NPUT 799 NPUT 800 NPUT 801 NPUT 802 NPUT 803 NPUT 804 NPUT 805 NPUT 806 NPUT 807 NPUT 808 NPUT 809 NPUT 810 NPUT 811 NPUT 812 NPUT 813 NPUT 814 NPUT 815 NPUT 816 NPUT 817 NPUT 818 NPUT 819 NPUT 820 NPUT 821 NPUT 822 NPUT 823 NPUT 824 NPUT 825 NPUT 826 NPUT 827 NPUT 828 NPUT 829 NPUT 830 NPUT 831 NPUT 832 NPUT 833 NPUT 834 NPUT 835 NPUT 836 NPUT 837 NPUT 838 NPUT 839 NPUT 840 NPUT 841 NPUT 842 NPUT 843 NPUT 844 NPUT ```