add documents
This commit is contained in:
+682
@@ -0,0 +1,682 @@
|
||||
<!-- source-page: 301 -->
|
||||
|
||||
```txt
|
||||
IF(FNORM.LT.ALLOW) GO TO 70 SPVP 77
|
||||
EPBAR=SQRT((2.0*(AVECT(1)*AVECT(1)+AVECT(2)*AVECT(2)+AVECT(4) SPVP 78
|
||||
.*AVECT(4))+AVECT(3)*AVECT(3))/3.0) SPVP 79
|
||||
TSBAR=SQRT((2.0*(SVECT(1)*SVECT(1)+SVECT(2)*SVECT(2)+SVECT(4) SPVP 80
|
||||
.*SVECT(4))+SVECT(3)*SVECT(3))/3.0) SPVP 81
|
||||
DELTM=TAUFT*TSBAR/EPBAR SPVP 82
|
||||
IF(DELTM.LT.DNEXT) DNEXT=DELTM SPVP 83
|
||||
70 CONTINUE SPVP 84
|
||||
80 CONTINUE SPVP 85
|
||||
DTIME=DNEXT SPVP 86
|
||||
IF(ISTEP.EQ.1) DTIME=DTINT SPVP 87
|
||||
KGAUS=0 SPVP 88
|
||||
DO 140 IELEM=1,NELEM SPVP 89
|
||||
LPROP=MATNO(IELEM) SPVP 90
|
||||
DO 90 INODE=1,NNODE SPVP 91
|
||||
LNODE=IABS(LNODS(IELEM,INODE)) SPVP 92
|
||||
NPOSN=(LNODE-1)*NDOFN SPVP 93
|
||||
DO 90 IDOFN=1,NDOFN SPVP 94
|
||||
NPOSN=NPOSN+1 SPVP 95
|
||||
90 ELCOD(IDOFN,INODE)=COORD(LNODE,IDOFN) SPVP 96
|
||||
THICK=PROPS(LPROP,3) SPVP 97
|
||||
KGASP=0 SPVP 98
|
||||
DO 130 IGAUS=1,NGAUS SPVP 99
|
||||
DO 130 JGAUS=1,NGAUS SPVP 100
|
||||
EXISP=POSGP(IGAUS) SPVP 101
|
||||
ETASP=POSGP(JGAUS) SPVP 102
|
||||
KGAUS=KGAUS+1 SPVP 103
|
||||
KGASP=KGASP+1 SPVP 104
|
||||
CALL SFR2(DERIV,ETASP,EXISP,NNODE,SHAPE) SPVP 105
|
||||
CALL JACOB2(CARTD,DERIV,DJACB,ELCOD,GPCOD,IELEM,KGASP,NNODE,SHAPE) SPVP 106
|
||||
DVOLU=DJACB*WEIGP(IGAUS)*WEIGP(JGAUS) SPVP 107
|
||||
IF(NTYPE.EQ.3) DVOLU=DVOLU*TWOPI*GPCOD(1,KGASP) SPVP 108
|
||||
IF(THICK.NE.0.0) DVOLU=DVOLU*THICK SPVP 109
|
||||
CALL BMATPS(BMATX,CARTD,NNODE,SHAPE,GPCOD,NTYPE,KGASP) SPVP 110
|
||||
CALL MODPS(DMATX,LPROP,MMATS,NTYPE,PROPS) SPVP 111
|
||||
DO 100 ISTR1=1,NSTR1 SPVP 112
|
||||
100 STRES(ISTR1)=STRSG(ISTR1,KGAUS) SPVP 113
|
||||
CALL INVAR(DEVIA,LPROP,MMATS,NCRIT,PROPS,SINT3,STEFF,STRES,THETA, SPVP 114
|
||||
.VARJ2,YIELD) SPVP 115
|
||||
IF(TIMEX.GT.0.0) CALL TANGVP(LPROP,STRES,PROPS,TIMEX,DTIME, SPVP 116
|
||||
.NSTRE,NTYPE,MMATS,NCRIT,DMATX) SPVP 117
|
||||
C SPVP 118
|
||||
C*** CALCULATE THE RESIDUAL FORCES AND INCREMENTAL PSEUDO LOADS SPVP 119
|
||||
C SPVP 120
|
||||
DO 110 ISTRE=1,NSTRE SPVP 121
|
||||
STRES(ISTRE)=0.0 SPVP 122
|
||||
DO 110 JSTRE=1,NSTRE SPVP 123
|
||||
110 STRES(ISTRE)=STRES(ISTRE)+DMATX(ISTRE,JSTRE)*VIVEL(JSTRE,KGAUS) SPVP 124
|
||||
.*DTIME SPVP 125
|
||||
MGASH=0 SPVP 126
|
||||
DO 120 INODE=1,NNODE SPVP 127
|
||||
DO 120 IDOFN=1,NNODFN SPVP 128
|
||||
MGASH=MGASH+1 SPVP 129
|
||||
DO 120 ISTRE=1,NSTRE SPVP 130
|
||||
120 ELOAD(IELEM,MGASH)=ELOAD(IELEM,MGASH)+BMATX(ISTRE,MGASH) SPVP 131
|
||||
.*(STRES(ISTRE)-STRSG(ISTRE,KGAUS))*DVOLU SPVP 132
|
||||
130 CONTINUE SPVP 133
|
||||
140 CONTINUE SPVP 134
|
||||
DO 150 IELEM=1,NELEM SPVP 135
|
||||
DO 150 IEVAB=1,NEVAB SPVP 136
|
||||
150 ELOAD(IELEM,IEVAB)=ELOAD(IELEM,IEVAB)+TLOAD(IELEM,IEVAB) SPVP 137
|
||||
RETURN SPVP 138
|
||||
END SPVP 139
|
||||
```
|
||||
|
||||
<!-- source-page: 302 -->
|
||||
|
||||
SPVP 20 Compute 2π.
|
||||
|
||||
SPVP 21–23 Zero the array in which the pseudo loads for the next time-step will be stored.
|
||||
|
||||
SPVP 24 Zero the Gauss point counter over all elements.
|
||||
|
||||
SPVP 25 Increase the timestep length from the value used for the previous step by the factor FTIME. If this new value is less than that predicted later in this routine, this step length will be employed for the next time step.
|
||||
|
||||
SPVP 26 Loop over each element.
|
||||
|
||||
SPVP 27 Identify the element material property number.
|
||||
|
||||
SPVP 32-39 Store the element coordinates in array ELCOD, the incremental displacements $\Delta d^{n}$ in ELDIS and the total displacements $d^{n}$ in TLDIS.
|
||||
|
||||
SPVP 40 Identify the element thickness.
|
||||
|
||||
SPVP 41 Zero the local Gauss point counter.
|
||||
|
||||
SPVP 42–45 Enter the loops for numerical integration and evaluate the local coordinates $(\xi, \eta)$ at the sampling point.
|
||||
|
||||
SPVP 46–47 Increment the local and global Gauss point counters.
|
||||
|
||||
SPVP 48 Compute the elasticity matrix, D.
|
||||
|
||||
SPVP 49–50 Store the total current stresses $\sigma^{n}$ locally in STRES.
|
||||
|
||||
SPVP 51–52 Evaluate the deviatoric stresses and $J_{2}^{\prime}$ .
|
||||
|
||||
SPVP 53-54 For the implicit or semi-implicit time stepping scheme evaluate $\hat{D}^n$ .
|
||||
|
||||
SPVP 55 Evaluate the shape functions $N_{i}$ and the derivatives $\partial N_{i}/\partial\xi$ , $\partial N_{i}/\partial\eta$ .
|
||||
|
||||
SPVP 56 Evaluate the Gauss point coordinates GPCOD(IDIME, KGASP), the determinant of the Jacobian matrix $|J|$ and the Cartesian derivatives of the shape functions.
|
||||
|
||||
SPVP 57–59 Calculate the elemental volume for numerical integration as $|J|W_{\xi}W_{\eta}$ taking care to multiply by $2\pi r$ for axisymmetric problems.
|
||||
|
||||
SPVP 60–62 Call subroutine STRESS to evaluate the stress increment $\Delta\sigma^{n}$ according to (8.20) and also $\sigma^{n+1} = \sigma^{n} + \Delta\sigma^{n}$ .
|
||||
|
||||
SPVP 63–65 Evaluate the incremental viscoplastic strain and the total current viscoplastic strain, $\epsilon_{vp}^{n+1}$ .
|
||||
|
||||
SPVP 66–67 Accumulate the absolute value of the viscoplastic strain increment. This will allow us to monitor whether or not steady state conditions are being approached.
|
||||
|
||||
SPVP 70 Also calculate the total current effective viscoplastic strain $\bar{\epsilon}_{vp}^{n+1}$ according to (8.47).
|
||||
|
||||
SPVP 71–76 Evaluate the current viscoplastic flow rate $\dot{\epsilon}_{vp}^{n+1}$ according to (8.7).
|
||||
|
||||
SPVP 77 If the Gauss point is elastic, avoid calculation of the new time step length.
|
||||
|
||||
<!-- source-page: 303 -->
|
||||
|
||||
SPVP 78–79 Calculate $\bar{\epsilon}_{vp}^{n+1}$ , the effective value of the viscoplastic strain rate.
|
||||
|
||||
SPVP 80-81 Calculate $\bar{\epsilon}^{n+1}$ , the total effective strain.
|
||||
|
||||
SPVP 82-83 Evaluate the interval length for the next time step according to (8.29) as
|
||||
|
||||
$$
|
||||
\Delta t _ {n + 1} = \tau \left[ \frac {\bar {\epsilon} ^ {n + 1}}{\bar {\epsilon} _ {v p} ^ {n + 1}} \right] _ {\min} ^ {1 / 2},
|
||||
$$
|
||||
|
||||
where TFACT is the parameter $\tau$ and the minimum value of $\Delta t_{n+1}$ is taken with respect to all Gauss points throughout the structure.
|
||||
|
||||
SPVP 84–85 Termination of loops over Gauss points and elements respectively.
|
||||
|
||||
SPVP 87 For the first time step of a load increment reset the step length equal to the initial value input.
|
||||
|
||||
SPVP 88 Zero the Gauss point counter over all elements.
|
||||
|
||||
SPVP 89 Loop over each element.
|
||||
|
||||
SPVP 90 Identify the element material property number.
|
||||
|
||||
SPVP 91-96 Store the element coordinates in array ELCOD.
|
||||
|
||||
SPVP 97 Identify the element thickness.
|
||||
|
||||
SPVP 98 Zero the local Gauss point counter.
|
||||
|
||||
SPVP 99–102 Enter the loops for numerical integration and evaluate the local coordinates $(\xi, \eta)$ at the sampling point.
|
||||
|
||||
SPVP 103-104 Increment the local and global Gauss point counters.
|
||||
|
||||
SPVP 105 Evaluate the shape functions and their local derivatives.
|
||||
|
||||
SPVP 106 Evaluate the Gauss point coordinates, determinant of the Jacobian matrix and the Cartesian derivatives of the shape functions.
|
||||
|
||||
SPVP 107-109 Calculate the elemental volume for numerical integration.
|
||||
|
||||
SPVP 110 Evaluate the B matrix.
|
||||
|
||||
SPVP 111 Evaluate the D matrix.
|
||||
|
||||
SPVP 112–113 Store the total current stresses $\sigma^{n+1}$ locally in STRES.
|
||||
|
||||
SPVP 114–115 Calculate the deviatoric stresses and $J_{2}^{\prime}$ .
|
||||
|
||||
SPVP 116–117 For the implicit or semi-implicit time stepping scheme evaluate $\hat{D}^{n+1}$ .
|
||||
|
||||
SPVP 121-125 Calculate $\hat{D}^{n+1}\dot{\epsilon}_{vp}^{n+1}\Delta t_{n+1}$ and store locally in STRES.
|
||||
|
||||
SPVP 126–132 Evaluate the pseudo loads to be applied for the next timestep, $\Delta V^{n+1}$ according to (8.28) and (8.34) as
|
||||
|
||||
<!-- source-page: 304 -->
|
||||
|
||||
$$
|
||||
\Delta V ^ {n + 1} = \int_ {\Omega} B ^ {T} \left\{\hat {D} ^ {n + 1} \dot {\epsilon} _ {r p} ^ {n + 1} \Delta t _ {n + 1} + \sigma^ {n + 1} \right\} d \Omega + f ^ {n + 1}.
|
||||
$$
|
||||
|
||||
SPVP 133-134 Termination of loops over Gauss points and elements respectively.
|
||||
|
||||
SPVP 135–137 Complete the computations of SPVP 126–132 by adding the term $f^{n+1}$ .
|
||||
|
||||
Subroutine INVAR which calculates the deviatoric stresses and $J_{2}^{\prime}$ is identical to that employed in Chapter 7 for elasto-plastic problems and is described in detail in Section 7.8.3. Subroutine YIELDF has been previously described in Section 7.8.4.1.
|
||||
|
||||
# 8.9 Subroutine FLOWVP
|
||||
|
||||
The function of this subroutine is to determine the viscoplastic strain rate according to (8.7).
|
||||
|
||||
Subroutine FLOWVP is now presented and described.
|
||||
```txt
|
||||
SUBROUTINE FLOWVP(AVECT, PROPS, LPROP, STEFF, NSTR1, MTOTG, VIVEL, YIELD, KGAUS, MMATS, NCRIT, FNORM, ALLOW) FLVP 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
|
||||
DIMENSION AVECT(4), PROPS(MMATS, 10), VIVEL(5, MTOTG) FLVP 8
|
||||
ALLOW=0.01 FLVP 9
|
||||
IF(STEFF.EQ.0.0) GO TO 90 FLVP 10
|
||||
YOUNG=PROPS(LPROP, 1) FLVP 11
|
||||
POISS=PROPS(LPROP, 2) FLVP 12
|
||||
HARDS=PROPS(LPROP, 6) FLVP 13
|
||||
FRICT=PROPS(LPROP, 7) FLVP 14
|
||||
GAMMA=PROPS(LPROP, 8) FLVP 15
|
||||
DELTA=PROPS(LPROP, 9) FLVP 16
|
||||
NFLOW=PROPS(LPROP, 10) FLVP 17
|
||||
ROOT3=1.73205080757 FLVP 18
|
||||
FDATM=PROPS(LPROP, 5) FLVP 19
|
||||
FRICT=FRICT*0.017453292 FLVP 20
|
||||
IF(NCRIT.EQ.3) FDATM=FDATM*COS(FRICT) FLVP 21
|
||||
IF(NCRIT.EQ.4) FDATM=6.0*FDATM*COS(FRICT)/(ROOT3*(3.0-SIN(FRICT)))FLVP 22
|
||||
IF(HARDS.GT.0.0) FDATM=FDATM+VIVEL(5, KGAUS)*HARDS FLVP 23
|
||||
IF(FDATM.LT.0.001) FDATM=1.0 FLVP 24
|
||||
FCURR=YIELD-FDATM FLVP 25
|
||||
FNORM=FCURR/FDATM FLVP 26
|
||||
IF(FNORM.LT.ALLOW) GO TO 90 FLVP 27
|
||||
IF(NFLOW.EQ.1) GO TO 50 FLVP 28
|
||||
CMULT=GAMMA*(EXP(DELTA*FNORM)-1.0) FLVP 29
|
||||
GO TO 60 FLVP 30
|
||||
50 CMULT=GAMMA*(FNORM**DELTA) FLVP 31
|
||||
60 DO 70 ISTR1=1, NSTR1 FLVP 32
|
||||
70 AVECT(ISTR1)=CMULT*AVECT(ISTR1) FLVP 33
|
||||
DO 80 ISTR1=1, NSTR1 FLVP 34
|
||||
80 VIVEL(ISTR1, KGAUS)=AVECT(ISTR1) FLVP 35
|
||||
RETURN FLVP 36
|
||||
90 DO 100 ISTR1=1, NSTR1 FLVP 37
|
||||
100 VIVEL(ISTR1, KGAUS)=0.0 FLVP 38
|
||||
RETURN FLVP 39
|
||||
END FLVP 40
|
||||
```
|
||||
|
||||
<!-- source-page: 305 -->
|
||||
|
||||
FLVP 9 Specify ALLOW, the permitted tolerance by which the stress point is allowed to deviate from the yield surface.
|
||||
|
||||
FLVP 10 For the (unlikely) case of a Gauss point with zero stress (identified by $J_2' = J_3' = 0$ ) avoid all viscoplastic calculations.
|
||||
|
||||
FLVP 11 Identify YOUNG as the elastic modulus, E.
|
||||
|
||||
FLVP 12 Identify POISS as the Poissons ratio, v.
|
||||
|
||||
FLVP 13 Identify HARDS as $H'$ for linear strain hardening.
|
||||
|
||||
FLVP 14 Identify FRICT as the friction angle $\phi$ for Mohr-Coulomb and Drucker-Prager materials.
|
||||
|
||||
FLVP 15 Identify GAMMA as the fluidity parameter, $\gamma$ .
|
||||
|
||||
FLVP 16 Identify DELTA as the index $M$ in (8.8) or $N$ in (8.9), according to the flow function specified.
|
||||
|
||||
FLVP 17 Identify NFLOW as the parameter specifying type of flow function:
|
||||
|
||||
NFLOW = 0 - flow function (8.8) to be used,
|
||||
|
||||
NFLOW = 1 - flow function (8.9) to be used.
|
||||
|
||||
FLVP 18 Compute √(3).
|
||||
|
||||
FLVP 19–22 Identify FDATM as the effective yield stress, $\sigma_{Y}^{0}$ , according to Column 4, Table 7.2.
|
||||
|
||||
FLVP 23 Evaluate the current yield stress as $F_0 = \sigma Y^0 + H' \bar{\epsilon}_{vp}$ , where $\bar{\epsilon}_{vp}$ is the current effective viscoplastic strain, according to (8.47).
|
||||
|
||||
FLVP 24 For elastic creep problems, solved by setting $F_{0}=0$ , reset $F_{0}$ as a low value to avoid overflow in (8.8) and (8.9).
|
||||
|
||||
FLVP 25–26 Calculate $(F-F_{0})/F_{0}$ where F is the effective stress value evaluated as YIELD in subroutine INVAR.
|
||||
|
||||
FLVP 27 If $(F-F_{0})/F_{0}$ is less than ALLOW avoid any further visco-plastic calculations, i.e. the stress point is assumed to be sufficiently close to the yield surface.
|
||||
|
||||
FLVP 29 Evaluate $\gamma\langle\phi\rangle$ for flow function (8.8).
|
||||
|
||||
FLVP 31 Evaluate $\gamma\langle\Phi\rangle$ for flow function (8.9).
|
||||
|
||||
FLVP 32-35 Use flow vector a to form $\dot{\epsilon}_{vp}^{n+1} = \gamma\langle\Phi\rangle a^{n+1}$ .
|
||||
|
||||
FLVP 37–38 For elastic points only, set the viscoplastic strain rate to zero.
|
||||
|
||||
# 8.10 Subroutine STRESS
|
||||
|
||||
The function of this subroutine is to evaluate the increment in stress occurring during a time step according to (8.20).
|
||||
|
||||
Subroutine STRESS is presented below:
|
||||
|
||||
SUBROUTINE STRESS(DMATX, LPROP, NTYPE, PROPS, NDOFN, CARTD, ELDIS, STRS 1
|
||||
. SHAPE, GPCOD, NSTRE, VIVEL, DTIME, STRSG, KGASP, STRS 2
|
||||
. MTOTG, MMATS, SVECT, NNODE, NSTR1, KGAUS, TLDIS) STRS 3
|
||||
|
||||
CSTRS 4
|
||||
|
||||
C STRS 5
|
||||
|
||||
C\*\*\*\* EVALUATE THE INCREMENTS OF STRAIN AND STRESS STRS 6
|
||||
|
||||
C STRS 7
|
||||
|
||||
C $^{*}$ SSTRS 8
|
||||
|
||||
<!-- source-page: 306 -->
|
||||
|
||||
```asm
|
||||
DIMENSION SVECT(4), PROPS(MMATS,10), ELDIS(2,9), CARTD(2,9), STRS 9
|
||||
. DMATX(4,4), AGASH(2,2), STRES(4), STRAN(4), STRSG(4,MTOTG), STRS 10
|
||||
. SHAPE(9), VIVEL(5,MTOTG), TLDIS(2,9), CGASH(2,2), STRS 11
|
||||
. GPCOD(2,9) STRS 12
|
||||
POISS=PROPS(LPROP,2) STRS 13
|
||||
DO 10 IDOFN=1, NDOFN STRS 14
|
||||
DO 10 JDOFN=1, NDOFN STRS 15
|
||||
BGASH=0.0 STRS 16
|
||||
DGASH=0.0 STRS 17
|
||||
DO 20 INODE=1, NNODE STRS 18
|
||||
DGASH=DGASH+CARTD(JDOFN, INODE)*TLDIS(IDOFN, INODE) STRS 19
|
||||
20 BGASH=BGASH+CARTD(JDOFN, INODE)*ELDIS(IDOFN, INODE) STRS 20
|
||||
CGASH(IDOFN, JDOFN)=BGASH STRS 21
|
||||
10 AGASH(IDOFN, JDOFN)=DGASH STRS 22
|
||||
C STRS 23
|
||||
C*** CALCULATE THE TOTAL AND INCREMENTAL STRAINS STRS 24
|
||||
C STRS 25
|
||||
SVECT(1)=AGASH(1,1) STRS 26
|
||||
SVECT(2)=AGASH(2,2) STRS 27
|
||||
SVECT(3)=AGASH(1,2)+AGASH(2,1) STRS 28
|
||||
IF(NTYPE.NE.3) GO TO 70 STRS 29
|
||||
SVECT(4)=0.0 STRS 30
|
||||
DO 60 INODE=1, NNODE STRS 31
|
||||
SVECT(4)=SVECT(4)+TLDIS(1, INODE)*SHAPE(INODE)/GPCOD(1, KGASP) STRS 32
|
||||
60 CONTINUE STRS 33
|
||||
70 CONTINUE STRS 34
|
||||
STRAN(1)=CGASH(1,1) STRS 35
|
||||
STRAN(2)=CGASH(2,2) STRS 36
|
||||
STRAN(3)=CGASH(1,2)+CGASH(2,1) STRS 37
|
||||
IF(NTYPE.NE.3) GO TO 90 STRS 38
|
||||
STRAN(4)=0.0 STRS 39
|
||||
DO 80 INODE=1, NNODE STRS 40
|
||||
STRAN(4)=STRAN(4)+ELDIS(1, INODE)*SHAPE(INODE)/GPCOD(1, KGASP) STRS 41
|
||||
80 CONTINUE STRS 42
|
||||
90 CONTINUE STRS 43
|
||||
DO 50 ISTRE=1, NSTRE STRS 44
|
||||
50 STRAN(ISTRE)=STRAN(ISTRE)-VIVEL(ISTRE, KGAUS)*DTIME STRS 45
|
||||
C STRS 46
|
||||
C*** AND THE INCREMENTAL STRESSES STRS 47
|
||||
C STRS 48
|
||||
DO 30 ISTRE=1, NSTRE STRS 49
|
||||
STRES(ISTRE)=0.0 STRS 50
|
||||
DO 30 JSTRE=1, NSTRE STRS 51
|
||||
30 STRES(ISTRE)=STRES(ISTRE)+DMATX(ISTRE, JSTRE)*STRAN(JSTRE) STRS 52
|
||||
IF(NTYPE.EQ.1) STRES(4)=0.0 STRS 53
|
||||
IF(NTYPE.EQ.2) STRES(4)=POISS*(STRES(1)+STRES(2)) STRS 54
|
||||
DO 40 ISTR1=1, NSTR1 STRS 55
|
||||
40 STRSG(ISTR1, KGAUS)=STRSG(ISTR1, KGAUS)+STRES(ISTR1) STRS 56
|
||||
RETURN STRS 57
|
||||
END STRS 58
|
||||
```
|
||||
|
||||
<!-- source-page: 307 -->
|
||||
|
||||
STRS 13 Identify POISS as the material Poisson's ratio.
|
||||
|
||||
STRS 14–22 Evaluate the Cartesian derivatives of both the displacement increment and the total displacement.
|
||||
|
||||
STRS 26-33 Evaluate the total and incremental strains $Bd^{n}$ and $B\Delta d^{n}$ .
|
||||
|
||||
STRS 34-45 Calculate the elastic portion of the strains, $B\Delta d^n - \dot{\epsilon}_{vp^n}\Delta t_n$ .
|
||||
|
||||
STRS 49–52 Calculate the stresses according to (8.20).
|
||||
|
||||
STRS 53–54 For plane stress and plane strain problems evaluate the out-of-plane stress component.
|
||||
|
||||
STRS 55-56 Finally calculate the total current stress as $\sigma^{n+1} = \sigma^n + \Delta \sigma^n$ .
|
||||
|
||||
# 8.11 Subroutine ZERO
|
||||
|
||||
This subroutine performs the same task as the subroutine described in Section 7.8.2 for elasto-plastic problems. It merely initializes to zero some arrays required for the accumulation of data. Subroutine ZERO is presented below without further comment.
|
||||
|
||||
```asm
|
||||
SUBROUTINE ZERO(ELOAD,MELEM,MEVAB,MPOIN,MTOTG,MTOTV,NDOFN,NELEM, ZRO2 1
|
||||
. NEVAB,NGAUS,NSTR1,NTOTG,NTOTV,NVFIX,STRSG, ZRO2 2
|
||||
. TDISP,VIVEL,VISTN,TTIME,TLOAD,TREAC, ZRO2 3
|
||||
. TFACT,MVFIX) ZRO2 4
|
||||
C*******************************
|
||||
C*******************************
|
||||
C*******************************
|
||||
C*******************************
|
||||
C*******************************
|
||||
DIMENSION ELOAD(MELEM,MEVAB),STRSG(4,MTOTG),TDISP(MTOTV), ZRO2 10
|
||||
. TLOAD(MELEM,MEVAB),TREAC(MVFIX,2),VIVEL(5,MTOTG), ZRO2 11
|
||||
. VISTN(4,MTOTG) ZRO2 12
|
||||
TTIME=0.0 ZRO2 13
|
||||
TFACT=0.0 ZRO2 14
|
||||
DO 30 IELEM=1,NELEM ZRO2 15
|
||||
DO 30 IEVAB=1,NEVAB ZRO2 16
|
||||
ELOAD(IELEM,IEVAB)=0.0 ZRO2 17
|
||||
30 TLOAD(IELEM,IEVAB)=0.0 ZRO2 18
|
||||
DO 40 ITOTV=1,NTOTV ZRO2 19
|
||||
40 TDISP(ITOTV)=0.0 ZRO2 20
|
||||
DO 50 IVFIX=1,NVFIX ZRO2 21
|
||||
DO 50 IDOFN=1,NDOFN ZRO2 22
|
||||
50 TREAC(IVFIX,IDOFN)=0.0 ZRO2 23
|
||||
DO 60 ITOTG=1,NTOTG ZRO2 24
|
||||
VIVEL(5,ITOTG)=0.0 ZRO2 25
|
||||
DO 60 ISTR1=1,NSTR1 ZRO2 26
|
||||
VISTN(ISTR1,ITOTG)=0.0 ZRO2 27
|
||||
VIVEL(ISTR1,ITOTG)=0.0 ZRO2 28
|
||||
60 STRSG(ISTR1,ITOTG)=0.0 ZRO2 29
|
||||
RETURN ZRO2 30
|
||||
END ZRO2 31
|
||||
```
|
||||
|
||||
# 8.12 Subroutine STEADY for monitoring steady state convergence
|
||||
|
||||
The role of this subroutine is to check whether or not steady state conditions have been achieved at the end of each time step. Convergence to a
|
||||
|
||||
<!-- source-page: 308 -->
|
||||
|
||||
steady state condition is monitored according to the increment in viscoplastic strain which occurs during the time step. For checking purposes the effective viscoplastic strain rate, $\dot{e}_{vp}^{n+1}$ , defined by (8.47) is employed and steady state conditions are deemed to have been achieved at the end of time step n, if
|
||||
|
||||
$$
|
||||
\left(\Delta t _ {n + 1} \sum_ {\text { All Gauss points }} \bar {\dot {\epsilon}} _ {v p} ^ {n + 1} / \Delta t _ {1} \sum_ {\text { All Gauss points }} \bar {\dot {\epsilon}} _ {v p} ^ {1}\right) \times 1 0 0 \leqslant \text { TOLER }, \tag {8.48}
|
||||
$$
|
||||
|
||||
where TOLER is a convergence tolerance value prescribed as input in Subroutine INCREM, described in Section 6.5.3. From (8.48) it is seen that a global measure of convergence is taken in the subroutine presented in this section. A local steady state convergence condition could alternatively be enforced by requiring (8.48) to be satisfied for each Gauss point in the structure which is yielding viscoplastically.
|
||||
|
||||
The structure of this subroutine is identical to that of subroutine CONVP, presented in Section 4.9, for one-dimensional structures.
|
||||
|
||||
Subroutine STEADY is now presented.
|
||||
```csv
|
||||
SUBROUTINE STEADY(NELEM,NGAUS,NCHEK,VIVEL,ISTEP,FIRST,TOLER,PVALU,STDY 1
|
||||
. MTOTG,DTIME,NSTR1,TTIME) STDY 2
|
||||
C*****
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
```
|
||||
|
||||
<!-- source-page: 309 -->
|
||||
|
||||
# 8.13 The main, master or controlling segment
|
||||
|
||||
This segment controls the timestepping process and accesses all the other subroutines appropriately. In particular it controls the increment of the applied loads and the output of results at selected time intervals. The frequency of output is controlled by means of two parameters NOUTP(1) and NOUTP(2) which are specified as input data for every load increment in subroutine INCREM described in Section 6.5.3. The precise specification of these parameters is however somewhat different for the present application. In this case NOUTP(1) controls the frequency of output of the displacements and NOUTP(2) the frequency of output of the stresses and viscoplastic strains. In particular, if NOUTP(1) is specified as 7 for a particular load increment, then the displacements will be output every 7th timestep within that increment. This is accomplished by evaluating for every timestep, ISTEP, the quantity
|
||||
|
||||
$$
|
||||
(\text { ISTEP } / \text { NOUTP } (1)) ^ {*} \text { NOUTP } (1)
|
||||
$$
|
||||
|
||||
and then checking this value against ISTEP. The two will be equal only when ISTEP is an exact multiple of NOUTP(1). A similar check for stress output is undertaken for NOUTP(2).
|
||||
|
||||
The parameter MSTEP specifies the maximum number of timesteps to be considered for the load increment. If steady state conditions are achieved before MSTEP timesteps, the next load increment, is applied immediately condition (8.48) is satisfied.
|
||||
|
||||
The role of the load incrementing factor, FACTO, is identical to that described in Section 6.5.3.
|
||||
|
||||
In this segment input data is also received which controls the timestepping algorithm to be employed. The following information is input:
|
||||
|
||||
TIMEX Parameter, $\Theta$ , which controls the type of timestepping algorithm to be employed:
|
||||
|
||||
$$
|
||||
\begin{array}{l} \text { TIMEX } = 0. 0 \text { -Explicit scheme }, \\ = 0. 5 - \text { Semi - implicit or trapezoidal scheme }, \\ = 1. 0 - \text { Fully implicit }. \\ \end{array}
|
||||
$$
|
||||
|
||||
TAUFT- The parameter $\tau$ discussed in Section 8.3.
|
||||
|
||||
DTINT The initial time step length. This specifies the step length for the first time step of each load increment. The time step length needs to be readjusted at the beginning of a new load increment since the step length computed as steady state conditions are approached in the previous time step will in general be too large.
|
||||
|
||||
FTIME The factor by which it is attempted to increase the step length from the value used for the previous time step. This parameter is generally input as 1.5 as mentioned in Section 8.3.
|
||||
|
||||
The following channel numbers are employed by the program: 5 (card reader), 6 (line printer), 1, 2, 3, 4, 8 (scratch files). This main segment is now presented and descriptive notes provided where necessary.
|
||||
|
||||
<!-- source-page: 310 -->
|
||||
|
||||
```asm
|
||||
MASTER VISCO
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
C
|
||||
DIMENSION ASDIS(120),COORD(60,2),ELOAD(20,18),ESTIF(18,18),
|
||||
EQRHS(10),EQUAT(40,10),FIXED(120),
|
||||
GLOAD(40),GSTIF(986),
|
||||
IFFIX(120),LNODS(20,9),LOCEL(18),MATNO(20),
|
||||
NACVA(40),NAMEV(10),NDEST(18),NDFRO(20),NOFIX(25),
|
||||
NOUTP(2),NPIVO(10),
|
||||
POSGP(4),PRESC(25,2),PROPS(5,10),RLOAD(20,18),
|
||||
STFOR(120),TREAC(25,2),VECRV(40),WEIGP(4),
|
||||
STRSG(4,180),TDISP(120),
|
||||
TLOAD(20,18),VIVEL(5,180),VISTN(4,180)
|
||||
TLOAD(20,18),VIVEL(5,180),VISTN(4,180)
|
||||
TLOAD(20,18),VIVEL(5,180),VISTN(4,180)
|
||||
TLOAD(20,18),VIVEL(5,180),VISTN(4,180)
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18)
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,18),VIVEL
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
VIVEL
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
TLOAD(20,12)
|
||||
```
|
||||
Reference in New Issue
Block a user