Skip to content

Commit 7715599

Browse files
committed
docu
1 parent e59b00a commit 7715599

File tree

1 file changed

+50
-54
lines changed

1 file changed

+50
-54
lines changed

docs/src/man/models/contact.md

Lines changed: 50 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,58 @@
11
## Contact
2+
23
## Contact Search
34

4-
| Parameter | Unit | Description |
5-
|---|---|---|
6-
|Contact Radius | $[m]$| Radius to get a list of potential contact pairs.|
7-
|Master| $[-]$| Block ID of the master nodes. |
8-
|Slave | $[-]$| Block ID of the slave nodes.|
5+
| Parameter | Unit | Description |
6+
| -------------- | ----- | ------------------------------------------------ |
7+
| Contact Radius | $[m]$ | Radius to get a list of potential contact pairs. |
8+
| Master | $[-]$ | Block ID of the master nodes. |
9+
| Slave | $[-]$ | Block ID of the slave nodes. |
10+
911
**Initialization**
1012

1113
- Step 1 -
12-
Identification of all surface nodes of contact blocks.
14+
Identification of all surface nodes of contact blocks.
1315
- Step 2 -
14-
All surface nodes are stored in a list. This list exists at all cores with the current position of the surface nodes.
16+
All surface nodes are stored in a list. This list exists at all cores with the current position of the surface nodes.
1517
- Step 3 -
16-
Connect each surface node to a geometrical surface.
18+
Connect each surface node to a geometrical surface.
1719

1820
The standard way for points in the parallelization is given here.
1921

20-
$$\begin{bmatrix}1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\ 7 \end{bmatrix}_{all}\rightarrow\begin{matrix} \begin{bmatrix} 4 \\ 6 \end{bmatrix}_{C1-global}\\
22+
$$
23+
\begin{bmatrix}1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\ 7 \end{bmatrix}_{all}\rightarrow\begin{matrix} \begin{bmatrix} 4 \\ 6 \end{bmatrix}_{C1-global}\\
2124
\begin{bmatrix}1 \\ 2 \\ 7 \end{bmatrix}_{C2-global}\\
2225
\begin{bmatrix}3\\5\end{bmatrix}_{C3-global}\end{matrix}\leftarrow \rightarrow\begin{matrix} \begin{bmatrix} 1 \\ 2 \end{bmatrix}_{C1-local}\\
2326
\begin{bmatrix}1 \\ 2 \\ 3 \end{bmatrix}_{C2-local}\\
24-
\begin{bmatrix}1\\2\end{bmatrix}_{C3-local}\end{matrix}$$
27+
\begin{bmatrix}1\\2\end{bmatrix}_{C3-local}\end{matrix}
28+
$$
2529

2630
A new mapping is needed to the contact surface exchange list. The local numbering (right above) has to be mapped to the sublist and vice, versa.
2731

28-
$$\begin{bmatrix}1 \\ 2 \\ 6 \\ 7 \end{bmatrix}_{surface}\leftarrow\rightarrow \begin{bmatrix}1 \\ 2 \\ 3 \\ 4 \end{bmatrix}_{surface}\rightarrow \begin{matrix} \begin{bmatrix} 6 \end{bmatrix}_{C1}\\
32+
$$
33+
\begin{bmatrix}1 \\ 2 \\ 6 \\ 7 \end{bmatrix}_{surface}\leftarrow\rightarrow \begin{bmatrix}1 \\ 2 \\ 3 \\ 4 \end{bmatrix}_{surface}\rightarrow \begin{matrix} \begin{bmatrix} 6 \end{bmatrix}_{C1}\\
2934
\begin{bmatrix}1 \\ 2 \\ 7 \end{bmatrix}_{C2}\\
3035
\begin{bmatrix}\,\,\,\,\end{bmatrix}_{C3}\end{matrix}\leftarrow \rightarrow\begin{matrix} \begin{bmatrix} 2 \end{bmatrix}_{C1-local}\\
3136
\begin{bmatrix}1 \\ 2 \\ 3 \end{bmatrix}_{C2-local}\\
32-
\begin{bmatrix}\,\,\,\,\end{bmatrix}_{C3-local}\end{matrix}$$
33-
37+
\begin{bmatrix}\,\,\,\,\end{bmatrix}_{C3-local}\end{matrix}
38+
$$
3439

3540
**List mapping**
3641
To fill the postion vector with the needed values mappings are needed.
3742

