-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
235 additions
and
1 deletion.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,136 @@ | ||
Hello World | ||
<!doctype html5> | ||
<html> | ||
<head> | ||
<title>CamFort: Automated evolution and verification of computational | ||
science models</title> | ||
<link rel="stylesheet" href="main.css" /> | ||
<link href="https://fonts.googleapis.com/css?family=Rasa" | ||
rel="stylesheet" /> | ||
<script>window.twttr = (function(d, s, id) { | ||
var js, fjs = d.getElementsByTagName(s)[0], | ||
t = window.twttr || {}; | ||
if (d.getElementById(id)) return t; | ||
js = d.createElement(s); | ||
js.id = id; | ||
js.src = "https://platform.twitter.com/widgets.js"; | ||
fjs.parentNode.insertBefore(js, fjs); | ||
|
||
t._e = []; | ||
t.ready = function(f) { | ||
t._e.push(f); | ||
}; | ||
|
||
return t; | ||
}(document, "script", "twitter-wjs"));</script> | ||
</head> | ||
<body> | ||
<div id="header"> | ||
<img src="camfort.png" /><br /> | ||
<span class="title-big"> | ||
Specify, verify, and refactor Fortran code | ||
</span> | ||
</div> | ||
<div id="main"> | ||
<section> | ||
</section><br /> | ||
<section> | ||
<p> | ||
CamFort is multi-feature tool for improving the quality of Fortran | ||
code. Its features are primarily aimed at programming patterns found | ||
in numerical modelling code e.g., in computational science. </p> | ||
<p> | ||
CamFort is free and open-source. It currently supports FORTRAN 66, | ||
FORTRAN 77, and Fortran 90 language standards. Support for Fotran | ||
96, 2003, and 2008 is in progress. | ||
</p> | ||
</section> | ||
|
||
<section> <span class="title-medium">Specification & | ||
Verification</span><br /> | ||
<p> | ||
CamFort provides <em>lightweight verification</em> features. | ||
Source-code annotations (comments) provide specifications of certain | ||
aspects of a program's meaning or behaviour. CamFort can then check | ||
that code conforms to these specifications. CamFort can also suggest | ||
places to insert specifications, and in some cases case infer the | ||
specifications of existing code.</p> | ||
<p> | ||
Our current specification and verification features provide: | ||
<ul> | ||
<li><b>Units-of-measure typing</b></li> | ||
Example: | ||
<div class="code"> | ||
<pre> | ||
<span class='comment'>!= unit(m) :: d1, d2</span> | ||
<span class='comment'>!= unit(s) :: t</span> | ||
<span class='type'>real</span> :: <span class='var'>d1</span>, <span class='var'>d2</span>, <span class='var'>t</span>, <span class='var'>v</span> | ||
<span class='var'>v</span> = (<span class='var'>d1</span> + <span class='var'>d2</span>)/<span class='var'>t</span> | ||
</pre> | ||
</div> | ||
<li><b>Array access shape</b></li> | ||
<div class="code"> | ||
<pre> | ||
<span class='keyw'>do</span> <span class='var'>i</span> = 1, <span class='var'>n</span> | ||
<span class='keyw'>do</span> <span class='var'>j</span> = 1, <span | ||
class='var'>m</span> | ||
<span class='comment'>!= stencil forward(dim=1,depth=1)*centered(dim=2,depth=1) :: a</span> | ||
<span class='var'>x</span> = <span class='var'>a</span>(<span class='var'>i</span>, <span class='var'>j</span>-1) + <span class='var'>a</span>(<span class='var'>i</span>, <span class='var'>j</span>+1) + <span class='var'>a</span>(<span class='var'>i</span>, <span class='var'>j</span>) | ||
<span class='var'>y</span> = <span class='var'>a</span>(<span class='var'>i</span>+1, <span class='var'>j</span>-1) + <span class='var'>a</span>(<span class='var'>i</span>+1, <span class='var'>j</span>+1) + <span class='var'>a</span>(<span class='var'>i</span>+1, <span class='var'>j</span>) | ||
<span class='var'>b</span>(<span class='var'>i</span>, <span | ||
class='var'>j</span>) = <span class='var'>x</span> + <span class='var'>y</span> | ||
<span class='keyw'>end do</span> | ||
<span class='keyw'>end do</span> | ||
</pre> | ||
</div> | ||
</ul> | ||
</p> | ||
</section> | ||
|
||
<section> <span class="title-medium">Refactoring</span><br /> | ||
<p> | ||
Many language features of older Fortran standards (pre Fortran 90) are | ||
known to be a ready source of programming error. CamFort provides | ||
some facilities for automatically refactoring deprecated or | ||
dangerous programming patterns, with the goal of helping to meet | ||
core quality requirements, such as maintainability. For example, our | ||
tool eliminates EQUIVALENCE and COMMON blocks. These refactorings | ||
also helps to expose any programming bugs arising from bad | ||
programming practices. | ||
</p> | ||
|
||
</section> | ||
</div> | ||
<div id="side"> | ||
<a class="twitter-follow-button" href="https://twitter.com/camfort_tool" | ||
data-show-count="false" data-size="large"> | ||
Follow @camfort_tool</a><br /><br /> | ||
<span class="title-small">Download</span><br /><br /> | ||
<section> | ||
The source code for CamFort is hosted on | ||
<a href="https://github.com/camfort/camfort">GitHub</a>.<br /> | ||
Binary releases for Windows, Mac OS X, and Linux are | ||
<a | ||
href="https://github.com/camfort/camfort/releases">available</a>. Current | ||
binary release: v0.900 | ||
</section> | ||
<br /> | ||
<span class="title-small">Mailing list</span><br /><br /> | ||
<section> | ||
For help and announcments you can sign-up to our | ||
<a href="https://lists.cam.ac.uk/mailman/listinfo/cl-camfort">mailing list</a>. | ||
</section><br /> | ||
<span class="title-small">Events</span><br /><br /> | ||
<section> | ||
An introduction to CamFort and training material is provided | ||
as part of the <a | ||
href="http://www.nag.co.uk/content/fortran-modernization-workshop">Fortran | ||
Modernization Workshops</a> run by <b>nag</b> in the UK and | ||
Europe.<br /><br /> | ||
We host an annual event on <em>Testing and Verification in | ||
Computational Science</em>. Previous versions occured in | ||
<a href="http://www.cl.cam.ac.uk/~dao29/meeting-tvcs/">2016</a> and <a href="https://camfort.github.io/tvcs2017/">2017</a>. | ||
</section> | ||
|
||
</div> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
a { | ||
color: #3e86a8; | ||
} | ||
|
||
|
||
a:hover { | ||
color: #dfae70; | ||
} | ||
|
||
body { | ||
padding: 10vw; | ||
padding-top: 2vw; | ||
margin: 0px; | ||
} | ||
|
||
#main { | ||
width: 50vw; | ||
padding: 0; | ||
float:left; | ||
} | ||
|
||
#header { | ||
font-family: "Helvetica Neue", Helvetica, Arial, sans; | ||
} | ||
|
||
#side { | ||
margin: 0; | ||
margin-left: 5vw; | ||
padding: 0; | ||
padding-left: 5vw; | ||
width: calc(20vw - 2px); | ||
float:left; | ||
border-left: 1px solid #ccc; | ||
font-family: "Helvetica Neue", Helvetica, Arial, sans; | ||
font-size: 12pt; | ||
font-weight: 400; | ||
} | ||
|
||
.title-big, .title-small { | ||
color: #777; | ||
font-weight: 300; | ||
} | ||
|
||
section { | ||
font-family: 'Rasa', serif; | ||
font-size: 15pt; | ||
} | ||
|
||
#side section { | ||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | ||
font-size: 13pt; | ||
font-weight: 300; | ||
} | ||
|
||
.title-big { | ||
font-size: 24pt; | ||
} | ||
|
||
|
||
.title-medium { | ||
font-weight: 600; | ||
font-size: 18pt; | ||
color: #dfae70; | ||
} | ||
|
||
.title-small { | ||
font-weight: 500; | ||
font-size:19pt; | ||
color: #3e86a8 | ||
} | ||
|
||
.code { | ||
background: #eee; | ||
color: #444; | ||
width: 45vw; | ||
padding:5px; | ||
margin-left:40px; | ||
font-size:11pt; | ||
} | ||
|
||
pre { | ||
padding:0px; | ||
} | ||
|
||
.code .comment { | ||
color: #090; | ||
} | ||
|
||
.code .type { | ||
color: #a00; | ||
} | ||
|
||
.code .keyw { | ||
color: #a00; | ||
} | ||
|
||
.code .var { | ||
color: #444; | ||
} |