In this application we recommended the following convergence criteria. Let $$ E _ {\delta} = \frac {[ \sum_ {j} (\Delta \delta_ {j} ^ {(i)}) ^ {2} ] ^ {1 / 2}}{[ \sum_ {j} (\delta_ {j} ^ {(i + 1)}) ^ {2} ] ^ {1 / 2}} \tag {9.29} $$ where $\delta_j$ may equal $w_j$ , $\theta_{xj}$ or $\theta_{yj}$ . We take in any combination $$ E _ {w}, E _ {\theta x}, E _ {\theta y}, \left(E _ {w} + E _ {\theta x} + E _ {\theta y}\right) \leqslant \text { TOLER } \tag {9.30} $$ where TOLER is a specified tolerance. We can also take the residual force equivalents of $w_{j}$ , $\theta_{xj}$ or $\theta_{yj}$ in (9.29) and (9.30). # 9.5 Software for the non-layered approach # 9.5.1 Overall program structure The overall program structure for the elasto-plastic Mindlin plate bending analysis program MINDLIN using a nonlayered approach is given in Fig. 9.2. The dimensions given in subroutine FEMP agree with those given in subroutine DIMMP and limit the program to the following maximum size problems in the present form $$ \begin{array}{l} \text { MELEM - maximum number of elements } = 2 5 \\ \text { MEVAB } - \text { maximum number of variables per element } = 2 7 \\ \text { MFRON - maximum front width } = 4 0 \\ \text { MMATS - maximum number of material sets } = 1 0 \\ \text { MPOIN } - \text { maximum number of nodal points } = 8 0 \\ \text { MTOTV } - \text { maximum total number of degrees of freedom } = 2 4 0 \\ \text { MVFIX } - \text { maximum number of prescribed boundary nodes } = 4 0 \\ \end{array} $$ To modify these values the DIMENSION statement in FEMP and the appropriate statements in DIMMP should be carefully changed and checked. All new routines are now documented and these include: FEMP, CONVMP, DIMMP, FLOWMP, GRADMP, INVMP, MINDPB, OUTMP, SFR2,\* RESMP, STIFMP, STRMP, SUBMP, VZERO and ZEROMP. The other routines, which have been described earlier, include ALGOR, BMATPB, CHECK1,† CHECK2, ECHO, FRONT, INCREM, INPUT, JACOB2, MODPB and NODEXY.\* The files which are used in the program are 5 (cardreader), 6 (lineprinter) and 1, 2, 3, 4, 8 (scratch files). \- Note we include the modified versions of SFR2 and NODEXY to allow for hierarchical representation. † We include a very slightly modified version of CHECK 1. Note also that for 4-node Mindlin plate elements, GAUSSQ is modified to allow for a single point Gauss rule. See Section 6.4.2. ![](images/page-342_129442c8b5be6e374b8ea47c6bff19b053a98b376cfb0fd9b276ba404cdb0c43.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 evaluates 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"] ```
![](images/page-343_5bd99d9564044dfd1a2729d74574247f41e35c758c3e6f473fcb9e2cfe1f9a70.jpg)
flowchart ```mermaid graph TD A["A"] --> B{Is it necessary to recalculate stiffness matrix with present algorithm?} B -->|Yes| C["STIFMP
Calculate element stiffness matrices for nonlayered elastoplastic Mindlin plate"] B -->|No| D["END"] C --> E["FRONT
Solve the simultaneous equation system by the frontal method"] E --> F["RESMP
Evaluate the residual force vector for the nonlayered elastoplastic Mindlin plate"] F --> G["CONVMP
Check whether solution has converged using a residual force or displacement norm"] G --> H["OUTMP
Prints out the displacements, reactions and stress resultants for the current load increment"] H --> I["END"] J["LOAD INCREMENT LOOP"] --> C K["LOAD ITERATION LOOP"] --> C ```
Fig. 9.2 Overall structure of program MINDLIN. # 9.5.2 Subroutine FEMP This routine controls the calling sequence of all of the other main routines as indicated in Fig. 9.2. ```csv PROGRAM FEMP(INPUT, OUTPUT, TAPE5=INPUT, TAPE6=OUTPUT, FEMP 1 .TAPE1, TAPE2, TAPE3, TAPE4, TAPE8, TAPE9) FEMP 2 C C*** ELASTO-PLASTIC ANALYSIS OF NON-LAYERED MINDLIN PLATES USING FEMP 3 C*** 4-, 8-, 9-NODED OR HETEROSIS ISOPARAMETRIC QUADRILATERALS FEMP 4 C C DIMENSION ASDIS(240), COORD(80, 2), EFFST(225), ELOAD(25, 27), FEMP 9 EPSTN(225), ESTIF(27, 27), FEMP 10 EQRHS(10), EQUAT(40, 10), FIXED(240), FEMP 11 IFFIX(240), GLOAD(40), GSTIF(860), LNODS(25, 9), LOCEL(27), FEMP 12 MATNO(25), NACVA(40), NAMEV(10), NCDIS(4), NCRES(4), FEMP 13 NDEST(27), NDFRO(25), NOFIX(40), NOUTP(2), NPIVO(10), FEMP 14 POSGP(4), PRESC(40, 3), PROPS(10, 8), REFOR(240), FEMP 15 RLOAD(25, 27), STRSG(5, 225), TOFOR(240), FEMP 16 TDISP(240), TLOAD(25, 27), TREAC(40, 3), VECRV(40), FEMP 17 WEIGP(4) FEMP 18 C PRESET VARIABLES ASSOCIATED WITH DYNAMIC DIMENSIONS FEMP 19 C CALL DIMMP (MBUFA, MELEM, MEVAB, MFRON, MMATS, MPOIN, FEMP 20 MSTIF, MTOTG, MTOTV, MVFIX, NDIME, NDOFN, FEMP 21 NPROP, NSTRE) FEMP 21 C CALL THE SUBROUTINE WHICH READS MOST OF THE PROBLEM DATA FEMP 22 C CALL INPUT (COORD, IFFIX, LNODS, MATNO, MELEM, MEVAB, FEMP 23 MFRON, MMATS, MPOIN, MTOTV, MVFIX, NALGO, FEMP 24 NCRIT, NDFRO, NDIME, NDOFN, NELEM, NEVAB, FEMP 25 NGAUS, NLAPS, NINCS, NMATS, NNODE, NOFIX, FEMP 26 NPOIN, NPROP, NSTRE, NSTR1, NSWIT, NTOTG, FEMP 27 NTOTV, NTYPE, NVFIX, POSGP, PRESC, PROPS, FEMP 28 WEIGP) FEMP 28 C INITIALIZE ARRAYS TO ZERO FEMP 29 C CALL ZEROMP (EFFST, ELOAD, EPSTN, MELEM, MEVAB, MTOTG, FEMP 30 MTOTV, MVFIX, NDOFN, NELEM, NEVAB, NGAUS, FEMP 31 NTOTG, NTOTV, NVFIX, STRSG, TDISP, TFACT, FEMP 32 TLOAD, TREAC) FEMP 33 C CALL MINDPB (IFDIS, IFFIX, IFRES, LNODS, MELEM, MTOTV, FEMP 34 NCDIS, NCRES, NELEM, NTYPE) FEMP 35 C COMPUTE LOAD AFTER READING RELEVANT EXTRA DATA FEMP 36 C CALL LOADPB (COORD, LNODS, MATNO, MELEM, MMATS, MPOIN, FEMP 37 NELEM, NEVAB, NGAUS, NNODE, NPOIN, PROPS, FEMP 38 RLOAD) FEMP 39 C LOOP OVER EACH INCREMENT FEMP 40 C ``` ```asm DO 70 IINCS=1,NINCS FEMP 58 C FEMP 59 C*** READ DATA FOR CURRENT INCREMENT FEMP 60 C FEMP 61 CALL INCREM (ELOAD,FIXED,IINCS,MELEM,MEVAB,MITER, MTOTV,MVFIX,NDOFN,NELEM,NEVAB,NOUTP, NOFIX,NTOTV,NVFIX,PRES,RCLOAD,TFACT, TLOAD,TOLER) FEMP 62 FEMP 63 FEMP 64 FEMP 65 C FEMP 66 C*** LOOP OVER EACH ITERATION FEMP 67 C FEMP 68 DO 90 IITER=1,MITER FEMP 69 C FEMP 70 C*** CALL ROUTINE WHICH SELECTS SOLUTION ALGORITHM VARIABLE KRESL FEMP 71 C FEMP 72 CALL ALGOR (FIXED,IINCS,IITER,KRESL,MTOTV,NALGO, NTOTV) FEMP 73 FEMP 74 C FEMP 75 C*** CHECK WHETHER A NEW EVALUATION OF THE STIFFNESS MATRICES IS NEEDED FEMP 76 C FEMP 77 IF(KRESL.EQ.1) FEMP 78 .CALL STIFMP (COORD,EPSTN,IINCS,LNODS,MATNO,MELEM, MEVAB,MMATS,MPOIN,MTOTG,NCRIT,NELEM, NEVAB,NGAUS,NNODE,PROPS,STRSG) FEMP 79 FEMP 80 FEMP 81 C FEMP 82 C*** SOLVE EQUATIONS FEMP 83 C FEMP 84 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) FEMP 85 FEMP 86 FEMP 87 FEMP 88 FEMP 89 FEMP 90 C FEMP 91 C*** CALCULATE RESIDUAL FORCES FEMP 92 C FEMP 93 CALL RESMP (ASDIS,COORD,EFFST,ELOAD,EPSTN,LNODS, MATNO,MELEM,MMATS,MPOIN,MTOTG,MTOTV, NCRIT,NELEM,NEVAB,NGAUS,NNODE,PROPS, STRSG) FEMP 94 FEMP 95 FEMP 96 FEMP 97 C FEMP 98 C*** CHECK FOR CONVERGENCE FEMP 99 C FEMP 100 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) FEMP 101 FEMP 102 FEMP 103 FEMP 104 C FEMP 105 C*** OUTPUT RESULTS IF REQUIRED FEMP 106 C FEMP 107 C FEMP 108 IF(IITER.EQ.1.AND.NOUTP(1).GT.0) FEMP 109 .CALL OUTMP (EPSTN,IITER,MTOTG,MTOTV,MVFIX,NELEM, NGAUS,NOFIX,NUOTP,NPOIN,NVFIX,STRSG, TDISP,TREAC) FEMP 110 FEMP 111 FEMP 112 C FEMP 113 C*** IF SOLUTION HAS CONVERGED STOP ITERATING AND OUTPUT RESULTS FEMP 114 C FEMP 115 IF(NCHEK.EQ.0) GO TO 100 FEMP 116 90 CONTINUE FEMP 117 C FEMP 118 C*** FEMP 119 C FEMP 120 IF(NALGO.EQ.2) GO TO 100 FEMP 121 ```
STOPFEMP 122
100 CALLOUTMP(EPSTN,IITER,MTOTG,MTOTV,MVFIX,NELEM,NGAUS,NOFIX,NOUTP,NPOIN,NVFIX,STRSG,TDISP,TREAC)FEMP 123
.FEMP 124
.FEMP 125
70 CONTINUEFEMP 126
20 CONTINUEFEMP 127
10 CONTINUEFEMP 128
STOPFEMP 129
ENDFEMP 130
# 9.5.3 Subroutine CONVMP This routine establishes whether a solution has converged with reference to some displacement or residual force norm.
SUBROUTINE CONVMP(ASDIS,ELOAD,IITER,IFDIS,IFRES,LNODS,CONV1
.MELEM,MEVAB,MTOTV,NCHEK,NCDIS,NCRES,CONV2
.NDOFN,NELEM,NEVAB,NNODE,NPOIN,NTOTV,CONV3
.REFOR,TOFOR,TDISP,TLOAD,TOLER)CONV4
C**********CONV5
CCONV6
C***ESTABLISHES WHETHER A SOLUTION HAS CONVERGED WITHCONV7
C***REFERENCE TO SOME DISPLACEMENT OR RESIDUAL FORCE NORMCONV8
CCONV9
C**********CONV10
DIMENSION ADIDF(3),ASDIS(MTOTV),ELOAD(MELEM,MEVAB),LNODS(MELEM,9),CONV11
.NCDIS(4),NCRES(4),REFDF(3),REFOR(MTOTV),TDIDF(3),CONV12
.TDISP(MTOTV),TLOAD(MELEM,MEVAB),TOFDF(3),TOFOR(MTOTV)CONV13
WRITE(6,606) IITERCONV14
606FORMAT(///,' IN CONVER',10X,'ITERATION NUMBER',I3,/)CONV15
C***COMPUTE ELEMENT RESIDUAL FORCESCONV16
DO 10 IELEM=1,NELEMCONV17
DO 10 IEVAB=1,NEVABCONV18
10ELOAD(IELEM,IEVAB)=TLOAD(IELEM,IEVAB)-ELOAD(IELEM,IEVAB)CONV19
C***SET CONVERGENCE CODE TO ZEROCONV20
NCHEK=0CONV21
C***DISPLACEMENT CONVERGENCE CHECKCONV22
IF(IFDIS.EQ.0) GOTO 1000CONV23
C***COMPUTE TOTAL AND DIRECTIONAL NORMS OF DISPLACEMENTSCONV24
ADITO=0.0CONV25
TDITO=0.0CONV26
CALL VZERO (NDOFN,ADIDF)CONV27
CALL VZERO (NDOFN,TDIDF)CONV28
NPOSI=0CONV29
DO:20 IPOIN=1,NPOINCONV30
DO^20 IDOFN=1,NDOFNCONV31
NPOSI=NPOSI+1CONV32
ADIDF(IDOFN)=ADIDF(IDOFN)+ASDIS(NPOSI)*ASDIS(NPOSI)CONV33
20TDIDF(IDOFN)=TDIDF(IDOFN)+TDISP(NPOSI)*TDISP(NPOSI)CONV34
DO 30 IDOFN=1,NDOFNCONV35
ADITO=ADITO+ADIDF(IDOFN)CONV36
TDITO=TDITO+TDIDF(IDOFN)CONV37
ADIDF(IDOFN)=SQRT(ADIDF(IDOFN))CONV38
30TDIDF(IDOFN)=SQRT(TDIDF(IDOFN))CONV39
ADITO=SQRT(ADITO)CONV40
TDITO=SQRT(TDITO)CONV41
C***CHECK FOR CONVERGENCE AND PRINT ERRORS PER CENTCONV42
DO 40 IDOFN=1,NDOFNCONV43
IF(TDIDF(IDOFN).EQ.0.0) GOTO 40CONV44
```csv TDIDF(IDOFN)=100.*ADIDF(IDOFN)/TDIDF(IDOFN) CONV 45 IF(NCDIS(IDOFN).NE.0.AND.TDIDF(IDOFN).GT.TOLER) NCHEK=1 CONV 46 IF(NCDIS(IDOFN).EQ.0) TDIDF(IDOFN)=-TDIDF(IDOFN) CONV 47 40 CONTINUE CONV 48 IF(TDITO.EQ.0.0) GOTO 50 CONV 49 TDITO=100.*ADITO/TDITO CONV 50 IF(NCDIS(4).NE.0.AND.TDITO.GT.TOLER) NCHEK=1 CONV 51 IF(NCDIS(4).EQ.0) TDITO=-TDITO CONV 52 50 CONTINUE CONV 53 WRITE(6,600) CONV 54 WRITE(6,601) (TDIDF(IDOFN), IDOFN=1, NDOFN) CONV 55 600 FORMAT(1X,'DISPLACEMENT CHANGE NORM',//) CONV 56 601 FORMAT(1X,5(E10.3,5X)) CONV 57 WRITE(6,602) CONV 58 602 FORMAT(5X,'TOTAL') CONV 59 WRITE(6,603) TDITO CONV 60 603 FORMAT(3X,E10.3) CONV 61 C*** RESIDUAL CONVERGENCE CHECK CONV 62 1000 IF(IFRES.EQ.0) GOTO 2000 CONV 63 C*** ASSEMBLE TOTAL AND RESIDUAL FORCE VECTORS CONV 64 DO 1 ITOTV=1,NTOTV CONV 65 REFOR(ITOTV)=0.0 CONV 66 1 TOFOR(ITOTV)=0.0 CONV 67 DO 60 IELEM=1,NELEM CONV 68 KEVAB=0 CONV 69 DO 60 INODE=1,NNODE CONV 70 LOCNO=IABS(LNODS(IELEM,INODE)) CONV 71 DO 60 IDOFN=1,NDOFN CONV 72 KEVAB=KEVAB+1 CONV 73 NPOSI=(LOCNO-1)*NDOFN+IDOFN CONV 74 TOFOR(NPOSI)=TOFOR(NPOSI)+TLOAD(IELEM,KEVAB) CONV 75 60 REFOR(NPOSI)=REFOR(NPOSI)+ELOAD(IELEM,KEVAB) CONV 76 C*** COMPUTE TOTAL AND DIRECTIONAL NORMS OF RESIDUAL AND TOTAL FORCE CONV 77 REFTO=0.0 CONV 78 TOFTO=0.0 CONV 79 CALL VZERO (NDOFN,REFDF) CONV 80 CALL VZERO (NDOFN,TOFDF) CONV 81 NPOSI=0 CONV 82 DO 70 IPOIN=1,NPOIN CONV 83 DO 70 IDOFN=1,NDOFN CONV 84 NPOSI=NPOSI+1 CONV 85 REFDF(IDOFN)=REFDF(IDOFN)+REFOR(NPOSI)*REFOR(NPOSI) CONV 86 70 TOFDF(IDOFN)=TOFDF(IDOFN)+TOFOR(NPOSI)*TOFOR(NPOSI) CONV 87 DO 80 IDOFN=1,NDOFN CONV 88 REFTO=REFTO+REFDF(IDOFN) CONV 89 TOFTO=TOFTO+TOFDF(IDOFN) CONV 90 REFDF(IDOFN)=SQRT(REFDF(IDOFN)) CONV 91 80 TOFDF(IDOFN)=SQRT(TOFDF(IDOFN)) CONV 92 REFTO=SQRT(REFTO) CONV 93 TOFTO=SQRT(TOFTO) CONV 94 C*** CHECK FOR CONVERGENCE AND PRINT ERRORS PER CENT CONV 95 DO 90 IDOFN=1,NDOFN CONV 96 IF(TOFDF(IDOFN).EQ.0.0) GOTO 90 CONV 97 TOFDF(IDOFN)=100.*REFDF(IDOFN)/TOFDF(IDOFN) CONV 98 IF(NCRES(IDOFN).NE.0.AND.TOFDF(IDOFN).GT.TOLER) NCHEK=1 CONV 99 IF(NCRES(IDOFN).EQ.0) TOFDF(IDOFN)=-TOFDF(IDOFN) CONV 100 90 CONTINUE CONV 101 IF(TOFTO.EQ.0.0) GOTO 100 CONV 102 TOFTO=100.*REFTO/TOFTO CONV 103 IF(NCRES(4).NE.0.AND.TOFTO.GT.TOLER) NCHEK=1 CONV 104 IF(NCRES(4).EQ.0) TOFTO=-TOFTO CONV 105 100 CONTINUE CONV 106 WRITE(6,604) CONV 107 WRITE(6,601) (TOFDF(IDOFN), IDOFN=1, NDOFN) CONV 108 ``` ```txt WRITE(6,602) CONV 109 WRITE(6,603) TOFTO CONV 110 604 FORMAT(1X,'RESIDUAL NORM',//) CONV 111 C*** PRINT CONVERGENCE CODE CONV 112 2000 WRITE(6,605) NCHEK CONV 113 605 FORMAT(1X,'CONVERGENCE CODE',I4,//) CONV 114 RETURN CONV 115 END CONV 116 ``` # 9.5.4 Subroutine DIMMP This subroutine sets up the dimensions which must agree with the size of the arrays in subroutine FEMP. ```asm SUBROUTINE DIMMP (MBUFA,MELEM,MEVAB,MFRON,MMATS,MPOIN, DIMP 1 . MSTIF,MTOTG,MTOTV,MVFIX,NDIME,NDOFN, DIMP 2 . NPROP,NSTRE) DIMP 3 C**********DIMP 4 C DIMP 5 C*** SETS UP DYNAMIC DIMENSIONS - MUST AGREE WITH DIMENSIONS DIMP 6 C*** IN FEMP DIMP 7 C DIMP 8 C**********DIMP 9 MBUFA = 10 DIMP 10 MELEM = 25 DIMP 11 MFRON = 40 DIMP 12 MMATS = 10 DIMP 13 MPOIN = 80 DIMP 14 MSTIF=(MFRON*MFRON-MFRON)/2.0+MFRON DIMP 15 MTOTG = MELEM*9 DIMP 16 NDOFN = 3 DIMP 17 MTOTV = MPOIN*NDOFN DIMP 18 MVFIX = 40 DIMP 19 NDIME=2 DIMP 20 NPROP = 8 DIMP 21 NSTRE = 5 DIMP 22 MEVAB = NDOFN*9 DIMP 23 RETURN DIMP 24 END DIMP 25 ``` # 9.5.5 Subroutine FLOWMP This subroutine determines the yield function derivatives $[\partial F/\partial M_{x}, \partial F/\partial M_{y}, \partial F/\partial M_{xy}]^{T}$ for nonlayered Mindlin plates of Von Mises or Tresca material. This routine is almost identical to the corresponding one given in Chapter 7 for plane stress, plane strain and axisymmetric problems. ```c SUBROUTINE FLOWMP (ABETA, AVECT, DEVIA, DMATX, DVECT, HARDS, NCRIT, SINT3, STEFF, THETA, VARJ2) FLOW 1 C**********FLOW 3 C FLOW 4 C*** DETERMINES YIELD FUNCTION DERIVATIVES FOR MINDLIN PLATES FLOW 5 C*** 1 VON MISES FLOW 6 C*** 2 TRESCA FLOW 7 C FLOW 8 C**********FLOW 9 ``` ```csv C DIMENSION AVECT(5),DEVIA(4),DMATX(3,3),DVECT(5), VECA1(3),VECA2(3),VECA3(3) C C*** DETERMINE THE VECTOR DERIVATIVE OF F FOR VON-MISES SINTH=SIN(THETA) COSTH=COS(THETA) ROOT3=1.73205080757 C C*** CALCULATE VECTOR A1 VECA1(1)=0.333333333333 VECA1(2)=0.333333333333 VECA1(3)=0.0 C C*** CALCULATE VECTOR A2 DO 10 ISTRE=1,3 10 VECA2(ISTRE)=DEVIA(ISTRE)/(2.0*STEFF) VECA2(3)=DEVIA(3)/STEFF C C*** CALCULATE VECTOR A3 VECA3(1)=DEVIA(2)*DEVIA(4)+VARJ2/3.0 VECA3(2)=DEVIA(1)*DEVIA(4)+VARJ2/3.0 VECA3(3)=-2.0*DEVIA(3)*DEVIA(4) GO TO (1,2) NCRIT C C*** VON MISES 1 CONS1=0.0 CONS2=ROOT3 CONS3=0.0 GO TO 40 C C*** TRESCA 2 CONS1=0.0 ABTHE=ABS(THETA*57.29577951308) IF(ABTHE.LT.29.0) GO TO 20 CONS2=ROOT3 CONS3=0.0 GO TO 40 20 CONS2=2.0*(COSTH+SINTH*SINT3/SQRT(1.0-SINT3*SINT3)) CONS3=ROOT3*SINTH/(VARJ2*SQRT(1.0-SINT3*SINT3)) 40 CONTINUE DO 50 ISTRE=1,3 50 AVECT(ISTRE)=CONS1*VECA1(ISTRE)+CONS2*VECA2(ISTRE)+CONS3* .VECA3(ISTRE) C C*** DETERMINE THE VECTOR D DENOM=HARDS DO 120 ISTRE=1,3 DVECT(ISTRE)=0.0 DO 110 JSTRE=1,3 110 DVECT(ISTRE)=DVECT(ISTRE)+DMATX(ISTRE,JSTRE)*AVECT(JSTRE) 120 DENOM=DENOM+AVECT(ISTRE)*DVECT(ISTRE) ABETA=1.0 DENOM RETURN END FLOW 10 FLOW 11 FLOW 12 FLOW 13 FLOW 14 FLOW 15 FLOW 16 FLOW 17 FLOW 18 FLOW 19 FLOW 20 FLOW 21 FLOW 22 FLOW 23 FLOW 24 FLOW 25 FLOW 26 FLOW 27 FLOW 28 FLOW 29 FLOW 30 FLOW 31 FLOW 32 FLOW 33 FLOW 34 FLOW 35 FLOW 36 FLOW 37 FLOW 38 FLOW 39 FLOW 40 FLOW 41 FLOW 42 FLOW 43 FLOW 44 FLOW 45 FLOW 46 FLOW 47 FLOW 48 FLOW 49 FLOW 50 FLOW 51 FLOW 52 FLOW 53 FLOW 54 FLOW 55 FLOW 56 FLOW 57 FLOW 58 FLOW 59 FLOW 60 FLOW 61 FLOW 62 FLOW 63 FLOW 64 FLOW 65 FLOW 66 FLOW 67 FLOW 68 FLOW 69 FLOW 70 ``` # 9.5.6 Subroutine GRADMP This subroutine evaluates displacement gradients $\partial w/\partial x$ , $\partial w/\partial y$ , $\partial \theta_{x}/\partial x$ , $\partial \theta_{x}/\partial y$ , $\partial \theta_{y}/\partial x$ and $\partial \theta_{y}/\partial y$ . ```fortran SUBROUTINE GRADMP (CARTD,DGRAD,ELDIS,NDOFN,NNODE) GRAD 1 C**************************GRAD 2 C GRAD 3 C*** FORM TOTAL DISPLACEMENTS GRADIENTS GRAD 4 C GRAD 5 C**************************GRAD 6 DIMENSION CARTD(2,9),DGRAD(6),ELDIS(3,9) GRAD 7 C*** ZERO DGRAD GRAD 8 CALL VZERO(6,DGRAD) GRAD 9 C*** FORM TOTAL DISPLACEMENTS GRADIENTS GRAD 10 DO 10 INODE=1,NNODE GRAD 11 DNIDX=CARTD(1,INODE) GRAD 12 DNIDY=CARTD(2,INODE) GRAD 13 DO 10 IDOFN=1,NDOFN GRAD 14 IPOSN=NDOFN+IDOFN GRAD 15 CONST=ELDIS(IDOFN,INODE) GRAD 16 DGRAD(IDOFN)=DGRAD(IDOFN)+DNIDX*CONST GRAD 17 10 DGRAD(IPOSN)=DGRAD(IPOSN)+DNIDY*CONST GRAD 18 RETURN GRAD 19 END GRAD 20 ``` # 9.5.7 Subroutine INVMP This subroutine evaluates the Mindlin plate bending moment invariants. It also evaluates the effective moment for the Tresca and Von Mises materials. ```txt SUBROUTINE INVMP (DEVIA, NCRIT, SINT3, STEFF, STEMP, THETA, INVR 1 . VARJ2, YIELD) INVR 2 C************************** INVR 3 C INVR 4 C*** CALCULATE MINDLIN PLATE STRESS RESULTANT INVARIANTS INVR 5 C INVR 6 C************************** INVR 7 DIMENSION STEMP(5), DEVIA(4) INVR 8 SMEAN=(STEMP(1)+STEMP(2))/3.0 INVR 9 DEVIA(1)=STEMP(1)-SMEAN INVR 10 DEVIA(2)=STEMP(2)-SMEAN INVR 11 DEVIA(3)=STEMP(3) INVR 12 DEVIA(4)=-SMEAN INVR 13 VARJ2=DEVIA(3)*DEVIA(3)+0.5*(DEVIA(1)*DEVIA(1)+DEVIA(2)*DEVIA(2) INVR 14 .+DEVIA(4)*DEVIA(4)) INVR 15 VARJ3=DEVIA(4)*(DEVIA(4)*DEVIA(4)-VARJ2) INVR 16 STEFF=SQRT(VARJ2) INVR 17 SINT3=-2.5980762113*VARJ3/(VARJ2*STEFF) INVR 18 THETA=ASIN(SINT3)/3.0 INVR 19 GO TO (1,2) NCRIT INVR 20 C*** VON MISES INVR 21 1 YIELD=1.73205080757*STEFF INVR 22 RETURN INVR 23 C*** TRESCA INVR 24 2 YIELD=2.0*COS(THETA)*STEFF INVR 25 RETURN INVR 26 END INVR 27 ```