Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add interactive HQMTool and testing #15

Merged
merged 165 commits into from
Jun 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
77bd6ca
Add HQMtool folder
DavidAKopriva Sep 9, 2021
e3b5b5c
Integrate HQMTool into existing infrastructure (#11)
sloede Sep 11, 2021
47d0152
Add source and docs
DavidAKopriva Mar 1, 2022
16be727
add capability to set ABAQUS for the meshFileFormat
andrewwinters5000 Mar 11, 2022
8bbc47f
add ability to plot mesh from ISM format version
andrewwinters5000 Mar 11, 2022
164dda5
Merge branch 'main' into InteractiveTool
andrewwinters5000 Mar 12, 2022
0d25434
add capability to plot from the ABAQUS format as well
andrewwinters5000 Mar 12, 2022
3e0de6c
Add Curve tests
DavidAKopriva Mar 19, 2022
8ae2f29
Add API tests
DavidAKopriva Mar 20, 2022
4093443
Add Refinement Tests
DavidAKopriva Mar 21, 2022
0296c84
More refinement tests
DavidAKopriva Mar 22, 2022
8c50f6a
Update RefinementTests.jl
DavidAKopriva Mar 22, 2022
b83619d
BackgroundGridTests
DavidAKopriva Mar 22, 2022
fb169f5
Smoother tests
DavidAKopriva Mar 22, 2022
1c98f77
Finish Run Parameters
DavidAKopriva Mar 22, 2022
8f8c1d4
Update Spline tests
DavidAKopriva Mar 23, 2022
d849404
Create Model Tests
DavidAKopriva Mar 24, 2022
a7a8442
Update Tests.jl
DavidAKopriva Mar 24, 2022
fdc632b
Project Tests
DavidAKopriva Mar 24, 2022
1ad7a7b
Update Tests.jl
DavidAKopriva Mar 24, 2022
8b2cd90
fix image rendering in HQMTool docs
andrewwinters5000 Mar 25, 2022
b329830
update the docs for the new plotting capabilities
andrewwinters5000 Mar 25, 2022
1aff854
remove doc files in HQMTool folder from the repo
andrewwinters5000 Mar 25, 2022
c2e0382
remove duplicate HQMTool.jl from repo
andrewwinters5000 Mar 25, 2022
635b2ce
give capability to set ABAQUS format and remove duplicate RunParamete…
andrewwinters5000 Mar 25, 2022
86a836f
add capability to plot all three mesh file formats
andrewwinters5000 Mar 25, 2022
b989631
remove dulplicate Viz files from the HQMTool folder
andrewwinters5000 Mar 25, 2022
30c951b
debug plotting of all three mesh file formats
andrewwinters5000 Mar 25, 2022
3ba64ed
remove remaining duplicate source files and HQMTool folder. All files…
andrewwinters5000 Mar 25, 2022
8f83954
attempt to properly include HQMTool functionality such that simply us…
andrewwinters5000 Mar 25, 2022
b071946
for now make GLMakie a required dependency
andrewwinters5000 Mar 25, 2022
9eee284
perform tests on the background grid functions from HQMTool
andrewwinters5000 Mar 26, 2022
0d0739e
export all HQMTool functions, can cleanup later
andrewwinters5000 Mar 31, 2022
f8fdb2f
move all tests into exisitng test folder
andrewwinters5000 Mar 31, 2022
db980c7
typo fix in CheatSheet
andrewwinters5000 Mar 31, 2022
22db877
spacing adjustment and flag possible extra println
andrewwinters5000 Mar 31, 2022
0d1d4db
generalize file name creation. Tests should pass on Windows now
andrewwinters5000 Mar 31, 2022
01c65fd
rename testing files for consistency
andrewwinters5000 Mar 31, 2022
27d03c8
properly adjust the Makie reuqirements and exporting
andrewwinters5000 Mar 31, 2022
9ed90f8
add CairoMakie to the testing Project.toml
andrewwinters5000 Mar 31, 2022
dc110e9
change generic function from get => getCurve to avoid collision with …
andrewwinters5000 Mar 31, 2022
89dfb9c
Meshing.jl does not need to use HOHQMesh
andrewwinters5000 Mar 31, 2022
a254bfe
make the individual test files module and able to be included indepen…
andrewwinters5000 Mar 31, 2022
4f5a0a7
add testing for the visualization routines
andrewwinters5000 Mar 31, 2022
558d87d
rearrange Makie includes. shrink resolution
andrewwinters5000 Mar 31, 2022
b5c0c54
adjust function names in Meshing.jl, exporting is easier
andrewwinters5000 Mar 31, 2022
58e181f
make figure bigger
andrewwinters5000 Mar 31, 2022
7b586a9
demos now use generate_mesh
andrewwinters5000 Mar 31, 2022
8cd9046
update visualization tests to cover more code
andrewwinters5000 Mar 31, 2022
130a029
add keyword argument to demos such that testing can call them
andrewwinters5000 Mar 31, 2022
25c7c4d
add testing for the HQMTool demos
andrewwinters5000 Mar 31, 2022
add93ae
update docs to match changes to the HQMTool structure
andrewwinters5000 Mar 31, 2022
ab88d02
add a 3D smoke test for a simple extrusion
andrewwinters5000 Apr 1, 2022
0719c9c
remove TODO
andrewwinters5000 Apr 1, 2022
3fe0180
remove unnecessary test data files
andrewwinters5000 Apr 1, 2022
601eec0
add to tests that trigger some of the error statement printing
andrewwinters5000 Apr 1, 2022
f0833d7
add testing for spline read in from a file
andrewwinters5000 Apr 1, 2022
7775864
add attempt to generate mesh without background grid to trigger error…
andrewwinters5000 Apr 1, 2022
97732bb
add tests using the getCurve and getInnerBoundary functions
andrewwinters5000 Apr 1, 2022
f37439a
added a test for the generic spline creation
andrewwinters5000 Apr 1, 2022
0141839
add comment and blank line to control file
andrewwinters5000 Apr 1, 2022
6382105
export parametric equation evaluators
andrewwinters5000 Apr 1, 2022
629aa2d
move plotProject outside if statement. Should cover more routines
andrewwinters5000 Apr 1, 2022
bd8c989
exercise parametric eqn eval at a single point and the redoActionName
andrewwinters5000 Apr 1, 2022
36aea70
exercise more curve arc and spline routines
andrewwinters5000 Apr 1, 2022
657eff7
Fix two bugs
DavidAKopriva Apr 1, 2022
60082fa
added NACA0012 read in and some tests
andrewwinters5000 Apr 2, 2022
09d6ad1
add tests that purposly has curves that do not join
andrewwinters5000 Apr 2, 2022
749bfd5
add generic remove of the outer boundary
andrewwinters5000 Apr 2, 2022
fefa9e3
Update ModelAPI.jl
DavidAKopriva Apr 2, 2022
7d623af
fix bug in VizMesh and actually make the model test fail
andrewwinters5000 Apr 4, 2022
152d46f
fix bug in removeInnerBoundary. Add output if a requested curveName b…
andrewwinters5000 Apr 4, 2022
cacec95
bug fix in the chain index count of getInnerBoundaryChainWithName
andrewwinters5000 Apr 4, 2022
817e2ff
add calls to the generic remove for inner boundaries
andrewwinters5000 Apr 4, 2022
68376eb
query getCurve incorrectly to throw a warning
andrewwinters5000 Apr 4, 2022
7c85d92
trigger warning of mismatched chain and boundary names in removal
andrewwinters5000 Apr 4, 2022
dff4bc0
adjust logic in the removeInnerBoundaryCurve to be more robust and no…
andrewwinters5000 Apr 4, 2022
6698958
add tests for the error that is now thrown by remove for the inner bo…
andrewwinters5000 Apr 4, 2022
a4335b7
fix error message in the refinement regions API
andrewwinters5000 Apr 4, 2022
87d3ef5
fix error message bugs that used C style printing
andrewwinters5000 Apr 4, 2022
76e2f47
add additional tests to fire the progressive plotting of project
andrewwinters5000 Apr 4, 2022
d10da37
add explicit set radius in order to trigger curveDidChange in the new…
andrewwinters5000 Apr 4, 2022
87a86bb
add refinement region to trigger auto plotting when it is not in the …
andrewwinters5000 Apr 4, 2022
7ab1ba4
Add undo to removeInnerBoundary
DavidAKopriva Apr 5, 2022
e54bdeb
improve undo robustness and test it better
andrewwinters5000 Apr 5, 2022
6db101b
Add a true error when the control file SPLINE does not have the nKnot…
andrewwinters5000 Apr 5, 2022
c93c330
update action names for the outer boundary removal / insert
andrewwinters5000 Apr 5, 2022
738fcc5
bug fix in addOuterBoundary, now undo() works properly plus plots and…
andrewwinters5000 Apr 5, 2022
7b4536f
small typo change
andrewwinters5000 Apr 5, 2022
73cfc2c
move lines around in the printing
andrewwinters5000 Apr 5, 2022
2f460af
exercise empty undo/redo outputs
andrewwinters5000 Apr 5, 2022
3a6a4ed
remove extraneous logic in curve point(s) computation
andrewwinters5000 Apr 5, 2022
4fe6a5d
throw error is parametric equation does not have an equal sign
andrewwinters5000 Apr 5, 2022
72b3ef9
remove extraneous logic from refinementDidChange because the plot opt…
andrewwinters5000 Apr 5, 2022
b96977c
adjust visualization tests. Should cover special logic for automatic …
andrewwinters5000 Apr 5, 2022
c2efc16
add another test for the visualization logic
andrewwinters5000 Apr 5, 2022
a2e7c0b
added test for updating the background grid size
andrewwinters5000 Apr 5, 2022
89b79a5
add proper error throwing for the background grid queries
andrewwinters5000 Apr 5, 2022
bad6321
small cleanup of the test files
andrewwinters5000 Apr 5, 2022
8bb3249
Catch a typo
DavidAKopriva Apr 5, 2022
9c150b3
comment out docstring of duplicateCurve
andrewwinters5000 Apr 6, 2022
d3674fe
add the unRegisterForNotification function back in and test it
andrewwinters5000 Apr 6, 2022
8eea84f
Change Curve labeling
DavidAKopriva Apr 6, 2022
73f74a8
update comment in background tests
andrewwinters5000 Apr 6, 2022
330c95d
adjust how the project name is set in openProject from a control file…
andrewwinters5000 Apr 7, 2022
94b4c3e
update authors in the docs
andrewwinters5000 Apr 7, 2022
f636891
adjust spacing in the cheatsheet
andrewwinters5000 Apr 7, 2022
4019f3f
spacing in cheat sheet
andrewwinters5000 Apr 7, 2022
903f3f8
wrap commands in a code environment
andrewwinters5000 Apr 7, 2022
ac8b27c
remove any tabs from CheatSheet spacing
andrewwinters5000 Apr 7, 2022
5c90798
remove tabs, adjust spacing, introduce code environments, and adjust …
andrewwinters5000 Apr 7, 2022
bf04082
add cleanup of preview docs
andrewwinters5000 Apr 7, 2022
28d1699
switch to three spaces for indent. Renders better with githubs markdown
andrewwinters5000 Apr 7, 2022
132cf2d
add quotes to certain code pieces as suggested in review
andrewwinters5000 Apr 7, 2022
2dc2fe4
typo fixes float64 to Float64
andrewwinters5000 Apr 7, 2022
3af695a
make global arrayRegex type stable
andrewwinters5000 Apr 7, 2022
bf52aa7
change Int64 to Int
andrewwinters5000 Apr 7, 2022
cf173d6
use Perl style string concatenation for literals
andrewwinters5000 Apr 7, 2022
4c5e035
Remove dependency of Printf with Perl style concatenation
andrewwinters5000 Apr 7, 2022
38343ea
set constants for better type stability
andrewwinters5000 Apr 8, 2022
df2cb4e
export plotting constants for better user experience
andrewwinters5000 Apr 8, 2022
d83af6e
adjust includes. Now only the main module has them
andrewwinters5000 Apr 8, 2022
e3b8555
adjust spacing throughout between functions to make code easier to read
andrewwinters5000 Apr 8, 2022
652df2c
add proper warnings for undefined status types or unjoined curves
andrewwinters5000 Apr 8, 2022
a3b4943
int types change
andrewwinters5000 Apr 8, 2022
57f3c17
add compat for AbaqusReader to testing Project toml
andrewwinters5000 Apr 12, 2022
e640d8f
update the global license
andrewwinters5000 Apr 12, 2022
e57c590
remove license from the individual files
andrewwinters5000 Apr 12, 2022
08b0edb
Update src/Curves/CurveOperations.jl
DavidAKopriva Apr 12, 2022
3710c10
Edit documentation
DavidAKopriva Apr 12, 2022
96260d9
Update ControlFileOperations.jl
DavidAKopriva Apr 12, 2022
d9cfb63
Add routines to check integrity of boundary curves
DavidAKopriva Apr 13, 2022
7f52b2e
add some comments as suggested in review
andrewwinters5000 Apr 14, 2022
5ef8283
add tests for the internal modelCurvesAreOK function
andrewwinters5000 Apr 14, 2022
ea26a68
throw an error if one tries to remove an outer boundary curve that is…
andrewwinters5000 Apr 14, 2022
7d6b076
dummy commit testing GitHub for Andrew
ranocha Apr 14, 2022
4c753f9
switch off demo tests
andrewwinters5000 Apr 14, 2022
468e8fb
Changes to curve adding behavior
DavidAKopriva Apr 16, 2022
91c57ea
properly export the examples folder
andrewwinters5000 Apr 14, 2022
b48611e
move runDemo into an external example script
andrewwinters5000 Apr 14, 2022
8be0539
remove demo tests from test folder
andrewwinters5000 Apr 15, 2022
5eb27e6
small patch to throw an error in new chain creation
andrewwinters5000 Apr 16, 2022
839d7c7
fix new error to be more general
andrewwinters5000 Apr 16, 2022
0d6eafd
add a few tests for new interactive example files; replacing the func…
andrewwinters5000 Apr 16, 2022
b292b6d
adjust test for new strategy of adding curves in arbitrary order
andrewwinters5000 Apr 16, 2022
51dacf8
automatically update the file names if the mesh format changes
andrewwinters5000 Apr 20, 2022
b236f5c
bug fix in model curves check.
andrewwinters5000 Apr 22, 2022
c83e86d
improve comments in ice cream cone example file
andrewwinters5000 Apr 22, 2022
f6ef83f
move demos out of library and into example files
andrewwinters5000 Apr 22, 2022
b72a013
add new example file with staight-sided outer boundary
andrewwinters5000 Apr 22, 2022
79999ea
update header of new two circle example
andrewwinters5000 Apr 22, 2022
955dc20
add another example file with splines
andrewwinters5000 Apr 22, 2022
08968d9
better spacing
andrewwinters5000 Apr 22, 2022
96254d3
add proper plotting logic and output statements for the user
andrewwinters5000 Apr 29, 2022
1d2eb46
fix comment in two circles example
andrewwinters5000 Apr 29, 2022
d641654
remove unnecessary tests
andrewwinters5000 May 2, 2022
9442d40
Bump compat of CairoMakie in the testing Project.toml
andrewwinters5000 Jun 15, 2022
741fe41
update docstrings
andrewwinters5000 Jun 15, 2022
03834ae
update more docstrings
andrewwinters5000 Jun 16, 2022
2db2d2e
no longer export examples_dir to avoid warning / confusion
andrewwinters5000 Jun 16, 2022
111cb8a
Update documentation with HQMTool (#17)
andrewwinters5000 Jun 23, 2022
dd29e70
remove unnecessary part of github docs
andrewwinters5000 Jun 23, 2022
1675a08
further cleanup of exporting
andrewwinters5000 Jun 23, 2022
1907598
update tests
andrewwinters5000 Jun 23, 2022
dde3e22
add creation of output folder if not present
andrewwinters5000 Jun 23, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/DocPreviewCleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Doc Preview Cleanup

on:
pull_request:
types: [closed]

jobs:
doc-preview-cleanup:
# Do not run on forks to avoid authorization errors
# Source: https://github.community/t/have-github-action-only-run-on-master-repo-and-not-on-forks/140840/18
if: github.repository_owner == 'trixi-framework'
runs-on: ubuntu-latest
steps:
- name: Checkout gh-pages branch
uses: actions/checkout@v2
with:
ref: gh-pages

- name: Delete preview and history
shell: bash
run: |
git config user.name "Documenter.jl"
git config user.email "[email protected]"
git rm -rf --ignore-unmatch "previews/PR$PRNUM"
git commit -m "delete preview" --allow-empty
git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree})
env:
PRNUM: ${{ github.event.number }}

