Skip to content

Commit edc5c1f

Browse files
committed
source commit: f6a0b88
0 parents  commit edc5c1f

File tree

13 files changed

+1870
-0
lines changed

13 files changed

+1870
-0
lines changed

CODE_OF_CONDUCT.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
title: "Contributor Code of Conduct"
3+
---
4+
5+
As contributors and maintainers of this project,
6+
we pledge to follow the [The Carpentries Code of Conduct][coc].
7+
8+
Instances of abusive, harassing, or otherwise unacceptable behavior
9+
may be reported by following our [reporting guidelines][coc-reporting].
10+
11+
[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/incident-reporting.html
12+
[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html

LICENSE.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: "Licenses"
3+
---
4+
5+
## Instructional Material
6+
7+
All Carpentries (Software Carpentry, Data Carpentry, and Library Carpentry)
8+
instructional material is made available under the [Creative Commons
9+
Attribution license][cc-by-human]. The following is a human-readable summary of
10+
(and not a substitute for) the [full legal text of the CC BY 4.0
11+
license][cc-by-legal].
12+
13+
You are free:
14+
15+
- to **Share**---copy and redistribute the material in any medium or format
16+
- to **Adapt**---remix, transform, and build upon the material
17+
18+
for any purpose, even commercially.
19+
20+
The licensor cannot revoke these freedoms as long as you follow the license
21+
terms.
22+
23+
Under the following terms:
24+
25+
- **Attribution**---You must give appropriate credit (mentioning that your work
26+
is derived from work that is Copyright (c) The Carpentries and, where
27+
practical, linking to <https://carpentries.org/>), provide a [link to the
28+
license][cc-by-human], and indicate if changes were made. You may do so in
29+
any reasonable manner, but not in any way that suggests the licensor endorses
30+
you or your use.
31+
32+
- **No additional restrictions**---You may not apply legal terms or
33+
technological measures that legally restrict others from doing anything the
34+
license permits. With the understanding that:
35+
36+
Notices:
37+
38+
- You do not have to comply with the license for elements of the material in
39+
the public domain or where your use is permitted by an applicable exception
40+
or limitation.
41+
- No warranties are given. The license may not give you all of the permissions
42+
necessary for your intended use. For example, other rights such as publicity,
43+
privacy, or moral rights may limit how you use the material.
44+
45+
## Software
46+
47+
Except where otherwise noted, the example programs and other software provided
48+
by The Carpentries are made available under the [OSI][osi]-approved [MIT
49+
license][mit-license].
50+
51+
Permission is hereby granted, free of charge, to any person obtaining a copy of
52+
this software and associated documentation files (the "Software"), to deal in
53+
the Software without restriction, including without limitation the rights to
54+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
55+
of the Software, and to permit persons to whom the Software is furnished to do
56+
so, subject to the following conditions:
57+
58+
The above copyright notice and this permission notice shall be included in all
59+
copies or substantial portions of the Software.
60+
61+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
62+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
63+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
64+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
65+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
66+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
67+
SOFTWARE.
68+
69+
## Trademark
70+
71+
"The Carpentries", "Software Carpentry", "Data Carpentry", and "Library
72+
Carpentry" and their respective logos are registered trademarks of [Community
73+
Initiatives][ci].
74+
75+
[cc-by-human]: https://creativecommons.org/licenses/by/4.0/
76+
[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode
77+
[mit-license]: https://opensource.org/licenses/mit-license.html
78+
[ci]: https://communityin.org/
79+
[osi]: https://opensource.org

config.yaml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#------------------------------------------------------------
2+
# Values for this lesson.
3+
#------------------------------------------------------------
4+
5+
# Which carpentry is this (swc, dc, lc, or cp)?
6+
# swc: Software Carpentry
7+
# dc: Data Carpentry
8+
# lc: Library Carpentry
9+
# cp: Carpentries (to use for instructor training for instance)
10+
# incubator: The Carpentries Incubator
11+
carpentry: 'incubator'
12+
13+
# Overall title for pages.
14+
title: 'Introduction to Modern Fortran'
15+
16+
# Date the lesson was created (YYYY-MM-DD, this is empty by default)
17+
created: '2023-08-04'
18+
19+
# Comma-separated list of keywords for the lesson
20+
keywords: 'software, data, lesson, The Carpentries, Fortran'
21+
22+
# Life cycle stage of the lesson
23+
# possible values: pre-alpha, alpha, beta, stable
24+
life_cycle: 'pre-alpha'
25+
26+
# License of the lesson materials (recommended CC-BY 4.0)
27+
license: 'CC-BY 4.0'
28+
29+
# Link to the source repository for this lesson
30+
# source: 'https://github.com/carpentries/fortran'
31+
source: 'https://github.com/astroDimitrios/intro-to-modern-fortran'
32+
33+
# Default branch of your lesson
34+
branch: 'main'
35+
36+
# Who to contact if there are any issues
37+
contact: 'd.theodorakis@metoffice.gov.uk'
38+
39+
# Navigation ------------------------------------------------
40+
#
41+
# Use the following menu items to specify the order of
42+
# individual pages in each dropdown section. Leave blank to
43+
# include all pages in the folder.
44+
#
45+
# Example -------------
46+
#
47+
# episodes:
48+
# - introduction.md
49+
# - first-steps.md
50+
#
51+
# learners:
52+
# - setup.md
53+
#
54+
# instructors:
55+
# - instructor-notes.md
56+
#
57+
# profiles:
58+
# - one-learner.md
59+
# - another-learner.md
60+
61+
# Order of episodes in your lesson
62+
episodes:
63+
- introduction.Rmd
64+
65+
# Information for Learners
66+
learners:
67+
68+
# Information for Instructors
69+
instructors:
70+
71+
# Learner Profiles
72+
profiles:
73+
74+
# Customisation ---------------------------------------------
75+
#
76+
# This space below is where custom yaml items (e.g. pinning
77+
# sandpaper and varnish versions) should live
78+
sandpaper: astroDimitrios/sandpaper
79+
pegboard: astroDimitrios/pegboard
80+
varnish: astroDimitrios/varnish
81+

data/exercises.tar.gz

359 Bytes
Binary file not shown.

index.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
site: sandpaper::sandpaper_site
3+
---
4+
5+
::: caution
6+
7+
This is a new lesson built with [The Carpentries Workbench][carpentries-workbench].
8+
It is currently in pre-alpha development by the
9+
[British Geological Survey][bgs-link],
10+
the [National Centre for Atmospheric Science][ncas-link],
11+
the [National Oceanography Centre][noc-link],
12+
and the [Met Office][uk-met-link].
13+
14+
The lesson adapts resources from
15+
[ARCHER2](https://github.com/ARCHER2-HPC/archer2-fortran-intro),
16+
[Imperial College London](https://github.com/ImperialCollegeLondon/RCDS-introduction-to-fortran),
17+
[Modern Fortran in Science and Technology course](https://github.com/jonaslindemann/modern_fortran_book?tab=readme-ov-file),
18+
[LRZ's Programming with Fortran course](https://doku.lrz.de/programming-with-fortran-10746212.html),
19+
and more.[^other-courses]
20+
21+
:::
22+
23+
Fortran was created in 1957 by a team at IBM
24+
and excels with numerically intensive science code.
25+
Far from the punchcards, and fixed-form formatting of Fortran's early days,
26+
modern Fortran is fast, supports object orientated programming
27+
and is easy to read.
28+
29+
Fortran is often used to write code for High Performance Computing (HPC).
30+
Many of the research codes run on ARCHER2[^archer2]
31+
are Fortran programs.[^archer2-codes]
32+
Various areas of Science are covered by these Fortran programs.
33+
For example quantum chemistry, plasmas, and numerical weather prediction.
34+
35+
More recent standards of Fortran come under the umbrella term "Modern Fortran".
36+
These are the Fortran 95 standard,
37+
and more recent standards.[^fortran-standards]
38+
39+
::::::::::::::::::::::::::::::::::::: prereq
40+
41+
### Prerequisites
42+
43+
Learners _should_ be familiar with the basic concepts of
44+
programming: variables, logic, control flow, loops, functions and
45+
so on.
46+
No knowledge of Fortran is assumed.
47+
No previous experience with compiled languages is required.
48+
Access to the command line is required.
49+
Learners _must_ be comfortable using the command line[^command-line].
50+
51+
::::::::::::::::::::::::::::::::::::::::::::
52+
53+
This lesson has been tested primarily on Linux.
54+
Windows users may find it easier to install
55+
[Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install).
56+
With WSL you will have access to a Linux command line.
57+
Windows and macOS users should open an
58+
[Issue](https://github.com/carpentries-incubator/intro-to-modern-fortran/issues)
59+
if you find problems with the lesson material.
60+
61+
[^other-courses]: Discussion #3 on the lesson repository, https://github.com/carpentries-incubator/intro-to-modern-fortran/discussions/3, give details on the materials this course draws from.
62+
[^archer2]: ARCHER2, https://www.archer2.ac.uk/, is one of the UKs national supercomputing facilities.
63+
[^archer2-codes]: ARCHER2 code use article: https://www.archer2.ac.uk/news/2021/05/19/code-use.html
64+
[^fortran-standards]: Fortran standards page on the Fortran Wiki: https://fortranwiki.org/fortran/show/Standards
65+
[^command-line]: Learners should be comfortable with the Carpentries Unix Shell lesson material: https://swcarpentry.github.io/shell-novice/

instructor-notes.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: Instructor Notes
3+
---
4+
5+
## Learner Profiles
6+
7+
Before teaching a workshop consider who is attending and their needs. This section highlights audiences for this Fortran course. Instructors can use the profiles to decide which episodes to teach or place more emphasis on.
8+
9+
**_Tahani is a new research software engineer at the Met Office._** She has just joined the office after their degree and have experience in Python, Linux, and shell commands. She has limited experience with compiled languages. The weather and climate code she will be working on is written in Fortran. She thought Fortran was a dead language.
10+
11+
**_Ionas, a researcher joining the JULES (Joint UK Land Environment Simulator) partnership._** They will be adding new functionality to JULES in Fortran. They have extensive experience with C and C++ and have been told there are differences between Fortran and C/C++ that they should be aware of. They are keen to learn Fortran but must fit their learning inbetween teaching duties and other research commitments.
12+
13+
**_Malak is mathematics graduate student working on new timestepping methods._** Malaks previous work was mostly theoretical although he knows basic Python. Malak needs to use Fortran to prototype his new routines which will interface with other Fortran code. Malak has been told by his supervisor that he should set up his preferred text editor for Fortran development.
14+
15+
**_Joe has been employed by a tech company to update their Fortran code._** Joe has years of experience developing mainly C++ code for HPCs but has not used Fortran in a production environment. They have been asked to update legacy code to modern standards, including implementing some form of testing and using standard libraries. Joe is not sure if there is a standard code style that they can adopt.

0 commit comments

Comments
 (0)