Skip to content

Commit 1ec218e

Browse files
juney-leegitbook-bot
authored andcommitted
GITBOOK-34: horizontal equilibrium
1 parent e4519cb commit 1ec218e

File tree

6 files changed

+49
-25
lines changed

6 files changed

+49
-25
lines changed

gitbook/manual/0.-rv.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 0. RV
22

3-
<table data-full-width="false"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><img src="../.gitbook/assets/RV_info (1).svg" alt="" data-size="original"></td><td><p><strong>Rhino command name</strong></p><p><code>rv</code></p><p></p><p><strong>source fil</strong>e</p><p><a href="../../plugin/RV.py"><code>RV.py</code></a></p></td><td></td></tr></tbody></table>
3+
<table data-full-width="false"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><img src="../.gitbook/assets/RV_info (1).svg" alt="" data-size="original"></td><td><p><strong>Rhino command name</strong></p><p><code>rv</code></p></td><td><p><strong>source fil</strong>e</p><p><a href="../../plugin/RV.py"><code>RV.py</code></a></p></td></tr></tbody></table>
44

55
Formerly known as "initialisation," this function simply displays the RhinoVAULT splash screen. It provides URLs to the RhinoVAULT GitHub repository and the GitBook manual. You can also view and read the "Terms and Conditions" and "User Agreement."
66

gitbook/manual/boundary-conditions.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ A `Pattern` object is a mesh datastructure that describes the topology of the st
44

55
## 2a. Identify Supports
66

7-
| | |
8-
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9-
| ![](<../.gitbook/assets/RV\_supports (2).svg>) | <p><strong>Rhino command name</strong></p><p><code>RV_pattern_supports</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_supports.py"><code>RV_pattern_supports.py</code></a></p> |
7+
<table><thead><tr><th></th><th width="228"></th><th></th></tr></thead><tbody><tr><td> <img src="../.gitbook/assets/RV_supports (2).svg" alt=""></td><td><p><strong>Rhino command name</strong></p><p><code>RV_pattern_supports</code></p></td><td><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_supports.py"><code>RV_pattern_supports.py</code></a></p></td></tr></tbody></table>
108

119
In RhinoVAULT, a _support_ is defined as a vertex of the structure that is fixed, and can have external horizontal reactions. `RV_pattern_supports` allows user to _Add_ ore _Remove_ supports from the `Pattern`. The vertices can be selected using these modes:
1210

@@ -20,9 +18,7 @@ In RhinoVAULT, a _support_ is defined as a vertex of the structure that is fixed
2018

2119
## 2b. Relax Pattern
2220

23-
| | |
24-
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
25-
| <img src="../.gitbook/assets/RV_relax.svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_pattern_supports</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_supports.py"><code>RV_pattern_supports.py</code></a></p> |
21+
<table><thead><tr><th></th><th width="237"></th><th></th></tr></thead><tbody><tr><td><img src="../.gitbook/assets/RV_relax.svg" alt="" data-size="original"></td><td><p><strong>Rhino command name</strong></p><p><code>RV_pattern_supports</code></p></td><td><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_supports.py"><code>RV_pattern_supports.py</code></a></p></td></tr></tbody></table>
2622

2723
An opening is a chain of edges at the boundary of a `Pattern`, in between two support vertices. In general, openings in TNA cannot be straight, unless there are no internal forces in the non-boundary edges at the openings (e.g. barrel vault or cross vault). In some applications where openings may already have some curvature, the relaxation will make the `Pattern` more "equilibrated" and optimal for the horizontal equilibrium solver later on.&#x20;
2824

