21 KiB
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.
flowchart
graph TD
A["START"] --> B["DIMMP<br>Presents the variables associated with the dynamic dimensioning process"]
B --> C["INPUT<br>Inputs data defining geometry, boundary conditions and material properties"]
C --> D["ZEROMP<br>Sets to zero arrays required for accumulation of data"]
D --> E["MINDPB<br>Inputs additional data required for Mindlin plate analysis"]
E --> F["LOADPB<br>Reads loading data and evaluates the equivalent nodal forces for distributed loading"]
F --> G["INCREM<br>Increments the applied load according to specified load factors"]
G --> H["ALGOR<br>Sets indicator to identify the type of solution algorithm, i.e., initial or tangential stiffness etc."]
H --> I["A"]
flowchart
graph TD
A["A"] --> B{Is it necessary to recalculate stiffness matrix with present algorithm?}
B -->|Yes| C["STIFMP<br>Calculate element stiffness matrices for nonlayered elastoplastic Mindlin plate"]
B -->|No| D["END"]
C --> E["FRONT<br>Solve the simultaneous equation system by the frontal method"]
E --> F["RESMP<br>Evaluate the residual force vector for the nonlayered elastoplastic Mindlin plate"]
F --> G["CONVMP<br>Check whether solution has converged using a residual force or displacement norm"]
G --> H["OUTMP<br>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.
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
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
| STOP | FEMP 122 | |||
| 100 CALL | OUTMP | (EPSTN,IITER,MTOTG,MTOTV,MVFIX,NELEM,NGAUS,NOFIX,NOUTP,NPOIN,NVFIX,STRSG,TDISP,TREAC) | FEMP 123 | |
| . | FEMP 124 | |||
| . | FEMP 125 | |||
| 70 CONTINUE | FEMP 126 | |||
| 20 CONTINUE | FEMP 127 | |||
| 10 CONTINUE | FEMP 128 | |||
| STOP | FEMP 129 | |||
| END | FEMP 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, | CONV | 1 | |
| . | MELEM,MEVAB,MTOTV,NCHEK,NCDIS,NCRES, | CONV | 2 | |
| . | NDOFN,NELEM,NEVAB,NNODE,NPOIN,NTOTV, | CONV | 3 | |
| . | REFOR,TOFOR,TDISP,TLOAD,TOLER) | CONV | 4 | |
| C********** | CONV | 5 | ||
| C | CONV | 6 | ||
| C*** | ESTABLISHES WHETHER A SOLUTION HAS CONVERGED WITH | CONV | 7 | |
| C*** | REFERENCE TO SOME DISPLACEMENT OR RESIDUAL FORCE NORM | CONV | 8 | |
| C | CONV | 9 | ||
| C********** | CONV | 10 | ||
| DIMENSION ADIDF(3),ASDIS(MTOTV),ELOAD(MELEM,MEVAB),LNODS(MELEM,9),CONV | 11 | |||
| . | NCDIS(4),NCRES(4),REFDF(3),REFOR(MTOTV),TDIDF(3), | CONV | 12 | |
| . | TDISP(MTOTV),TLOAD(MELEM,MEVAB),TOFDF(3),TOFOR(MTOTV) | CONV | 13 | |
| WRITE(6,606) IITER | CONV | 14 | ||
| 606 | FORMAT(///,' IN CONVER',10X,'ITERATION NUMBER',I3,/) | CONV | 15 | |
| C*** | COMPUTE ELEMENT RESIDUAL FORCES | CONV | 16 | |
| DO 10 IELEM=1,NELEM | CONV | 17 | ||
| DO 10 IEVAB=1,NEVAB | CONV | 18 | ||
| 10 | ELOAD(IELEM,IEVAB)=TLOAD(IELEM,IEVAB)-ELOAD(IELEM,IEVAB) | CONV | 19 | |
| C*** | SET CONVERGENCE CODE TO ZERO | CONV | 20 | |
| NCHEK=0 | CONV | 21 | ||
| C*** | DISPLACEMENT CONVERGENCE CHECK | CONV | 22 | |
| IF(IFDIS.EQ.0) GOTO 1000 | CONV | 23 | ||
| C*** | COMPUTE TOTAL AND DIRECTIONAL NORMS OF DISPLACEMENTS | CONV | 24 | |
| ADITO=0.0 | CONV | 25 | ||
| TDITO=0.0 | CONV | 26 | ||
| CALL VZERO (NDOFN,ADIDF) | CONV | 27 | ||
| CALL VZERO (NDOFN,TDIDF) | CONV | 28 | ||
| NPOSI=0 | CONV | 29 | ||
| DO:20 IPOIN=1,NPOIN | CONV | 30 | ||
| DO^20 IDOFN=1,NDOFN | CONV | 31 | ||
| NPOSI=NPOSI+1 | CONV | 32 | ||
| ADIDF(IDOFN)=ADIDF(IDOFN)+ASDIS(NPOSI)*ASDIS(NPOSI) | CONV | 33 | ||
| 20 | TDIDF(IDOFN)=TDIDF(IDOFN)+TDISP(NPOSI)*TDISP(NPOSI) | CONV | 34 | |
| DO 30 IDOFN=1,NDOFN | CONV | 35 | ||
| ADITO=ADITO+ADIDF(IDOFN) | CONV | 36 | ||
| TDITO=TDITO+TDIDF(IDOFN) | CONV | 37 | ||
| ADIDF(IDOFN)=SQRT(ADIDF(IDOFN)) | CONV | 38 | ||
| 30 | TDIDF(IDOFN)=SQRT(TDIDF(IDOFN)) | CONV | 39 | |
| ADITO=SQRT(ADITO) | CONV | 40 | ||
| TDITO=SQRT(TDITO) | CONV | 41 | ||
| C*** | CHECK FOR CONVERGENCE AND PRINT ERRORS PER CENT | CONV | 42 | |
| DO 40 IDOFN=1,NDOFN | CONV | 43 | ||
| IF(TDIDF(IDOFN).EQ.0.0) GOTO 40 | CONV | 44 | ||
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
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.
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.
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
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 .
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.
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

