Files
MultiPhysicsVault/.raw/FiniteElementsinPlasticityTheoryandPractice/FiniteElementsinPlasticityTheoryandPractice_012.md
T
김경종 bd50e09e36
Tests / Hermetic test suite (push) Has been cancelled
Tests / Skill frontmatter validation (push) Has been cancelled
add documents
2026-06-02 11:38:52 +09:00

23 KiB
Raw Blame History

We note in passing that expressions (4.24) and (4.25) could be written in the standard finite element form


\Delta V ^ {n} = \int_ {V} \boldsymbol {B} ^ {T} \boldsymbol {D} \epsilon d V + \Delta \boldsymbol {f} ^ {n}

\boldsymbol {K} ^ {(e)} = \int_ {V} \boldsymbol {B} ^ {T} \boldsymbol {D} \boldsymbol {B} d V, \tag {4.26}

since for the linear element considered


\boldsymbol {B} = \left[ - \frac {1}{L}, \frac {1}{L} \right]

\boldsymbol {D} = \boldsymbol {E}

\int_ {V} d V = A L. \tag {4.27}

The displacements at time t_{n+1} are then obtained by simple accumulation as


\varphi^ {n + 1} = \varphi^ {n} + \Delta \varphi^ {n}. \tag {4.28}

The stress increment is given from (4.1) and (4.7) to be


\Delta \sigma^ {n} = E \Delta \epsilon_ {e} ^ {n} = E \left(\Delta \epsilon^ {n} - \Delta \epsilon_ {v p} ^ {n}\right), \tag {4.29}

or


\Delta \sigma^ {n} = E \left(\frac {\Delta \phi_ {1} ^ {n} - \Delta \phi_ {2} ^ {n}}{L} - \dot {\epsilon} _ {v p} ^ {n} \Delta t _ {n}\right), \tag {4.30}

where \Delta\phi_{1}^{n} and \Delta\phi_{2}^{n} are the displacement changes at the nodes of the element.

The stress at time t_{n+1} is then given by


\sigma^ {n + 1} = \sigma^ {n} + \Delta \sigma^ {n}. \tag {4.31}

The total viscoplastic strain at time t_{n+1} is


\epsilon_ {v p} ^ {n + 1} = \epsilon_ {v p} ^ {n} + \Delta \epsilon_ {v p} ^ {n}, \tag {4.32}

and finally the viscoplastic strain rate at t_{n+1} is given, from (4.14) as


\dot {\epsilon} _ {v p} ^ {n + 1} = \gamma \left[ \sigma^ {n + 1} - \left(\sigma_ {Y} + H ^ {\prime} \epsilon_ {v p} ^ {n + 1}\right) \right]. \tag {4.33}

In employing the Euler scheme for time-stepping, we are effectively linearising the variation of quantities over the increment. Therefore the total stresses \sigma^{n+1} obtained by accumulating all such stress increments may not be in exact equilibrium with the applied forces. It is therefore necessary to introduce an equilibrium correction procedure into the numerical solution algorithm. The simplest approach is to evaluate the out-of-balance nodal forces at the end of each time step and consider these forces as additional forces to be applied at the beginning of the next time increment.

The out-of-balance or residual forces, \psi , for the general element are given as the algebraic sum of the applied nodal loads and the nodal forces equivalent to the element stress, so that


\psi^ {n + 1} = A \sigma^ {n + 1} \left[ \begin{array}{c} 1 \\ - 1 \end{array} \right] + f ^ {n + 1}, \tag {4.34}

in which \sigma^{n+1} is the element stress and f^{n+1} are the total applied forces at time t_{n+1} . These residual forces are then added to the pseudo forces to give for the next time increment


\Delta V ^ {n + 1} = A E \dot {\epsilon} _ {v p} ^ {n + 1} \Delta t _ {n + 1} \left[ \begin{array}{c} 1 \\ - 1 \end{array} \right] + \Delta f ^ {n + 1} + \psi^ {n + 1}. \tag {4.35}

