add documents
Tests / Hermetic test suite (push) Has been cancelled
Tests / Skill frontmatter validation (push) Has been cancelled

This commit is contained in:
김경종
2026-06-02 11:38:52 +09:00
parent d0af0c7066
commit bd50e09e36
4470 changed files with 75247 additions and 12 deletions
@@ -0,0 +1,288 @@
<!-- source-page: 41 -->
2.14 Determine the displacement of node 2 of the elasto-plastic structure shown in Fig. 2.12. Assume the load to be applied in two equal increments. What happens if $H_{I}^{\prime}=200$ , $H_{II}^{\prime}=-200$ ?
# 2.7 References
1. ZIENKIEWICZ, O. C., The Finite Element Method, McGraw-Hill, London, 1977.
2. BOOTH, A. D., Numerical Methods, Butterworth, London, 1966.
3. ZIENKIEWICZ, O. C., VALLIAPPAN, S. and KING, I. P., Elasto-plastic solutions of engineering problems. Initial stress, finite element approach, Int. J. Num. Meth. Engng., 1, 75100 (1969).
4. ARGYRIS, J. H. and SCHARPF, D. W., Methods of elasto-plastic analysis, ISD, ISSC Symp. on Finite Element Tech., Stuttgart (1969).
5. LYNESS, J. F., OWEN, D. R. J. and ZIENKIEWICZ, O. C., The finite element analysis of engineering systems governed by a nonlinear quasi-harmonic equation, Computers and Structures, 5, 6579 (1975).
6. HINTON, E. and OWEN, D. R. J., An Introduction to Finite Element Computations, Pineridge Press, Swansea, U.K., 1979.
7. ODEN, J. T., Finite Elements of Nonlinear Continua, McGraw-Hill, New York, 1972.
8. HILL, R., The Mathematical Theory of Plasticity, Oxford University Press, 1950.
9. SEEGERLIND, L. J., Applied Finite Element Analysis, John Wiley, New York, 1976.
<!-- source-page: 42 -->
<!-- source-page: 43 -->
# Chapter 3 Solution of nonlinear problems
# 3.1 Introduction
A modular approach is adopted for the programs presented in this text, with the various main finite element operations being performed by separate subroutines. Any nonlinear finite element program must essentially contain all the subroutines necessary for elastic analysis. Briefly these consist of a subroutine to accept the input data, a subroutine for element stiffness formulation, subroutines for equation assembly and solution and a subroutine for output of the final results.
In order to implement the solution algorithms described in Section 2.2, additional subroutines are clearly necessary. In particular two primary DO LOOPS are necessary to iterate the solution until convergence of the solution occurs and to increment the applied loading, if appropriate. Subroutines must be included to evaluate the residual forces and also to monitor convergence of the solution. Figure 3.1 shows the organisation of the programs presented in this chapter, particularly the sequence in which the subroutines are accessed. Four separate programs are developed to solve the following specific situations.
- Solution of nonlinear quasi-harmonic situations by direct iteration.
- Solution of nonlinear quasi-harmonic situations by the Newton-Raphson method.
- Solution of nonlinear elastic problems by either the tangential stiffness or the initial stiffness method or a combination of both.
- Solution of elasto-plastic problems by either the tangential stiffness or the initial stiffness method or a combination of both approaches.
With reference to Fig. 3.1, most of the subroutines are common to all four programs presented; the only exceptions being the subroutines necessary for stiffness matrix generation, residual force calculation and solution convergence checking. The element stiffness formulation subroutines for quasi-harmonic direct interaction, quasi-harmonic NewtonRaphson, nonlinear elastic situations and elasto-plastic problems are respectively named STIFF1, ASTIF1, STIFF2 and STIFF3. The evaluation of residual forces is not required in the direct iteration method and the appropriate subroutines for the quasi-harmonic NewtonRaphson, nonlinear elastic and elasto-plastic
<!-- source-page: 44 -->
![](images/page-044_30b762f35ad25fc73a24946ed3ec1b7f05b8cd72cd47c3ff60182ea0b18cf575.jpg)
<details>
<summary>flowchart</summary>
```mermaid
graph TD
A["START"] --> B["DATA\nInput data defining geometry, loading, boundary conditions, material properties, etc."]
B --> C["INITIAL\nInitialise various arrays to zero"]
C --> D["INCLOD\nIncrement the applied loads"]
D --> E["NONAL\nSet indicator to identify type of solution algorithm, e.g., direct iteration, tangential stiffness, etc."]
E --> F["STIFF1/ASTIF1/STIFF2/STIFF3\nCalculate the element stiffnesses depending on the type of problem, e.g., quasi-harmonic, elasto-plasticity, etc."]
F --> G["ASSEMB\nAssemble the element loads and stiffnesses to give the global stiffness matrix and load vector"]
G --> H["GREDUC, BAKSUB & RESOLV\nSolve the resulting systems of simultaneous equations for the unknowns, φ"]
H --> I["REFOR1/REFOR2/REFOR3\nCalculate the residual force vector ψ for the Newton-Raphson, Tangential Stiffness and Initial Stiffness methods only"]
I --> J["MONITR/CONUND\nCheck to see if the solution has converged"]
J --> K["RESULT\nOutput the results"]
K --> L["END"]
A --> M["LOAD INCREMENT LOOP"]
M --> N["ITERATION LOOP"]
N --> O["NO"]
O --> K
K -->|YES| K
```
</details>
Fig. 3.1 Program organisation for one-dimensional nonlinear applications.
situations are named respectively REFOR1, REFOR2 and REFOR3. Finally, since the basis of solution convergence differs for the direct iteration method from that of the other procedures, it requires a separate convergence
<!-- source-page: 45 -->
checking subroutine, termed MONITR. The equivalent subroutine for all other applications is named CONUND.
The programs presented in this chapter also form the basis of an elastoviscoplastic program for one-dimensional applications developed in Chapter 4 and an elasto-plastic beam bending program considered in Chapter 5. In order to allow several of the subroutines developed in this chapter to be used for beam bending applications it will be necessary to permit the number of degrees of freedom per nodal point to be variable and to dimension some arrays to accommodate additional quantities.
Sections 3.2 to 3.8 are devoted to the development of the subroutines which are common to the four programs presented.
# 3.2 Input data subroutine, DATA
For any finite element analysis the input data can be subdivided into three main classifications. Firstly the data required to define the geometry of the structure and the support conditions must be supplied. Secondly the material properties of the constituent materials must be supplied and finally the applied loading must be furnished.
To allow a subroutine to be employed in more than one application, several control parameters must be supplied as input data. For example, the number of properties required to define the behaviour of a material will differ between quasi-harmonic problems and elasto-plastic situations. The use of variables in place of specific numerical values also generally aids program clarity.
A list of control parameters required as input is now presented:
NPOIN Total number of nodal points in the structure.
NELEM Total number of elements in the structure.
NBOUN Total number of boundary points, i.e. nodal points at which the value of the unknown is prescribed. In this context an internal node can be a boundary node.
NMATS Total number of different materials in the structure.
NPROP The number of material parameters required to define the characteristics of a material completely:
4—For elasto-plastic problems,
2—For all other applications.
NNODE Number of nodes per element. For linear displacement one-dimensional elements this equals 2.
NINCS The number of increments in which the total loading is to be applied.
NALGO Indicator used to identify the type of solution algorithm to be employed:
1—Direct iteration.
<!-- source-page: 46 -->
2—Newton-Raphson method for quasi-harmonic problems. Tangential stiffness method for structural problems (nonlinear elastic and elastoplastic situations).
3—Initial stiffness method.
4—Combination of the initial and tangential stiffness methods, where the stiffnesses are recalculated on the first iteration of a load increment only.
5—Combination of the initial and tangential stiffness methods, where the stiffnesses are recalculated on the second iteration of a load increment only. This can aid the rate of convergence considerably, if on the application of an increment of load there is substantial further yielding. When calculating the element stiffnesses the total plastic strains evaluated during the previous iteration are used to indicate whether the element has yielded or not. If the element stiffnesses are recalculated on the first iteration, the elements which have now yielded may have been elastic at the end of the previous load increment and consequently the reformulated stiffness will be based on elastic behaviour. This can reduce the convergence rate of the process since generally $H' \simeq 0.1E$ . From (2.42) the elasto-plastic stiffness is proportional to $E(1 - E/(E + H')) \simeq E/11$ , whereas the elastic stiffness depends linearly on E. Hence the tangential stiffness calculated grossly overestimates the true material response. This problem can be alleviated by reformulating the element stiffnesses during the second iteration of a load increment rather than the first, since the plastic strain evaluated on the first iteration will indicate yielding to have initiated.
NDOFN The number of degrees of freedom per nodal point:
1—For uniaxial problems.
2—For beam bending problems (considered in Chapter 5).
The geometry of the structure is completely defined on prescription of the nodal point coordinates and the element nodal connections. The coordinate of each nodal point must be defined with reference to a global coordinate system. For the one-dimensional situation being currently considered, the position of each nodal point is completely defined by a single coordinate whose value will be stored in the array
# COORD (IPOIN)
where IPOIN corresponds to the number of the nodal point.
The origin of the coordinate system can be arbitrarily chosen. The geometry of each individual element must be specified by listing in a systematic way the numbers of the nodal points which define its outline. For the two-noded linear displacement element the nodal numbers can obviously be read in any
<!-- source-page: 47 -->
order. The element topology is read into the array
# LNODS (NUMEL, INODE)
where NUMEL corresponds to the number of the element under consideration and subscript INODE ranges from 1 to NNODE. Since each element may conceivably be assigned different material properties, a material property identification number is also allocated to each element and stored in the array
# MATNO (NUMEL)
This implies that element number NUMEL has material properties of type MATNO (NUMEL).
The material properties required for solution will differ for the various applications considered, but the same array will be employed for storage of this information. Namely
# PROPS (NUMAT, IPROP)
where NUMAT denotes the material identification number and the subscript IPROP the individual property. Each element is associated with a particular material type through the previously mentioned identification array MATNO (NUMEL). The relevant material properties associated with the different problem types considered here are listed below.
(a) Quasi-harmonic problems
PROPS (NUMAT, 1)—The reference value $K_0$ of the coefficient $K$ in equation (2.27).
PROPS (NUMAT, 2)—The constant $b$ in equation (2.27) for a linear 'stiffness' variation.
(b) Nonlinear elastic problems
PROPS (NUMAT, 1)—The reference value $E_{0}$ in (2.30).
PROPS (NUMAT, 2)—The cross-sectional area A, of the element. Each element with a different cross-sectional area must be assigned a different material property number.
(c) Elasto-plastic problems
PROPS (NUMAT, 1)—The elastic modulus, E, of the material.
PROPS (NUMAT, 2)—The cross-sectional area, A, of the element.
PROPS (NUMAT, 3)—The uniaxial yield stress of the material.
PROPS (NUMAT, 4)—The linear strain hardening parameter, $H'$ , for the material (equation (2.35)).
It should be mentioned here that the specific form of dependence of material stiffness on the unknown function for cases (a) and (b) will be directly incorporated into the program by use of a FORTRAN FUNCTION statement.
<!-- source-page: 48 -->
Any nodal points at which a degree of freedom has a prescribed value must be identified by the temporary variable NODFX. To determine which degrees of freedom are to be prescribed at this node, the entries in the array
# ICODE (IDOFN)
are set to either 0 or 1. (Variable IDOFN ranges over the number of degrees of freedom per node NDOFN. In the present case NDOFN=1, but later in Chapter 5, NDOFN has the value 2.) If ICODE (IDOFN) is equal to 1, then degree of freedom IDOFN at node NODFX has a prescribed value. If NCODE (IDOFN) is equal to 0 then degree of freedom IDOFN at node NODFX is a free variable.
The value for a prescribed degree of freedom is given by
# VALUE (IDOFN)
It should be noted that if ICODE (IDOFN)=0, then VALUE (IDOFN) is ignored.
In order to simplify the solution process, the information stored in arrays ICODE and VALUE is transferred to much larger arrays IFPRE (NPOSN) and PEFIX (NPOSN) respectively, where NPOSN ranges over all the degrees of freedom for the whole finite element mesh. Both IFPRE and PEFIX are initially set equal to zero and as data for each restrained boundary node is read, they are modified if necessary. Unit entries in IFPRE indicate that the associated variable is prescribed. The prescribed value is obtained from the corresponding position in PEFIX.
Finally, the loads applied to the structure must be specified. For the frontal method of equation solution employed in later chapters it is convenient to associate the applied loads with the elements on which they act. Thus for each element the nodal loads acting on the two nodes associated with the element must be input and these are stored in the array
# RLOAD (IELEM, IEVAB)
where IELEM indicates the element number and IEVAB relates to the degrees of freedom of the element (IEVAB ranges from 1 to NEVAB, the number of element variables, which is equal to 2 in the present case but which equals 4 in the applications described in Chapter 5). It should be noted that a nodal load may be arbitrarily assigned to any one of the elements connected to that node, since before eventual solution all element contributions are assembled to form a global load vector. Before entering the solution routines the loads are transferred to an array ELOAD (IELEM, IEVAB) as described later in Section 3.7.
Subroutine DATA is now presented and should be largely self-explanatory. Descriptive comments are provided immediately after the FORTRAN listing of the subroutine.
<!-- source-page: 49 -->
```csv
SUBROUTINE DATA DATA 1
C************************** DATA 2
C DATA 3
C *** INPUTS DATA DEFINING GEOMETRY,LOADING,BOUNDARY CONDITIONS...ETC. DATA 4
C DATA 5
C************************** DATA 6
COMMON/UNIM1/NPOIN.NELEM,NBOUN,NLOAD,NPROP,NNODE,IINCS,IITER, DATA 7
KRESL,NCHEK,TOLER,NALGO,NSVAB,NDOFN,NINCS,NEVAB, DATA 8
NITER,NOUTP,FACTO,PVALU DATA 9
COMMON/UNIM2/PROPS(5,4),COORD(26),LNODS(25,2),IFPRE(52), DATA 10
FIXED(52),TLOAD(25,4),RLOAD(25,4),ELOAD(25,4), DATA 11
MATNO(25),STRES(25,2),PLAST(25),XDISP(52), DATA 12
TDISP(26,2),TREAC(26,2),ASTIF(52,52),ASLOD(52), DATA 13
REACT(52),FRESV(1352),PEFIX(52),ESTIF(4,4) DATA 14
DIMENSION ICODE(2),VALUE(2),TITLE(18) DATA 15
READ (5,965)TITLE DATA 16
WRITE(6,965)TITLE DATA 17
965 FORMAT(18A4) DATA 18
READ(5,900) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NINCS,NALGO,NDOFN DATA 19
900 FORMAT(9I5) DATA 20
WRITE(6,905)NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NINCS,NALGO,NDOFN DATA 21
905 FORMAT(//1X,'NPOIN=',I5,3X,'NELEM=',I5,3X,'NBOUN=',I5,3X, DATA 22
'NMATS=',I5//1X,'NPROP=',I5,3X,'NNODE=',I5,3X, DATA 23
'NINCS=',I5,3X,'NALGO=',I5//1X,'NDOFN=',I5) DATA 24
NEVAB=NDOFN*NNODE DATA 25
NSVAB=NDOFN*NPOIN DATA 26
WRITE(6,910) DATA 27
910 FORMAT(1HO,5X,'MATERIAL PROPERTIES') DATA 28
DO 10 IMATS=1,NMATS DATA 29
READ (5,915) JMATS,(PROPS(JMATS,IPROP),IPROP=1,NPROP) DATA 30
10 WRITE(6,915) JMATS,(PROPS(JMATS,IPROP),IPROP=1,NPROP) DATA 31
915 FORMAT(I10,4F15.5) DATA 32
WRITE(6,920) DATA 33
920 FORMAT(1HO,3X,'EL NODES MAT.') DATA 34
DO 20 IELEM=1,NELEM DATA 35
READ (5,925) JELEM,(LNODS(JELEM,INODE),INODE=1,NNODE),MATNO(JELEM)DATA 36
20 WRITE(6,925) JELEM,(LNODS(JELEM,INODE),INODE=1,NNODE),MATNO(JELEM)DATA 37
925 FORMAT(4I5) DATA 38
WRITE(6,930) DATA 39
930 FORMAT(1HO,5X,'NODE',5X,'COORD.') DATA 40
DO 30 IPOIN=1,NPOIN DATA 41
READ (5,935) JPOIN,COORD(JPOIN) DATA 42
30 WRITE(6,935) JPOIN,COORD(JPOIN) DATA 43
935 FORMAT(I10,F15.5) DATA 44
DO 40 ISVAB=1,NSVAB DATA 45
IFPRE(ISVAB)=0 DATA 46
40 PEFIX(ISVAB)=0.0 DATA 47
IF(NDOFN.EQ.1) WRITE(6,940) DATA 48
940 FORMAT(1HO,1X,'RES.NODE',2X,'CODE',3X,'PRES.VALUES') DATA 49
IF(NDOFN.EQ.2) WRITE(6,945) DATA 50
945 FORMAT(1HO,1X,'RES.NODE',2X,'CODE',3X,'PRES.VALUES',2X, DATA 51
'CODE',3X,'PRES.VALUES') DATA 52
DO 50 IBOUN=1,NBOUN DATA 53
READ (5,950) NODFX,(ICODE(IDOFN),VALUE(IDOFN),IDOFN=1,NDOFN) DATA 54
WRITE(6,950) NODFX,(ICODE(IDOFN),VALUE(IDOFN),IDOFN=1,NDOFN) DATA 55
950 FORMAT(I10,2(I5,F15.5)) DATA 56
NPOSN=(NODFX-1)*NDOFN DATA 57
DO 50 IDOFN=1,NDOFN DATA 58
NPOSN=NPOSN+1 DATA 59
IFPRE(NPOSN)=ICODE(IDOFN) DATA 60
50 PEFIX(NPOSN)=VALUE(IDOFN) DATA 61
WRITE(6,955) DATA 62
955 FORMAT(1HO,2X,'ELEMENT',10X,'NODAL LOADS') DATA 63
DO 60 IELEM=1,NELEM DATA 64
```
<!-- source-page: 50 -->
<table><tr><td></td><td>DO 60 IEVAB=1,NEVAB</td><td>DATA</td><td>65</td></tr><tr><td>60</td><td>RLOAD(IELEM,IEVAB)=0.0</td><td>DATA</td><td>66</td></tr><tr><td>70</td><td>READ (5,960) JELEM,(RLOAD(JELEM,IEVAB),IEVAB=1,NEVAB)</td><td>DATA</td><td>67</td></tr><tr><td></td><td>IF(JELEM.NE.NELEM) GO TO 70</td><td>DATA</td><td>68</td></tr><tr><td></td><td>DO 80 IELEM=1,NELEM</td><td>DATA</td><td>69</td></tr><tr><td>80</td><td>WRITE(6,960) IELEM,(RLOAD(IELEM,IEVAB),IEVAB=1,NEVAB)</td><td>DATA</td><td>70</td></tr><tr><td>960</td><td>FORMAT(I10,5F15.5)</td><td>DATA</td><td>71</td></tr><tr><td></td><td>RETURN</td><td>DATA</td><td>72</td></tr><tr><td></td><td>END</td><td>DATA</td><td>73</td></tr></table>
DATA 1618 Read and write the problem title.
DATA 19-24 Read and write the control parameters for the problem.
DATA 2732 Read and write the material properties for each individual material.
DATA 3338 Read and write the nodal connection numbers and material identification number of each element.
DATA 3947 Read and write the coordinate of each nodal point. Also initialise the arrays for locating and recording prescribed values of the unknown.
DATA 4861 Read and write the node number and prescribed value for each degree of freedom for each boundary node and store in the global arrays IFPRE and PEFIX.
DATA 62-71 Read and write the nodal loads for each element.
# 3.3 Subroutine NONAL
The main function of this subroutine is to control the solution process according to the value of the solution algorithm parameter, NALGO, input in subroutine DATA. The subroutine sets the value of indicator KRESL to either 1 or 2 according to NALGO and the current value of the iteration number IITER and increment number IINCS. A value of KRESL=1 indicates that the stiffnesses are to be reformulated and consequently a full system of simultaneous equations must be subsequently solved. If KRESL=2 the stiffnesses are not to be redefined and therefore only equation resolution need be undertaken. In this the reduced equations from the previous solution are stored and only the terms associated with the new loading need be reduced in the solution process. This results in a considerable saving in computation time with equation resolution generally requiring only 20% of the time required for complete analysis. For the algorithm options contained in the four programs presented, the value of KRESL is preset as follows.
(a) Direct iteration. For this case the stiffnesses must be reformulated, according to (2.3), for every iteration. Consequently KRESL=1 at all stages.
(b) NewtonRaphson method for quasi-harmonic problems and tangential stiffness method for structural problems. Again the stiffnesses must be reformulated for every iteration according to (2.12) for quasi-harmonic situations and (2.13) for structural applications. Therefore KRESL=1 at all stages.