```txt DERIV(1,7)=(-T+S2+ST2-TT)/4.0 SFR2 62 DERIV(1,8)=(-1.0+TT)/2.0 SFR2 63 DERIV(2,1)=(S+T2-SS-ST2)/4.0 SFR2 64 DERIV(2,2)=(-1.0+SS)/2.0 SFR2 65 DERIV(2,3)=(-S+T2-SS+ST2)/4.0 SFR2 66 DERIV(2,4)=-T-ST SFR2 67 DERIV(2,5)=(S+T2+SS+ST2)/4.0 SFR2 68 DERIV(2,6)=(1.0-SS)/2.0 SFR2 69 DERIV(2,7)=(-S+T2+SS-ST2)/4.0 SFR2 70 DERIV(2,8)=-T+ST SFR2 71 RETURN SFR2 72 30 CONTINUE SFR2 73 SS=S*S SFR2 74 ST=S*T SFR2 75 TT=T*T SFR2 76 S1=S+1.0 SFR2 77 T1=T+1.0 SFR2 78 S2=S*2.0 SFR2 79 T2=T*2.0 SFR2 80 S9=S-1.0 SFR2 81 T9=T-1.0 SFR2 82 C SFR2 83 C*** SHAPE FUNCTIONS FOR 9 NODED ELEMENT SFR2 84 C SFR2 85 SHAPE(1)=0.25*S9*ST*T9 SFR2 86 SHAPE(2)=0.5*(1.0-SS)*T*T9 SFR2 87 SHAPE(3)=0.25*S1*ST*T9 SFR2 88 SHAPE(4)=0.5*S*S1*(1.0-TT) SFR2 89 SHAPE(5)=0.25*S1*ST*T1 SFR2 90 SHAPE(6)=0.5*(1.0-SS)*T*T1 SFR2 91 SHAPE(7)=0.25*S9*ST*T1 SFR2 92 SHAPE(8)=0.5*S*S9*(1.0-TT) SFR2 93 SHAPE(9)=(1.0-SS)*(1.0-TT) SFR2 94 C SFR2 95 C*** SHAPE FUNCTION DERIVATIVES SFR2 96 C SFR2 97 DERIV(1,1)=0.25*T*T9*(-1.0+S2) SFR2 98 DERIV(1,2)=-ST*T9 SFR2 99 DERIV(1,3)=0.25*(1.0+S2)*T*T9 SFR2 100 DERIV(1,4)=0.5*(1.0+S2)*(1.0-TT) SFR2 101 DERIV(1,5)=0.25*(1.0+S2)*T*T1 SFR2 102 DERIV(1,6)=-ST*T1 SFR2 103 DERIV(1,7)=0.25*(-1.0+S2)*T*T1 SFR2 104 DERIV(1,8)=0.5*(-1.0+S2)*(1.0-TT) SFR2 105 DERIV(1,9)=-S2*(1.0-TT) SFR2 106 DERIV(2,1)=0.25*(-1.0+T2)*S*S9 SFR2 107 DERIV(2,2)=0.5*(1.0-SS)*(-1.0+T2) SFR2 108 DERIV(2,3)=0.25*S*S1*(-1.0+T2) SFR2 109 DERIV(2,4)=-ST*S1 SFR2 110 DERIV(2,5)=0.25*S*S1*(1.0+T2) SFR2 111 DERIV(2,6)=0.5*(1.0-SS)*(1.0+T2) SFR2 112 DERIV(2,7)=0.25*S*S9*(1.0+T2) SFR2 113 DERIV(2,8)=-ST*S9 SFR2 114 DERIV(2,9)=-T2*(1.0-SS) SFR2 115 20 CONTINUE SFR2 116 RETURN SFR2 117 END SFR2 118 ``` # 6.4.4 Subroutine JACOB2 for evaluating the Jacobian matrix This subroutine calculates, for any sampling position, $\xi_{P}$ , $\eta_{P}$ (usually the Gauss point), the following quantities: - The Cartesian coordinates of the Gauss point which are stored in the array GPCOD ( ). - The Jacobian matrix which is stored in XJACM ( ). For two-dimensional applications the Jacobian matrix is defined by (6.44). ● The determinant of the Jacobian matrix, DJACB. - The inverse of the Jacobian matrix which is stored as XJACI ( ). - The Cartesian derivatives $\partial N_{t}^{(e)} / \partial x$ , $\partial N_{t}^{(e)} / \partial y$ (or $\partial N_{t}^{(e)} / \partial r$ , $\partial N_{t}^{(e)} / \partial z$ ), of the element shape functions. These quantities are defined in (6.48). ```csv SUBROUTINE JACOB2(CARTD,DERIV,DJACB,ELCOD,GPCOD,IELEM,KGASP, NNODE,SHAPE) JACB 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 CREATE JACOBIAN MATRIX XJACM JACB 21 C DO 4 IDIME=1,2 JACB 22 DO 4 JDIME=1,2 JACB 23 XJACM(IDIME,JDIME)=0.0 JACB 24 DO 4 INODE=1,NNODE JACB 25 XJACM(IDIME,JDIME)=XJACM(IDIME,JDIME)+DERIV(IDIME,INODE)* JACB 26 ELCOD(JDIME,INODE) JACB 27 4 CONTINUE JACB 28 JACB 29 JACB 30 JACB 31 JACB 32 JACB 33 JACB 34 JACB 35 JACB 36 JACB 37 JACB 38 JACB 39 JACB 40 JACB 41 JACB 42 JACB 43 JACB 44 JACB 45 JACB 46 JACB 47 JACB 48 JACB 49 JACB 50 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 D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N M N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 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 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 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 A 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 M 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 J 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 I 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 P 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 B 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 L 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 U 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 S 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 G 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 F 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 E 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 T 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 R 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 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 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 ```
10 CONTINUEJACB51
600 FORMAT(//,36H PROGRAM HALTED IN SUBROUTINE JACOB2,/,11X, .22H ZERO OR NEGATIVE AREA,/,10X,16H ELEMENT NUMBER ,I5)JACB52
JACB53
RETURNJACB54
ENDJACB55
# 6.4.5 Subroutine LOADPS for evaluating the element nodal forces for plane and axisymmetric situations The role of this subroutine is to evaluate the consistent nodal forces for each element due to discrete point loads, gravity loading and distributed edge loading/unit length of element. This subroutine is described in detail in Chapter 7, Ref. 4. The types of loading to be considered are controlled by input parameters IPLOD, IGRAV, IEDGE. Nonzero values of these respective items indicate that point loads, gravity loading or distributed edge loading is to be considered. The consistent nodal loads are evaluated for each element separately and stored in the array RLOAD (IELEM, IEVAB) where IELEM indicates the element and IEVAB ranges over the degrees of freedom of the element. For equation solution by the frontal process it is not necessary to evaluate the total applied load acting at each node, with instead each element contribution being assembled directly into the global load vector during equation assembly and solution. # Point loads If parameter IPLOD is nonzero the applied nodal loads are read as input. For each particular node the applied forces are associated with any one of the elements attached to it; since each element contribution will be assembled before equation solution. Thus a search is performed over all elements until the node number is found in an element and the nodal loads are then associated with the appropriate degrees of freedom of that element. # Gravity loading For plane stress or plane strain problems the direction in which gravity acts need not coincide with either of the coordinate axes. Therefore the direction in which gravity acts must be defined as shown in Fig. 6.7 by specifying the angle $\theta$ which the gravity axis makes with the positive y axis. The intensity of the loading is defined by specifying the gravitational acceleration, g, which acts. For axisymmetric problems, of course, the gravity axis must coincide with the z axis. The consistent nodal forces for node i of an element are then given by $$ \left[ \begin{array}{l} P _ {x i} \\ P _ {y i} \end{array} \right] ^ {(e)} = \int_ {\underline {{\Omega}} ^ {(e)}} N _ {i} ^ {(e)} \rho g \left[ \begin{array}{c} \sin \theta \\ - \cos \theta \end{array} \right] d \Omega , \tag {6.61} $$ in which $\rho$ is the material mass density. Integrated numerically this becomes $$ \left[ \begin{array}{l} P _ {x t} \\ P _ {y t} \end{array} \right] ^ {(e)} = \sum_ {n = 1} ^ {N G A U S} \sum_ {m = 1} ^ {N G A U S} \rho g t \left[ \begin{array}{c} \sin \theta \\ - \cos \theta \end{array} \right] N _ {t} (\xi_ {n}, \eta_ {m}) W _ {n} W _ {m} \det J, \tag {6.62} $$ where t is the element thickness for plane problems. For axisymmetric applications t is replaced by $2\pi r_{P}$ , where $r_{P}$ is the radial distance to the Gauss point under consideration. ![](images/page-194_73fddd4e53f983503cb0c0745f599206e6b691f07bc07863d5f06ddcd032a31d.jpg)
text_image Consideration. η = +1 5 -ξ = +1 η ξ = -1 8 y, z 2 η = -1 3 θ = 0 for axisymmetric problems x, r Direction in which gravity acts
Fig. 6.7 Specification of the gravity axis for two-dimensional problems. # Distributed edge loading Any element edge can have a distributed loading per unit length in a normal and tangential direction prescribed to it as shown in Fig. 6.8. These distributed forces can vary (independently) along the edges. For the quadratic elements considered in this text, a quadratic loading distribution can, at best, be accommodated. The variation is defined by prescribing the normal and tangential values at the three nodal points forming the element edge to which the loads are applied. For linear quadrilateral elements, only a linear distributed load variation can be accommodated. In order to be consistent with the order of listing of nodal connection numbers in the element topology definition, the three (or two) nodes forming the loaded edge must also be listed in an anticlockwise sequence with respect to the loaded element. The positive directions of normal and tangential loading are indicated in Fig. 6.8. The consistent nodal forces for node i can be shown to be $^{(4)}$ $$ P _ {x i} ^ {(e)} = \int_ {I ^ {(e)}} N _ {i} ^ {(e)} \left(p _ {t} \frac {\dot {c} x}{\dot {c} \xi} - p _ {n} \frac {\dot {c} y}{\dot {c} \xi}\right) d \xi $$ $$ P _ {y i} ^ {(e)} = \int_ {\Gamma^ {(e)}} N _ {i} ^ {(e)} \left(p _ {n} \frac {\dot {c} x}{\dot {c} \xi} + p _ {t} \frac {\dot {c} y}{\dot {c} \xi}\right) d \xi , \tag {6.63} $$ where $p_{n}$ and $p_{t}$ are the normal and tangential distributed loads respectively. Integration is taken along the loaded element edge $\Gamma^{(e)}$ , which is arbitrarily chosen to be defined by $\eta = -1$ , as shown in Fig. 6.8. ![](images/page-195_f990afdf4a36ce9eff3a1c174c46fa8ecd8ab62c509d30ea5316d3315eae399d.jpg)
text_image numbering sequence y, z x, r Pn P1 η ξ dy dx dT Pt Pn
Fig. 6.8 Normal and tangential distributed loading on an element edge. For axisymmetric problems the edge loading is in fact a distributed loading/unit area, since integration is additionally made over the circumferential direction. If more than one type of loading acts on an element, the total nodal forces are accumulated and stored in array RLOAD. This total loading is then applied incrementally during elasto-plastic solution. ```asm SUBROUTINE LOADPS(COORD, LNODS, MATNO, MELEM, MMATS, MPOIN, NELEM, LDPS 1 . NEVAB, NGAUS, NNODE, NPOIN, NSTRE, NTYPE, POSGP, LDPS 2 . PROPS, RLOAD, WEIGP, NDOFN) LDPS 3 . LDPS 4 C*************** LDPS 5 C LDPS 6 C**** THIS SUBROUTINE EVALUATES THE CONSISTENT NODAL FORCES FOR EACH LDPS 7 C ELEMENT LDPS 8 C LDPS 9 C*************** LDPS 10 DIMENSION CARTD(2,9), COORD(MPOIN,2), DERIV(2,9), DGASH(2), LDPS 11 . DMATX(4,4), ELCOD(2,9), LNODS(MELEM,9), MATNO(MELEM), LDPS 12 . NOPRS(4), PGASH(2), POINT(2), POSGP(4), PRESS(4,2), LDPS 13 . PROPS(MMATS,7), RLOAD(MELEM,18), SHAPE(9), STRAN(4), LDPS 14 . STRES(4), TITLE(12), LDPS 15 . WEIGP(4), GPCOD(2,9) LDPS 16 TWOPI=6.283185308 LDPS 17 DO 10 IELEM=1, NELEM LDPS 18 DO 10 IEVAB=1, NEVAB LDPS 19 10 RLOAD(IELEM,IEVAB)=0.0 LDPS 20 READ(5,901) TITLE LDPS 21 901 FORMAT(12A6) LDPS 22 WRITE(6,903) TITLE LDPS 23 903 FORMAT(1H0,12A6) LDPS 24 ``` ```csv C C*** READ DATA CONTROLLING LOADING TYPES TO BE INPUTTED C READ(5,919) IPLOD,IGRAV,IEDGE WRITE(6,919) IPLOD,IGRAV,IEDGE 919 FORMAT(3I5) C C*** READ NODAL POINT LOADS C IF(IPLOD.EQ.0) GO TO 500 20 READ(5,919) LODPT,(POINT(IDOFN),IDOFN=1,2) WRITE(6,931) LODPT,(POINT(IDOFN),IDOFN=1,2) 931 FORMAT(I5,2F10.3) C C*** ASSOCIATE THE NODAL POINT LOADS WITH AN ELEMENT C DO 30 IELEM=1,NELEM DO 30 INODE=1,NNODE NLOCA=IABS(LNODS(IELEM,INODE)) 30 IF(LODPT.EQ.NLOCA) GO TO 40 40 DO 50 IDOFN=1,2 NGASH=(INODE-1)*2+IDOFN 50 RLOAD(IELEM,NGASH)=POINT(IDOFN) IF(LODPT.LT.NPOIN) GO TO 20 500 CONTINUE IF(IGRAV.EQ.0) GO TO 600 C C*** GRAVITY LOADING SECTION C C C*** READ GRAVITY ANGLE AND GRAVITATIONAL CONSTANT C READ(5,906) THETA,GRAVY 906 FORMAT(2F10.3) WRITE(6,911) THETA,GRAVY 911 FORMAT(1H0,16H GRAVITY ANGLE =,F10.3,19H GRAVITY CONSTANT =,F10.3) THETA=THETA/57.295779514 C C*** LOOP OVER EACH ELEMENT C DO 90 IELEM=1,NELEM C C*** SET UP PRELIMINARY CONSTANTS C LPROP=MATNO(IELEM) THICK=PROPS(LPROP,3) DENSE=PROPS(LPROP,4) IF(DENSE.EQ.0.0) GO TO 90 GXCOM=DENSE*GRAVY*SIN(THETA) GYCOM=-DENSE*GRAVY*COS(THETA) C C*** COMPUTE COORDINATES OF THE ELEMENT NODAL POINTS C DO 60 INODE=1,NNODE LNODE=IABS(LNODS(IELEM,INODE)) DO 60 IDIME=1,2 60 ELCOD(IDIME,INODE)=COORD(LNODE,IDIME) C C*** ENTER LOOPS FOR AREA NUMERICAL INTEGRATION C KGASP=0 DO 80 IGAUS=1,NGAUS DO 80 JGAUS=1,NGAUS EXISP=POSGP(IGAUS) ETASP=POSGP(JGAUS) LDPS 25 LDPS 26 LDPS 27 LDPS 28 LDPS 29 LDPS 30 LDPS 31 LDPS 32 LDPS 33 LDPS 34 LDPS 35 LDPS 36 LDPS 37 LDPS 38 LDPS 39 LDPS 40 LDPS 41 LDPS 42 LDPS 43 LDPS 44 LDPS 45 LDPS 46 LDPS 47 LDPS 48 LDPS 49 LDPS 50 LDPS 51 LDPS 52 LDPS 53 LDPS 54 LDPS 55 LDPS 56 LDPS 57 LDPS 58 LDPS 59 LDPS 60 LDPS 61 LDPS 62 LDPS 63 LDPS 64 LDPS 65 LDPS 66 LDPS 67 LDPS 68 LDPS 69 LDPS 70 LDPS 71 LDPS 72 LDPS 73 LDPS 74 LDPS 75 LDPS 76 LDPS 77 LDPS 78 LDPS 79 LDPS 80 LDPS 81 LDPS 82 LDPS 83 LDPS 84 LDPS 85 LDPS 86 LDPS 87 LDPS 88 LDPS 89 ``` ```csv C C*** COMPUTE THE SHAPE FUNCTIONS AT THE SAMPLING POINTS AND ELEMENTAL C VOLUME C CALL SFR2(DERIV,ETASP,EXISP,NNODE,SHAPE) KGASP=KGASP+1 CALL JACOB2(CARTD,DERIV,DJACB,ELCOD,GPCOD,IELEM,KGASP, NNODE,SHAPE) DVOLU=DJACB*WEIGP(IGAUS)*WEIGP(JGAUS) IF(THICK.NE.0.0) DVOLU=DVOLU*THICK IF(NTYPE.EQ.3) DVOLU=DVOLU*TWOPI*GPCOD(1,KGASP) C C*** CALCULATE LOADS AND ASSOCIATE WITH ELEMENT NODAL POINTS C DO 70 INODE=1,NNODE NGASH=(INODE-1)*2+1 MGASH=(INODE-1)*2+2 RLOAD(IELEM,NGASH)=RLOAD(IELEM,NGASH)+GXCOM*SHAPE(INODE)*DVOLU 70 RLOAD(IELEM,MGASH)=RLOAD(IELEM,MGASH)+GYCOM*SHAPE(INODE)*DVOLU 80 CONTINUE 90 CONTINUE 600 CONTINUE IF(IEDGE.EQ.0) GO TO 700 C C*** DISTRIBUTED EDGE LOADS SECTION C READ(5,932) NEDGE -932 FORMAT(I5) WRITE(6,912) NEDGE 912 FORMAT(1H0,5X,21HNO. OF LOADED EDGES =,I5) WRITE(6,915) 915 FORMAT(1H0,5X,38HLIST OF LOADED EDGES AND APPLIED LOADS) NODEG=3 NCODE=NNODE IF(NNODE.EQ.4) NODEG=2 IF(NNODE.EQ.9) NCODE=8 C C*** LOOP OVER EACH LOADED EDGE C DO 160 IEDGE=1,NEDGE C C*** READ DATA LOCATING THE LOADED EDGE AND APPLIED LOAD C READ(5,902) NEASS,(NOPRS(IODEG),IODEG=1,NODEG) 902 FORMAT(4I5) WRITE(6,913) NEASS,(NOPRS(IODEG),IODEG=1,NODEG) 913 FORMAT(I10,5X,3I5) READ(5,914) ((PRESS(IODEG,IDOFN),IDOFN=1,2),IODEG=1,NODEG) WRITE(6,914) ((PRESS(IODEG,IDOFN),IDOFN=1,2),IODEG=1,NODEG) 914 FORMAT(6F10.3) ETASP=-1.0 C C*** CALCULATE THE COORDINATES OF THE NODES OF THE ELEMENT EDGE C DO 100 IODEG=1,NODEG LNODE=NOPRS(IODEG) DO 100 IDIME=1,2 100 ELCOD(IDIME,IODEG)=COORD(LNODE,IDIME) C C*** ENTER LOOP FOR LINEAR NUMERICAL INTEGRATION DO 150 IGAUS=1,NGAUS EXISP=POSGP(IGAUS) C C*** EVALUATE THE SHAPE FUNCTIONS AT THE SAMPLING POINTS C ``` ```csv CALL SFR2(DERIV, ETASP, EXISP, NNODE, SHAPE) LDPS 155 C C*** CALCULATE COMPONENTS OF THE EQUIVALENT NODAL LOADS LDPS 157 C DO 110 IDOFN=1,2 LDPS 156 PGASH(IDOFN)=0.0 LDPS 160 DGASH(IDOFN)=0.0 LDPS 161 DO 110 IODEG=1, NODEG LDPS 162 PGASH(IDOFN)=PGASH(IDOFN)+PRESS(IODEG, IDOFN)*SHAPE(IODEG) LDPS 163 110 DGASH(IDOFN)=DGASH(IDOFN)+ELCOD(IDOFN, IODEG)*DERIV(1, IODEG) LDPS 164 DVOLU=WEIGP(IGAUS) LDPS 165 PXCOM=DGASH(1)*PGASH(2)-DGASH(2)*PGASH(1) LDPS 166 PYCOM=DGASH(1)*PGASH(1)+DGASH(2)*PGASH(2) LDPS 167 IF(NTYPE.NE.3) GO TO 115 LDPS 168 RADUS=0.0 LDPS 169 DO 125 IODEG=1, NODEG LDPS 170 125 RADUS=RADIUS+SHAPE(IODEG)*ELCOD(1, IODEG) LDPS 171 DVOLU=DVOLU*TWOPI*RADIUS LDPS 172 115 CONTINUE LDPS 173 C C*** ASSOCIATE THE EQUIVALENT NODAL EDGE LOADS WITH AN ELEMENT LDPS 175 C DO 120 INODE=1, NNODE LDPS 176 NLOCA=IABS(LNODS(NEASS, INODE)) LDPS 177 120 IF(NLOCA.EQ.NOPRS(1)) GO TO 130 LDPS 178 130 JNODE=INODE+NODEG-1 LDPS 179 KOUNT=0 LDPS 180 DO 140 KNODE=INODE, JNODE LDPS 181 KOUNT=KOUNT+1 LDPS 182 NGASH=(KNODE-1)*NDOFN+1 LDPS 183 MGASH=(KNODE-1)*NDOFN+2 LDPS 184 IF(KNODE.GT.NCODE) NGASH=1 LDPS 185 IF(KNODE.GT.NCODE) MGASH=2 LDPS 186 RLOAD(NEASS, NGASH)=RLOAD(NEASS, NGASH)+SHAPE(KOUNT)*PXCOM*DVOLU LDPS 187 140 RLOAD(NEASS, MGASH)=RLOAD(NEASS, MGASH)+SHAPE(KOUNT)*PYCOM*DVOLU LDPS 188 150 CONTINUE LDPS 189 160 CONTINUE LDPS 190 700 CONTINUE LDPS 191 WRITE(6,907) LDPS 192 907 FORMAT(1HO,5X,36H TOTAL NODAL FORCES FOR EACH ELEMENT) LDPS 193 DO 290 IELEM=1, NELEM LDPS 194 290 WRITE(6,905) IELEM,(RLOAD(IELEM, IEVAB), IEVAB=1, NEVAB) LDPS 195 905 FORMAT(1X,14,5X,8E12.4/(10X,8E12.4)) LDPS 196 RETURN LDPS 197 END LDPS 198 LDPS 199 ``` # 6.4.6 Subroutine LOADPB for evaluating the element nodal forces for plate bending applications For plate bending applications two forms of loading will be considered. Firstly load components corresponding to the permissible generalised forces may be prescribed at the nodal points. Thus with respect to Fig. 6.9, a load in the z direction and couples acting in both the xz and yz planes may be input at each nodal point. Secondly a uniformly distributed load acting normal to the plate (i.e. in the z direction) may be applied. As in Section 6.4.5 such a loading must be converted into equivalent nodal forces before equation solution takes place. The equivalent nodal forces for node i take the form $^{(4)}$ $$ \left[ \begin{array}{l} P _ {i} \\ M _ {x i} \\ M _ {y i} \end{array} \right] ^ {(e)} = \int_ {A ^ {(e)}} N _ {i} ^ {(e)} \left[ \begin{array}{l} q \\ 0 \\ 0 \end{array} \right] d A, \tag {6.64} $$ where q is the distributed load intensity and integration is taken over the element area. The structure of the subroutine is similar to that of subroutine LOADPS described in Section 6.4.5. ![](images/page-199_12f7eebe561571e7d62ec3478907e328773403722387073b60a691fbee292c98.jpg)
text_image q/unit area P My Mx z y x
Fig. 6.9 Applied nodal and distributed forces for plate applications ```fortran SUBROUTINE LOADPB (COORD, LNODS, MATNO, MELEM, MMATS, MPOIN, LOAD 1 NELEM, NEVAB, NGAUS, NNODE, NPOIN, PROPS, LOAD 2 RLOAD) LOAD 3 C********** LOAD 4 C LOAD 5 C*** COMPUTE NODAL FORCES AFTER READING RELEVANT DATA LOAD 6 C*** FOR MINDLIN PLATE ELEMENTS LOAD 7 C LOAD 8 C********** LOAD 9 DIMENSION CARTD(2,9), COORD(MPOIN,2), DERIV(2,9), ELCOD(2,9), LOAD 10 GPCOD(2,9), LNODS(MELEM,9), MATNO(MELEM), LOAD 11 POINT(3), POSGP(4), PROPS(MMATS,8), RLOAD(MELEM,27), LOAD 12 SHAPE(9), TITLE(12), WEIGP(4) LOAD 13 DO 10 IELEM=1, NELEM LOAD 14 DO 10 IEVAB=1, NEVAB LOAD 15 10 RLOAD(IELEM, IEVAB)=0.0 LOAD 16 READ(5,901) TITLE LOAD 17 901 FORMAT(12A6) LOAD 18 WRITE(6,903) TITLE LOAD 19 903 FORMAT(1H0,12A6) LOAD 20 C LOAD 21 C*** READ DATA CONTROLLING LOADING TYPES TO BE INPUTTED LOAD 22 C LOAD 23 READ(5,919) IPLOD LOAD 24 WRITE(6,919) IPLOD LOAD 25 919 FORMAT(4I5) LOAD 26 C LOAD 27 C*** READ NODAL POINT LOADS LOAD 28 C LOAD 29 IF(IPLOD.EQ.0) GO TO 500 LOAD 30 20 READ(5,931) LODPT, (POINT(IDOFN), IDOFN=1,3) LOAD 31 WRITE(6,931) LODPT, (POINT(IDOFN), IDOFN=1,3) LOAD 32 931 FORMAT(I5,2F10.3) LOAD 33 C LOAD 34 ``` ```csv C*** ASSOCIATE THE NODAL POINT LOADS WITH AN ELEMENT C DO 30 IELEM=1,NELEM DO 30 INODE=1,NNODE NLOCA=IABS(LNODS(IELEM,INODE)) 30 IF(LODPT.EQ.NLOCA) GO TO 40 40 DO 50 IDOFN=1,3 NGASH=(INODE-1)*3+IDOFN 50 RLOAD(IELEM,NGASH)=POINT(IDOFN) IF(LODPT.LT.NPOIN) GO TO 20 500 CONTINUE C C*** LOOP OVER EACH ELEMENT C DO 220 IELEM=1,NELEM LPROP=MATNO(IELEM) UDLOD=PROPS(LPROP,4) IF(UDLOD.EQ.0.0)GO TO 220 C C*** EVALUATE THE COORDINATES OF THE ELEMENT NODAL POINTS C DO 140 INODE=1,NNODE LNODE=LNODS(IELEM,INODE) LNODE=IABS(LNODE) DO 140 IDIME=1,2 ELCOD(IDIME,INODE)=COORD(LNODE,IDIME) 140 CONTINUE KGASP=0 CALL GAUSSQ (NGAUS,POSGP,WEIGP) C C*** ENTER LOOPS FOR NUMERICAL INTEGRATION C DO 200 IGAUS=1,NGAUS EXISP=POSGP(IGAUS) DO 200 JGAUS=1,NGAUS ETASP=POSGP(JGAUS) KGASP=KGASP+1 C C*** EVALUATE THE SHAPE FUNCTIONS AT THE SAMPLING C POINTS AND ELEMENTAL AREA 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*** CALCULATE LOADS AND ASSOCIATE WITH ELEMENT NODALPOINTS C DO 180 INODE=1,NNODE NPOSN=(INODE-1)*3+1 RLOAD(IELEM,NPOSN)=RLOAD(IELEM,NPOSN)+ SHAPE(INODE)*UDLOD*DAREA 180 CONTINUE 200 CONTINUE 220 CONTINUE WRITE(6,907) 907 FORMAT(1H0,5X,36H TOTAL NODAL FORCES FOR EACH ELEMENT) DO 290 IELEM=1,NELEM 290 WRITE(6,905) IELEM,(RLOAD(IELEM,IEVAB),IEVAB=1,NEVAB) 905 FORMAT(1X,I4,5X,8E12.4/(10X,8E12.4)) RETURN END LOAD 35 LOAD 36 LOAD 37 LOAD 38 LOAD 39 LOAD 40 LOAD 41 LOAD 42 LOAD 43 LOAD 44 LOAD 45 LOAD 46 LOAD 47 LOAD 48 LOAD 49 LOAD 50 LOAD 51 LOAD 52 LOAD 53 LOAD 54 LOAD 55 LOAD 56 LOAD 57 LOAD 58 LOAD 59 LOAD 60 LOAD 61 LOAD 62 LOAD 63 LOAD 64 LOAD 65 LOAD 66 LOAD 67 LOAD 68 LOAD 69 LOAD 70 LOAD 71 LOAD 72 LOAD 73 LOAD 74 LOAD 75 LOAD 76 LOAD 77 LOAD 78 LOAD 79 LOAD 80 LOAD 81 LOAD 82 LOAD 83 LOAD 84 LOAD 85 LOAD 86 LOAD 87 LOAD 88 LOAD 89 LOAD 90 LOAD 91 LOAD 92 LOAD 93 LOAD 94 LOAD 95 LOAD 96 ```