@@ -32,8 +28,6 @@ This feature relaxes the entire `Pattern` using the _force density method_ ([Sch
3228

3329
## 2c. Update Boundaries
3430

35-
| | |
36-
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
37-
| <img src="../.gitbook/assets/RV_boundaries (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_pattern_bnoundaries</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_boundaries.py"><code>RV_pattern_boundaries.py</code></a></p> |
31+
<table><thead><tr><th width="221"></th><th width="253"></th><th></th></tr></thead><tbody><tr><td><img src="../.gitbook/assets/RV_boundaries (1).svg" alt="" data-size="original"></td><td><p><strong>Rhino command name</strong></p><p><code>RV_pattern_bnoundaries</code></p></td><td><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_boundaries.py"><code>RV_pattern_boundaries.py</code></a></p></td></tr></tbody></table>
3832

3933
The treatment of the openings are very much dependent on the type of vault that is being investigated. This feature enables users to control the curvature of each opening individually by defining the _sag_ value, which is calculated based on the percentage of the length of the opening. The $$q$$s for the boundary edges are automatically calculated based on the target _sag_ values, which are then used for the relaxation using the force density method.&#x20;

gitbook/manual/diagrams.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# 3. Form diagram
22

3-
| | |
4-
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
5-
| <img src="../.gitbook/assets/RV_FormDiagram (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_form</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_form.py"><code>RV_form.py</code></a></p> |
3+
| | | |
4+
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
5+
| <img src="../.gitbook/assets/RV_FormDiagram (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_form</code></p> | <p><strong>source file</strong></p><p><a href="../../plugin/RV_form.py"><code>RV_form.py</code></a></p> |
66

77
`FormDiagram` is the 2D projection of the thrust network. In RV2, a `FormDiagram` is represented by the mesh datastructure.&#x20;
88

gitbook/manual/equilibrium.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# 4. Force diagram
22

3-
| | |
4-
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
5-
| <img src="../.gitbook/assets/RV_ForceDiagram (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_force</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_force.py"><code>RV_pattern.py</code></a></p> |
3+
| | | |
4+
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
5+
| <img src="../.gitbook/assets/RV_ForceDiagram (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_force</code></p> | <p><strong>source file</strong></p><p><a href="../../plugin/RV_force.py"><code>RV_force.py</code></a></p> |
66

77
Once the `FormDiagram` has been successfully created, the `ForceDiagram` can be created. When it is first created, the `ForceDiagram` is the dual diagram of the `FormDiagram`.&#x20;
88

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
# 5. Horizontal equilibrium
22

3-
| | | |
4-
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
5-
| <img src="../.gitbook/assets/RV_horizontal-eq (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_tna_horizontal</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern.py"><code>RV_tna_horizontal.py</code></a></p> | |
3+
| | | |
4+
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
5+
| <img src="../.gitbook/assets/RV_horizontal-eq (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_tna_horizontal</code></p> | <p><strong>source file</strong></p><p><a href="../../plugin/RV_tna_horizontal.py"><code>RV_tna_horizontal.py</code></a></p> |
6+
7+
## Alpha
8+
9+
In RV2, horizontal equilibrium is computed by parallelising the edges of the Form and Force Diagram to corresponding target vectors. These target vectors are defined as the weighted average of the vectors of corresponding edge pairs. Therefore, the most important parameter for the calculation of horizontal equilibrium in RV2 is `alpha`, which is the weighting factor for the calculation of the target vectors.
10+
11+
If `alpha = 100`, the target vectors are completely defined by the vectors of the edges of the Form Diagram. This means that only the geometry of the Force Diagram will be updated to achieve horizontal equilibrium. This is the default.
12+
13+
If `alpha = 0`, the target vectors are completely defined by the edges of the force diagram. Therefore only the Form Diagram will be updated.
14+
15+
For all other values, the target vectors are calculated using the following formula:
16+
17+
$$
18+
t_i = \alpha \cdot \hat{e}_{i, form} + (1 - \alpha) \cdot \hat{e}_{i, force}
19+
$$
20+
21+
Note that using `alpha` efficiently requires a bit of practice and experience. Since the Form Diagram defines the intended layout of horizontal forces and RV2 has many tools for designing force layouts that provide a good starting point for form finding explorations, it is usually a good idea to start with `alpha = 100`. However, once you have the horizontal equilibrium under control, playing around with lower `alpha` values can have a significant influence on finding nicely balanced force distributions.
22+
23+
## Iterations
24+
25+
Computing horizontal equilibrium is an iterative process. The default number of iterations is `100`. For sensible force layouts, this value should go a long way. However, there are many cases in which more iterations are required. For example, if the Form Diagram has multiple open/unsupported edges, and especially if those edges have a low "sag" value, more iterations will typically be required to reduce all angle deviations between corresponding edges to less than 5 degrees.
26+
27+
Computing horizontal equilibrium is quite fast. Therefore, don't hesitate to set the number of iterations to `1000` or more if the need arises. However, don't go completely overboard either (`10000` iterations is quite excessive in most cases), because the calculation has no stoppage criterion, since it tends to be more computationally expensive to check for convergence than to just run all the requested iterations.
28+
29+
Furthermore, resolving all angle deviations is not an absolute requirement, and is in many cases unnecessary. For example, the angle deviations between very short edges tend to be quite persistent as they are dominated by edges with (much) longer lengths during the calculation process. Since short edges in the Force Diagram also represent (relatively) small horizontal forces, these deviations can often be ignored.
30+
31+
## Refreshrate
32+
33+
The iterations of the horizontal equilibrium calculation process is dynamically visualised. The rate at which the diagrams are updated is controlled by the refreshrate. The default value is `10`, which means that the diagrams are updated every 10 iterations.
34+
35+
For large diagrams the dynamic visualisation slows down the calculations a little bit. In these cases, and/or for high numbers of iterations (`> 1000`), it is therefore advisable to set the refreshrate to a higher value. For example, if the number of iterations is `1000`, then a refresh rate of `100` seems more appropriate.

gitbook/manual/patterns.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ RhinoVAULT offers several methods for generating a `Pattern`. Each method has a
66

77
## 1a. Create Pattern
88

9-
| | | |
10-
| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
11-
| <img src="../.gitbook/assets/RV_pattern.svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_pattern</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern.py"><code>RV_pattern.py</code></a></p> | |
9+
| | | |
10+
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
11+
| <img src="../.gitbook/assets/RV_pattern.svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_pattern</code></p> | <p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern.py"><code>RV_pattern.py</code></a></p> |
1212

1313
There are many ways to generate a topological pattern. Each method has pros and cons, and the desired design or workflow will help determine which method is more appropriate.
1414

@@ -68,8 +68,8 @@ Not implemented.
6868

6969
## 1b. Modify Pattern
7070

71-
| | | |
72-
| -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
73-
| <img src="../.gitbook/assets/RV_pattern-modify.svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p>RV_pattern_modify</p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_modify.py">RV_pattern_modify.py</a></p> | |
71+
| | | |
72+
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |
73+
| <img src="../.gitbook/assets/RV_pattern-modify.svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p>RV_pattern_modify</p> | <p><strong>source file</strong></p><p><a href="../../plugin/RV_pattern_modify.py">RV_pattern_modify.py</a></p> |
7474

7575
Not implemented.

0 commit comments

Comments
 (0)