393 lines
9.8 KiB
Markdown
393 lines
9.8 KiB
Markdown
<!-- source-page: 111 -->
|
||
|
||
```prolog
|
||
C A = RADIUS 'A' OF THE SPHERICAL HEAD
|
||
C SINA = SINE (CONE ANGLE ALPHA)
|
||
C COSA = COSINE (CONE ANGLE ALPHA)
|
||
C Z0 = ORIGINAL 'Z' COORDINATE OF POINT 'Q'
|
||
C
|
||
A=5.0
|
||
SINA=0.5
|
||
COSA=0.86602
|
||
Z0=6.0
|
||
ZQ=Z0 + U(2,2)
|
||
C
|
||
C TEST FOR SEGMENT
|
||
C
|
||
IF(X(1,1)*SINA/COSA.LT.ZQ-X(2,1)) THEN
|
||
C
|
||
C SPHERE
|
||
C
|
||
B=SQRT(X(1,1)**2 + (X(2,1)-ZQ)**2)
|
||
H=A-B
|
||
COSB=X(1,1)/B
|
||
SINB=(ZQ-X(2,1))/B
|
||
P(1)=A*COSB
|
||
P(2)=ZQ-A*SINB
|
||
TGT(1,1)=-SINB
|
||
TGT(2,1)=-COSB
|
||
DNDS(1,1)=-SINB/A
|
||
DNDS(2,1)=-COSB/A
|
||
ELSE
|
||
C CONE
|
||
H=-X(1,1)*COSA+(X(2,1)-ZQ)*SINA+A
|
||
P(1)=X(1,1) + H*COSA
|
||
P(2)=X(2,1) - H*SINA
|
||
TGT(1,1)=-SINA
|
||
TGT(2,1)=-COSA
|
||
DNDS(1,1)=0.
|
||
DNDS(2,1)=0.
|
||
END IF
|
||
RETURN
|
||
END
|
||
```
|
||
|
||
The above case can be directly extended to three dimensions. For this purpose we assume that the radial axis, r, is in the global (x–y) plane, so that
|
||
|
||
<!-- source-page: 112 -->
|
||
|
||
$$
|
||
r = \sqrt {x _ {1} ^ {2} + x _ {2} ^ {2}}, \quad z = x _ {3}.
|
||
$$
|
||
|
||
For $\alpha < z _ { Q } - z$ (the sphere), the overclosure is $h = a - b$ , where again
|
||
|
||
$$
|
||
b = \sqrt {r ^ {2} + (z - z _ {Q}) ^ {2}}.
|
||
$$
|
||
|
||
The point $A ^ { \prime }$ on the rigid surface is ( , $\gamma , z _ { Q } - a \sin \beta )$ , where
|
||
|
||
$$
|
||
\cos \gamma = \frac {x _ {1}}{r}, \sin \gamma = \frac {x _ {2}}{r}.
|
||
$$
|
||
|
||
For $r = 0 , \gamma$ is not defined uniquely; in that case we arbitrarily choose $\gamma = 0$ . We now need two tangents to the surface. The tangent $\mathbf { t } ^ { 1 }$ used in the axisymmetric case is now
|
||
|
||
$$
|
||
\mathbf {t} ^ {1} = \left(- \sin \beta \cos \gamma , - \sin \beta \sin \gamma , - \cos \beta\right)
|
||
$$
|
||
|
||
and the orthogonal tangent is
|
||
|
||
$$
|
||
\mathbf {t} ^ {2} = (- \sin \gamma , \cos \gamma , 0).
|
||
$$
|
||
|
||
Again, the positive directions of $\mathbf { t } ^ { 1 }$ and $\mathbf { t } ^ { 2 }$ are chosen so that $\mathbf { t } ^ { 1 } \times \mathbf { t } ^ { 2 }$ defines an outward normal to the surface. The distance measures on the surface are
|
||
|
||
$$
|
||
d S ^ {1} = a d \beta , \quad d S ^ {2} = a \cos \beta d \gamma
|
||
$$
|
||
|
||
so that
|
||
|
||
$$
|
||
\frac {\partial \mathbf {n}}{\partial S ^ {1}} = \bigl (- \frac {1}{a} \sin \beta \cos \gamma , - \frac {1}{a} \sin \beta \sin \gamma , - \frac {1}{a} \cos \beta \bigr),
|
||
$$
|
||
|
||
$$
|
||
\frac {\partial \mathbf {n}}{\partial S ^ {2}} = \bigl (- \frac {1}{a} \sin \gamma , \frac {1}{a} \cos \gamma , 0 \bigr).
|
||
$$
|
||
|
||
For the conical surface ( $\alpha \geq z _ { Q } - z \ )$ , the surface separation is
|
||
|
||
$$
|
||
h = - r \cos \alpha + (z - z _ {Q}) \sin \alpha + a.
|
||
$$
|
||
|
||
The point $A ^ { \prime }$ on the rigid surface is $\left( \left( r + h \cos \alpha \right) \cos \gamma , \left( r + h \cos \alpha \right) \sin \gamma , z - h \sin \alpha \right)$ and the surface tangents are
|
||
|
||
$$
|
||
\mathbf {t} ^ {1} = \left(- \sin \alpha \cos \gamma , - \sin \alpha \sin \gamma , - \cos \alpha\right)
|
||
$$
|
||
|
||
$$
|
||
\mathbf {t} ^ {2} = (- \sin \gamma , \cos \gamma , 0).
|
||
$$
|
||
|
||
There is no change of with respect to $S ^ { 1 }$ , and, in this case $d S ^ { 2 } = c d \gamma$ , where $c = r + h$ so that
|
||
|
||
<!-- source-page: 113 -->
|
||
|
||
$$
|
||
\frac {\partial \mathbf {n}}{\partial S ^ {2}} = \left(- \frac {1}{c} \cos \alpha \sin \gamma , + \frac {1}{c} \cos \alpha \cos \gamma , 0\right).
|
||
$$
|
||
|
||
The routine can then be coded as follows:
|
||
```fortran
|
||
SUBROUTINE RSURFU(H,P,TGT,DNDS,X,TIME,U,CINAME,SLNAME,
|
||
1 MSNAME,NOEL,NODE,LCLOSE)
|
||
C
|
||
INCLUDE 'ABA_PARAM.INC'
|
||
C
|
||
CHARACTER*80 CINAME,SLNAME,MSNAME
|
||
DIMENSION P(3), TGT(3,2),DNDS(3,2), X(3,2), TIME(2), U(6,2)
|
||
C
|
||
C DEFINE THE FOLLOWING QUANTITIES:
|
||
C A = RADIUS 'A' OF THE SPHERICAL HEAD
|
||
C SINA = SINE (CONE ANGLE ALPHA)
|
||
C COSA = COSINE (CONE ANGLE ALPHA)
|
||
C Z0 = ORIGINAL 'Z' COORDINATE OF POINT 'Q'
|
||
C
|
||
A=5.0
|
||
SINA=0.5
|
||
COSA=0.86603
|
||
Z0=5.0
|
||
ZQ= Z0 + U(3,2)
|
||
C
|
||
C TEST FOR SEGMENT
|
||
C
|
||
R = SQRT(X(1,1)*X(1,1)+X(2,1)*X(2,1))
|
||
IF(R .GT. 0.0) THEN
|
||
COSG = X(1,1)/R
|
||
SING = X(2,1)/R
|
||
ELSE
|
||
COSG = 1.0
|
||
SING = 0.0
|
||
END IF
|
||
IF(R*SINA/COSA .LT. ZQ -X(3,1)) THEN
|
||
C
|
||
C SPHERE
|
||
C
|
||
B=SQRT(R*R+(X(3,1)-ZQ)**2)
|
||
H=A-B
|
||
COSB=R/B
|
||
SINB=(ZQ-X(3,1))/B
|
||
```
|
||
|
||
<!-- source-page: 114 -->
|
||
|
||
```prolog
|
||
P(1)=A*COSB*COSG
|
||
P(2)=A*COSB*SING
|
||
P(3)=ZQ-A*SINB
|
||
TGT(1,1)=-SINB*COSG
|
||
TGT(2,1)=-SINB*SING
|
||
TGT(3,1)=-COSB
|
||
TGT(1,2)=-SING
|
||
TGT(2,2)=COSG
|
||
TGT(3,2)=0.0
|
||
DNDS(1,1)=-SINB*COSG/A
|
||
DNDS(2,1)=-SINB*SING/A
|
||
DNDS(3,1)=-COSB/A
|
||
DNDS(1,2)=-SING/A
|
||
DNDS(2,2)=COSG/A
|
||
DNDS(3,2)=0.0
|
||
ELSE
|
||
C
|
||
C CONE
|
||
C
|
||
H=-R*COSA+(X(3,1)-ZQ)*SINA+A
|
||
P(1)=(R+H*COSA)*COSG
|
||
P(2)=(R+H*COSA)*SING
|
||
P(3)=X(3,1)-H*SINA
|
||
TGT(1,1)=-SINA*COSG
|
||
TGT(2,1)=-SINA*SING
|
||
TGT(3,1)=-COSA
|
||
TGT(1,2)=-SING
|
||
TGT(2,2)=COSG
|
||
TGT(3,2)=0.0
|
||
DNDS(1,1)=0.0
|
||
DNDS(2,1)=0.0
|
||
DNDS(3,1)=0.0
|
||
C=R+H*COSA
|
||
DNDS(1,2)=-COSA*SING/C
|
||
DNDS(2,2)=COSA*COSG/C
|
||
DNDS(3,2)=0.0
|
||
END IF
|
||
C
|
||
RETURN
|
||
END
|
||
```
|
||
|
||
<!-- source-page: 115 -->
|
||
|
||
# 1.1.17 SDVINI: User subroutine to define initial solution-dependent state variable fields.
|
||
|
||
# Product: Abaqus/Standard
|
||
|
||
# References
|
||
|
||
• “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide
|
||
• \*INITIAL CONDITIONS
|
||
• “SDVINI,” Section 4.1.11 of the Abaqus Verification Guide
|
||
|
||
# Overview
|
||
|
||
# User subroutine SDVINI:
|
||
|
||
• will be called for user-subroutine-defined initial solution-dependent state variable fields at particular material points, shell section points, contact slave nodes, or for user elements (see “Initial conditions in Abaqus/Standard and Abaqus/Explicit,” Section 34.2.1 of the Abaqus Analysis User’s Guide);
|
||
• can be used to initialize solution-dependent state variables allocated as described in “Allocating space” in “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide; and
|
||
• returns a value of zero for any solution-dependent state variables that have no defined initial condition.
|
||
|
||
# Use of solution-dependent state variables in other user subroutines
|
||
|
||
Solution-dependent state variables initialized in SDVINI can be used and updated in the following user subroutines:
|
||
|
||
• CREEP
|
||
• FRIC
|
||
• HETVAL
|
||
• UEL
|
||
• UEXPAN
|
||
• UGENS
|
||
• UHARD
|
||
• UMAT
|
||
• UMATHT
|
||
• USDFLD
|
||
• UTRS
|
||
|
||
The solution-dependent state variables are passed into these routines in the order in which they are entered in SDVINI.
|
||
|
||
<!-- source-page: 116 -->
|
||
|
||
User subroutine interface
|
||
```prolog
|
||
SUBROUTINE SDVINI (STATEV, COORDS, NSTATV, NCRDS, NOEL, NPT, 1 LAYER, KSPT)
|
||
C
|
||
INCLUDE 'ABA_PARAM.INC'
|
||
C
|
||
DIMENSION STATEV (NSTATV), COORDS (NCRDS)
|
||
user coding to define STATEV (NSTATV)
|
||
RETURN
|
||
END
|
||
```
|
||
|
||
Variables to be defined
|
||
```txt
|
||
STATEV (1)
|
||
First solution-dependent state variable.
|
||
|
||
STATEV (2)
|
||
Second solution-dependent state variable.
|
||
|
||
STATEV (3)
|
||
Third solution-dependent state variable.
|
||
|
||
Etc.
|
||
Only NSTATV solution-dependent state variable values should be defined.
|
||
```
|
||
|
||
Variables passed in for information
|
||
```txt
|
||
COORDS
|
||
An array containing the initial coordinates of this point. Coordinates are not available for user elements.
|
||
|
||
NSTATV
|
||
User-defined number of solution-dependent state variables (see “Allocating space” in “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide).
|
||
|
||
NCRDS
|
||
Number of coordinates. This value is zero for user elements.
|
||
|
||
NOEL
|
||
Element number.
|
||
```
|
||
|
||
<!-- source-page: 117 -->
|
||
|
||
# NPT
|
||
|
||
Integration point number in the element (not relevant for user elements).
|
||
|
||
# LAYER
|
||
|
||
Layer number (for composite shells and layered solids).
|
||
|
||
# KSPT
|
||
|
||
Section point number within the current layer or section. Section point 1 is used for all pure heat transfer, coupled temperature-displacement, and coupled thermal-electrical-structural analyses.
|
||
|
||
<!-- source-page: 118 -->
|
||
|
||
<!-- source-page: 119 -->
|
||
|
||
# 1.1.18 SIGINI: User subroutine to define an initial stress field.
|
||
|
||
# Product: Abaqus/Standard
|
||
|
||
# References
|
||
|
||
• “Initial conditions in Abaqus/Standard and Abaqus/Explicit,” Section 34.2.1 of the Abaqus Analysis User’s Guide
|
||
• \*INITIAL CONDITIONS
|
||
|
||
# Overview
|
||
|
||
User subroutine SIGINI:
|
||
|
||
• will be called for user-subroutine-defined initial stress fields at particular material points (these are the effective stress values for soils analysis);
|
||
• is called at the start of the analysis for each applicable material calculation point in the model; and
|
||
• can be used to define all active initial stress components at material points as functions of coordinates, element number, integration point number, etc.
|
||
|
||
# Stress components
|
||
|
||
The number of stress components that must be defined depends on the element type for which this call is being made. Part VI, “Elements,” of the Abaqus Analysis User’s Guide,” describes the element stresses. The order in which the components must be defined is the same as in the element definition. For example, in three-dimensional continuum elements six stress components must be defined in the order 011,022,033,012,013,023.
|
||
|
||
# Initial stress field equilibrium
|
||
|
||
You should ensure that the initial stress field is in equilibrium with the applied forces and distributed loads by using a static step or a geostatic step to check the equilibrium of the initial stress field before starting the response history. See “Geostatic stress state,” Section 6.8.2 of the Abaqus Analysis User’s Guide, for a discussion of defining initial equilibrium conditions for problems that include pore fluid pressure.
|
||
|
||
# User subroutine interface
|
||
|
||
```txt
|
||
SUBROUTINE SIGINI (SIGMA, COORDS, NTENS, NCRDS, NOEL, NPT, LAYER, 1 KSPT, LREBAR, NAMES)
|
||
C
|
||
INCLUDE 'ABA_PARAM.INC'
|
||
C
|
||
```
|
||
|
||
<!-- source-page: 120 -->
|
||
|
||
DIMENSION SIGMA(NTENS),COORDS(NCRDS) CHARACTER NAMES(2)\*80
|
||
|
||
user coding to define SIGMA(NTENS)
|
||
|
||
RETURN END
|
||
|
||
# Variables to be defined
|
||
|
||
# SIGMA(1)
|
||
|
||
First stress component.
|
||
|
||
# SIGMA(2)
|
||
|
||
Second stress component.
|
||
|
||
# SIGMA(3)
|
||
|
||
Third stress component.
|
||
|
||
# Etc.
|
||
|
||
Only NTENS stress values should be defined, where NTENS depends on the element type.
|
||
|
||
# Variables passed in for information
|
||
|
||
# COORDS
|
||
|
||
An array containing the initial coordinates of this point.
|
||
|
||
# NTENS
|
||
|
||
Number of stresses to be defined, which depends on the element type.
|
||
|
||
# NCRDS
|
||
|
||
Number of coordinates.
|
||
|
||
# NOEL
|
||
|
||
Element number.
|
||
|
||
# NPT
|
||
|
||
Integration point number in the element.
|
||
|
||
# LAYER
|
||
|
||
Layer number (for composite shells and layered solids).
|
||
|
||
# KSPT
|
||
|
||
Section point number within the current layer.
|