This sequence is repeated for each time step until solution is either obtained for the desired time duration or until steady state conditions are achieved. Steady state conditions are deemed to have been achieved when the viscoplastic strain rate, \dot{\epsilon}_{vp}^{n} , becomes tolerably small.

4.4 Limiting time-step length

The critical time-step length for viscoplastic solution using the Euler time marching scheme has been established by Cormeau. ^{(1)} For the uniaxial case considered in this chapter the limiting value is


\Delta t \leqslant \frac {\sigma_ {Y}}{\gamma E}. \tag {4.36}

Alternatively the time-step length can be limited according to a semi-empirical relationship. Such an approach is essential for some general continuum problems where a theoretical value of the critical time-step length may not exist. The most obvious procedure is to limit the viscoplastic strain increment to be some specified factor, \tau , of the total current strain,


\dot {\epsilon} _ {v p} ^ {n} \Delta t _ {n} \leqslant \tau \epsilon^ {n}. \tag {4.37}

Since each element generally has a different strain level, expression (4.37) will yield a different limiting step value when applied to each element in turn. Therefore the limiting value is restricted according to


\Delta t _ {n} \leqslant \tau \left[ \frac {\epsilon^ {n}}{\dot {\epsilon} _ {v p} {} ^ {n}} \right] _ {\min}, \tag {4.38}

where the minimum value of \Delta t_{n} obtained after considering each element is taken. Stability of the solution process is also aided by restricting the length of successive time steps according to


\Delta t _ {n + 1} \leqslant k \Delta t _ {n}, \tag {4.39}

where k is a specified constant generally chosen in the range 1·52·0.

4.5 Computational procedure

Before proceeding with the development of a computer code for the solution of one-dimensional viscoplastic problems we will first summarise the essential steps of the computation. Solution to the problem must commence from the known initial conditions at time t = 0 which of course correspond to the initial elastic response. At this stage \varphi^{0}, f^{0}, \epsilon^{0}, \sigma^{0} are known and \epsilon_{vp}^{0} = 0 . The general procedure for advancing the solution from a time t_{n} to time t_{n+1} is the following.

Stage I At time t = t_{n} the values of \sigma^{n} , \epsilon^{n} , \epsilon_{vp}^{n} and f^{n} are known for each element and the nodal displacements are also known. The viscoplastic strain rate for each element is then evaluated according to (4.14) as


\dot {\epsilon} _ {v p} ^ {n} = \gamma \left[ \sigma^ {n} - \left(\sigma_ {Y} + H ^ {\prime} \epsilon_ {v p} ^ {n}\right) \right]. \tag {4.40}

Stage 2 (a) Compute the displacement increments, \Delta \varphi^n , according to (4.22)-(4.25), as


\Delta \varphi^ {n} = [ K ] ^ {- 1} \Delta V ^ {n},

where


\Delta V ^ {n} = A E \dot {\epsilon} _ {v p} ^ {n} \Delta t _ {n} \left[ \begin{array}{c} 1 \\ - 1 \end{array} \right] + \Delta f ^ {n},

and the stiffness matrix for an individual element is


\boldsymbol {K} ^ {(e)} = \frac {E A}{L} \left[ \begin{array}{c c} 1 & - 1 \\ - 1 & 1 \end{array} \right].

(b) Calculate the stress increment \Delta\sigma^{n} and the viscoplastic strain increment \Delta\epsilon_{vp}^{n} for each element as


\Delta \sigma^ {n} = E \left(\frac {\Delta \phi_ {1} ^ {n} - \Delta \phi_ {2} ^ {n}}{L} - \dot {\epsilon} _ {v p} ^ {n} \Delta t _ {n}\right),

\Delta \epsilon_ {v p} ^ {n} = \dot {\epsilon} _ {v p} ^ {n} \Delta t _ {n}.

Stage 3 Determine the total displacements, stresses and viscoplastic strain


\varphi^ {n + 1} = \varphi^ {n} + \Delta \varphi^ {n},

