Skip to content

Commit 763bcb5

Browse files
authored
Merge pull request #81 from sourceryinstitute/develop
Merge Develop into master ahead of release
2 parents 8a2e5f1 + 389935a commit 763bcb5

File tree

116 files changed

+7083
-1816
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+7083
-1816
lines changed

.github/workflows/FORD.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,12 @@ jobs:
5252
mkdir -p $(brew --cache) || true
5353
ford -r $(git describe --always) --debug API-doc-FORD-file.md
5454
touch API-doc/.nojekyll
55+
zip -vr API-docs.zip API-doc/ -x "*.DS_Store"
5556
- name: Upload Documentation
5657
uses: actions/upload-artifact@v1
5758
with:
5859
name: FORD-API-docs
59-
path: ./API-doc
60+
path: ./API-docs.zip
6061

6162
Check-Links:
6263
runs-on: ubuntu-latest
@@ -69,7 +70,11 @@ jobs:
6970
uses: actions/download-artifact@v1
7071
with:
7172
name: FORD-API-docs
72-
path: ./API-doc
73+
path: ./
74+
- name: Extract source zip
75+
run: |
76+
unzip API-docs.zip
77+
ls -la
7378
- name: set git vars
7479
id: sgv
7580
run: |
@@ -79,7 +84,7 @@ jobs:
7984
uses: peter-evans/link-checker@v1
8085
id: lc
8186
with:
82-
args: -c 5 -v -r -x (gsellc\.com$)|(github\.com\/cmacmackin\/ford$)|(gcc\.gnu\.org\/onlinedocs\/gfortran)|(\/interface\/operator) API-doc
87+
args: -c 5 -v -r -x (gsellc\.com$)|(github\.com\/cmacmackin\/ford$)|(gcc\.gnu\.org\/onlinedocs\/gfortran)|(\/interface\/operator)|(gcc.gnu.org/bugzilla) API-doc
8388
- name: Prune OK links
8489
id: pol
8590
if: steps.lc.outputs.exit_code != 0
@@ -94,6 +99,7 @@ jobs:
9499
pr_msg="${pr_msg//$'\n'/'%0A'}"
95100
pr_msg="${pr_msg//$'\r'/'%0D'}"
96101
echo "::set-output name=pr_msg::$pr_msg"
102+
sed '/^[[:space:]]*OK[[:space:]]/d' < issue.md
97103
- name: Create Issue From File
98104
uses: peter-evans/create-issue-from-file@v2
99105
if: github.event_name == 'push' && ( github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop' || endsWith( github.ref , '-dev' ) )

API-doc-FORD-file.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ In addition to the search box on the right side of the top navbar, the following
8383
* [Developer Documentation]:
8484
Visit the high-level developer documentation which outlines
8585
- How to get started,
86-
- Procedures and classes most relavent to creating or modifying a PDE solver, and
86+
- Procedures and classes most relevant to creating or modifying a PDE solver, and
8787
- Instructions for building the Morfeus Framework library
8888
- A high-level overview of the CMake based build system
8989
* [Source Files]:
@@ -93,7 +93,7 @@ In addition to the search box on the right side of the top navbar, the following
9393
the [Modules] landing page.
9494
* [Modules]:
9595
The landing page enumerating and describing all the modules and submodules in the project.
96-
More usefull than the Source Files page, as it groups submodules with their parent modules and
96+
More useful than the Source Files page, as it groups submodules with their parent modules and
9797
provides some description for what each one does.
9898
* [Procedures]:
9999
Enumerates all procedures including generic overloaded interfaces, operators, module procedures, functions and subroutines.

API-doc-style.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ th, td {
77
}
88

99
tr:nth-child(even) {background-color: #f2f2f2;}
10+
11+
#responsive-image { width: 100%; height: auto; }

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
### Capabilities
3232

3333
MORFEUS is an open source framework for the solution of partial differential equations
34-
(PDEs) written in modern Fortran. It is object oriented, and attempts to provide usefull
34+
(PDEs) written in modern Fortran. It is object oriented, and attempts to provide useful
3535
abstractions for the solution of PDEs that are easy to use and performant.
3636

3737
MORFEUS consists of two main solution approaches:

developer-doc/FD-API.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ Solver and Problem Setup
2727
@todo
2828
This needs more text added here.
2929

30-
Timestepping and Integration
30+
Time-stepping and Integration
3131
----------------------------
3232

3333
@todo
3434
This needs more text added here.
35-
Pressumably something better than forward Euler is being used...
35+
Presumably something better than forward Euler is being used...
3636

3737
\begin{equation}
3838
u_i^{n+1} = u_i^n + \Delta_t f(t,u_i^n)

developer-doc/FD-API.md.bak

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
---
2+
title: High-level FD API documentation
3+
---
4+
5+
6+
<details><summary><b>Table of Contents</b></summary>
7+
8+
[TOC]
9+
10+
</details>
11+
12+
@warning The block-structure parallel FD solver is still a work in progress
13+
14+
Overview
15+
--------
16+
17+
Here an overview of the Morfeus finite difference (FD) framework is given.
18+
Included is a brief description of how to setup a new solver using the framework.
19+
Key objects/classes, and procedures are outlined.
20+
An overview of reading input files, reading grid files,
21+
initializing the library and data structures and, setting up PDEs, integrating the solution forward in time
22+
and writing outputs is given.
23+
24+
Solver and Problem Setup
25+
------------------------
26+
27+
@todo
28+
This needs more text added here.
29+
30+
Timestepping and Integration
31+
----------------------------
32+
33+
@todo
34+
This needs more text added here.
35+
Pressumably something better than forward Euler is being used...
36+
37+
\begin{equation}
38+
u_i^{n+1} = u_i^n + \Delta_t f(t,u_i^n)
39+
\end{equation}
40+
41+
High Level Classes and Objects
42+
------------------------------
43+
44+
Below is a list of the important high-level objects and classes, with a brief discussion and
45+
links to detailed API documentation and their implementations.
46+
A complete list of all FD and FV classes and types can be found on the [types list page].
47+
48+
[types list page]: ../lists/types.html
49+
50+
@todo
51+
This needs updating/finishing
52+
53+
54+
### [[object(type)]]
55+
56+
`[[object(type)]]` is an abstract type to ensure descendents declare the required deferred bindings to
57+
58+
#### Methods
59+
60+
* `[[object(type):mark_as_defined]]` : Set the object as defined
61+
* `[[object(type):user_defined]]` : Query whether the object is defined
62+
63+
### [[grid(type)]]
64+
65+
`[[grid(type)]]` Is the Morfeus universal base type for all grids, even for FV grids. It extends `[[object(type)]]`.
66+
67+
#### Methods
68+
69+
* `[[grid(type):set_units]]` : Set the physical units used by the grid
70+
* `[[grid(type):get_units]]` : Get the physical units used by the grid
71+
72+
### [[structured_grid(type)]]
73+
74+
This is the main structured grid class used by Morfeus FD. It extends the `[[grid(type)]]` class.
75+
Methods defined for this class can get information about the global grid as well as this images particular block.
76+
77+
#### Methods
78+
79+
@todo
80+
This section needs to be filled in/expanded!
81+
82+
* `[[structured_grid(type):clone]]` :
83+
* `[[structured_grid(type):space_dimension]]` :
84+
* `[[structured_grid(type):set_metadata]]` :
85+
86+
### [[cartesian_grid(type)]]
87+
88+
@todo
89+
add description and how to use, etc.
90+
91+
#### Methods
92+
93+
@todo
94+
discussion of important methods provided and how to use them, etc.
95+
96+
### [[curvilinear_grid(type)]]
97+
98+
@todo
99+
add description and how to use, etc.
100+
101+
#### Methods
102+
103+
@todo
104+
discussion of important methods provided and how to use them, etc.
105+
106+
### [[co_object(type)]]
107+
108+
109+
### [[surfaces(type)]]
110+
111+
112+
### [[material_t(type)]]
113+
114+
115+
### [[thickness_t(type)]]
116+
117+
118+
### [[problem_discretization(type)]]
119+
120+
121+
### [[package(type)]]
122+
123+
124+
### [[material_t(type)]]
125+
126+
127+
### [[flux_planes(type)]]
128+
129+
130+
### [[plate_3D(type)]]
131+
132+
133+
### [[geometry(type)]]
134+
135+
136+
### [[subdomain_t(type)]]
137+
138+
139+
### etc., etc.
140+
141+
142+
High Level Procedures and Methods
143+
---------------------------------
144+
145+
All Morfeus FV and FD procedures are listed on the [procedures list page], but below is a curated list of those that correspond to high-level
146+
operations in FD. These should help you write your own programs and kernels using Morfeus FD.
147+
148+
[procedures list page]: ../lists/procedures.html
149+
150+
### [[assert(proc)]]
151+
152+
`[[assert(proc)]]` Is an assertion utility used in design by contract (DBC) for enforcing pre-conditions, post-conditions and invariants, as well in testing.
153+
154+
155+
@todo
156+
Add other stand-alone procedures used to instantiate objects of for other purposes where a TBP method is not used.

developer-doc/FV-API.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ is provided and its components described along with instructions for
2323
- Setting up PDEs and integrating the solution forward in time, and
2424
- Writing outputs.
2525

26-
![Sphere geometry and mesh for finite volume solver](https://user-images.githubusercontent.com/13108868/74580343-f5095500-4f57-11ea-9c18-5c5aec301642.png)
26+
![Sphere geometry and mesh for finite volume solver](../media/sphere.png)
2727

2828

2929
Solver Description
@@ -41,7 +41,7 @@ The morfeus solver consists of two parts:
4141
Numerical Algorithms
4242
--------------------
4343

44-
Morfeus-FV solves transport equations using explicit finite-difference time advancement and cell-based finite-volume scheme spatial discretizations. For a complete description of the alogorithms employed
44+
Morfeus-FV solves transport equations using explicit finite-difference time advancement and cell-based finite-volume scheme spatial discretizations. For a complete description of the algorithms employed
4545
in Morfeus-FV, refer to the dissertation by S. [Toninel (2006)]. More recent work has involved modernization of the code using the modular and object-oriented programming (OOP) features of Fortran 2008,
4646
including
4747

@@ -50,14 +50,29 @@ including
5050
- User-defined, type-bound operators, and
5151
- Submodules.
5252

53-
[Toninel (2006)]: http://people.uniroma2.it/salvatore.filippone/nemo/toninel_phd.pdf
53+
[Toninel (2006)]: ../media/toninel_phd.pdf
5454

5555
Input Files
5656
------------
5757

5858
Morfeus requires two input files. The first is a geometry file in GAMBIT neutral file format or in EXODUS II format; the second is a file called fast.json that contains the problem description, i.e. the description of materials, boundary conditions, solver parameters such as convergence criteria, and output parameters. The `fast.json` file should be present in the same folder as the mesh-file and the solver. The next several sections describe different sections of a [sample json input file].
5959

60-
[sample json input file]: https://github.com/sourceryinstitute/OpenCoarrays/files/4207672/fast.json.zip
60+
[sample json input file]: ../media/fast.json
61+
62+
Example Program Flow
63+
--------------------
64+
65+
A typical multi-physics application for dealing with heat transfer, solid mechanics, and various other physics would look something like the figure below:
66+
67+
<img src="../media/Morfeus-FV-program-flow.png" id="responsive-image">
68+
69+
It might not be immediately obvious how to connect these high-level concepts to the particular objects, classes and their methods listed below.
70+
The following figure provides a mapping to connect these abstract concepts to their more concrete realization.
71+
72+
<img src="../media/Flowchart.png" id="responsive-image">
73+
74+
Additional information about the objects, classes and their mothods (type bound procedures) shown on the right hand side of the preceding figure can be found below.
75+
This information includes direct links to the more detailed API documentation.
6176

6277
High-Level Object Descriptions
6378
------------------------------

developer-doc/media/Flowchart.png

285 KB
Loading
1.07 MB
Loading

0 commit comments

Comments
 (0)