Skip to content

Add JOSE paper #12

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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
59 changes: 59 additions & 0 deletions paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
@article{Pearson:2017,
url = {http://adsabs.harvard.edu/abs/2017arXiv170304627P},
Archiveprefix = {arXiv},
Author = {{Pearson}, S. and {Price-Whelan}, A.~M. and {Johnston}, K.~V.},
Eprint = {1703.04627},
Journal = {ArXiv e-prints},
Keywords = {Astrophysics - Astrophysics of Galaxies},
Month = mar,
Title = {{Gaps in Globular Cluster Streams: Pal 5 and the Galactic Bar}},
Year = 2017
}

@book{Binney:2008,
url = {http://adsabs.harvard.edu/abs/2008gady.book.....B},
Author = {{Binney}, J. and {Tremaine}, S.},
Booktitle = {Galactic Dynamics: Second Edition, by James Binney and Scott Tremaine.~ISBN 978-0-691-13026-2 (HB).~Published by Princeton University Press, Princeton, NJ USA, 2008.},
Publisher = {Princeton University Press},
Title = {{Galactic Dynamics: Second Edition}},
Year = 2008
}

@article{gaia,
author = {{Gaia Collaboration}},
title = "{The Gaia mission}",
journal = {Astronomy and Astrophysics},
archivePrefix = "arXiv",
eprint = {1609.04153},
primaryClass = "astro-ph.IM",
keywords = {space vehicles: instruments, Galaxy: structure, astrometry, parallaxes, proper motions, telescopes},
year = 2016,
month = nov,
volume = 595,
doi = {10.1051/0004-6361/201629272},
url = {http://adsabs.harvard.edu/abs/2016A%26A...595A...1G},
}

@article{astropy,
author = {{Astropy Collaboration}},
title = "{Astropy: A community Python package for astronomy}",
journal = {Astronomy and Astrophysics},
archivePrefix = "arXiv",
eprint = {1307.6212},
primaryClass = "astro-ph.IM",
keywords = {methods: data analysis, methods: miscellaneous, virtual observatory tools},
year = 2013,
month = oct,
volume = 558,
doi = {10.1051/0004-6361/201322068},
url = {http://adsabs.harvard.edu/abs/2013A%26A...558A..33A}
}

@misc{fidgit,
author = {A. Smith},
title = {Fidgit: An ungodly union of GitHub and Figshare},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
url = {https://github.com/arfon/fidgit}
}
91 changes: 91 additions & 0 deletions paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
title: 'Rocket Science: An Exercise in Refactoring Legacy Fortran'
tags:
- Fortran
- refactoring
- rocket
authors:
- name: Damian Rouson
orcid: 0000-0002-2344-868X
affiliation: 1
- name: Brad Richardson
orcid: 0000-0002-3205-2169
affiliation: 1
- name: Brian Laubacher
affiliation: 2
affiliations:
- name: Sourcery Institute
index: 1
- name: Autoliv
index: 2
date: 2 December 2020
bibliography: paper.bib
---

# Summary

The near ubiquity of object-oriented programming support in modern programming languages
and the continued utility of legacy, procedural Fortran in important application domains
combine to make object-oriented design a common destination of code modernization efforts.
As Fortran has evolved into a multi-paradigm language, however, the peer-reviewed literature
contains far fewer detailed considerations of Fortran's support for functional programming.
This paper explores the symbiotic relationship between the two by demonstrating a legacy
code refactoring strategy in which the aim of writing pure functions motivates the choice
of abstractions and the ability to encapsulate function results facilitates the writing
of pure functions. We show how a Fortran feature typically used for aliasing can be
applied to ensure the immutability of state. We apply the resulting code refactoring
strategy to the modernization of an open-source pedagogical tool: a rocket motor
simulation mini-application. We describe (1) the original, procedural Fortran 90 program
that uses global data, (2) a ground-up reimplementation of the same algorithms using
object-oriented design patterns in Fortran 2018, and (3) an evolutionary refactoring
that uses a consistent methodology for deriving purely functional abstractions from the
Fortran 90 code. We contrast the two modern designs and demonstrate an evolutionary
path that could naturally lead the same resulting design for the ground-up reimplementation
and the evolutionary refactoring.

# Statement of need



# Mathematics

Single dollars ($) are required for inline mathematics e.g. $f(x) = e^{\pi/x}$

Double dollars make self-standing equations:

$$\Theta(x) = \left\{\begin{array}{l}
0\textrm{ if } x < 0\cr
1\textrm{ else}
\end{array}\right.$$

You can also use plain \LaTeX for equations
\begin{equation}\label{eq:fourier}
\hat f(\omega) = \int_{-\infty}^{\infty} f(x) e^{i\omega x} dx
\end{equation}
and refer to \autoref{eq:fourier} from text.

# Citations

Citations to entries in paper.bib should be in
[rMarkdown](http://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html)
format.

If you want to cite a software repository URL (e.g. something on GitHub without a preferred
citation) then you can do it with the example BibTeX entry below for @fidgit.

For a quick reference, the following citation commands can be used:
- `@author:2001` -> "Author et al. (2001)"
- `[@author:2001]` -> "(Author et al., 2001)"
- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)"

# Figures

Figures can be included like this:
![Caption for example figure.\label{fig:example}](figure.png)
and referenced from text using \autoref{fig:example}.

# Acknowledgements



# References