Permalink
Browse files

[web] Added remaining tools.

  • Loading branch information...
bilke committed Mar 7, 2018
1 parent 472ec9a commit e965240adfdbf4fa3b9b833657ec1f245ffc6b85
Showing with 602 additions and 46 deletions.
  1. +12 −0 Documentation/bibliography.bib
  2. +11 −1 web/config.toml
  3. +0 −2 web/content/_index.pandoc
  4. +1 −1 web/content/docs/quickstart/basics/introduction.pandoc
  5. +1 −39 web/content/docs/tools/getting-started/overview.pandoc
  6. +3 −1 web/content/docs/tools/meshing/addtoplayer/index.pandoc
  7. +3 −0 web/content/docs/tools/meshing/extract-surface/TopBottomSideSurface.png
  8. +35 −0 web/content/docs/tools/meshing/extract-surface/index.pandoc
  9. +3 −0 web/content/docs/tools/meshing/remove-mesh-elements/ExampleRemoveElements-Input.png
  10. +3 −0 web/content/docs/tools/meshing/remove-mesh-elements/ExampleRemoveElements-Output.png
  11. +3 −0 web/content/docs/tools/meshing/remove-mesh-elements/TestCube-ResetPropertiesInPolygonalRegion.vtu
  12. +3 −0 web/content/docs/tools/meshing/remove-mesh-elements/TestCube-removeMeshElements.vtu
  13. +52 −0 web/content/docs/tools/meshing/remove-mesh-elements/index.pandoc
  14. +121 −0 web/content/docs/tools/meshing/structured-mesh-generation/index.pandoc
  15. +3 −0 web/content/docs/tools/meshing/structured-mesh-generation/structured_grid_hex456_non-uniform.png
  16. +3 −0 web/content/docs/tools/meshing/structured-mesh-generation/structured_grid_hex456_uniform.png
  17. +3 −0 web/content/docs/tools/meshing/structured-mesh-generation/structured_grid_quad34_hex456.png
  18. +3 −0 ...ion/compute-node-areas-from-surface-mesh/ExampleComputeSurfaceNodeAreasFromSurfaceMesh-Result.png
  19. +3 −0 ...reparation/compute-node-areas-from-surface-mesh/ExampleComputeSurfaceNodeAreasFromSurfaceMesh.png
  20. +35 −0 web/content/docs/tools/model-preparation/compute-node-areas-from-surface-mesh/index.pandoc
  21. +3 −0 ...s/model-preparation/create-boundary-conditions-along-a-polyline/CreateBCFromPolyline-before_1.png
  22. +3 −0 ...s/model-preparation/create-boundary-conditions-along-a-polyline/CreateBCFromPolyline-result_1.png
  23. +38 −0 web/content/docs/tools/model-preparation/create-boundary-conditions-along-a-polyline/index.pandoc
  24. +3 −0 ...del-preparation/map-geometric-object-to-the-surface-of-a-mesh/MapGeometryToMeshSurface-before.png
  25. +3 −0 ...del-preparation/map-geometric-object-to-the-surface-of-a-mesh/MapGeometryToMeshSurface-result.png
  26. +3 −0 ...ent/docs/tools/model-preparation/map-geometric-object-to-the-surface-of-a-mesh/SubsurfaceMesh.vtu
  27. +3 −0 ...ntent/docs/tools/model-preparation/map-geometric-object-to-the-surface-of-a-mesh/TestPolyline.gml
  28. +52 −0 web/content/docs/tools/model-preparation/map-geometric-object-to-the-surface-of-a-mesh/index.pandoc
  29. +3 −0 .../model-preparation/set-properties-in-polygonal-region/ResetPropertiesInPolygonalRegion-before.png
  30. +3 −0 .../model-preparation/set-properties-in-polygonal-region/ResetPropertiesInPolygonalRegion-result.png
  31. +3 −0 web/content/docs/tools/model-preparation/set-properties-in-polygonal-region/TestCube.vtu
  32. +3 −0 web/content/docs/tools/model-preparation/set-properties-in-polygonal-region/TestPolylines.gml
  33. +54 −0 web/content/docs/tools/model-preparation/set-properties-in-polygonal-region/index.pandoc
  34. +66 −0 web/content/docs/tools/workflows/create-a-simple-parallel-model/index.pandoc
  35. +3 −0 ...tent/docs/tools/workflows/create-boundary-condition-in-polygonal-region/01-SubSurfaceMesh_web.png
  36. +3 −0 ...tent/docs/tools/workflows/create-boundary-condition-in-polygonal-region/02-ExtractSurface_Web.png
  37. +3 −0 .../tools/workflows/create-boundary-condition-in-polygonal-region/03a-MarkedRegionsAtSurface_Web.png
  38. +3 −0 .../tools/workflows/create-boundary-condition-in-polygonal-region/03b-MarkedRegionsAtSurface_Web.png
  39. +3 −0 .../tools/workflows/create-boundary-condition-in-polygonal-region/03c-MarkedRegionsAtSurface_Web.png
  40. +3 −0 ...s/tools/workflows/create-boundary-condition-in-polygonal-region/04-ExtractedRegionPatches_Web.png
  41. +33 −0 web/content/docs/tools/workflows/create-boundary-condition-in-polygonal-region/index.pandoc
  42. +2 −2 web/dist/styles.css
  43. +8 −0 web/src/styles.css
