Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
juney-lee committed Nov 8, 2024
2 parents 5116ff7 + 1ec218e commit 29b53a3
Show file tree
Hide file tree
Showing 12 changed files with 105 additions and 25 deletions.
Binary file added gitbook/.gitbook/assets/forcediagram-dual.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gitbook/.gitbook/assets/formdiagram_corners.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion gitbook/manual/0.-rv.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 0. RV

<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>
<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>

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."

Expand Down
12 changes: 3 additions & 9 deletions gitbook/manual/boundary-conditions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ A `Pattern` object is a mesh datastructure that describes the topology of the st

## 2a. Identify Supports

| | | |
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| ![](<../.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> | |
<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>

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:

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

## 2b. Relax Pattern

| | | |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| <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> | |
<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>

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;

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

## 2c. Update Boundaries

| | | |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - |
| <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> | |
<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>

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;
18 changes: 15 additions & 3 deletions gitbook/manual/diagrams.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# 3. Form diagram

| | | |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| <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> | |
| | | |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| <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> |

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

The boundary condition information, such as the support locations and loading conditions, is automatically inherited from the `Pattern`. Any edges of the pattern, of which both endpoints are supports are removed from the `FormDiagram`.&#x20;

A `FormDiagram` is represented by the mesh datastructure.

<figure><img src="../.gitbook/assets/formdiagram_boundary-edges.jpg" alt=""><figcaption><p>Depending on how the support vertices are defined, corners of the Pattern are automatically processed during the creation of the <code>FormDiagram</code>.</p></figcaption></figure>

<figure><img src="../.gitbook/assets/formdiagram_corners.jpg" alt=""><figcaption><p>Automatic removal of the corner supports of a quad mesh, which have edges at that support that are fully constrained.</p></figcaption></figure>

<figure><img src="../.gitbook/assets/formdiagram_corners-triangle.jpg" alt=""><figcaption><p>Automatic removal of the corner supports in a tri mesh, which have edges at that support that are fully constrained.</p></figcaption></figure>
40 changes: 37 additions & 3 deletions gitbook/manual/equilibrium.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# 4. Force diagram

| | | |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| <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> | |
| | | |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| <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> |

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;

A `ForceDiagram` is represented by the mesh datastructure.&#x20;

***

## Centroidal Dual

The Force Diagram is the dual of the Form Diagram, in the sense that both diagrams have the same number of edges and that vertices in one diagram correspond to faces in the other, and vice versa.

Initially, the Force Diagram is created as the "centroidal dual" of the Form Diagram. This means that the geometry of the Force Diagram is defined by placing its vertices at the centroids of their corresponding faces in the Form Diagram.

<figure><img src="../.gitbook/assets/forcediagram-dual.jpg" alt=""><figcaption></figcaption></figure>

***

## Reciprocal Diagrams

In order for the Form and Force Diagram to describe the distribution of horizontal thrust in a three-dimensional network of compression forces in equilibrium with vertical loads applied to its nodes, they need to be not only dual, but also reciprocal.&#x20;

Two diagrams are reciprocal if they are dual, and if their corresponding edges are at a constant angle with each other. Typically, corresponding edges are required to be parallel, or perpendicular, but any other constant angle is sufficient as well.

In RhinoVAULT, the Form and Force Diagram are considered reciprocal if corresponding edges are perpendicular.

<figure><img src="../.gitbook/assets/forcediagram-reciprocal.jpg" alt=""><figcaption></figcaption></figure>

***

## Horizontal Forces

Once the Form and Force Diagram are reciprocal they describe the horizontal equilibrium of the corresponding three-dimensional force network. The edges of the Form Diagram define the directions and points of application of the forces, whereas the edges of the Force Diagram define the distribution of force magnitudes along those directions.

The magnitudes of horizontal forces are equal to the lengths of the edges in the Force Diagram, multiplied with a scaling factor.&#x20;
10 changes: 10 additions & 0 deletions gitbook/manual/fitting.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,13 @@
| | | |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - |
| <img src="../.gitbook/assets/RV_vertical-eq (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_tna_vertical</code></p><p></p><p><strong>source file</strong></p><p><a href="../../plugin/RV_tna_vertical.py"><code>RV_tna_vertical.py</code></a></p> | |

Once the Form and Force Diagrams have been created and horizontal equilibrium has been established through parallelisation, the distribution of horizontal forces in the system is fixed. The actual magnitude of the horizontal forces depends on a _scale factor_ and will determine the target heightof the final thrust diagram. A higher scale factor results in higher horizontal forces and therefore a shallower three-dimensional shape. Vice versa, a lower scale factor results in lower horizontal thrust and thus a deeper solution.

The meaning of the scale factor and the magnitude of horizontal forces is related to the magnitude of the loads, which in turn are related to the self-weight of the resulting three-dimensional geometry. Rather than asking you to "guess" the scale factor to get the three-dimensional shape you want, RhinoVAULT will determine the scale for you based on the desired height of the final solution. The default value for the target height is 25% of the length of the diagonal of the bounding box of the Form Diagram (essentially of the bounding box of the footprint of your shell). This value tends to produce well-proportioned geometries.

## Thrust Diagram

In RhinoVAULT, the `ThrustDiagram` representing the thrust network, is an instance of the `FormDiagram`, with the only difference being the $$z$$ coordinates. A `ThrustDiagram` is simply an alternate visualisation of the `FormDiagram` with updated $$z$$ coordinates. When a `FormDiagram` is successfully created, the `ThrustDiagram` is automatically created.&#x20;

A `ThrustDiagram` is represented by the mesh datastructure.&#x20;
Loading

0 comments on commit 29b53a3

Please sign in to comment.