\sigma^ {n + 1} = \sigma^ {n} + \Delta \sigma^ {n},

\epsilon_ {v p} ^ {n + 1} = \epsilon_ {v p} ^ {n} + \Delta \epsilon_ {v p} ^ {n}.

Stage 4 Calculate the viscoplastic strain rate for each element


\dot {\epsilon} _ {v p} ^ {n + 1} = \gamma [ \sigma^ {n + 1} - (\sigma_ {Y} + H ^ {\prime} \epsilon_ {v p} ^ {n + 1}) ].

Stage 5 Apply the equilibrium correction. Evaluate the residual forces, for each element, as


\psi^ {n + 1} = A \sigma^ {n + 1} \left[ \begin{array}{c} 1 \\ - 1 \end{array} \right] + f ^ {n + 1}.

Add these into the vector of incremental pseudo loads for use in the next time step


\Delta V ^ {n + 1} = A E \dot {\epsilon} _ {v p} ^ {n + 1} \Delta t _ {n + 1} \left[ \begin{array}{c} 1 \\ - 1 \end{array} \right] + \Delta f ^ {n + 1} + \psi^ {n + 1}.

Stage 6 Check to see if the viscoplastic strain rate \dot{\epsilon}_{vp}^{n+1} in each element has become tolerably small. If so, steady state conditions have been reached and the solution is either terminated or the next load increment is applied. If \dot{\epsilon}_{vp}^{n+1} is non-zero return to Stage 1 and repeat the entire procedure for the next time step.

4.6 Program structure

The organisation of the one-dimensional viscoplastic program is shown in Fig. 4.4 where, in particular, the order in which subroutines are accessed is indicated. The operations undertaken by the program are those described in Section 4.5. Many of the subroutines employed are common to the one-dimensional plasticity application described in Chapter 3 and, since they are used in the present program without modification, the reader will be referred to the appropriate section for details. Only the additional subroutines necessary to complete the computer package will be described in this chapter.

With reference to Fig. 4.4 the following subroutines have been already described where indicated below:

Subroutine ASSEMB —Section 3.4.2

Subroutine GREDUC—Section 3.4.3

Subroutine BAKSUB —Section 3.4.4

Subroutine RESOLV —Section 3.4.5

Subroutine RESULT —Section 3.5

Subroutine INITIAL —Section 3.6*

Also, Subroutine DATA described in Section 3.2 is used with some minor modifications. A viscoplastic material in one dimension requires five individual quantities to describe it completely. Thus NPROP becomes 5 and the following quantities must be specified as material properties.

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, \sigma_{Y} , of the material

PROPS (NUMAT, 4)—The linear strain hardening parameter, H' , for the material

PROPS (NUMAT, 5)—The fluidity parameter, \gamma , controlling the viscoplastic strain rate.

* Subroutine NONAL, described in Section 3.3, is also employed but with IITER now replaced by the time step index, ISTEP.

flowchart
graph TD
    A["START"] --> B["DATA\nInput data defining geometry, loading, boundary conditions, material properties, etc."]
    B --> C["STUNVP\nCalculate the stiffness matrix for each element"]
    C --> D["ASSEMB\nAssemble the element loads and stiffnesses to give the global stiffness matrix and load vector"]
    D --> E["GREDUC, BAKSUB & RESOLV\nSolve the resulting system of simultaneous equations for the displacements φ"]
    E --> F["INCVP\na) Evaluate quantities at the end of the timestep\nb) Calculate the pseudo loads for application during the next time step"]
    F --> G["CONVP\nCheck for convergence of the time stepping process to steady state conditions"]
    G --> H["RESULT\nPrint the results for the current timestep"]
    H --> I["END"]
    I --> J["LOAD INCREMENT LOOP"]
    J --> K["TIME STEPPING LOOP"]
    K --> A

Fig. 4.4 Operational sequence for the one-dimensional viscoplastic stress analysis program.

Input data are also received by this segment which controls the time-stepping algorithm. The following information is input:

