```fortran SUBROUTINE STIFMP (COORD,EPSTN,IINCS,LNODS,MATNO,MELEM, STIF 1 . MEVAB,MMATS,MPOIN,MTOTG,NCRIT,NELEM, STIF 2 . NEVAB,NGAUS,NNODE,PROPS,STRSG) STIF 3 C**************************STIF 4 C STIF 5 C*** EVALUATE STIFFNESS MATRICES FOR NON-LAYERED STIF 6 C*** ELASTO-PLASTIC MINDLIN PLATE ELEMENTS STIF 7 C STIF 8 C**************************STIF 9 DIMENSION AVECT(5), STIF 10 . CARTD(2,9),COORD(MPOIN,2), STIF 11 . DERIV(2,9),DEVIA(4),DVECT(5),ELCOD(2,9), STIF 12 . EPSTN(MTOTG),ESTIF(27,27),GPCOD(2,9),LNODS(MELEM,9), STIF 13 . MATNO(MELEM),POSGP(4),PROPS(MMATS,8),SHAPE(9),STRES(5), STIF 14 . STRSG(5,MTOTG),WEIGP(4), STIF 15 . DFLEX(3,3),DSHER(2,2),BFLEI(3,3),BFLEJ(3,3), STIF 16 . BSHEI(2,3),BSHEJ(2,3),DUMMY(3,3) STIF 17 REWIND 1 STIF 18 REWIND 3 STIF 19 KGAUS=0 STIF 20 C STIF 21 C*** LOOP OVER EACH ELEMENT STIF 22 C STIF 23 DO 70 IELEM=1,NELEM STIF 24 LPROP=MATNO(IELEM) STIF 25 C STIF 26 C*** EVALUATE THE COORDINATES OF THE ELEMENT NODAL POINTS STIF 27 C STIF 28 DO 10 INODE=1,NNODE STIF 29 LNODE=LNODS(IELEM,INODE) STIF 30 LNODE=IABS(LNODE) STIF 31 DO 10 IDIME=1,2 STIF 32 10 ELCOD(IDIME,INODE)=COORD(LNODE,IDIME) STIF 33 C STIF 34 C*** INITIALIZE THE ELEMENT STIFFNESS MATRIX STIF 35 C STIF 36 DO 20 IEVAB=1,NEVAB STIF 37 DO 20 JEVAB=1,NEVAB STIF 38 20 ESTIF(IEVAB,JEVAB)=0.0 STIF 39 C STIF 40 C*** EVALUATE PART OF STIFFNESS MATRIX STIF 41 C ASSOCIATED WITH BENDING DEFORMATION STIF 42 C STIF 43 KGASP=C STIF 44 C STIF 45 C*** ENTER LOOPS FOR AREA NUMERICAL INTEGRATION STIF 46 C STIF 47 C STIF 48 C*** SET UP GAUSSIAN INTEGRATION CONSTANTS STIF 49 C STIF 50 CALL GAUSSQ (NGAUS,POSGP,WEIGP) STIF 51 DO 50 IGAUS=1,NGAUS STIF 52 DO 50 JGAUS=1,NGAUS STIF 53 KGASP=KGASP+1 STIF 54 EXISP=POSGP(IGAUS) STIF 55 ETASP=POSGP(JGAUS) STIF 56 C STIF 57 C*** EVALUATE THE SHAPE FUNCTIONS, ELEMENTAL AREA,ETC STIF 58 C STIF 59 CALL SFR2 (DERIV,ETASP,EXISP,NNODE,SHAPE) STIF 60 CALL JACOB2 (CARTD,DERIV,DJACB,ELCOD,GPCOD,IELEM, STIF 61 KGASP,NNODE,SHAPE) STIF 62 DAREA=DJACB*WEIGP(IGAUS)*WEIGP(JGAUS) STIF 63 ``` ```csv C C*** EVALUATE THE B AND DB MATRICES C CALL MODPB (DFLEX,DUMMY,DSHER,LPROP,MMATS,PROPS, 0, 1, 0) IF(IINCS.EQ.1) GO TO 80 KGAUS=KGAUS+1 IF(EPSTN(KGAUS).EQ.0.0) GO TO 80 DO 90 ISTRE=1,3 90 STRES(ISTRE)=STRSG(ISTRE,KGAUS) HARDS=PROPS(LPROP,7) CALL INVMP (DEVIA,NCRIT,SINT3,STEFF,STRES,THETA, VARJ2,YIELD) CALL FLOWMP (ABETA,AVECT,DEVIA,DFLEX,DVECT,HARDS, NCRIT,SINT3,STEFF,THETA,VARJ2) DO 100 ISTRE=1,3 DO 100 JSTRE=1,3 100 DFLEX(ISTRE,JSTRE)=DFLEX(ISTRE,JSTRE)-ABETA*DVECT(ISTRE)* .DVECT(JSTRE) 80 CONTINUE C C*** CALCULATE THE ELEMENT STIFFNESSES C DO 30 INODE=1,NNODE CALL BMATPB (BFLEI,DUMMY,BSHEI,CARTD,INODE,SHAPE, 0, 1, 0) DO 30 JNODE=INODE,NNODE CALL BMATPB (BFLEJ,DUMMY,BSHEJ,CARTD,JNODE,SHAPE, 0, 1, 0) 30 CALL SUBMP (BFLEI,BFLEJ,DAREA,DFLEX,ESTIF,INODE, JNODE, 3, 3, 3) 50 CONTINUE C C*** EVALUATE PART OF STIFFNESS MATRIX C ASSOCIATED WITH SHEAR DEFORMATION C KGASP=0 NGAUM=NGAUS-1 C C*** ENTER LOOPS FOR AREA INTEGRATION C C*** SET UP GAUSSIAN INTEGRATION CONSTANTS C CALL GAUSSQ (NGAUM,POSGP,WEIGP) DO 51 IGAUS=1,NGAUM DO 51 JGAUS=1,NGAUM KGASP=KGASP+1 EXISP=POSGP(IGAUS) ETASP=POSGP(JGAUS) C C*** EVALUATE THE SHAPE FUNCTIONS,ELEMENTAL AREA,ETC C CALL SFR2 (DERIV,ETASP,EXISP,NNODE,SHAPE) CALL JACOB2 (CARTD,DERIV,DJACB,ELCOD,GPCOD,IELEM, KGASP,NNODE,SHAPE) DAREA=DJACB*WEIGP(IGAUS)*WEIGP(JGAUS) C C*** EVALUATE THE B AND DB MATRICES C CALL MODPB (DFLEX,DUMMY,DSHER,LPROP,MMATS,PROPS, 0, 0, 1) C C*** EVALUATE ELEMENT STIFFNESSES ``` ```csv C DO 31 INODE=1,NNODE CALL BMATPB (BFLEI,DUMMY,BSHEI,CARTD,INODE,SHAPE, 0, 0, 1) DO 31 JNODE=INODE,NNODE CALL BMATPB (BFLEJ,DUMMY,BSHEJ,CARTD,JNODE,SHAPE, 0, 0, 1) 31 CALL SUBMP (BSHEI,BSHEJ,DAREA,DSHER,ESTIF,INODE, JNODE, 3, 2, 3) 51 CONTINUE C C*** CONSTRUCT THE LOWER TRIANGLE OF THE STIFFNESS MATRIX C DO 60 IEVAB=1,NEVAB DO 60 JEVAB=IEVAB,NEVAB 60 ESTIF(JEVAB,IEVAB)=ESTIF(IEVAB,JEVAB) C C*** STORE THE STIFFNESS MATRIX,STRESS MATRIX AND SAMPLING POINT C COORDINATES FOR EACH ELEMENT ON DISC FILE C WRITE(1) ESTIF WRITE(3) GPCOD 70 CONTINUE RETURN END STIF 129 STIF 130 STIF 131 STIF 132 STIF 133 STIF 134 STIF 135 STIF 136 STIF 137 STIF 138 STIF 139 STIF 140 STIF 141 STIF 142 STIF 143 STIF 144 STIF 145 STIF 146 STIF 147 STIF 148 STIF 149 STIF 150 STIF 151 STIF 152 STIF 153 STIF 154 ``` # 9.5.14 Subroutine STRMP This subroutine evaluates the bending moments and shear forces for Mindlin plates. ```csv SUBROUTINE STRMP (CARTD,DFLEX,DGRAD,DSHER,ELDIS,NNODE, STRP 1 . SHAPE,STRES,IFFLE,IFSHE) STRP 2 C**************************STRP 3 C STRP 4 C*** EVALUATES STRESS RESULTANTS FOR MINDLIN PLATE STRP 5 C STRP 6 C**************************STRP 7 DIMENSION CARTD(2,9),DFLEX(3,3),DGRAD(6),DSHER(2,2), STRP 8 . ELDIS(3,9),SHAPE(9),STRES(5) STRP 9 C*** ZERO STRESS VECTOR STRP 10 CALL VZERO (5,STRES) STRP 11 C*** EVALUATE ROTATIONS AT GAUSS POINT, IF NEEDED STRP 12 IF(IFSHE.EQ.0) GOTO 50 STRP 13 XZROT=0.0 STRP 14 YZROT=0.0 STRP 15 DO 30 INODE=1,NNODE STRP 16 XZROT=XZROT+SHAPE(INODE)*ELDIS(2,INODE) STRP 17 30 YZROT=YZROT+SHAPE(INODE)*ELDIS(3,INODE) STRP 18 C*** EVALUATE BENDING STRESS RESULTANTS STRP 19 50 IF(IFFLE.EQ.0) GOTO 60 STRP 20 . EFLXX=-DGRAD(2) STRP 21 EFLYY=-DGRAD(6) STRP 22 EFLXY=-(DGRAD(3)+DGRAD(5)) STRP 23 STRES(1)=DFLEX(1,1)*EFLXX+DFLEX(1,2)*EFLYY STRP 24 STRES(2)=DFLEX(2,1)*EFLXX+DFLEX(2,2)*EFLYY STRP 25 STRES(3)=DFLEX(3,3)*EFLXY STRP 26 ```
C*** EVALUATE SHEAR STRESS RESULTANTS60 IF(IFSHE.EQ.0) RETURNSTRP27
STRP28
ESHXX=DGRAD(1)-XZROTSTRP29
ESHYY=DGRAD(4)-YZROTSTRP30
STRES(4)=DSHER(1,1)*ESHXXSTRP31
STRES(5)=DSHER(2,2)*ESHYYSTRP32
RETURNSTRP33
ENDSTRP34
# 9.5.15 Subroutine SUBMP This subroutine evaluates $[B_{i}]^{T}D[B_{j}]detJ\times Gauss$ weights and is used in the evaluation of the element stiffness matrices. ```csv SUBROUTINE SUBMP (BIMAT,BJMAT,DAREA,DMATX,ESTIF,INODE, SUBP 1 . JNODE,NCOLI,NROIJ,NCOLJ) SUBP 2 C**************************SUBP 3 C SUBP 4 C*** CARRY OUT MATRIX MULTIPLICATION SUBP 5 C SUBP 6 C**************************SUBP 7 DIMENSION BIMAT(NROIJ,NCOLI),BJMAT(NROIJ,NCOLJ), SUBP 8 . DMATX(NROIJ,NROIJ),DBMAT(3,3), SUBP 9 . ESTIF(27,27),SBSTF(3,3) SUBP 10 C*** EVALUATE D*BJ SUBP 11 DO 10 J=1,NCOLJ SUBP 12 DO 10 I=1,NROIJ SUBP 13 DBMAT(I,J)=0.0 SUBP 14 DO 10 K=1,NROIJ SUBP 15 10 DBMAT(I,J)=DBMAT(I,J)+DMATX(I,K)*BJMAT(K,J) SUBP 16 C*** EVALUATE BIT*(D*BJ) SUBP 17 DO 20 J=1,NCOLJ SUBP 18 DO 20 I=1,NCOLI SUBP 19 SBSTF(I,J)=0.0 SUBP 20 DO 20 K=1,NROIJ SUBP 21 20 SBSTF(I,J)=SBSTF(I,J)+BIMAT(K,I)*DBMAT(K,J) SUBP 22 C*** ASSEMBLE SBSTF INTO ELEMENT STIFFNESS MATRIX SUBP 23 IFROW=0 SUBP 24 JFCOL=0 SUBP 25 IFROW=(INODE-1)*3+IFROW SUBP 26 JFCOL=(JNODE-1)*3+JFCOL SUBP 27 DO 30 I=1,NCOLI SUBP 28 IRSUB=IFROW+I SUBP 29 DO 30 J=1,NCOLJ SUBP 30 JCSUB=JFCOL+J SUBP 31 30 ESTIF(IRSUB,JCSUB)=ESTIF(IRSUB,JCSUB)+SBSTF(I,J)*DAREA SUBP 32 RETURN SUBP 33 END SUBP 34 ``` # 9.5.16 Subroutines VZERO and ZEROMP These routines simply set to zero the components of various vectors and arrays. ```txt SUBROUTINE VZERO (NCOMP, VECTO) ZERO 1 C************************** ZERO 2 C ZERO 3 C*** ZEROES VECTOR VECTO ZERO 4 C ZERO 5 C************************** ZERO 6 DIMENSION VECTO(NCOMP) ZERO 7 DO 10 ICOMP=1,NCOMP ZERO 8 10 VECTO(ICOMP)=0.0 ZERO 9 RETURN ZERO 10 END ZERO 11 ``` ```txt SUBROUTINE ZEROMP (EFFST,ELOAD,EPSTN,MELEM,MEVAB,MTOTG, ZERP 1 . MTOTV,MVFIX,NDOFN,NELEM,NEVAB,NGAUS, ZERP 2 . NTOTG,NTOTV,NVFIX,STRSG,TDISP,TFACT, ZERP 3 . TLOAD,TREAC) ZERP 4 C**************************ZERP 5 C ZERP 6 C*** ZERO EFFST,ELOAD,EPSTN,STRSG,TDISP,TFACT,TLOAD,TREAC ZERP 7 C ZERP 8 C**************************ZERP 9 DIMENSION ELOAD(MELEM,MEVAB),STRSG(5,MTOTG),TDISP(MTOTV), ZERP 10 . TLOAD(MELEM,MEVAB),TREAC(MVFIX,3),EPSTN(MTOTG), ZERP 11 . EFFST(MTOTG) ZERP 12 TFACT=0.0 ZERP 13 DO 30 IELEM=1,NELEM ZERP 14 DO 30 IEVAB=1,NEVAB ZERP 15 ELOAD(IELEM,IEVAB)=0.0 ZERP 16 30 TLOAD(IELEM,IEVAB)=0.0 ZERP 17 DO 40 ITOTV=1,NTOTV ZERP 18 40 TDISP(ITOTV)=0.0 ZERP 19 DO 50 IVFIX=1,NVFIX ZERP 20 DO 50 IDOFN=1,NDOFN ZERP 21 50 TREAC(IVFIX,IDOFN)=0.0 ZERP 22 DO 60 ITOTG=1,NTOTG ZERP 23 EPSTN(ITOTG)=0.0 ZERP 24 EFFST(ITOTG)=0.0 ZERP 25 DO 60 ISTR1=1,5 ZERP 26 60 STRSG(ISTR1,ITOTG)=0.0 ZERP 27 RETURN ZERP 28 END ZERP 29 ``` # 9.6 Software for the layered approach # 9.6.1 Overall program structure. The overall program structure for the elasto-plastic Mindlin plate bending analysis program using the layered approach is given in Fig. 9.5. This program is named MINDLAY. The program can solve problems of the same size as those solved by program MINDLIN. A maximum of 26 layers is allowed. All new routines are now documented and these include: FEAM, DEPMPA, LAYMPA, MDMPA, OUTMPA, RESMPA, STIMPA and STRMPA. The outer routines, which have been described earlier, include ALGOR, BMATPB, CHECK1, CHECK2, ECHO, FRONT, INCREM, INPUT, JACOB2 and NODEXY. The files which are used in the program are 5 (cardreader), 6 (lineprinter) and 1, 2, 3, 4, 8 (scratch files). # 9.6.2 Subroutine FEAM This routine organises the calling of the main routines in sequence. ![](images/page-366_4957bf2f81a024b454061e697cda2961788c966d555c1fc548ea6b98418d01e2.jpg)
flowchart ```mermaid graph TD A["START"] --> B["DIMMP
Presents the variables associated with the dynamic dimensioning process"] B --> C["INPUT
Inputs data defining geometry, boundary conditions and material properties"] C --> D["ZEROMP
Sets to zero arrays required for accumulation of data"] D --> E["MINDPB
Inputs additional data required for Mindlin plate analysis"] E --> F["LOADPB
Reads loading data and evaluate the equivalent nodal forces for distributed loading"] F --> G["INCREM
Increments the applied load according to specified load factors"] G --> H["ALGOR
Sets indicator to identify the type of solution algorithm, i.e., initial or tangential stiffness etc."] H --> I["A"] ```
Fig. 9.5 Overall program structure of program MINDLAY. ![](images/page-367_7282858d1fec3c9bb621c16a1971c2eb4af44eb16bfaa5d614cb96f3b24826d7.jpg)
flowchart ```mermaid graph TD A["A"] --> B{Is it necessary to recalculate stiffness matrix with present algorithm?} B -->|No| C["END"] B -->|Yes| D["STIFMPA
Calculate element stiffness matrices for layered elasto-plastic Mindlin plate"] D --> E["FRONT
Solve the simultaneous equation system by the frontal method"] E --> F["RESMPA
Evaluate the residual force vector for the layered elasto-plastic Mindlin plate"] F --> G["CONVMP
Check whether solution has converged using a residual force or displacement norm"] G --> H["OUTMPA
Prints out the displacements, reactions and stresses and stress resultants for the current load increment"] H --> I["LOAD INCREMENT LOOP"] H --> J["LOAD ITERATION LOOP"] ```
Fig. 9.5 Overall program structure of program MINDLAY (continued). ```txt PROGRAM FEAM(INPUT, OUTPUT, TAPE5=INPUT, TAPE6=OUTPUT, TAPE1, TAPE2, TAPE3, TAPE4, TAPE8, TAPE9) C C C*** ELASTO-PLASTIC ANALYSIS OF LAYERED MINDLIN PLATES USING C*** 4-, 8-, 9-NODED OR HETEROSIS ISOPARAMETRIC QUADRILATERALS C C DIMENSION ASDIS(240), COORD(80, 2), EFFST(225), ELOAD(25, 27), EPSTN(225), ESTIF(27, 27), EQRHS(10), EQUAT(40, 10), FIXED(240), IFFIX(240), GLOAD(40), GSTIF(860), LNODS(25, 9), LOCEL(27), MATNO(25), NACVA(40), NAMEV(10), NCDIS(4), NCRES(4), NDEST(27), NDFRO(25), NOFIX(40), NOUTP(2), NPIVO(10), POSGP(4), PRESC(40, 3), PROPS(10, 8), REFOR(240), RLOAD(25, 27), STRSG(5, 225), TOFOR(240), TDISP(240), TLOAD(25, 27), TREAC(40, 3), VECRV(40), WEIGP(4) C C*** PRESET VARIABLES ASSOCIATED WITH DYNAMIC DIMENSIONS C CALL DIMMP (MBUFA, MELEM, MEVAB, MFRON, MMATS, MPOIN, MSTIF, MTOTG, MTOTV, MVFIX, NDIME, NDOFN, NPROP, NSTRE) C C*** CALL THE SUBROUTINE WHICH READS MOST OF THE PROBLEM DATA C CALL INPUT (COORD, IFFIX, LNODS, MATNO, MELEM, MEVAB, MFRON, MMATS, MPOIN, MTOTV, MVFIX, NALGO, NCRIT, NDFRO, NDIME, NDOFN, NELEM, NEVAB, NGAUS, NLAPS, NINCS, NMATS, NNODE, NOFIX, NPOIN, NPROP, NSTRE, NSTR1, NSWIT, NTOTG, NTOTV, NTYPE, NVFIX, POSGP, PRESC, PROPS, WEIGP) C C*** INITIALIZE ARRAYS TO ZERO C CALL ZEROMP (EFFST, ELOAD, EPSTN, MELEM, MEVAB, MTOTG, MTOTV, MVFIX, NDOFN, NELEM, NEVAB, NGAUS, NTOTG, NTOTV, NVFIX, STRSG, TDISP, TFACT, TLOAD, TREAC) C C*** CALL MINDPB (IFDIS, IFFIX, IFRES, LNODS, MELEM, MTOTV, NCDIS, NCRES, NELEM, NTYPE) C C*** COMPUTE LOAD AFTER READING RELEVANT EXTRA DATA C CALL LOADPB (COORD, LNODS, MATNO, MELEM, MMATS, MPOIN, NELEM, NEVAB, NGAUS, NNODE, NPOIN, PROPS, RLOAD) C C*** LOOP OVER EACH INCREMENT C DO 70 IINCS=1, NINCS C C*** READ DATA FOR CURRENT INCREMENT C CALL INCREM (ELOAD, FIXED, IINCS, MELEM, MEVAB, MITER, MTOTV, MVFIX, NDOFN, NELEM, NEVAB, NOUTP, NOFIX, NTOTV, NVFIX, PRESC, RLOAD, TFACT, TLOAD, TOLER) ``` ```asm C C*** LOOP OVER EACH ITERATION C DO 90 IITER=1,MITER C C*** CALL ROUTINE WHICH SELECTS SOLUTION ALGORITHM VARIABLE KRESL C CALL ALGOR (FIXED,IINCS,IITER,KRESL,MTOTV,NALGO, NTOTV) C C*** CHECK WHETHER A NEW EVALUATION OF THE STIFFNESS MATRICES IS NEEDED C IF(KRESL.EQ.1) .CALL STIMPA (COORD,EPSTN,IINCS,LNODS,MATNO,MELEM, MEVAB,MMATS,MPOIN,MTOTG,NCRIT,NELEM, NEVAB,NGAUS,NNODE,NLAPS,PROPS,STRSG) C C*** SOLVE EQUATIONS C CALL FRONT (ASDIS,ELOAD,EQRHS,EQUAT,ESTIF,FIXED, IFFIX,IINCS,IITER,GLOAD,GSTIF,KRESL, LNODS,LOCEL,MBUFA,MELEM,MEVAB,MFRON, MSTIF,MTOTV,MVFIX,NACVA,NAMEV,NDEST, NDOFN,NELEM,NEVAB,NNODE,NOFIX,NPIVO, NPOIN,NTOTV,TDISP,TLOAD,TREAC,VECRV) C C*** CALCULATE RESIDUAL FORCES C CALL RESMPA (ASDIS,COORD,EFFST,ELOAD,EPSTN,LNODS, MATNO,MELEM,MMATS,MPOIN,MTOTG,MTOTV, NCRIT,NELEM,NEVAB,NGAUS,NNODE,NLAPS, PROPS,STRSG) C C*** CHECK FOR CONVERGENCE C CALL CONVMP (ASDIS,ELOAD,IITER,IFDIS,IFRES,LNODS, MELEM,MEVAB,MTOTV,NCHEK,NCDIS,NCRES, NDOFN,NELEM,NEVAB,NNODE,NPOIN,NTOTV, REFOR,TOFOR,TDISP,TLOAD,TOLER) C C*** OUTPUT RESULTS IF REQUIRED C IF(IITER.EQ.1.AND.NOUTP(1).GT.0) .CALL OUTMPA (EPSTN,IITER,MTOTG,MTOTV,MVFIX,NELEM, NGAUS,NLAPS,NOFIX,NOUTP,NPOIN,NVFIX, STRSG,TDISP,TREAC) C C*** IF SOLUTION HAS CONVERGED STOP ITERATING AND OUTPUT RESULTS C IF(NCHEK.EQ.0) GO TO 100 90 CONTINUE C C*** IF(NALGO.EQ.2) GO TO 100 STOP 100 CALL OUTMPA (EPSTN,IITER,MTOTG,MTOTV,MVFIX,NELEM, NGAUS,NLAPS,NOFIX,NOUTP,NPOIN,NVFIX, STRSG,TDISP,TREAC) 70 CONTINUE 20 CONTINUE 10 CONTINUE STOP END FEAM 66 FEAM 67 FEAM 68 FEAM 69 FEAM 70 FEAM 71 FEAM 72 FEAM 73 FEAM 74 FEAM 75 FEAM 76 FEAM 77 FEAM 78 FEAM 79 FEAM 80 FEAM 81 FEAM 82 FEAM 83 FEAM 84 FEAM 85 FEAM 86 FEAM 87 FEAM 88 FEAM 89 FEAM 90 FEAM 91 FEAM 92 FEAM 93 FEAM 94 FEAM 95 FEAM 96 FEAM 97 FEAM 98 FEAM 99 FEAM 100 FEAM 101 FEAM 102 FEAM 103 FEAM 104 FEAM 105 FEAM 106 FEAM 107 FEAM 108 FEAM 109 FEAM 110 FEAM 111 FEAM 112 FEAM 113 FEAM 114 FEAM 115 FEAM 116 FEAM 117 FEAM 118 FEAM 119 FEAM 120 FEAM 121 FEAM 122 FEAM 123 FEAM 124 FEAM 125 FEAM 126 FEAM 127 FEAM 128 FEAM 129 FEAM 130 ``` # 9.6.3 Subroutine CHECK1 (revised) In program MINDLAY we remove card CEK1 25 from subroutine CHECK1 because NLAPS (the number of layers) replaces NSTRE in subroutine INPUT. The variable NSTRE is set in subroutine DIMMP (see Section 9.5.4). # 9.6.4 Subroutine DEPMPA This subroutine sets up the layered discretisation. ```fortran SUBROUTINE DEPMPA (DEPTH,LPROP,MMATS,NLAYR,PROPS) DEPT 1 C**************************DEPT 2 C DEPT 3 C*** SET UP LAYRED DISCRETIZATION DEPT 4 C DEPT 5 C**************************DEPT 6 DIMENSION PROPS(MMATS,8),DEPTH(26) DEPT 7 C DEPT 8 C DEPT 9 NLAY1=NLAYR+1 DEPT 10 ALAYR=NLAYR DEPT 11 THICK=PROPS(LPROP,3) DEPT 12 CONS1=THICK/ALAYR DEPT 13 CONS2=-THICK/2.0 DEPT 14 KOUNT=0 DEPT 15 DO 10 ILAYR=1,NLAY1 DEPT 16 DEPTH(ILAYR)=CONS2+CONS1*KOUNT DEPT 17 10 KOUNT=KOUNT+1 DEPT 18 RETURN DEPT 19 END DEPT 20 ``` # 9.6.5 Subroutine LAYMPA This subroutine evaluates $\hat{D}_{f}$ and $\hat{D}_{s}$ using the mid-ordinate rule. ```txt SUBROUTINE LAYMPA (DEPTH,DFLEF,DSHES,EPSTN,IINCS,KGAUS, LAYR 1 , LPROP,MMATS,MTOTG,NCRIT,NLAYR,PROPS, LAYR 2 , STRSG,JFFLE) LAYR 3 C****************************************************************************************** C C*** CALCULATES THE D-MATRIX INTEGRATED OVER LAYR 6 C*** THE DEPTH LAYR 7 C C****************************************************************************************** DIMENSION AVECT(3),DEPTH(26),DEVIA(4),DFLEF(3,3), LAYR 10 , DPLAN(3,3),DVECT(3), LAYR 11 , DSHER(2,2),DSHES(2,2),EPSTN(MTOTG),PROPS(MMATS,8), LAYR 12 , SGTOT(5),STRSG(5,MTOTG) LAYR 13 C C IF(JFFLE.EQ.0) GO TO 100 LAYR 16 HARDS=PROPS(LPROP,7) LAYR 17 C C*** ZERO D MATRIX FOR FLEXURE LAYR 19 C DO 20 ISTRE=1,3 LAYR 21 DO 20 JSTRE=1,3 LAYR 22 20 DFLEF(ISTRE,JSTRE)=0.0 LAYR 23 C C*** LOOP AROUND LAYERS LAYR 24 C ```