CCEK137
C*** OTHERWISE ECHO ALL THE REMAINING DATA WITHOUT FURTHER COMMENTCEK138
CCEK139
CALL ECHOCEK140
ENDCEK141
Table 6.2 Errors diagnosed by Subroutine CHECK1.
Error LabelInterpretation
1The specified total number of node points, NPOIN, in the structure is less than or equal to zero.
2The possible maximum total number of node points in the structure is less than the specified total, NPOIN.
3The number of restrained nodal points is less than 2 or greater than NPOIN (for plane problems at least 2 points must be restrained to eliminate rigid body motions).
4The total number of load increments is less than 1.
5The problem type parameter, NTYPE, is not specified as either 1, 2 or 3.
6The number of nodes/element is less than 4 (linear quadrilateral) or greater than 9 (quadratic Lagrangian elements).
7The number of degrees of freedom per node is not equal to 2 (plane) or 3 (plate problems).
8The total number of different materials is less than or equal to zero or greater than the total number of elements in the structure.
9The parameter specifying the yield criterion to be employed is outside the permissible range.
10The number of Gaussian integration points in each direction is not equal to either 2 or 3.
11The parameter specifying the nonlinear solution algorithm to be employed is outside the permissible range.
12The size of the stress matrix is less than 3 (plane) or greater than 5 (plate problems).
# 6.4.14 Data echo subroutine, ECHO The function of this subroutine is to list all the remaining data cards after at least one error has been detected by either of the diagnostic subroutines CHECK1 or CHECK2. This is accomplished by means of a simple read and write operation in alphanumeric format.
SUBROUTINE ECHOECHO1
C**********ECHO2
CECHO3
C***IF DATA ERRORS HAVE BEEN DETECTED BY SUBROUTINES CHECK1 ORECHO4
CCHECK2,THIS SUBROUTINE READS AND WRITES THE REMAINING DATA CARDSECHO5
CECHO6
C**********ECHO7
DIMENSION NTITL(80)ECHO8
WRITE(6,900)ECHO9
900FORMAT(//50H NOW FOLLOWS A LISTING OF POST-DISASTER DATA CARDS/)ECHO10
10READ(5,905) NTITLECHO11
905FORMAT(80A1)ECHO12
WRITE(6,910) NTITLECHO13
910FORMAT(20X,80A1)ECHO14
GO TO 10ECHO15
ENDECHO16
# 6.4.15 Data error diagnostic subroutine, CHECK2 If the problem control parameters have passed the scrutiny of subroutine CHECK1, the geometric data, boundary conditions and material properties are then assimilated by subroutine INPUT. This data is then scrutinised for possible errors in subroutine CHECK2 where error types 13 to 24, listed in Table 6.3, are checked for. Probably the most useful check in this subroutine is the one which ensures that the maximum frontwidth does not exceed the dimensions specified in subroutine FRONT. Subroutine CHECK2 is described in detail in Chapter 9, Ref. 4. ```fortran SUBROUTINE CHECK2(COORD, IFFIX, LNODS, MATNO, MELEM, MFRON, MPOIN, MTOTV, CEK2 1 . MVFIX, NDFRO, NDOFN, NELEM, NMATS, NNODE, NOFIX, NPOIN, CEK2 2 . NVFIX) CEK2 3 C*************** CEK2 4 C CEK2 5 C**** THIS SUBROUTINE CHECKS THE REMAINDER OF THE INPUT DATA CEK2 6 C CEK2 7 C*************** CEK2 8 DIMENSION COORD(MPOIN, 2), IFFIX(MTOTV), LNODS(MELEM, 9), CEK2 9 MATNO(MELEM), NDFRO(MELEM), NEROR(24), NOFIX(MVFIX) CEK2 10 C CEK2 11 C*** CHECK AGAINST TWO IDENTICAL NONZERO NODAL COORDINATES CEK2 12 C CEK2 13 DO 5 IEROR=13,24 CEK2 14 5 NEROR(IEROR)=0 CEK2 15 DO 10 IELEM=1, NELEM CEK2 16 10 NDFRO(IELEM)=0 CEK2 17 DO 50 IPOIN=2, NPOIN CEK2 18 KPOIN=IPOIN-1 CEK2 19 DO 30 JPOIN=1, KPOIN CEK2 20 DO 20 IDIME=1,2 CEK2 21 IF(COORD(IPOIN, IDIME).NE.COORD(JPOIN, IDIME)) GO TO 30 CEK2 22 20 CONTINUE CEK2 23 NEROR(13)=NEROR(13)+1 CEK2 24 30 CONTINUE CEK2 25 40 CONTINUE CEK2 26 C CEK2 27 C*** CHECK THE LIST OF ELEMENT PROPERTY NUMBERS CEK2 28 C CEK2 29 DO 50 IELEM=1, NELEM CEK2 30 50 IF(MATNO(IELEM).LE.0.OR.MATNO(IELEM).GT.NMATS) NEROR(14)=NEROR(14) CEK2 31 . +1 CEK2 32 C CEK2 33 C*** CHECK FOR IMPOSSIBLE NODE NUMBERS CEK2 34 C CEK2 35 DO 70 IELEM=1, NELEM CEK2 36 DO 60 INODE=1, NNODE CEK2 37 IF(LNODS(IELEM, INODE).EQ.0) NEROR(15)=NEROR(15)+1 CEK2 38 ``` ```csv 60 IF(LNODS(IELEM,INODE).LT.0.OR.LNODS(IELEM,INODE).GT.NPOIN) NEROR( CEK2 39 . 16)=NEROR(16)+1 70 CONTINUE CEK2 40 CEK2 41 CEK2 42 CEK2 43 CEK2 44 DO 140 IPOIN=1,NPOIN CEK2 45 KSTAR=0 CEK2 46 DO 100 IELEM=1,NELEM CEK2 47 KZERO=0 CEK2 48 DO 90 INODE=1,NNODE CEK2 49 IF(LNODS(IELEM,INODE).NE.IPOIN) GO TO 90 CEK2 50 KZERO=KZERO+1 CEK2 51 IF(KZERO.GT.1) NEROR(17)=NEROR(17)+1 CEK2 52 CEK2 53 C*** SEEK FIRST,LAST AND INTERMEDIATE APPEARANCES OF NODE IPOIN CEK2 54 C IF(KSTAR.NE.0) GO TO 80 CEK2 55 KSTAR=IELEM CEK2 56 CEK2 57 CEK2 58 C*** CALCULATE INCREASE OR DECREASE IN FRONTWIDTH AT EACH ELEMENT STAGE CEK2 59 C NDFRO(IELEM)=NDFRO(IELEM)+NDOFN CEK2 60 80 CONTINUE CEK2 61 CEK2 62 C C*** AND CHANGE THE SIGN OF THE LAST APPEARANCE OF EACH NODE CEK2 63 CEK2 64 CEK2 65 KLAST=IELEM CEK2 66 NLAST=INODE CEK2 67 90 CONTINUE CEK2 68 100 CONTINUE CEK2 69 IF(KSTAR.EQ.0) GO TO 110 CEK2 70 IF(KLAST.LT.NELEM) NDFRO(KLAST+1)=NDFRO(KLAST+1)-NDOFN CEK2 71 LNODS(KLAST,NLAST)=-IPOIN CEK2 72 GO TO 140 CEK2 73 CEK2 74 C*** CHECK THAT COORDINATES FOR AN UNUSED NODE HAVE NOT BEEN SPECIFIED CEK2 75 CEK2 76 110 WRITE(6,900) IPOIN CEK2 77 900 FORMAT(/15H CHECK WHY NODE,I4,14H NEVER APPEARS) CEK2 78 NEROR(18)=NEROR(18)+1 CEK2 79 SIGMA=0.0 CEK2 80 DO 120 IDIME=1,2 CEK2 81 120 SIGMA=SIGMA+ABS(COORD(IPOIN,IDIME)) CEK2 82 IF(SIGMA.NE.0.0) NEROR(19)=NEROR(19)+1 CEK2 83 CEK2 84 C*** CHECK THAT AN UNUSED NODE NUMBER IS NOT A RESTRAINED NODE CEK2 85 CEK2 86 DO 130 IVFIX=1,NVFIX CEK2 87 130 IF(NOFIX(IVFIX).EQ.IPOIN) NEROR(20)=NEROR(20)+1 CEK2 88 140 CONTINUE CEK2 89 CEK2 90 C*** CALCULATE THE LARGEST FRONTWIDTH CEK2 91 CEK2 92 NFRON=0 CEK2 93 KFRON=0 CEK2 94 DO 150 IELEM=1,NELEM CEK2 95 NFRON=NFRON+NDFRO(IELEM) CEK2 96 150 IF(NFRON.GT.KFRON) KFRON=NFRON CEK2 97 WRITE(6,905) KFRON CEK2 98 905 FORMAT(/33H MAXIMUM FRONTWIDTH ENCOUNTERED =,I5) CEK2 99 IF(KFRON.GT.MFRON) NEROR(21)=1 CEK2 100 CEK2 101 C*** CONTINUE CHECKING THE DATA FOR THE FIXED VALUES CEK2 102 CEK2 103 ```
DO 170 IVFIX=1,NVFIXCEK2 104
IF(NOFIX(IVFIX).LE.O.OR.NOFIX(IVFIX).GT.NPOIN) NEROR(22)=NEROR(22)CEK2 105
. +1CEK2 106
KOUNT=0CEK2 107
NLOCA=NOFIX(IVFIX)-1)*NDOFNCEK2 108
DO 160 IDOFN=1,NDOFNCEK2 109
NLOCA=NLOCA+1CEK2 110
160 IF(IFFIX(NLOCA).GT.0) KOUNT=1CEK2 111
IF(KOUNT.EQ.0) NEROR(23)=NEROR(23)+1CEK2 112
KVFIX=IVFIX-1CEK2 113
DO 170 JVFIX=1,KVFIXCEK2 114
170 IF(IVFIX.NE.1.AND.NOFIX(IVFIX).EQ.NOFIX(JVFIX)) NEROR(24)=NEROR(24CEK2 115
. )+1CEK2 116
KEROR=0CEK2 117
DO 180 IEROR=13,24CEK2 118
IF(NEROR(IEROR).EQ.0) GO TO 180CEK2 119
KEROR=1CEK2 120
WRITE(6,910) IEROR,NEROR(IEROR)CEK2 121
910 FORMAT(//31H *** DIAGNOSIS BY CHECK2, ERROR,I3,6X,18H ASSOCIATED NCEK2122
.UMBER,I5)CEK2 123
180 CONTINUECEK2 124
IF(KEROR.NE.0) GO TO 200CEK2 125
CCEK2 126
C*** RETURN ALL NODAL CONNECTION NUMBERS TO POSITIVE VALUESCEK2 127
CCEK2 128
DO 190 IELEM=1,NELEMCEK2 129
DO 190 INODE=1,NNODECEK2 130
190 LNODS(IELEM,INODE)=IABS(LNODS(IELEM,INODE))CEK2 131
RETURNCEK2 132
200 CALL ECHOCEK2 133
ENDCEK2 134
Table 6.3 Errors diagnosed by Subroutine CHECK2
Error LabelInterpretation
13A total of x identical nodal coordinates have been detected, i.e. x nodal points have coordinates which are identical to those of one or more of the remaining nodes.
14A total of x element material identification numbers are less than or equal to zero or greater than the total number of elements in the structure.
15A total of x nodal connection numbers have a zero value.
16A total of x nodal connection numbers are negative or greater than the specified maximum value, NPOIN.
17A total of x repetitions of node numbers within individual elements have been detected.
18A total of x nodes exist in the list of nodal points which do not appear anywhere in the list of element nodal connection numbers.
19Non-zero coordinates have been specified for a total of x nodes which do not appear in the list of element nodal connection numbers.
20A total of x node numbers which do not appear in the element nodal connections list have been specified as restrained nodal points.
21The largest frontwidth encountered in the problem has exceeded the maximum value specified in subroutine FRONT of the program.
22 A total of x restrained nodal points have numbers less than or equal to zero or greater than the specified maximum value, NPOIN. 23 A total of $x$ restrained nodal points at which the fixity code is less than or equal to zero have been detected. 24 A total of $x$ repetitions in the list of restrained nodal points have been detected. # 6.5 Standard subroutines for elasto-plastic finite element analysis In this section we describe four additional subroutines which are common to all the elasto-plastic and elasto-viscoplastic applications presented in Chapters 7, 8 and 9. For each subroutine presented, the form of the argument list and common block structure will be that required for two-dimensional elasto-plastic applications. # 6.5.1 Data input subroutine, INPUT The role of this subroutine is to accept most of the input data required for analysis of elasto-plastic problems. The structure of this subroutine follows closely that of subroutine DATA described in Section 3.2. Subroutine INPUT also closely resembles the data input subroutine presented in Chapter 3, Ref. 4 for linear elastic problems. The control parameters necessary for two-dimensional applications extend beyond those required for one-dimensional analysis and are presented below. NPOIN Total number of nodal points in the structure. NELEM Total number of elements in the structure. NVFIX Total number of boundary points, i.e. nodal points at which one or more degrees of freedom are restrained. NTYPE Problem type parameter: 1—Plane stress, 2—Plain strain, 3—Axial symmetry. NNODE Number of nodes per element: 4—Linear isoparametric quadrilateral element, 8—Quadratic isoparametric Serendipity element, 9—Quadratic isoparametric Langrangian element. NMATS Total number of different materials in the structure. NGAUS The order of Gaussian quadrature rule to be employed for numerical integration of the element stiffness matrices, etc., as described in Section 6.3.2. If NGAUS is prescribed as 2 a two-point Gauss rule is to be employed; if NGAUS is input as 3 a three-point rule will be used. NALGO Parameter controlling nonlinear solution algorithm: 1—Initial stiffness method. The element stiffnesses are computed at the beginning of the analysis and remain unchanged thereafter. 2—Tangential stiffness method. The element stiffnesses are recomputed during each iteration of each load increment. 3—Combined algorithm. The element stiffnesses are recomputed for the first iteration of each load increment only. 4—Combined algorithm. The element stiffnesses are recomputed for the second iteration of each load increment only. (Of course for the first load increment, the element stiffnesses must be calculated for the first iteration also.) NCRIT The yield criterion to be employed: 1—Tresca, 2—Von Mises, 3—Mohr-Coulomb, 4—Drucker-Prager. NINCS The total number of increments in which the final loading is to be applied. NSTRE The number of independent stress components for the application: 3—Plane stress/strain, 4—Axial symmetry. For the present two-dimensional applications two coordinate components are required to locate each nodal point. With reference to Figs. 6.2–6.4 the x, y components must be specified for plane stress or plane strain problems and the r, z components for axisymmetric situations. This information is stored in the array # COORD (IPOIN, IDIME) where IPOIN corresponds to the number of the nodal point and IDIME refers to the coordinate component. As mentioned in Section 6.4.1 nodal coordinates need not be supplied for mid-side nodes of 8- and 9-noded elements if they lie on a straight line between corner nodes. The coordinates of such intermediate nodes are evaluated by subroutine NODEXY by linear interpolation. For each nodal point at which the displacement value corresponding to one or more degrees of freedom are prescribed, input data must be supplied specifying these fixity conditions. The nodes at which one or more degrees of freedom are restrained are stored in array # NOFIX (IVFIX) which signifies that the IVFIX $^{th}$ boundary node has a nodal point number NOFIX (IVFIX). Input parameter IFPRE controls which degrees of freedom of a particular node are to have a specified displacement value. For example, for plane or axisymmetric problems, integer code IFPRE may have the following values: 10 Displacement in the $x(r)$ direction specified, 01 Displacement in the $y(z)$ direction specified, 11 Displacements in both $x(r)$ and $y(z)$ directions specified. This information is then transferred, for permanent storage, into array IFFIX (ITOTV) where ITOTV ranges over the total number of degrees of freedom of the structure. The prescribed displacement value associated with a restrained degree of freedom is stored in array PRESC (IVFIX, IDOFN) where IVFIX indicates that the prescribed displacements pertain to the IVFIX $^{th}$ boundary node and IDOFN ranges over the degrees of freedom of that node. The list of material properties for two-dimensional applications differs from the corresponding one-dimensional case considered in Section 3.2. In particular for plane and axisymmetric elasto-plastic problems the following material parameters must be input. PROPS (NUMAT, 1) Elastic modulus, $E$ . PROPS (NUMAT, 2) Poisson's ratio, $\nu$ . PROPS (NUMAT, 3) Material thickness, t (applicable to plane problems only). PROPS (NUMAT, 4) Material mass density, $\rho$ . PROPS (NUMAT, 5) Uniaxial yield stress, $\sigma_{Y}$ (Tresca and Von Mises solids); Cohesion c (Mohr–Coulomb and Drucker–Prager materials). PROPS (NUMAT, 6) Hardening parameter $H'$ for linear strain hardening. PROPS (NUMAT, 7) Angle of internal friction for Mohr-Coulomb and Drucker-Prager materials only. Consequently NPROP = 7 for two-dimensional elasto-plastic applications. The corresponding material data for plate bending problems is listed in Chapter 9. Subroutine INPUT also calls subroutine GAUSSQ, described in Section 6.4.2, whose function is to generate the sampling point position and weighting factors for numerical integration of the element stiffness matrices, etc., by Gaussian quadrature. The order of integration rule to be employed has been specified, through NGAUS, in the control data. Subroutine INPUT is now presented and is self-explanatory. ```fortran SUBROUTINE INPUT(COORD, IFFIX, LNODS, MATNO, MELEM, MEVAB, MFRON, MMATS, INPT 1 . MPOIN, MTOTV, MVFIX, NALGO, INPT 2 . NCRIT, NDFRO, NDOFN, NELEM, INPT 3 . NEVAB, NGAUS, NGAU2, INPT 4 . NINCS, NMATS, NNODE, NOFIX, NPOIN, NPROP, NSTRE, NSTR1, INPT 5 . NTOTG, NTOTV, NTYPE, NVFIX, POSGP, PRESC, PROPS, WEIGP) INPT 6 C***** C C*** THIS SUBROUTINE ACCEPTS MOST OF THE INPUT DATA INPT 7 C C***** DIMENSION COORD(MPOIN, 2), IFFIX(MTOTV), LNODS(MELEM, 9), INPT 10 . MATNO(MELEM), NDFRO(MELEM), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1 ``` ```csv 6 READ(5,905) IPOIN,(COORD(IPOIN,IDIME),IDIME=1,2) INPT 65 905 FORMAT(I5,6F10.5) INPT 66 IF(IPOIN.NE.NPOIN) GO TO 6 INPT 67 C INPT 68 C*** INTERPOLATE COORDINATES OF MID-SIDE NODES INPT 69 C CALL NODEXY(COORD,LNODS,MELEM,MPOIN,NELEM,NNODE) INPT 71 DO 10 IPOIN=1,NPOIN INPT 72 10 WRITE(6,906) IPOIN,(COORD(IPOIN,IDIME),IDIME=1,2) INPT 73 906 FORMAT(1X,I5,3F10.3) INPT 74 C INPT 75 C*** READ THE FIXED VALUES. INPT 76 C INPT 77 WRITE(6,907) INPT 78 907 FORMAT(//5H NODE,6X,4HCODE,6X,12HFIXED VALUES) INPT 79 DO 8 IVFIX=1,NVFIX INPT 80 READ(5,908) NOFIX(IVFIX),IFPRE,(PRESC(IVFIX,IDOFN),IDOFN=1,NDOFN) INPT 81 WRITE(6,908) NOFIX(IVFIX),IFPRE,(PRESC(IVFIX,IDOFN),IDOFN=1,NDOFN) INPT 82 NLOCA=(NOFIX(IVFIX)-1)*NDOFN INPT 83 IFDOF=10**(NDOFN-1) INPT 84 DO 8 IDOFN=1,NDOFN INPT 85 NGASH=NLOCA+IDOFN INPT 86 IF(IFPRE.LT.IFDOF) GO TO 8 INPT 87 IFFIX(NGASH)=1 INPT 88 IFPRE=IFPRE-IFDOF INPT 89 8 IFDOF=IFDOF/10 INPT 90 908 FORMAT(1X,I4,5X,I5,5X,5F10.6) INPT 91 C INPT 92 C*** READ THE AVAILABLE SELECTION OF ELEMENT PROPERTIES. INPT 93 C INPT 94 16 WRITE(6,910) INPT 95 910 FORMAT(//7H NUMBER,6X,18HELEMENT PROPERTIES) INPT 96 DO 18 IMATS=1,NMATS INPT 97 READ(5,900) NUMAT INPT 98 READ(5,930) (PROPS(NUMAT,IPROP),IPROP=1,NPROP) INPT 99 930 FORMAT(8F10.5) INPT 100 18 WRITE(6,911) NUMAT,(PROPS(NUMAT,IPROP),IPROP=1,NPROP) INPT 101 911 FORMAT(1X,I4,3X,8E14.6) INPT 102 C INPT 103 C*** SET UP GAUSSIAN INTEGRATION CONSTANTS INPT 104 C INPT 105 CALL GAUSSQ(NGAUS,POSGP,WEIGP) INPT 106 CALL CHECK2(COORD,IFFIX,LNODS,MATNO,MELEM,MFRON,MPOIN,MTOTV,INPT 107 . MVFIX,NDFRO,NDOFN,NELEM,NMATS,NNODE,NOFIX,NPOIN,INPT 108 . NVFIX) INPT 109 RETURN INPT 110 END INPT 111 ``` # 6.5.2 Subroutine ALGOR The function of this subroutine is to control the solution process according to the value of the solution algorithm parameter, NALGO, input in subroutine INPUT. This subroutine is similar in form to subroutine NONAL presented in Section 3.3 for one-dimensional applications. The subroutine sets the value of indicator KRESL to either 1 or 2 according to NALGO and the current values of the iteration number IITER and increment number IINCS. A value of KRESL = 1 indicates reformulation of the element stiffnesses accompanied by a full equation solution and KRESL = 2 indicates that the element stiffnesses are not to be modified and consequently only equation resolution takes place. With the definitions of the permissible values of NALGO given in Section 6.5.1, subroutine ALGOR is self-explanatory and is listed below.\* SUBROUTINE ALGOR(FIXED,IINCS,IITER,KRESL, MTOTV,NALGO,NTOTV) ALGR 1 C***** THIS SUBROUTINE SETS EQUATION RESOLUTION INDEX,KRESL ALGR 3 C ALGR 4 C***** THIS SUBROUTINE SETS EQUATION RESOLUTION INDEX,KRESL ALGR 5 C ALGR 6 C***** DIMENSION FIXED(MTOTV) ALGR 7 KRESL=2 ALGR 8 IF(NALGO.EQ.1.AND.IINCS.EQ.1.AND.IITER.EQ.1) KRESL=1 ALGR 10 IF(NALGO.EQ.2) KRESL=1 ALGR 11 IF(NALGO.EQ.3.AND.IITER.EQ.1) KRESL=1 ALGR 12 IF(NALGO.EQ.4.AND.IINCS.EQ.1.AND.IITER.EQ.1) KRESL=1 ALGR 13 IF(NALGO.EQ.4.AND.IITER.EQ.2) KRESL=1 ALGR 14 IF(IITER.EQ.1) RETURN ALGR 15 DO 100 ITOTV = 1,NTOTV ALGR 16 FIXED(ITOTV)=0.0 ALGR 17 100 CONTINUE ALGR 18 RETURN ALGR 19 END ALGR 20 # 6.5.3 Subroutine INCREM The role of subroutine INCREM is to increment the applied loading or any prescribed displacements according to the load factors specified as input. This subroutine is accessed on the first iteration of each load increment. For each increment of load the following items of information are input as data and are similar to those described in Section 3.7. FACTO This controls the magnitude of the load increment. The applied loading for each element is evaluated in Subroutine LOADPS for plane and axisymmetric situations, or Subroutine LOADPB for plate problems, and is stored in the array RLOAD (IELEM, IEVAB) as described in Section 6.4.5. The additional element load applied during the increment is RLOAD (IELEM, IEVAB)\*FACTO. The applied loading is accumulative so that if FACTO is input as 0·8, 0·2 and 0·1 for the first three increments, the total load acting on the structure during the third load increment is 1·1 times the loads calculated in Subroutine LOADPS. This method of load factoring permits unequal load increments to be taken. If loading is by prescribed displacements the same factoring process holds. TOLER This controls the tolerance permitted on the convergence process and its use has been described in Section 3.9.3. MITER Maximum permissible number of iterations. This is a safety measure to cover situations where the solution process does \* For elasto-viscoplastic applications described in Chapter 8, iteration number IITER is replaced by timestep number, ISTEP.