@@ -154,6 +154,18 @@ @TECHREPORT{BirEtAl:2008
year = 2008
}
% Optional fields: volume, number, pages, month, note
@ARTICLE{Fischer:2015,
author = {Fischer, T. and Naumov, D. and Sattler, S. and Kolditz, O. and and Walther, M.},
title = {GO2OGS 1.0: a versatile workflow to integrate complex geological information with fault data into numerical simulation models},
journal = {Geosci. Model Dev.},
volume = "8",
pages = "3681--3694",
year = {2015},
doi = "10.5194/gmd-8-3681-2015",
url = "https://www.geosci-model-dev.net/8/3681/2015/gmd-8-3681-2015.pdf"
}
% Tutorials
@Book{Sachse:2015,
Title = {{Computational Hydrology I: Groundwater Flow Modeling}},
@@ -9,7 +9,7 @@ canonifyURLs = true
staticDir = ["dist", "static"]
[params]
alert = "Documentation site under construction; more docs can be found at <a href='https://docs.opengeosys.org'>docs.opengeosys.org</a>."
alert = ""
[taxonomies]
news = "news"
@@ -117,3 +117,13 @@ news = "news"
name = "Meshing"
identifier = "meshing"
weight = 2
[[menu.tools]]
name = "Model Preparation"
identifier = "model-preparation"
weight = 3
[[menu.tools]]
name = "Workflows"
identifier = "workflows"
weight = 4
@@ -10,5 +10,3 @@ For the moment this site contains just the following documentations for [OpenGeo
- [Developer Guide](./docs/devguide)
- [Benchmarks](./docs/benchmarks)
- [Tools](./docs/tools)
See [docs.opengeosys.org](https://docs.opengeosys.org/docs) for more documentation!
@@ -13,7 +13,7 @@ aliases = [ "/docs/quickstart/" ]
## Download
Download the latest release of OpenGeoSys from the [Download](https://docs.opengeosys.org/download)-page. Be sure to pick the correct file for your operating system.
Download the latest release of OpenGeoSys from the [Releases](/releases)-page. Be sure to pick the correct file for your operating system.
## Installation
@@ -11,7 +11,7 @@ aliases = [ "/docs/tools/" ]
parent = "getting-started"
+++
Here is an overview of the currently available tools, that might help you to construct your OpenGeoSys model. You'll find examples and applications of the tools. Choose the appropriate tool to the left. Ready to use binaries can be downloaded on the [OGS download website](https://docs.opengeosys.org/download). The second possibility to obtain the tools is to check out OGS sources and compile the tools.
Here is an overview of the currently available tools, that might help you to construct your OpenGeoSys model. You'll find examples and applications of the tools. Choose the appropriate tool to the left. Ready to use binaries can be downloaded on the [Releases](/releases)-page. The second possibility to obtain the tools is to check out OGS sources and compile the tools.
Feel free to get in touch with us if you have any issues with any tool.
@@ -22,41 +22,3 @@ At the beginning of the modeling often external data have to be converted into O
This data can be used to create meshes approximating geometrically the domain of interest. Despite some simple mesh creator tools OGS offers some functionality to analyze meshes. Furthermore there are some tools for cleanup the mesh, adding a layer at the top or moving the mesh.
The next important step creating a simulation model is the parametrization of the model, i.e., material parameters, boundary conditions and source terms have to be assigned to the model.
## Data conversion tools
- GocadSGridReader (not yet documented)
- Shape file converter (not yet documented)
- OGSFileConverter (not yet documented)
- NodeReordering (not yet documented)
- FEFLOW2OGS (not yet documented)
- GMSH2OGS (not yet documented)
- TIN2VTK (not yet documented)
- VTK2TIN (not yet documented)
- VTK2OGS (not yet documented)
## Mesh tools
- [generateStructuredMesh](https://docs.opengeosys.org/docs/tools/meshing/structured-mesh-generation)
- GMSH interface (GUI, not yet documented)
- TetGen interface (GUI, not yet documented)
- checkMesh (not yet documented)
- queryMesh (not yet documented)
- {entry:300:link}
- reviseMesh (not yet documented)
- [removeMeshElements](https://docs.opengeosys.org/docs/tools/meshing/remove-mesh-elements)
- moveMeshNodes (not yet documented)
- [Extract surface](https://docs.opengeosys.org/docs/tools/meshing/extract-surface)
## Model preparation tools
- editMaterialIDs (not yet documented)
- [set material properties in polygonal region](https://docs.opengeosys.org/docs/tools/model-preparation/set-properties-in-polygonal-region)
- [map geometric objects to the surface of a mesh](https://docs.opengeosys.org/docs/tools/model-preparation/map-geometric-object-to-the-surface-of-a-mesh)
- [create boundary conditions along a polyline](https://docs.opengeosys.org/docs/tools/model-preparation/create-boundary-conditions-along-a-polyline)
- [Workflow: Compute surface node IDs in polygonal region](https://docs.opengeosys.org/docs/tools/model-preparation/computesurfacenodeidsinpolygonalregion)
- generateMatPropsFromMatID (not yet documented)
- [Compute Node Areas From Surface Mesh](https://docs.opengeosys.org/docs/tools/model-preparation/computenodeareasfromsurfacemesh)
- ? ConvertPolylineToVerticalPolygon ?
- ? CreateNeumannBCsOnSurface ?
- [Workflow: Create a simple parallel model](https://docs.opengeosys.org/docs/tools/model-preparation/create-a-simple-parallel-model)
@@ -37,4 +37,6 @@ AddTopLayer -i quad.vtu -o quad_with_new_top_layer.vtu -t 1
## Application
The tool was used to add a "soil" layer to the hydro-geological model of the Unstrut catchment within the INFLUINS project, see reference [GO2OGS].
The tool was used to add a "soil" layer to the hydro-geological model of the Unstrut catchment within the INFLUINS project:
{{< bib id="Fischer:2015" >}}
@@ -0,0 +1,35 @@
+++
date = "2018-03-07T15:56:57+01:00"
title = "Extract Surface"
author = "Thomas Fischer"
[menu]
[menu.tools]
parent = "meshing"
+++
## General
The tool extracts 2d surface elements of a mesh given either in the vtu or msh format. Since the algorithm uses the element surface normals a correct node ordering of the element nodes is required. The user can specify the components of the normal the extracted surface should have.
## Usage
```
ExtractSurface -i [<file name of input mesh>] [-o <file name of output mesh>]
[-x <floating point value>] [-y <floating point value>] [-z <floating point value>]
[-a <floating point value>]
[--face-property-name <string>]
[--element-property-name <string>]
[--node-property-name <string>]
```
The normal of the surface that should be extracted is given by the arguments `-x`, `-y` and `-z`. The default normal is (0,0,-1). The command line option `-a` can be used to specify the allowed deviation of the normal of the surface element from the given normal. The data arrays added to the surface mesh by using the options `--face-property-name` (default value 'OriginalFaceIDs'), `--element-property-name` (default value 'OriginalSubsurfaceElementIDs'), and `--node-property-name` (default value 'OriginalSubsurfaceNodeIDs') are used in other tools (for instance in [ComputeNodeAreasFromSurfaceMesh]({{< relref "compute-node-areas-from-surface-mesh" >}})) and is required for flux calculations during a simulation run of OpenGeoSys.
## Example
![](TopBottomSideSurface.png)
Extracted top, bottom and side surfaces:
- top `ExtractSurface -i Input.vtu -o TopSurface.vtu`
- bottom `ExtractSurface -i Input.vtu -o BottomSurface.vtu -x 0 -y 0 -z 1`
- side `ExtractSurface -i Input.vtu -o SideSurface.vtu -x 1 -y 1 -z 0 -a 45`
@@ -0,0 +1,52 @@
+++
date = "2018-03-07T15:59:57+01:00"
title = "Remove Mesh Elements"
author = "Thomas Fischer"
[menu]
[menu.tools]
parent = "meshing"
+++
## General
The tool `removeMeshElements` removes those elements from a given input mesh that fulfills a user specified criterion. The resulting mesh will be written to the specified output file. The user can choose between 4 different removal criterions:
1. Remove elements by assigned properties, for instance material ids.
2. Remove elements by element type, for instance remove line elements.
3. Remove elements that have zero volume.
4. Remove elements by axis aligned bounding box criterion.
One possible application is to cut out a smaller mesh out of a bigger one by marking the inner/outer region using the tool [SetPropertiesInPolygonalRegion]({{< relref "set-properties-in-polygonal-region" >}}).
Another application is to cut out patches of a (top) surface (tool [ExtractSurface]({{< relref "extract-surface" >}})) for assigning boundary conditions.
## Usage
```
removeMeshElements -i <input-mesh> -o <output-mesh>
[-n <property_name>] [--int-property-value <number value>] ...
[--element-type <element type>] ...
[--zero-volume]
[--x-min <value>] [--x-max <value>] [--y-min <value>] [--y-max <value>] [--z-min <value>] [--z-max <value>]
```
Each particular line with optional arguments refere to one of the different removal criterions mentioned in the general section.
## Examples
![](ExampleRemoveElements-Input.png)
![](ExampleRemoveElements-Output.png)
The left figure above is the result of the repeated application of [SetPropertiesInPolygonalRegion]({{< relref "set-properties-in-polygonal-region" >}}). It contains material ids 0 (red), 1 (yellow), 2 (turquoise) and 3 (blue). On the right figure the result of the following command line input is depicted:
```
removeMeshElements -i TestCube-ResetPropertiesInPolygonalRegion.vtu -o TestCube-removeMeshElements.vtu -n MaterialIDs --int-property-value 1 --int-property-value 2 --int-property-value 3
```
## Applications
The tool was used to cut the Unstrut catchment out of the Thuringian syncline model and to remove some geological units not necessary for the modeling within the INFLUINS project, see reference [GO2OGS].
::: {.note}
### Example Files
[TestCube-removeMeshElements.vtu](TestCube-removeMeshElements.vtu)
[TestCube-ResetPropertiesInPolygonalRegion](TestCube-ResetPropertiesInPolygonalRegion.vtu)
:::
@@ -0,0 +1,121 @@
+++
title = "Structured Mesh Generation"
date = 2018-03-07T15:46:57+01:00
author = "Thomas Fischer"
[menu]
[menu.tools]
parent = "meshing"
+++
## Building and using the tools
Generation of simple meshes in all dimensions can be accomplished with following command line tool.
The mesh generation tools are build when the `OGS_BUILD_UTILS` cmake switch is set `ON`. The build executable `generateStructuredMesh` is placed in the `bin` directory. The tool is a command line tool.
Running `generateStructuredMesh` tool will print the required arguments and a short usage message; for detailed usage add the `--help` argument.
```bash
> bin/generateStructuredMesh --help ⏎
```
To generate a mesh two arguments are required: file name for the resulting mesh, and the element type; depending on the element type chosen (a line, triangle, quad, tetrahedron, or hexahedron) length information for one, two, or three dimensions will be required.
## Examples
- To generate a simple 2-dimensional mesh measuring 3 by 4 length units call
```
> bin/generateStructuredMesh -o quad_3x4.vtu -e quad --lx 3 --ly 4 ⏎
info: Mesh created: 20 nodes, 12 elements
```
- To generate a simple 3-dimensional mesh measuring 4 by 5 by 6 length units call
```
> bin/generateStructuredMesh -o hex_4x5x6.vtu -e hex --lx 4 --ly 5 --lz 6 ⏎
info: Mesh created: 210 nodes, 120 elements.
```
![](structured_grid_quad34_hex456.png)
## Basic options
### Output mesh format `-o filneme.ext`
Depending on the file ending `.msh` or `.vtu` either a legacy OGS5 mesh file or VTK unstructured grid file is generated. Unsupported file endings will result in an error.
### Mesh element type `-e <line|tri|quad|hex|tet>`
- Line elements are available for the 1-dimensional meshes.
- Quad (and triangle) elements are available for the 2-dimensional meshes. The triangle meshes will be constructed from the quad meshes by dividing each of the quad elements into two triangle elements.
- Hex and tetrahedron elements are available for the 3-dimensional meshes.
__Note:__ The generated FEM elements will be all of the first order corresponding to Line1, Tri3/Quad4, Hex8, and Tet4.
### Lengths `--lx`, `--ly`, `--lz`
The mesh lengths for each direction can be specified. If not given in `--dx*` arguments the default elements' lengths are 1. The last element in the corresponding direction can be of different size if the ratio of mesh's length in that direction to element's length in the same direction is not an integer.
The parameters must be positive real numbers.
## Uniform mesh refinement
### Number of subdivisions `--nx`, `--ny`, `--nz`
One possibility to control the number of elements generated is to specify the number of subdivisions in any direction. The mesh along given coordinate will be equidistantly divided.
_Note:_ This parameter overrides any specifications given with `--dx*` arguments.
The parameters must be positive integers.
### Element length `--dx0`, `--dy0`, `--dz0`
Another possibility to control the number of generated elements is to specify the elements' lengths in each direction. All of the elements will be of given size (if not overridden by `--n*` or `--m*` arguments) but the last (in each direction), which can be of different size to close the gap to the given mesh length, _i.e._ if for example the ratio `--lx` over `--dx0` is not an integer.
_Note:_ This parameter is overridden by the `--n*` parameters, or by `--d*-max` parameters if the given arguments are smaller than those of the `--d*0` parameters. Also specifying `--m*` parameters changes the element length.
The parameters must be positive real numbers
### Example
Hexahedral mesh as above but with 10 elements in y-direction and element length of 1.5 in z-direction:
```
> bin/generateStructuredMesh -o hex_4x5x6.vtu -e hex --lx 4 --ly 5 --lz 6 --ny 10 --dz0 1.5 ⏎
info: Mesh created: 275 nodes, 160 elements.
```
![](structured_grid_hex456_uniform.png)
## Non-uniform mesh refinement
### Element length multiplier `--mx`, `--my`, `--mz`
To generate non-uniformly refined meshes the element length multiplier (different than 1, which is its default value) is used. It describes relative element length growth in single direction.
By default the initial element length is 1 but can be specified using the `--d*0` arguments.
Consider initial element length (in x-direction for example) being $l_0 = 0.1$ and the corresponding element length multiplier to be equal $m=2$. Then the element lengths will be
$$
\eqalign{
l_{i+1} &= l_i \cdot m \text{for $i=0,1,0, \ldots}\cr
l_{i+1} &= 0.1 \cdot 2^i = 0.2, 0.4, 0.8, \text{\ldots,}}
$$
The parameters must be positive real numbers
### Maximum element length `--dx-max`, `--dy-max`, `--dz-max`
To limit fast growing element lengths the maximum element length can be used. After the elements' length reached given maximum value the growth stops and the maximum value is used until the specified mesh length in that direction is reached.
The parameters must be positive real numbers
### Example
Hexahedral mesh as above but with three different non-uniform mesh refinements:
- x-direction: Element shrinking (growth factor < 1) starting with default element length 1.
- y-direction: Element growth (factor 1.1) starting with specified element length 0.1.
- z-direction: Fast element growth (factor 2) starting with specified element length 0.1 and limited by maximum length 1. (The last element is larger than maximum because of the gap to be filled for the given mesh length as described in uniform-mesh refinement section.)
```
bin/generateStructuredMesh -o hex_4x5x6.vtu -e hex --lx 4 --ly 5 --lz 6 --mx 0.8 --my 1.1 --dy0 0.1 --mz 2 --dz-max 1 --dz0 0.1 ⏎
info: Mesh created: 1368 nodes, 1008 elements.
```
![](structured_grid_hex456_non-uniform.png)
Oops, something went wrong.

0 comments on commit e965240

Please sign in to comment.