preparePar.C 2.85 KB
Newer Older
Franjo's avatar
Franjo committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | cfMesh: A library for mesh generation
   \\    /   O peration     |
    \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
     \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
-------------------------------------------------------------------------------
License
    This file is part of cfMesh.

    cfMesh is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 3 of the License, or (at your
    option) any later version.

    cfMesh is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
    along with cfMesh.  If not, see <http://www.gnu.org/licenses/>.

Application
    Prepares the case for a parallel mesh generation run

Description
    - creates processor* directories which contain data for processors

\*---------------------------------------------------------------------------*/

#include "argList.H"
#include "Time.H"

#include <sstream>

using namespace Foam;

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Main program:

int main(int argc, char *argv[])
{
#   include "setRootCase.H"
#   include "createTime.H"
Franjo's avatar
Franjo committed
47

Franjo's avatar
Franjo committed
48 49 50 51 52 53 54 55 56 57 58
    IOdictionary meshDict
    (
        IOobject
        (
            "meshDict",
            runTime.system(),
            runTime,
            IOobject::MUST_READ,
            IOobject::NO_WRITE
        )
    );
Franjo's avatar
Franjo committed
59

Franjo's avatar
Franjo committed
60 61 62 63 64 65 66 67 68 69 70
    IOdictionary decomposeParDict
    (
        IOobject
        (
            "decomposeParDict",
            runTime.system(),
            runTime,
            IOobject::MUST_READ,
            IOobject::NO_WRITE
        )
    );
Franjo's avatar
Franjo committed
71

Franjo's avatar
Franjo committed
72 73 74 75
    const label nProcessors
    (
        readLabel(decomposeParDict.lookup("numberOfSubdomains"))
    );
Franjo's avatar
Franjo committed
76

Franjo's avatar
Franjo committed
77 78 79 80 81 82 83
    for(label procI=0;procI<nProcessors;++procI)
    {
        fileName file("processor");
        std::ostringstream ss;
        ss << procI;
        file += ss.str();
        Info << "Creating " << file << endl;
Franjo's avatar
Franjo committed
84

Franjo's avatar
Franjo committed
85 86
        //- create a directory for processor data
        mkDir(runTime.path()/file);
Franjo's avatar
Franjo committed
87

Franjo's avatar
Franjo committed
88 89 90 91
        //- copy the contents of the const directory into processor*
        cp(runTime.path()/"constant", runTime.path()/file);

        //- generate 0 directories for
Franjo's avatar
Franjo committed
92
        mkDir(runTime.path()/file/"0");
Franjo's avatar
Franjo committed
93
    }
Franjo's avatar
Franjo committed
94

Franjo's avatar
Franjo committed
95 96 97 98 99 100
    Info << "End\n" << endl;
    return 0;
}


// ************************************************************************* //