Home
Downloads
Documentation
Installation
User Guide
man-pages
API Documentation
README
Release Notes
Changes
License
Support
SourceForge Project
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
applications
solvers
basic
potentialFoam
potentialFoam.C
Go to the documentation of this file.
1
/*---------------------------------------------------------------------------*\
2
========= |
3
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4
\\ / O peration |
5
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
6
\\/ M anipulation |
7
-------------------------------------------------------------------------------
8
License
9
This file is part of OpenFOAM.
10
11
OpenFOAM is free software: you can redistribute it and/or modify it
12
under the terms of the GNU General Public License as published by
13
the Free Software Foundation, either version 3 of the License, or
14
(at your option) any later version.
15
16
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19
for more details.
20
21
You should have received a copy of the GNU General Public License
22
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23
24
Application
25
potentialFoam
26
27
Description
28
Simple potential flow solver which can be used to generate starting fields
29
for full Navier-Stokes codes.
30
31
Usage
32
- potentialFoam [OPTION]
33
34
@param -writep \n
35
Also write the pressure field
36
37
@param -case <dir> \n
38
Specify the case directory
39
40
@param -parallel \n
41
Run the case in parallel
42
43
@param -help \n
44
Display short usage message
45
46
@param -doc \n
47
Display Doxygen documentation page
48
49
@param -srcDoc \n
50
Display source code
51
52
\*---------------------------------------------------------------------------*/
53
54
#include <
finiteVolume/fvCFD.H
>
55
56
57
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
58
59
int
main
(
int
argc,
char
*argv[])
60
{
61
62
argList::validOptions.insert(
"writep"
,
""
);
63
64
# include <
OpenFOAM/setRootCase.H
>
65
66
# include <
OpenFOAM/createTime.H
>
67
# include <
OpenFOAM/createMesh.H
>
68
# include "
createFields.H
"
69
# include <
finiteVolume/readSIMPLEControls.H
>
70
71
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72
73
Info
<<
nl
<<
"Calculating potential flow"
<<
endl
;
74
75
adjustPhi
(
phi
,
U
,
p
);
76
77
for
(
int
nonOrth=0; nonOrth<=
nNonOrthCorr
; nonOrth++)
78
{
79
fvScalarMatrix
pEqn
80
(
81
fvm::laplacian
82
(
83
dimensionedScalar
84
(
85
"1"
,
86
dimTime
/
p
.dimensions()*
dimensionSet
(0, 2, -2, 0, 0),
87
1
88
),
89
p
90
)
91
==
92
fvc::div
(
phi
)
93
);
94
95
pEqn.
setReference
(
pRefCell
,
pRefValue
);
96
pEqn.solve();
97
98
if
(nonOrth ==
nNonOrthCorr
)
99
{
100
phi
-= pEqn.flux();
101
}
102
}
103
104
Info
<<
"continuity error = "
105
<<
mag
(
fvc::div
(
phi
))().weightedAverage(
mesh
.
V
()).value()
106
<<
endl
;
107
108
U
=
fvc::reconstruct
(
phi
);
109
U
.correctBoundaryConditions();
110
111
Info
<<
"Interpolated U error = "
112
<< (
sqrt
(
sum
(
sqr
((
fvc::interpolate
(
U
) &
mesh
.
Sf
()) -
phi
)))
113
/
sum
(
mesh
.
magSf
())).value()
114
<<
endl
;
115
116
// Force the write
117
U
.write();
118
phi
.write();
119
120
if
(
args
.
optionFound
(
"writep"
))
121
{
122
p
.write();
123
}
124
125
Info
<<
"ExecutionTime = "
<< runTime.elapsedCpuTime() <<
" s"
126
<<
" ClockTime = "
<< runTime.elapsedClockTime() <<
" s"
127
<<
nl
<<
endl
;
128
129
Info
<<
"End\n"
<<
endl
;
130
131
return
0;
132
}
133
134
135
// ************************ vim: set sw=4 sts=4 et: ************************ //