twoPhaseEulerFoam: Correction to GidaspowErgunWenYu drag model
[OpenFOAM-1.7.x.git] / applications / solvers / financial / financialFoam / financialFoam.C
blob5f3d0e5b40979e30b5e11e1793d1195fcb85b1e9
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.
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.
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.
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/>.
24 Application
25     financialFoam
27 Description
28     Solves the Black-Scholes equation to price commodities.
30 \*---------------------------------------------------------------------------*/
32 #include "fvCFD.H"
33 #include "writeCellGraph.H"
34 #include "OSspecific.H"
36 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
38 int main(int argc, char *argv[])
40     #include "setRootCase.H"
42     #include "createTime.H"
43     #include "createMesh.H"
44     #include "createFields.H"
46     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48     Info<< nl << "Calculating value(price of comodities)" << endl;
50     surfaceScalarField phi("phi", (sigmaSqr - r)*(Pf & mesh.Sf()));
52     volScalarField DV("DV", 0.5*sigmaSqr*sqr(P.component(Foam::vector::X)));
54     Info<< "Starting time loop\n" << endl;
56     while (runTime.loop())
57     {
58         delta == fvc::grad(V)().component(Foam::vector::X);
60         solve
61         (
62             fvm::ddt(V)
63           + fvm::div(phi, V)
64           - fvm::Sp(fvc::div(phi), V)
65           - fvm::laplacian(DV, V)
66          ==
67           - fvm::Sp(r, V)
68         );
70         runTime.write();
72         if (runTime.outputTime())
73         {
74             writeCellGraph(V, runTime.graphFormat());
75             writeCellGraph(delta, runTime.graphFormat());
76         }
78         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
79             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
80             << nl << endl;
81     }
83     Info<< "End\n" << endl;
85     return 0;
89 // ************************************************************************* //