601 lines
18 KiB
HTML
601 lines
18 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
<head>
|
|
<title><b>Release notes for foam-extend-4.0</b></title>
|
|
<!-- 2016-12-09 Fri 16:16 -->
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<meta name="generator" content="Org-mode" />
|
|
<style type="text/css">
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
.title { text-align: center; }
|
|
.todo { font-family: monospace; color: red; }
|
|
.done { color: green; }
|
|
.tag { background-color: #eee; font-family: monospace;
|
|
padding: 2px; font-size: 80%; font-weight: normal; }
|
|
.timestamp { color: #bebebe; }
|
|
.timestamp-kwd { color: #5f9ea0; }
|
|
.right { margin-left: auto; margin-right: 0px; text-align: right; }
|
|
.left { margin-left: 0px; margin-right: auto; text-align: left; }
|
|
.center { margin-left: auto; margin-right: auto; text-align: center; }
|
|
.underline { text-decoration: underline; }
|
|
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
|
p.verse { margin-left: 3%; }
|
|
pre {
|
|
border: 1px solid #ccc;
|
|
box-shadow: 3px 3px 3px #eee;
|
|
padding: 8pt;
|
|
font-family: monospace;
|
|
overflow: auto;
|
|
margin: 1.2em;
|
|
}
|
|
pre.src {
|
|
position: relative;
|
|
overflow: visible;
|
|
padding-top: 1.2em;
|
|
}
|
|
pre.src:before {
|
|
display: none;
|
|
position: absolute;
|
|
background-color: white;
|
|
top: -10px;
|
|
right: 10px;
|
|
padding: 3px;
|
|
border: 1px solid black;
|
|
}
|
|
pre.src:hover:before { display: inline;}
|
|
pre.src-sh:before { content: 'sh'; }
|
|
pre.src-bash:before { content: 'sh'; }
|
|
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
|
pre.src-R:before { content: 'R'; }
|
|
pre.src-perl:before { content: 'Perl'; }
|
|
pre.src-java:before { content: 'Java'; }
|
|
pre.src-sql:before { content: 'SQL'; }
|
|
|
|
table { border-collapse:collapse; }
|
|
caption.t-above { caption-side: top; }
|
|
caption.t-bottom { caption-side: bottom; }
|
|
td, th { vertical-align:top; }
|
|
th.right { text-align: center; }
|
|
th.left { text-align: center; }
|
|
th.center { text-align: center; }
|
|
td.right { text-align: right; }
|
|
td.left { text-align: left; }
|
|
td.center { text-align: center; }
|
|
dt { font-weight: bold; }
|
|
.footpara:nth-child(2) { display: inline; }
|
|
.footpara { display: block; }
|
|
.footdef { margin-bottom: 1em; }
|
|
.figure { padding: 1em; }
|
|
.figure p { text-align: center; }
|
|
.inlinetask {
|
|
padding: 10px;
|
|
border: 2px solid gray;
|
|
margin: 10px;
|
|
background: #ffffcc;
|
|
}
|
|
#org-div-home-and-up
|
|
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
|
textarea { overflow-x: auto; }
|
|
.linenr { font-size: smaller }
|
|
.code-highlighted { background-color: #ffff00; }
|
|
.org-info-js_info-navigation { border-style: none; }
|
|
#org-info-js_console-label
|
|
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
|
.org-info-js_search-highlight
|
|
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
|
/*]]>*/-->
|
|
</style>
|
|
<script type="text/javascript">
|
|
/*
|
|
@licstart The following is the entire license notice for the
|
|
JavaScript code in this tag.
|
|
|
|
Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
|
|
|
The JavaScript code in this tag is free software: you can
|
|
redistribute it and/or modify it under the terms of the GNU
|
|
General Public License (GNU GPL) as published by the Free Software
|
|
Foundation, either version 3 of the License, or (at your option)
|
|
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
|
without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
|
|
|
As additional permission under GNU GPL version 3 section 7, you
|
|
may distribute non-source (e.g., minimized or compacted) forms of
|
|
that code without the copy of the GNU GPL normally required by
|
|
section 4, provided you include this license notice and a URL
|
|
through which recipients can access the Corresponding Source.
|
|
|
|
|
|
@licend The above is the entire license notice
|
|
for the JavaScript code in this tag.
|
|
*/
|
|
<!--/*--><![CDATA[/*><!--*/
|
|
function CodeHighlightOn(elem, id)
|
|
{
|
|
var target = document.getElementById(id);
|
|
if(null != target) {
|
|
elem.cacheClassElem = elem.className;
|
|
elem.cacheClassTarget = target.className;
|
|
target.className = "code-highlighted";
|
|
elem.className = "code-highlighted";
|
|
}
|
|
}
|
|
function CodeHighlightOff(elem, id)
|
|
{
|
|
var target = document.getElementById(id);
|
|
if(elem.cacheClassElem)
|
|
elem.className = elem.cacheClassElem;
|
|
if(elem.cacheClassTarget)
|
|
target.className = elem.cacheClassTarget;
|
|
}
|
|
/*]]>*///-->
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="content">
|
|
<h1 class="title"><b>Release notes for foam-extend-4.0</b></h1>
|
|
<div id="table-of-contents">
|
|
<h2>Table of Contents</h2>
|
|
<div id="text-table-of-contents">
|
|
<ul>
|
|
<li><a href="#sec-1">1. Overview</a></li>
|
|
<li><a href="#sec-2">2. Installation</a></li>
|
|
<li><a href="#sec-3">3. Compatibility</a></li>
|
|
<li><a href="#sec-4">4. Main differentiators between foam-extend and OpenFOAM</a></li>
|
|
<li><a href="#sec-5">5. New features in foam-extend-4.0, since foam-extend-3.2</a></li>
|
|
<li><a href="#sec-6">6. Recent successful compilations and tests</a></li>
|
|
<li><a href="#sec-7">7. Reporting bugs</a></li>
|
|
<li><a href="#sec-8">8. How to contribute</a></li>
|
|
<li><a href="#sec-9">9. List of Contributors:</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
###############################################################################
|
|
</p>
|
|
|
|
<div id="outline-container-sec-1" class="outline-2">
|
|
<h2 id="sec-1"><span class="section-number-2">1</span> Overview</h2>
|
|
<div class="outline-text-2" id="text-1">
|
|
<p>
|
|
The foam-extend project is a fork of the OpenFOAM® open source
|
|
library for Computational Fluid Dynamics (CFD). It is an open
|
|
project welcoming and integrating contributions from all users and
|
|
developers. Previously known as OpenFOAM-dev and OpenFOAM-extend,
|
|
it contains bug fixes and performance improvements, as well as
|
|
extensions and additional features provided by community
|
|
contributors (see file ListOfContributors), such as dynamic mesh and
|
|
topological change support, turbomachinery extensions including
|
|
general grid interpolation (GGI), cyclic GGI and mixing plane,
|
|
block-coupled matrix support, implicitly coupled conjugate heat
|
|
transfer and other physics coupling, finite area method,
|
|
comprehensive dynamic mesh (motion and topological changes)
|
|
capability and GPU support. For a full list, see below and previous
|
|
release notes at:
|
|
<a href="http://sourceforge.net/p/foam-extend/wiki/Home/">http://sourceforge.net/p/foam-extend/wiki/Home/</a>
|
|
</p>
|
|
|
|
<p>
|
|
Version 4.0, nicknamed "Guimaraes", is the current version of
|
|
foam-extend. The release continues the tradition and spirit of the
|
|
original FOAM code developed by prof. Jasak and Mr. Weller during
|
|
their time at Imperial College and released as the general purpose
|
|
CFD/CCM package by Nabla Ltd. in 2000. In this spirit, we reverted
|
|
18 December 2013 to the original numbering scheme (foam-2.3.2, 13
|
|
December 2004) as release number 3.0. Visit <a href="http://foam-extend.org">http://foam-extend.org</a>
|
|
for more information.
|
|
</p>
|
|
|
|
<p>
|
|
OPENFOAM is a registered trademark of ESI Group. OpenFOAM-extend and
|
|
foam-extend are a community effort not endorsed by ESI Group.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="outline-container-sec-2" class="outline-2">
|
|
<h2 id="sec-2"><span class="section-number-2">2</span> Installation</h2>
|
|
<div class="outline-text-2" id="text-2">
|
|
<p>
|
|
foam-extend-4.0 can be compiled and runs on a large variety of Linux, Mac or Windows
|
|
systems
|
|
</p>
|
|
|
|
<ul class="org-ul">
|
|
<li>Main supported OSs:
|
|
<ul class="org-ul">
|
|
<li>Ubuntu 16.04 LTS
|
|
</li>
|
|
<li>Ubuntu 14.04 LTS
|
|
</li>
|
|
<li>Fedora 24
|
|
</li>
|
|
<li>Mac OS X
|
|
</li>
|
|
<li>Microsoft Windows 7, 8.1 and 10
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Compile from source:
|
|
|
|
<p>
|
|
Please refer to doc/buildInstructions/ for details. Further
|
|
installation instruction are available on the unofficial OpenFOAM
|
|
Wiki:
|
|
<a href="http://openfoamwiki.net/index.php/Installation/Linux/foam-extend-4.0">http://openfoamwiki.net/index.php/Installation/Linux/foam-extend-4.0</a>
|
|
If you have improvements or build instructions for a new system,
|
|
please share them with the community (see section "How to
|
|
contribute", below).
|
|
</p>
|
|
</li>
|
|
|
|
<li>Download binary packages:
|
|
|
|
<p>
|
|
Binary packages are available for download at
|
|
<a href="http://sourceforge.net/projects/foam-extend/">http://sourceforge.net/projects/foam-extend/</a> for the following
|
|
systems: Ubuntu 16.04, Fedora 24 and Mac OS X and Windows 10.
|
|
</p>
|
|
</li>
|
|
|
|
<li>Accompanying ThirdParty software:
|
|
<ul class="org-ul">
|
|
<li>gcc compatibility up to 4.9.2
|
|
</li>
|
|
<li>bison 2.7
|
|
</li>
|
|
<li>cmake 3.2.2
|
|
</li>
|
|
<li>flex-2.5.35
|
|
</li>
|
|
<li>hwloc 1.10.1
|
|
</li>
|
|
<li>libccmio 2.6.1
|
|
</li>
|
|
<li>mesquite 2.1.2
|
|
</li>
|
|
<li>metis 5.1.0
|
|
</li>
|
|
<li>openmpi 1.8.8
|
|
</li>
|
|
<li>Paraview 4.4.0
|
|
</li>
|
|
<li>parmetis 4.0.3
|
|
</li>
|
|
<li>ParMGridGen 1.0
|
|
</li>
|
|
<li>PyFoam 0.6.4
|
|
</li>
|
|
<li>qt 4.8.6
|
|
</li>
|
|
<li>scotch 6.0.4
|
|
</li>
|
|
<li>swak4Foam 0.4.0
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="outline-container-sec-3" class="outline-2">
|
|
<h2 id="sec-3"><span class="section-number-2">3</span> Compatibility</h2>
|
|
<div class="outline-text-2" id="text-3">
|
|
<p>
|
|
Upstream features from the OpenFOAM® code base are merged into
|
|
foam-extend on regular basis. The interface format of
|
|
foam-extend-4.0 is largely compatible to foam-extend-3.2, to
|
|
OpenFOAM-1.6-ext and OpenFOAM-1.7.x. In some cases, the
|
|
differences are caused by bug fixes and algorithmic improvements,
|
|
considered more important than inter-operability.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-4" class="outline-2">
|
|
<h2 id="sec-4"><span class="section-number-2">4</span> Main differentiators between foam-extend and OpenFOAM</h2>
|
|
<div class="outline-text-2" id="text-4">
|
|
<p>
|
|
A large number of features have been lost within the release of
|
|
OpenFOAM since version 1.3, the code base has shrunk by more than
|
|
40%. While we understand the lack of technical ability of
|
|
supporting advanced CFD features, we feel that existing features and
|
|
specifically large-scale contributions should remain active and
|
|
developed further. Below is a list of main features of foam-extend
|
|
which are lacking, lost, deactivated or unusable in ESI releases:
|
|
</p>
|
|
|
|
<ul class="org-ul">
|
|
<li>Turbomachinery features, including General Grid Interface (GGI),
|
|
partial overlap GGI, cyclic GGI, with improvements in parallel
|
|
scaling. First release of a mixing plane stage interface
|
|
</li>
|
|
|
|
<li>Dynamic mesh with topological changes Sliding interfaces, mesh
|
|
layering, attach-detach boundaries etc. In foam-extend, full
|
|
parallel support for topological changes is released for the first
|
|
time
|
|
</li>
|
|
|
|
<li>Finite Element Method with support for polyhedral meshes This is
|
|
mainly used in mesh deformation and over the last 15 years it has
|
|
proven vastly superior to all other dynamic mesh methods.
|
|
</li>
|
|
|
|
<li>Advanced mesh deformation technology Including tet FEM mesh
|
|
deformation, Radial Basis Function (RBF) mesh deformation,
|
|
tetrahedral remeshing dynamic mesh support and solid body motion
|
|
functions. All of the above include parallelisation support
|
|
</li>
|
|
|
|
<li>Library of dynamic meshes with topological changes with full
|
|
second order FVM discretisation support on moving meshes with
|
|
topological changes
|
|
</li>
|
|
|
|
<li>Internal combustion engine-specific dynamic mesh classes such as
|
|
two-stroke engine and various forms of 4-stroke and multi-valve
|
|
dynamic mesh classes
|
|
</li>
|
|
|
|
<li>Finite Area Method providing support for FVM-like discretisation
|
|
on a curved surface in 3-D, with examples of liquid film modeling
|
|
</li>
|
|
|
|
<li>Block-coupled matrix support, allowing fully implicit
|
|
multi-equation solution of NxN equation sets, with full
|
|
parallelisation support. First release of a block-AMG linear
|
|
equation solver
|
|
</li>
|
|
|
|
<li>Fully implicit conjugate-coupled solution framework, allowing
|
|
implicit solution fo multiple equations over multiple meshes, with
|
|
parallelism
|
|
</li>
|
|
|
|
<li>Proper Orthogonal Decomposition data analysis tools, with
|
|
applications to FOAM field classes
|
|
</li>
|
|
|
|
<li>Equation reader classes and tutorials
|
|
</li>
|
|
|
|
<li>Multi-solver solution framework, allowing multiple field models to
|
|
be solved in a coupled manner
|
|
</li>
|
|
|
|
<li>A major contribution is solid mechanics modelling, including
|
|
linear and non-linear materials, contact, self-contact and
|
|
friction, with updated Lagrangian or absolute Lagrangian
|
|
formulation. Solution of damage models and crack propagation in
|
|
complex materials via topological changes
|
|
</li>
|
|
|
|
<li>CUDA solver release, provided in full source and as an example of
|
|
coupling external linear equation solvers with FOAM
|
|
</li>
|
|
|
|
<li>Library-level support for Immersed Boundary Method and Overset
|
|
Mesh
|
|
</li>
|
|
|
|
<li>Major improvements in accuracy and stability of FVM discretisation
|
|
with options on convection and diffusion discretisation, deferred
|
|
correction or explicit schemes
|
|
</li>
|
|
|
|
<li>Algebraic multigrid solver framework
|
|
</li>
|
|
|
|
<li>253 tutorials with automated run scripts
|
|
</li>
|
|
|
|
<li>Automatic test harness
|
|
</li>
|
|
|
|
<li>Approximately 6000 bug fixes in fundamental level libraries and
|
|
discretisation techniques
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-5" class="outline-2">
|
|
<h2 id="sec-5"><span class="section-number-2">5</span> New features in foam-extend-4.0, since foam-extend-3.2</h2>
|
|
<div class="outline-text-2" id="text-5">
|
|
<p>
|
|
The list of features is a result of the work of numerous
|
|
contributors. The maintainers of foam-extend would formally like to
|
|
thank them all.
|
|
</p>
|
|
|
|
<p>
|
|
Get a full log of the updates by (either):
|
|
</p>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-bash">user@machine> git log 4.0.. > commitLog
|
|
</pre>
|
|
</div>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-bash">user@machine> git log 4.0.. --oneline > commitLog
|
|
</pre>
|
|
</div>
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-bash">user@machine> gitg 4.0..
|
|
</pre>
|
|
</div>
|
|
|
|
<ul class="org-ul">
|
|
<li>Major new features:
|
|
<ul class="org-ul">
|
|
<li>Improved BlockLduMatrix and block-coupled p-U solver and associated tools
|
|
</li>
|
|
<li>ILUCp and block ILUCp preconditioners
|
|
</li>
|
|
<li>Added MRF and porous media handling to the block-coupled solver
|
|
</li>
|
|
<li>Change of generic turbulence modelling interface: no U required
|
|
</li>
|
|
<li>Updated version of block-coupled turbulence models
|
|
</li>
|
|
<li>Major improvements in immersed boundary method library: improved performance
|
|
and parallel scaling. Completed supporft for moving deforming immersed boundary
|
|
</li>
|
|
<li>Adopted vanilla OpenFOAM solver control format (solutionControl class)
|
|
</li>
|
|
<li>Implicit adjoint convection operator
|
|
</li>
|
|
<li>Improved GGI interpolation and cutting, with better parallel scaling
|
|
</li>
|
|
<li>Global GGI search option for parallel cases
|
|
</li>
|
|
<li>GGI and mixing planes with jump condition for the rothalpy equation
|
|
</li>
|
|
<li>Improved 6-DOF solver, with new handling of constraints
|
|
</li>
|
|
<li>Fully integrated real gas library
|
|
</li>
|
|
<li>Updated viscoelastoplastic models
|
|
</li>
|
|
<li>New steady-state universal flow solver, handling incompressible and compressible
|
|
flows within the same framework
|
|
</li>
|
|
<li>Time consistent incompressible solvers update
|
|
</li>
|
|
<li>Added decaying turbulence inlet boundary condition by Kornev
|
|
</li>
|
|
<li>New gradient limiter implementation
|
|
</li>
|
|
<li>Full gradient cacheing capability
|
|
</li>
|
|
<li>Removed fluxRequired from solution dictionaries
|
|
</li>
|
|
<li>Consistent notation of 1/aP
|
|
</li>
|
|
<li>Dynamic mesh improvements: prescribed motion functions
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Software
|
|
<ul class="org-ul">
|
|
<li>New handling of lnInclude directories: avoid file copying on MS Windows
|
|
</li>
|
|
<li>Changes to controlDict and options on MS Windows
|
|
</li>
|
|
<li>Consistency in formatting of compression options
|
|
</li>
|
|
<li>Raspberry Pi port
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Installation:
|
|
<ul class="org-ul">
|
|
<li>Compilation improvements
|
|
</li>
|
|
<li>Updated packages versions and compilation in ThirdParty
|
|
</li>
|
|
<li>Changed compilation options for Infiniband: new versions of MPI
|
|
</li>
|
|
<li>Added support for mvapich2-2.2
|
|
</li>
|
|
<li>Updated compilation for latest version of XCode for Mac OSX
|
|
</li>
|
|
<li>Updates for MS Windows build
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Solvers:
|
|
<ul class="org-ul">
|
|
<li>Updated time consistent incompressible solvers (channelFoam, icoFoam, nonNewtonianIcoFoam, pimpleDyMFoam, pimpleFoam, simpleFoam, simpleSRFFoam)
|
|
</li>
|
|
<li>Steady universal (compressible and incompressible) flow solver (steadyUniversalFoam)
|
|
</li>
|
|
<li>Block-coupled p-U solver improvements (MRFPorousFoam and pUCoupledFoam)
|
|
</li>
|
|
<li>Improved steadyCompressibleMRFFoam
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>New tutorials:
|
|
<ul class="org-ul">
|
|
<li>Transient real fluid examples
|
|
</li>
|
|
<li>Universal steady-state MRF examples
|
|
</li>
|
|
<li>Additional coupled CHT example
|
|
</li>
|
|
<li>Additional immersed boundary example
|
|
</li>
|
|
<li>Additional steady-state MRF and GGI example
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Bug fixes: see git log for details
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-6" class="outline-2">
|
|
<h2 id="sec-6"><span class="section-number-2">6</span> Recent successful compilations and tests</h2>
|
|
<div class="outline-text-2" id="text-6">
|
|
<ul class="org-ul">
|
|
<li>Ubuntu 16.04 LTS
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-7" class="outline-2">
|
|
<h2 id="sec-7"><span class="section-number-2">7</span> Reporting bugs</h2>
|
|
<div class="outline-text-2" id="text-7">
|
|
<p>
|
|
To report bugs, please use the bugtracker at
|
|
<a href="http://sourceforge.net/p/foam-extend/tickets/">http://sourceforge.net/p/foam-extend/tickets/</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-8" class="outline-2">
|
|
<h2 id="sec-8"><span class="section-number-2">8</span> How to contribute</h2>
|
|
<div class="outline-text-2" id="text-8">
|
|
<p>
|
|
All your contributions are highly welcome: New solvers, utilities and
|
|
models; bug fixes; documentation. The many ways of contributing and the
|
|
contribution process are described in detail at:
|
|
<a href="http://sourceforge.net/p/foam-extend/wiki/HowToContribute/">http://sourceforge.net/p/foam-extend/wiki/HowToContribute/</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="outline-container-sec-9" class="outline-2">
|
|
<h2 id="sec-9"><span class="section-number-2">9</span> List of Contributors:</h2>
|
|
<div class="outline-text-2" id="text-9">
|
|
<p>
|
|
See file ListOfContributors
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="postamble" class="status">
|
|
<p class="date">Date: December 2016</p>
|
|
<p class="date">Created: 2016-12-09 Fri 16:16</p>
|
|
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.5.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p>
|
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
|
</div>
|
|
</body>
|
|
</html>
|