3843
local point ids -> global point id -> reduced contact block point id
3944
The mapping has to be done in both directions, because the contact forces have to be applied to the local core point id.
4045

41-
42-
4346
---
4447

4548
**Computation**
4649

4750
- Step 1 -
48-
Perform a nearest neighbor search with a user defined Contact Radius. The result is a list of potential contact pairs.
51+
Perform a nearest neighbor search with a user defined Contact Radius. The result is a list of potential contact pairs.
4952
- Step 2 -
50-
A sub list nearest neighbor search is performed.
53+
A sub list nearest neighbor search is performed.
5154
- Step 3 -
52-
All points found are than in contact.
55+
All points found are than in contact.
5356

5457
The quasi code is given here
5558

@@ -77,35 +80,35 @@ function contact_search(...)
7780
end
7881

7982
```
80-
The structure tries to minimize the search and the communication between cores.
8183

84+
The structure tries to minimize the search and the communication between cores.
8285

8386
**Synchronization**
8487
All cores (except core 1) send it's displacement values to core 1. Core 1 sends them back.
8588
!!! note "Efficiency"
86-
Smaller contact areas are more efficient in numerical analysis, because less synchronisation have to occur.
89+
Smaller contact areas are more efficient in numerical analysis, because less synchronisation have to occur.
8790

88-
----
91+
---
8992

9093
## Contact Models
9194

92-
| Contact Model | Penalty Contact |
93-
|------------------------|:---------------:|
94-
| Contact Stiffness | ✔️|
95+
| Contact Model | Penalty Contact |
96+
| ----------------- | :-------------: |
97+
| Contact Stiffness | ✔️ |
9598

9699
## Penalty Contact
97100

98-
A bond-based contact formulation is computed. The contact stiffness $ c_{contact}$ is defined in YAML input file. Based on that utilzing the horizon $\delta$ the penalty stiffness shown in the table is computed. These parameter are comparable to the [bond-based formulation](@ref "Bond-based Peridynamics"). The algorithm was taken from [Peridigm](https://github.com/peridigm/peridigm/blob/master/src/contact/Peridigm_ShortRangeForceContactModel.cpp)
99-
100-
| Dimension | Penalty Stiffness |
101-
|---|---|
102-
|plane strain:| $c_{Penalty} = \frac{48 c_{contact}}{\pi 5 \delta_{slave}^3}$ |
103-
|plane stress:| $c_{Penalty} = \frac{9 c_{contact}}{\pi \delta_{slave}^3}$ |
104-
|3D:| $c_{Penalty} = \frac{12 c_{contact}}{\pi \delta_{slave}^4}$ |
101+
A bond-based contact formulation is computed. The contact stiffness $ c\_{contact}$ is defined in YAML input file. Based on that utilzing the horizon $\delta$ the penalty stiffness shown in the table is computed. These parameter are comparable to the [bond-based formulation](@ref "Bond-based Peridynamics"). The algorithm was taken from [Peridigm](https://github.com/peridigm/peridigm/blob/master/src/contact/Peridigm_ShortRangeForceContactModel.cpp)
105102

103+
| Dimension | Penalty Stiffness |
104+
| ------------- | ------------------------------------------------------------- |
105+
| plane strain: | $c_{Penalty} = \frac{48 c_{contact}}{\pi 5 \delta_{slave}^3}$ |
106+
| plane stress: | $c_{Penalty} = \frac{9 c_{contact}}{\pi \delta_{slave}^3}$ |
107+
| 3D: | $c_{Penalty} = \frac{12 c_{contact}}{\pi \delta_{slave}^4}$ |
106108

107109
### Normal Contact
108-
The distance is currently computed as
110+
111+
The distance is computed as
109112

110113
$$d = |\underline{\mathbf{Y}}_{master}-\underline{\mathbf{Y}}_{slave}|$$
111114

@@ -115,45 +118,38 @@ $$\mathbf{n} = \frac{\underline{\mathbf{Y}}_{master}-\underline{\mathbf{Y}}_{sla
115118

116119
Both can be adopted if needed. Utilizing the contact radius $r_{contact}$ the contact force densities are
117120

118-
$$
119-
\mathbf{f}_{master} = c_{Penalty}\frac{(r_{contact}-d)}{\delta_{slave}}\mathbf{n}V_{slave}$$
121+
$$\mathbf{f}_{master}=c_{Penalty}\frac{(r_{contact}-d)}{\delta_{slave}}\mathbf{n}V_{slave}$$
120122

121123
$$\mathbf{f}_{slave} = -c_{Penalty}\frac{(r_{contact}-d)}{\delta_{slave}}\mathbf{n}V_{master}$$
122124

123-
124125
Within PeriLab the functions compute_master_force_density and compute_slave_force_density are used to apply the force to the correct postions. This is needed, becaus if a parallel process is run, master and slave nodes not necessarily are on the same core.
125126

126127
### Friction Contact
127-
| Contact Model | Penalty Contact |
128-
|------------------------|:---------------:|
129-
| Friction Coeffient | ✔️|
128+
129+
| Contact Model | Penalty Contact |
130+
| ------------------ | :-------------: |
131+
| Friction Coeffient | ✔️ |
130132

131133
The model is computed if the ""Friction Coeffient"" is greater than zero.
132134
For friction the normal forces
133135
$$\mathbf{f}_n=c_{Penalty}\frac{(r_{contact}-d)}{\delta_{slave}}\mathbf{n}$$
134136
are used. The tangential direction must be computed. Following the [Peridigm](https://github.com/peridigm/peridigm/blob/master/src/contact/Peridigm_ShortRangeForceContactModel.cpp) algorithm, the normal velocity of the master node $m$ and the slave node $s$ are
135137

136-
$$\begin{matrix}
137-
v_{m} = \mathbf{v}_m\mathbf{n}\\
138-
v_{s} = \mathbf{v}_s\mathbf{n}
139-
\end{matrix}$$
138+
$$
139+
\begin{matrix}v_{m} = \mathbf{v}_m\mathbf{n}\\v_{s} = \mathbf{v}_s\mathbf{n}
140+
\end{matrix}
141+
$$
140142

141143
To obtain the tangential part $tan$ this value hmust be substrated from the velocity.
142-
$$\begin{matrix}
143-
\mathbf{v}_{tan-m} = \mathbf{v}_m - v_{m}\mathbf{n}\\
144-
\mathbf{v}_{tan-s} = \mathbf{v}_s - v_{s}\mathbf{n}
145-
\end{matrix}$$
144+
145+
$$\begin{matrix}\mathbf{v}_{tan-m} = \mathbf{v}_m - v_{m}\mathbf{n}\\\mathbf{v}_{tan-s} = \mathbf{v}_s - v_{s}\mathbf{n}\end{matrix}$$
146146

147147
Tanking the average
148148
$$\mathbf{v}_{avg} = 0.5(\mathbf{v}_{tan-m}+\mathbf{v}_{tan-s})$$
149149
the relative velocity of each point can be determined.
150-
$$\begin{matrix}
151-
\mathbf{v}_{tan-m} = \mathbf{v}_{tan-m} - \mathbf{v}_{avg}\\
152-
\mathbf{v}_{tan-s} = \mathbf{v}_{tan-s} - \mathbf{v}_{avg}
153-
\end{matrix}$$
150+
151+
$$\begin{matrix}\mathbf{v}_{tan-m}=\mathbf{v}_{tan-m}-\mathbf{v}_{avg}\\\mathbf{v}_{tan-s}=\mathbf{v}_{tan-s} - \mathbf{v}_{avg}\end{matrix}$$
152+
154153
If the length of $\mathbf{v}_{tan-m}$ and $\mathbf{v}_{tan-s}$ is greater than zero, respectively, friction occurs. The friction force is computed as using the friction coefficient $\mu$.
155154

156-
$$\begin{matrix}
157-
\mathbf{f}_{fric-m} = -\mu |\mathbf{f}_n|\frac{\mathbf{v}_{tan-m}}{|\mathbf{v}_{tan-m}|}\\
158-
\mathbf{f}_{fric-s} = -\mu |\mathbf{f}_n|\frac{\mathbf{v}_{tan-s}}{|\mathbf{v}_{tan-s}|}
159-
\end{matrix}$$
155+
$$\begin{matrix}\mathbf{f}_{fric-m} = -\mu |\mathbf{f}_n|\frac{\mathbf{v}_{tan-m}}{|\mathbf{v}_{tan-m}|}\\\mathbf{f}_{fric-s} = -\mu |\mathbf{f}_n|\frac{\mathbf{v}_{tan-s}}{|\mathbf{v}_{tan-s}|}\end{matrix}$$

0 commit comments

Comments
 (0)