TAUFT The parameter \tau discussed in Section 4.4

DTINT The time-step length for the first time step

FTIME The factor k defined in (4.39) which limits the relative length of successive time steps

The additional subroutines which are required will now be described in turn.

4.7 Element stiffness subroutine STUNVP

In all stages of the viscoplastic solution the elastic element stiffness matrix is employed, as indicated in (4.25). Consequently the structure of subroutine STUNVP, which evaluates the stiffness matrix for each element in turn, is straightforward and can be presented without further comment.

SUBROUTINE STUNVP SNVP 1
C**************************SNVP 2
C    SNVP 3
C *** CALCULATES ELEMENT STIFFNESS MATRICES SNVP 4
C    SNVP 5
C**************************SNVP 6
COMMON/UNIM1/NPOIN,NELEM,NBOUN,NLOAD,NPROP,NNODE,IINCS,ISTEP, SNVP 7
. KRESL,NCHEK,TOLER,NALGO,NSVAB,NDOFN,NINCS,NEVAB, SNVP 8
. NSTEP,NOUTP,FACTO,TAUFT,DTINT,FTIME,FIRST,PVALU, SNVP 9
. DTIME,TTIME SNVP 10
COMMON/UNIM2/PROPS(5,5),COORD(26),LNODS(25,2),IFPRE(52), SNVP 11
. FIXED(52),TLOAD(25,4),RLOAD(25,4),ELOAD(25,4), SNVP 12
. MATNO(25),STRES(25,2),PLAST(25),XDISP(52), SNVP 13
. TDISP(26,2),TREAC(26,2),ASTIF(52,52),ASLOD(52), SNVP 14
. REACT(52),FRESV(1352),PEFIX(52),ESTIF(4,4),VIVEL(25) SNVP 15
REWIND 1 SNVP 16
DO 10 IELEM=1,NELEM SNVP 17
LPROP=MATNO(IELEM) SNVP 18
YOUNG=PROPS(LPROP,1) SNVP 19
XAREA=PROPS(LPROP,2) SNVP 20
NODE1=LNODS(IELEM,1) SNVP 21
NODE2=LNODS(IELEM,2) SNVP 22
ELENG=ABS(COORD(NODE1)-COORD(NODE2)) SNVP 23
FMULT=YOUNG*XAREA/ELENG SNVP 24
ESTIF(1,1)=FMULT SNVP 25
ESTIF(1,2)=-FMULT SNVP 26
ESTIF(2,1)=-FMULT SNVP 27
ESTIF(2,2)=FMULT SNVP 28
WRITE(1) ESTIF SNVP 29
10 CONTINUE SNVP 30
RETURN SNVP 31
END SNVP 32 

SNVP 16 Rewind the file on which the stiffness matrix of each element will be stored.

SNVP 17 Loop over each element.

SNVP 18 Identify the material property of the current element.

SNVP 1920 Set YOUNG equal to the material elastic modulus and XAREA equal to the cross-sectional area.

SNVP 2122 Identify the node numbers of the element.

SNVP 23 Calculate the element length.

SNVP 24 Compute EA/L as FMULT.

SNVP 25-28 Evaluate the components of the element stiffness matrix according to (4.25).

SNVP 29 Write the element stiffness matrix on to disc file.

SNVP 30 End of loop over each element.

4.8 Subroutine INCVP for the evaluation of end of time-step quantities and equilibrium correction terms

This subroutine evaluates quantities such as stresses and viscoplastic strains at the end of the current time step and also calculates the loading to be applied during the next time step. Essentially it undertakes Stages 35 described in Section 4.5. All quantities at the end of time step n are calculated as ()^{n+1} .

The program presented is restricted to loading which is applied in discrete increments and is assumed to remain constant during the time-stepping process for any given increment. Thus in (4.35) \Delta f^{n} = 0 for all stages other than the first time step of a particular load increment.

Subroutine INCVP is now presented and described.

