Skip to content

Commit cf66bdb

Browse files
authored
Merge pull request #5 from underworldcode/joss-submission
Joss submission branch - bring changes into dev.
2 parents bd4116e + 2111529 commit cf66bdb

17 files changed

Lines changed: 489 additions & 134 deletions

File tree

.github/workflows/draft-pdf.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
# This should be the path to the paper within your repo.
2323
paper-path: docs/joss-paper/paper.md
2424
- name: Upload
25-
uses: actions/upload-artifact@v3
25+
uses: actions/upload-artifact@v4
2626
with:
2727
name: paper
2828
# This is the output path where Pandoc will write the compiled

.zenodo.json

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@
1010
"affiliation": "School of Earth Science, The University of Sydney",
1111
"orcid": "0000-0003-4515-9296"
1212
},
13+
{
14+
"name": "Matt Knepley",
15+
"orcid": "0000-0002-2292-0735",
16+
"affiliation": "Computer Science and Engineering, University at Buffalo",
17+
},
18+
{
19+
"name": "Romain Beucher",
20+
"affiliation": "Research School of Earth Sciences, The Australian National University",
21+
"orcid": "0000-0003-3891-5444"
22+
},
1323
{
1424
"name": "Thyagarajulu Gollapalli",
1525
"orcid": "0000-0001-9394-4104",
@@ -20,11 +30,6 @@
2030
"orcid": "0000-0003-0817-354X",
2131
"affiliation": "Research School of Earth Sciences, The Australian National University",
2232
},
23-
{
24-
"name": "Matt Knepley",
25-
"orcid": "0000-0002-2292-0735"
26-
"affiliation": "Computer Science and Engineering, University at Buffalo",
27-
},
2833
{
2934
"name": "Ben Knight",
3035
"affiliation": "School of Earth, Atmospheric & Environmental Science, Monash University",

CONTRIBUTING.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
This page provides information about contributing to Underworld3's (aka Underworld’s) codebase.
2+
3+
For contributions of Underworld models or workflows, please see https://github.com/underworld-community
4+
5+
----
6+
7+
We welcome contributions to Underworld’s codebase in the form of:
8+
9+
* Code changes.
10+
* Bug reports.
11+
* Suggestions / Requests.
12+
* Documentation modifications.
13+
14+
For Bug reports and Suggestions / Requests please submit an Issue on the Underworld GitHub Issue Tracker. Please tag the Issue with a given Label to help us assess the issue.
15+
16+
[Click here](https://github.com/underworldcode/underworld3/issues) to submit an Issue.
17+
18+
For Code / Documentation changes please submit a GitHub Pull Request (PR). This allows us to review and discuss the contributions before merging it into our ``development`` branch. For creating Pull Request (PR) we recommend following the workflow outlined on [GitHub]( https://guides.github.com/activities/forking).
19+
20+
More specifically:
21+
22+
1. Fork Underworld via GitHub and clone it to your machine.
23+
24+
```bash
25+
git clone https://github.com/YOUR_GITHUB_ACCOUNT/underworld3
26+
```
27+
28+
2. Add the original Underworld repository as an additional remote source (named `upsteam`) for your local repo and pull down its latest changesets. Checkout to the upstream/development repo state, and then create a new local branch which will contain your forthcoming changes.
29+
30+
```bash
31+
git remote add upstream https://github.com/underworldcode/underworld3
32+
git pull upstream
33+
git checkout upstream/development
34+
git checkout -b newFeature
35+
```
36+
37+
3. Make your changes! Remember to write comments, write a test if applicable and follow the [coding style](/docs/developer/CodingStyle.md) of the project for details).
38+
39+
4. Push your changes to your GitHub fork and then submit a PR to the ``development`` branch of Underworld via Github.

LICENCE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ top level `README.md` for further information.
55

66
### Licensing
77

8-
1) All Underworld source code is released under the LGPL-3 (See the file LICENCE in his repository). This covers all files in `underworld` constituting the Underworld3 Python module (library), and any other material not explicitly identified under (2) below.
8+
1) All Underworld source code is released under the LGPL-3 (See the file LGPLv3.txt in this repository). This covers all files in `underworld` constituting the Underworld3 Python module (library), and any other material not explicitly identified under (2) below.
99

1010
2) Notebooks, stand-alone documentation and Python scripts which show how the code is used and run are licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. We offer this licence to encourage you to modify and share the examples and use them to help you in your research. Where no individual creator is identified in these files, the appropriate attribution is "The Underworld Team". All the files covered by this license are found in the `UserGuide` directory.
1111

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ Welcome to `Underworld3`, a mathematically self-describing, finite-element code
88

99
All `Underworld3` source code is released under the LGPL-3 open source licence. This covers all files in `underworld3` constituting the Underworld3 Python module. Notebooks, stand-alone documentation and Python scripts which show how the code is used and run are licensed under the Creative Commons Attribution 4.0 International License.
1010