- name: Push changes
run: |
git push --force origin gh-pages-new:gh-pages
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
**/Manifest.toml
out*/
docs/build
docs/src/authors.md
public/
coverage/
coverage_report/
**/*.jl.*.cov
.vscode/
examples/*.tec
examples/*.mesh
Comment on lines +10 to +11
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
examples/*.tec
examples/*.mesh
examples/**/*.tec
examples/**/*.mesh

To make it work for subfolders as well?

*.png
24 changes: 24 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Authors

HOHQMesh.jl is maintained by the
[Trixi authors](https://github.com/trixi-framework/Trixi.jl/blob/main/AUTHORS.md).
Its development is coordinated by the *principal developers* who are its main
contributors and can be contacted in case of questions about HOHQMesh. In addition,
there are *contributors* who have provided substantial additions or modifications.
The [*HOHQMesh*](https://github.com/trixi-framework/HOHQMesh) mesh generator itself
is developed by David A. Kopriva.

## Principal Developers
* [David A. Kopriva](https://www.math.fsu.edu/~kopriva/),
Florida State University, USA
* [Andrew Winters](https://liu.se/en/employee/andwi94),
Linköping University, Sweden

## Contributors
The following people contributed major additions or modifications to HOHQMesh and
are listed in alphabetical order:

* David Kopriva
* Hendrik Ranocha
* Michael Schlottke-Lakemper
* Andrew Winters
26 changes: 13 additions & 13 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
MIT License

Copyright (c) 2021-present Michael Schlottke-Lakemper
Copyright (c) 2021-present David Kopriva, Andrew Winters, and Michael Schlottke-Lakemper

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
2 changes: 2 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ version = "0.1.2-pre"

[deps]
HOHQMesh_jll = "1d5cbd98-5122-5a8a-bea1-c186d986ee7f"
Requires = "ae029012-a4dd-5104-9daa-d747884805df"

[compat]
HOHQMesh_jll = "1.0"
Requires = "1.1.3"
julia = "1.6"
31 changes: 28 additions & 3 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ using HOHQMesh
# Define module-wide setups such that the respective modules are available in doctests
DocMeta.setdocmeta!(HOHQMesh, :DocTestSetup, :(using HOHQMesh); recursive=true)

# Get Trixi root directory
hohqmesh_root_dir = dirname(@__DIR__)

# Copy list of authors to not need to synchronize it manually
authors_text = read(joinpath(hohqmesh_root_dir, "AUTHORS.md"), String)
write(joinpath(@__DIR__, "src", "authors.md"), authors_text)

# Make documentation
makedocs(
# Specify modules for which docstrings should be shown
Expand All @@ -15,15 +22,33 @@ makedocs(
format = Documenter.HTML(
# Disable pretty URLs during manual testing
prettyurls = get(ENV, "CI", nothing) == "true",
# Explicitly add favicon as asset
# assets = ["assets/favicon.ico"],
# Set canonical URL to GitHub pages URL
canonical = "https://trixi-framework.github.io/HOHQMesh.jl/stable"
),
# Explicitly specify documentation structure
pages = [
"Home" => "index.md",
"Interactive mesh generation" => [
"interactive_overview.md",
"guided-tour.md",
"interactive-api.md",
"CheatSheet.md",
],
"Tutorials" => [
"Overview" => joinpath("tutorials", "introduction.md"),
joinpath("tutorials", "straight_outer_boundary.md"),
joinpath("tutorials", "curved_outer_boundary.md"),
joinpath("tutorials", "spline_curves.md"),
joinpath("tutorials", "create_edit_curves.md"),
],
"Advanced topics & developers" => [
"Development" => "development.md",
"GitHub & Git" => "github-git.md",
"Testing" => "testing.md",
],
"Reference" => "reference.md",
"Authors" => "authors.md",
"Contributing" => "contributing.md",
"License" => "license.md"
],
strict = true # to make the GitHub action fail when doctests fail, see https://github.com/neuropsychology/Psycho.jl/issues/34
Expand All @@ -32,5 +57,5 @@ makedocs(
deploydocs(
repo = "github.com/trixi-framework/HOHQMesh.jl",
devbranch = "main",
# push_preview = true
push_preview = true
sloede marked this conversation as resolved.
Show resolved Hide resolved
)
97 changes: 97 additions & 0 deletions docs/src/CheatSheet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Commands Cheat Sheet

This provides a quick reference for the syntax
of the interactive construction of boundary curves, background grid, etc.
When possible, the commands presented below give
generic versions of the function calls, e.g., for creating a new curve or
adding the curve to a boundary chain. The script
`interactive_outer_boundary_generic.jl` in the `examples` folder
constructs an identical example mesh as shown in the [Guided tour](@ref)
using generic function calls.

A thorough description of the functions can be found in the [API](@ref) section.

The general workflow of the interactive mesh functionality within a REPL session is

1. Create a project
2. Add boundary curves
3. Add a background grid
4. Add manual refinement (if desired)
5. Generate mesh

## Project

```
p = newProject(<projectName>, <folder>)
```

## [Plotting](@id cs-plotting)

```
plotProject!(p, options)
updatePlot!(p, options)
```

The `options` are any sum of `MODEL`, `GRID`, `REFINEMENTS`, and `MESH`.
## Curves

```
c = new(name, startLocation [x,y,z],endLocation [x,y,z]) *Straight Line*
c = new(name,center [x,y,z],radius, startAngle, endAngle) *Circular Arc*
c = new(name, xEqn, yEqn, zEqn) *Parametric equation*
c = new(name, dataFile) *Spline with data from a file*
c = new(name, nKnots, knotsMatrix) *Spline with given knot values*
```

Shown here is the use of the function `new`, which is a shortcut to the full functions, e.g. `newCircularArcCurve`, etc. which have the same arguments.

## [Manual Refinement](@id cs-manual-refinement)

```
r = newRefinementCenter(name, center, gridSize, radius)
r = newRefinementLine(name, type, startPoint, endPoint, gridSize, width)
```

## Adding to a Project

```
add!(p, c) *Add outer boundary curve*
add!(p, c, <InnerBoundaryName>) *Add curve to an inner boundary*
add!(p, r) *Add refinement region*

addBackgroundGrid!(p, [top, left, bottom, right], [nX, nY, nZ]) *No outer boundary*
addBackgroundGrid!(p, [dx, dy, dz]) *If an outer boundary is present*
```
Shown here is the use of the function `add!`, which is a shortcut to the full functions, e.g. `addOuterBoundaryCurve`, etc. which have the same arguments.

## Accessing items

```
crv = getCurve(p, curveName) *Get a curve in the outer boundary*
crv = getCurve(p, curveName, boundaryName) *Get a curve in an inner boundary*
indx, chain = getChain(p, boundaryName) *Get a complete inner boundary curve*
r = getRefinementRegion(p, name)
```

## Removing from Project

```
removeOuterboundary!(p) *Entire outer boundary curve*
removeInnerBoundary!(p, innerBoundaryName) *Entire inner boundary curve*
remove!(p, name) *Curve in outer boundary*
remove!(p, name, innerBoundaryName) *Curve in inner boundary*
removeRefinementRegion!(p, name)
```

## Editing items

All items have set/get methods to edit them. Most actions have `undo()` and `redo()`.
To find out what the next undo/redo actions are, use `undoActionName()` and `redoActionName()`
to print them to the screen.

## Meshing

```
generate_mesh(p)
remove_mesh!(p)
```
54 changes: 54 additions & 0 deletions docs/src/contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Contributing

HOHQMesh.jl is an open-source project and we are very happy to accept contributions
from the community. Please feel free to open issues or submit patches (preferably
as merge requests) any time. For planned larger contributions, it is often
beneficial to get in contact with one of the principal developers first (see
[Authors](@ref)).

HOHQMesh.jl and its contributions are licensed under the MIT license (see
[License](@ref)). As a contributor, you certify that all your
contributions are in conformance with the *Developer Certificate of Origin
(Version 1.1)*, which is reproduced below.

## Developer Certificate of Origin (Version 1.1)
The following text was taken from
[https://developercertificate.org](https://developercertificate.org):

Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
67 changes: 67 additions & 0 deletions docs/src/development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Development

## Text editors
When writing code, the choice of text editor can have a significant impact on
productivity and developer satisfaction. While using the default text editor
of the operating system has its own benefits (specifically the lack of an explicit
installation procure), usually it makes sense to switch to a more
programming-friendly tool. In the following, a few of the many options are
listed and discussed:

### VS Code
[Visual Studio Code](https://code.visualstudio.com/) is a modern open source
editor with [good support for Julia](https://github.com/julia-vscode/julia-vscode).
While [Juno](#Juno) had some better support in the past, the developers of Juno
and the Julia VS Code plugin are joining forces and concentrating on VS Code
since support of Atom has been suspended. Basically, all comments on [Juno](#Juno)
below also apply to VS Code.

### Juno
If you are new to programming or do not have a preference for a text editor
yet, [Juno](https://junolab.org) is a good choice for developing Julia code.
It is based on *Atom*, a sophisticated and widely used editor for software
developers, and is enhanced with several Julia-specific features. Furthermore
and especially helpful for novice programmers, it has a MATLAB-like
appearance with easy and interactive access to the current variables, the
help system, and a debugger.

### Vim or Emacs
Vim and Emacs are both very popular editors that work great with Julia. One
of their advantages is that they are text editors without a GUI and as such
are available for almost any operating system. They also are preinstalled on
virtually all Unix-like systems. However, Vim and Emacs come with their own,
steep learning curve if they have never been used before. Therefore, if in doubt, it
is probably easier to get started with a classic GUI-based text editor (like
Juno). If you decide to use Vim or Emacs, make sure that you install the
corresponding Vim plugin
[julia-vim](https://github.com/JuliaEditorSupport/julia-vim) or Emacs major
mode [julia-emacs](https://github.com/JuliaEditorSupport/julia-emacs).



## Releasing a new version of HOHQMesh

- Check whether everything is okay, tests pass etc.
- Set the new version number in `Project.toml` according to the Julian version of semver.
Commit and push.
- Comment `@JuliaRegistrator register` on the commit setting the version number.
- `JuliaRegistrator` will create a PR with the new version in the General registry.
Wait for it to be merged.
- Increment the version number in `Project.toml` again with suffix `-pre`. For example,
if you have released version `v0.2.0`, use `v0.2.1-pre` as new version number.



## Preview the documentation

You can build the documentation of HOHQMesh.jl locally by running
```bash
julia --project=docs -e 'using Pkg; Pkg.instantiate(); include("docs/make.jl")'
```
from the HOHQMesh.jl main directory. Then, you can look at the html files generated in
`docs/build`.
For PRs triggered from branches inside the HOHQMesh.jl main repository previews of
the new documentation are generated at `https://trixi-framework.github.io/HOHQMesh.jl/previews/PRXXX`,
where `XXX` is the number of the PR.
Note, this does not work for PRs from forks for security reasons (since anyone could otherwise push
arbitrary stuff, including malicious code).
Loading