SUBROUTINE INCVP INVP 1
C********** INVP 2
C INVP 3
C *** CALCULATES INTERNAL EQUIVALENT NODAL FORCES INVP 4
C INVP 5
C********** INVP 6
COMMON/UNIM1/NPOIN,NELEM,NBOUN,NLOAD,NPROP,NNODE,IINCS,ISTEP, INVP 7
. KRESL,NCHEK,TOLER,NALGO,NSVAB,NDOFN,NINCS,NEVAB, INVP 8
. NSTEP,NOUTP,FACTO,TAUFT,DTINT,FTIME,FIRST,PVALU, INVP 9
. DTIME,TTIME INVP 10
COMMON/UNIM2/PROPS(5,5),COORD(26),LNODS(25,2),IFPRE(52), INVP 11
. FIXED(52),TLOAD(25,4),RLOAD(25,4),ELOAD(25,4), INVP 12
. MATNO(25),STRES(25,2),PLAST(25),XDISP(52), INVP 13
. TDISP(26,2),TREAC(26,2),ASTIF(52,52),ASLOD(52), INVP 14
. REACT(52),FRESV(1352),PEFIX(52),ESTIF(4,4),VIVEL(25) INVP 15
DO 10 IELEM=1,NELEM INVP 16
DO 10 IEVAB=1,NEVAB INVP 17
10 ELOAD(IELEM,IEVAB)=0.0 INVP 18
DNEXT=FTIME*DTIME INVP 19
DO 30 IELEM=1,NELEM INVP 20
LPROP=MATNO(IELEM) INVP 21
YOUNG=PROPS(LPROP,1) INVP 22
XAREA=PROPS(LPROP,2) INVP 23
YIELD=PROPS(LPROP,3) INVP 24
HARDS=PROPS(LPROP,4) INVP 25
GAMMA=PROPS(LPROP,5) INVP 26
NODE1=LNODS(IELEM,1) INVP 27
NODE2=LNODS(IELEM,2) INVP 28
ELENG=ABS(COORD(NODE1)-COORD(NODE2)) INVP 29
IF(COORD(NODE2).GT.COORD(NODE1)) STRAN=(XDISP(NODE2)-XDISP(NODE1)) INVP 30
./ELENG INVP 31
IF(COORD(NODE2).LT.COORD(NODE1)) STRAN=(XDISP(NODE1)-XDISP(NODE2)) INVP 32
./ELENG INVP 33
STRES(IELEM,1)=STRES(IELEM,1)+(STRAN-VIVEL(IELEM)*DTIME)*YOUNG INVP 34
PLAST(IELEM)=PLAST(IELEM)+VIVEL(IELEM)*DTIME INVP 35
IF(STRES(IELEM,1).LT.0.0) YIELD=-YIELD INVP 36
PREYS=YIELD+HARDS*PLAST(IELEM) INVP 37
IF(ABS(STRES(IELEM,1)).LE.ABS(PREYS)) GO TO 20 INVP 38
VIVEL(IELEM)=GAMMA*(STRES(IELEM,1)-(YIELD+HARDS*PLAST(IELEM))) INVP 39
SNTOT=(TDISP(NODE2,1)-TDISP(NODE1,1))/ELENG INVP 40
DELTM=TAUFT*ABS(SNTOT/VIVEL(IELEM)) INVP 41
IF(DELTMLT.DNEXT) DNEXT=DELTM INVP 42
GO TO 30 INVP 43
20 VIVEL(IELEM)=0.0 INVP 44 
30 CONTINUEINVP45
DTIME=DNEXTINVP46
IF(ISTEP.EQ.1) DTIME=DTINTINVP47
DO 50 IELEM=1,NELEMINVP48
LPROP=MATNO(IELEM)INVP49
YOUNG=PROPS(LPROP,1)INVP50
XAREA=PROPS(LPROP,2)INVP51
FACTR=(YOUNG*VIVEL(IELEM)*DTIME-STRES(IELEM,1))*XAREAINVP52
IF(COORD(NODE2).GT.COORD(NODE1)) GO TO 40INVP53
ELOAD(IELEM,1)= FACTRINVP54
ELOAD(IELEM,2)=-FACTRINVP55
GO TO 50INVP56
40 ELOAD(IELEM,1)=-FACTRINVP57
ELOAD(IELEM,2)= FACTRINVP58
50 CONTINUEINVP59
DO 60 IELEM=1,NELEMINVP60
DO 60 IEVAB=1,NEVABINVP61
60 ELOAD(IELEM,IEVAB)=ELOAD(IELEM,IEVAB)+TLOAD(IELEM,IEVAB)INVP62
RETURNINVP63
ENDINVP64