11-
HTML: <a href="https://joss.theoj.org/papers/4f7a1ed76bde560968c246fa8eff778d"><img src="https://joss.theoj.org/papers/4f7a1ed76bde560968c246fa8eff778d/status.svg"></a>
12-
Markdown: [![status](https://joss.theoj.org/papers/4f7a1ed76bde560968c246fa8eff778d/status.svg)](https://joss.theoj.org/papers/4f7a1ed76bde560968c246fa8eff778d)
11+
[![Build and test UW3](https://github.com/underworldcode/underworld3/actions/workflows/build_uw3_and_test.yml/badge.svg?branch=main)](https://github.com/underworldcode/underworld3/actions/workflows/build_uw3_and_test.yml)
1312

1413
## Documentation
1514

@@ -19,6 +18,8 @@ The `underworld3` module (API) documentation can be found online:
1918
- [stable version](https://underworldcode.github.io/underworld3/main_api/underworld3/index.html)
2019
- [development version](https://underworldcode.github.io/underworld3/development_api/underworld3/index.html)
2120

21+
22+
2223
## Binder demonstration version
2324

2425
- [Main Branch on Binder](https://mybinder.org/v2/gh/underworld-community/uw3-demo-launcher/HEAD?labpath=underworld3%2Fdocs%2Fuser%2FNotebooks%2FNotebook_Index.ipynb)

docs/developer/CodingStyle.md

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ def rank2_to_voigt(
1818
r"""Convert rank 2 tensor ($v_{ij}$) to Voigt (vector) form ($V_I$)"""
1919
```
2020

21-
We do not enforce this formatting at the `git commit` level, but it is strongly encouraged that you set up your code editor to adopt the `black` style.
21+
We do not enforce this formatting at the `git commit` level, but it is strongly encouraged that you set up your code editor to adopt the `black` style.
2222

2323
## Variable / function names
2424

25-
Underworld3 leans heavily on the `petsc4py` and `sympy` packages. `petsc4py` wraps the `C` / `Fortran` layers of the `PETSc` ecosystem and tends to inherit CamelCase/camelCase variable naming everywhere whereas `sympy`, like other python packages, *favours* snake_case for variables and CamelCase for classes.
25+
Underworld3 leans heavily on the `petsc4py` and `sympy` packages. `petsc4py` wraps the `C` / `Fortran` layers of the `PETSc` ecosystem and tends to inherit CamelCase/camelCase variable naming everywhere whereas `sympy`, like other python packages, *favours* snake_case for variables and CamelCase for classes.
2626

2727
In Underworld3, we prefer to use snake_case naming for functions, properties and variables, camelCase for classes. We also know that we are not completely consistent at present. Sorry !
2828

@@ -34,17 +34,17 @@ We use `typing` for this.
3434

3535
## Cython considerations
3636

37-
Many `underworld3` objects carry underlying `C` objects that they manage and there is usually some `cython` code that handles the interaction between the two. We use `cython` explicitly for some of this wrapper code and it is present implictly because we make heavy use of the `petsc4py` module.
37+
Many `underworld3` objects carry underlying `C` objects that they manage and there is usually some `cython` code that handles the interaction between the two. We use `cython` explicitly for some of this wrapper code and it is present implictly because we make heavy use of the `petsc4py` module.
3838

3939
`cython` objects may require explicit deletion (because python cannot always drill down to the `C` layer to find objects that are ready for automatic deletion). We strongly encourage the use of the `destroy()` method that is available for many `petsc4py` objects when you are sure the object is no longer required by you. Be aware that lists of pointers to `PETSc` objects may prevent them being automatically deleted and use the `weakref` module to avoid this problem.
4040

4141
Where possible, keep pure python functions in separate source files from `cython` functions as this improves our ability to run the `pdoc` automatic documentation correctly. Generally speaking, the `cython` level of the API is the furthest from the end-user and the least likely to need continual updating. Let's work to keep this code concise, precise, and rarely changed.
4242

4343
## API-level Documentation
4444

45-
The best way to develop `Underworld3` python programs is within the [`jupyter`](jupyter.org) notebook environment. The documentation of the `Underworld3` API assumes that rendered markdown formatting will be available for code highlighting and mathematical equations when the user asks (interactively) for help.
45+
The best way to develop `Underworld3` python programs is within the [`jupyter`](jupyter.org) notebook environment. The documentation of the `Underworld3` API assumes that rendered markdown formatting will be available for code highlighting and mathematical equations when the user asks (interactively) for help.
4646

47-
We use `pdoc` to produce API documentation from the python source code. The `pdoc` configuration assumes all docstrings are markdown and may include mathematics and code snippets. `pdoc` automatically documents arguments to functions and classes, so we do not require these to be described unless there is a need for clarification.
47+
We use `pdoc` to produce API documentation from the python source code. The `pdoc` configuration assumes all docstrings are markdown and may include mathematics and code snippets. `pdoc` automatically documents arguments to functions and classes, so we do not require these to be described unless there is a need for clarification.
4848

4949
In the `jupyter` environment `Underworld3` objects display `help` documentation and their internal state through their `self.view()` methods. Many classes have equivalent documentation available before they have been instantiated so a notebook user can progressively construct a model.
5050

@@ -65,7 +65,7 @@ once the following criteria are met:
6565
3. All tests pass
6666
4. Blog post update for significant changes
6767
5. Update CHANGES.md
68-
68+
6969
## Version Numbering
7070

7171
Underworld follows PEP440 for versioning:
@@ -86,20 +86,19 @@ Z = Micro/Patch version. Backwards compatible bug fixes.
8686
The version number may also be appended with pre-release type designations, for
8787
example 3.0.0b.
8888

89-
Development software will be have the 'dev' suffix, e.g. 3.0.0-dev, and should
89+
Development software will be have the 'dev' suffix, e.g. 3.0.0-dev, and should
9090
represent the version the development is working towards, so 3.1.0-dev is working
91-
towards release 3.1.0.
91+
towards release 3.1.0.
9292

9393
## Testing
9494

95-
The 'test.sh' script can be used to execute the pytest framework.
95+
The 'test.sh' script can be used to execute the pytest framework.
9696
Individual tests are found in the `tests` directory. These are small collections
97-
of unit tests that address parcels of functionality in the code. Tests need to be
98-
small and fast, and should be orthogonal to other tests as far as possible.
97+
of unit tests that address parcels of functionality in the code. Tests need to be
98+
small and fast, and should be orthogonal to other tests as far as possible.
9999
In the testing framework, we test the deeper levels of the code first (e.g. mesh building)
100100
so that we can use those features for subsequent tests.
101101

102-
We strongly encourage testing to be fine grained with as little as possible additional code that
103-
can go wrong. Please do not just paste in your example notebooks in the hope that `pytest` will
104-
sort things out. It won't. Somebody else will need to figure out why the test broke sometime in the
105-
future and we don't want that somebody to discover that the problem is not in the unit testing part of the code.
102+
We strongly encourage testing to be fine grained with as little as possible additional code that can go wrong. Please do not just paste in your example notebooks in the hope that `pytest` will sort things out. It won't. Somebody else will need to figure out why the test broke sometime in the future and we don't want that somebody to discover that the problem is not in the unit testing part of the code.
103+
104+
Although `pytest` tests should be independent, there are some issues with the PETSc subsystem removing objects correctly at the end of a test. This is why we break up the testing suite into multiple files which rebuild the PETSc layer each time.

docs/joss-paper/JOSS_Checklist.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,33 @@ Following the [Submission requirements](https://joss.readthedocs.io/en/latest/su
55
## Repository format / content
66

77
- [ ] README.md
8-
- [ ] Links to uw web page
9-
- [ ] Binder launch link for Quick-start
10-
- [ ] Acknowledgements
8+
- [x] Links to uw web page
9+
- [x] Binder launch link for Quick-start
10+
- [x] Acknowledgements
1111

12-
- [ ] paper.md
13-
- [ ] paper.bib
12+
- [x] paper.md
13+
- [x] paper.bib
1414
- [x] Install GitHub workflow
1515
- [x] Validate workflow
1616
- [x] Open source licence file
1717
- [?] Publication branch (this is acceptable, must be kept up to date on submission).
18-
- [ ] Check Insights / Community Standards for GitHub repo / put into line with UW2
18+
- [x] Check Insights / Community Standards for GitHub repo / put into line with UW2
1919
- [x] Check authors and .zenodo creators align
2020

21-
- [ ] Quickstart Guide for users (deployable on binder)
21+
- [x] Quickstart Guide for users (deployable on binder)
2222
- [x] Installation details
23-
- [ ] Notebook examples (ipynb)
24-
- [ ] Links to API docs
25-
- [ ] Links to Github
26-
- [ ] Links to Underworld Community
23+
- [x] Notebook examples (ipynb)
24+
- [x] Links to API docs
25+
- [x] Links to Github
26+
- [x] Links to Underworld Community
2727

2828
## Clean up checklist
2929

30-
- [ ] Audit GitHub issues / clear where possible
31-
- [ ] Clear outdated PRs
32-
- [ ] Merge dev into main
33-
- [ ] create joss-submission branch from main at submission time
34-
- [ ] joss-submission branch may need restructuring in order to build (e.g. paper in the root directory)
30+
- [x] Audit GitHub issues / clear where possible
31+
- [x] Clear outdated PRs
32+
- [x] Merge dev into main
33+
- [x] create joss-submission branch from main at submission time
34+
- [x] joss-submission branch may need restructuring in order to build (e.g. paper in the root directory)
3535

3636
## Software checklist
3737

0 commit comments

Comments
 (0)