INVP 1618 Zero the array in which the pseudo loads for the next time step will be stored.

INVP 20 Loop over each element.

INVP 21 Identify the element material property number.

INVP 2226 Store the elastic modulus as YOUNG, the cross-sectional area as XAREA, the uniaxial yield stress as YIELD, the uniaxial hardening parameter as HARDS and the fluidity parameter as GAMMA.

INVP 2728 Identify the element node numbers.

INVP 29 Evaluate the length of the element.

INVP 3033 Calculate the element strain so that a tensile strain is positive.

INVP 34 Evaluate the total current stress \sigma^{n+1} according to (4.30) and (4.31).

INVP 35 Evaluate the total viscoplastic strain \epsilon_{vp}^{n+1} , according to (4.32).

INVP 36 For a compressive stress take a negative value of the initial yield stress.

INVP 37 Compute the current yield level \sigma_{Y} + H^{\prime}\epsilon_{vp}^{n + 1}

INVP 38 If the current stress is less than the current yield stress, avoid evaluation of the viscoplastic strain rate.

INVP 39 Otherwise evaluate the viscoplastic strain rate according to (4.33).

INVP 4042 Evaluate the next time-step length according to (4.38).

INVP 44 For elastic elements set the viscoplastic strain rate to zero.

INVP 45 End of element loop.

INVP 47 For the first timestep of a load increment choose the timestep as the initial value.

INVP 48 Enter element loop to evaluate pseudo loads, \Delta V^{n+1} , for the next time step.

INVP 49 Identify the element material property number.

INVP 5051 Store the elastic modulus as YOUNG and the cross-sectional area as XAREA.

INVP 52 Evaluate the factor AE \dot{\epsilon}_{vp}^{n+1} \Delta t_{n+1} + A \sigma^{n+1} .

INVP 5362 Evaluate \Delta V^{n+1} according to (4.34) and (4.35), taking the appropriate signs for tensile or compressive stresses and strains. Note that f^{n+1} + \Delta f^{n+1} is the total load applied for time step n+1 which is stored as TLOAD.

4.9 Convergence monitoring subroutine, CONVP

Convergence of the numerical process to the steady state solution must be monitored by comparing, in some way, the values of the viscoplastic strain rate determined during each time step. This can be done in several ways and in this section we describe a procedure based on a global convergence check only. In particular we will assume that steady state conditions have been achieved if


\frac {\sum_ {i = 1} ^ {M} \left| \left(\Delta \epsilon_ {v p} {} ^ {n}\right) _ {i} \right|}{\sum_ {i = 1} ^ {M} \left| \left(\Delta \epsilon_ {v p} {} ^ {1} {} _ {i}\right) \right|} \times 1 0 0 \leqslant \text { TOLER }, \tag {4.41}

where M denotes the total number of elements in the problem and || denotes the absolute value. The multiplication factor of 100 on the left-hand side allows the specified tolerance factor TOLER to be considered as a percentage term. Equation (4.41) states that steady state conditions are deemed to have been achieved if the sum of the absolute values of the strain increment for any time step is less than or equal to TOLER times the corresponding value for the first time step. For practical purposes a value of TOLER \leqslant 1\cdot0 (i.e. 1%) is generally adequate. Parameter NCHEK indicates convergence of the solution to steady state, where;

NCHEK = 1 indicates that the solution is converging to steady state, with the viscoplastic strain increment reducing between two successive time steps.

NCHEK = 999 indicates a divergence, with the viscoplastic strain increment increasing between two successive time steps.

NCHEK = 0 indicates that steady state conditions have been achieved. Subroutine CONVP is now presented and described.

SUBROUTINE CONVP CNVP 1 CCNVP 2 C CNVP 3 C *** CHECKS FOR SOLUTION CONVERGENCE CNVP 4 C . CNVP 5 CCNVP 6 COMMON/UNIM1/NPOIN, NELEM, NBOUN, NLOAD, NPROP, NNODE, IINCS, ISTEP, CNVP 7 KRESL, NCHEK, TOLER, NALGO, NSVAB, NDOFN, NINCS, NEVAB, CNVP 8

NSTEP, NOUTP, FACTO, TAUFT, DTINT, FTIME, FIRST, PVALU, CNVP 9 DTIME, TTIME CNVP 10 COMMON/UNIM2/PROPS(5,5), COORD(26), LNODS(25,2), IFPRE(52), CNVP 11 FIXED(52), TLOAD(25,4), RLOAD(25,4), ELOAD(25,4), CNVP 12 MATNO(25), STRES(25,2), PLAST(25), XDISP(52), CNVP 13 TDISP(26,2), TREAC(26,2), ASTIF(52,52), ASLOD(52), CNVP 14 REACT(52), FRESV(1352), PEFIX(52), ESTIF(4,4), VIVEL(25) CNVP 15 NCHEK=1 CNVP 16 TOTAL=0.0 CNVP 17 DO 10 IELEM=1, NELEM CNVP 18 TOTAL=TOTAL+ABS(VIVEL(IELEM))DTIME CNVP 19 IF(ISTEP.EQ.1) FIRST=TOTAL CNVP 20 IF(FIRST.EQ.0.0) GO TO 20 CNVP 21 RATIO=100.0TOTAL/FIRST CNVP 22 GO TO 30 CNVP 23 20 RATIO=0.0 CNVP 24 30 CONTINUE CNVP 25 IF(RATIO.LE.TOLER) NCHEK=0 CNVP 26 IF(RATIO.GT.PVALU) NCHEK=999 CNVP 27 40 PVALU=RATIO CNVP 28 WRITE(6,900) TTIME CNVP 29 900 FORMAT(1H0,5X,12HTOTAL TIME =,E17.6) CNVP 30 WRITE(6,910) NCHEK,RATIO CNVP 31 910 FORMAT(1H0,5X,18HCONVERGENCE CODE =,I4,3X,28HNORM OF RESIDUAL SUM CNVP 32 .RATIO =,E14.6) CNVP 33 RETURN CNVP 34 END CNVP 35

CNVP 16 Set the indicator monitoring convergence to 1. This will be reset later in the subroutine if necessary.

CNVP 17-19 Compute


\sum_ {i = 1} ^ {M} \left| \left(\Delta \epsilon_ {v p} ^ {n}\right) _ {i} \right|

for the current time step as required in (4.41).

CNVP 20 For the first time step evaluate the denominator in (4.41).

CNVP 2125 Evaluate the left-hand side in (4.41). If the denominator is zero there is no viscoplastic flow for the particular load increment, therefore set RATIO = 0 indicating a steady state condition.

CNVP 26 If (4.41) is satisfied, set NCHEK = 0 indicating a steady state condition.

CNVP 27 If the viscoplastic increment has increased from the value obtained on the previous time step set NCHEK = 999.

CNVP 28 Store the current value of the left-hand side of (4.41) for use in Statement CNVP 27 during the next time step.

CNVP 29-30 Output the current time.

CNVP 3133 Output the value of NCHEK and the left-hand side of (4.41).

4.10 Subroutine INCLOD

Subroutine INCLOD described in Section 3.7 is employed for this application with one minor change: The iteration limit NITER is now replaced by the time-step limit NSTEP.