Transferred copyright to the OpenFOAM Foundation
[OpenFOAM-2.0.x.git] / src / postProcessing / functionObjects / jobControl / abortCalculation / abortCalculation.H
blob408674eba66e8950dcc9d26ee881a5197153a11f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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 Class
25     Foam::abortCalculation
27 Description
28     Watches for presence of the named file in the $FOAM_CASE directory
29     and aborts the calculation if it is present.
31     Currently the following action types are supported:
32     - noWriteNow
33     - writeNow
34     - nextWrite
36 SourceFiles
37     abortCalculation.C
38     IOabortCalculation.H
40 \*---------------------------------------------------------------------------*/
42 #ifndef abortCalculation_H
43 #define abortCalculation_H
45 #include "pointFieldFwd.H"
46 #include "NamedEnum.H"
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 namespace Foam
53 // Forward declaration of classes
54 class objectRegistry;
55 class dictionary;
56 class mapPolyMesh;
58 /*---------------------------------------------------------------------------*\
59                       Class abortCalculation Declaration
60 \*---------------------------------------------------------------------------*/
62 class abortCalculation
64 public:
66     // Public data
68         //- Enumeration defining the type of action
69         enum actionType
70         {
71             noWriteNow,    /*!< stop immediately without writing data */
72             writeNow,      /*!< write data and stop immediately */
73             nextWrite      /*!< stop the next time data are written */
74         };
76 private:
78     // Private data
80         //- Name of the abort file unless otherwise specified
81         word name_;
83         const objectRegistry& obr_;
85         //- The fully-qualified name of the abort file
86         fileName abortFile_;
88         //- Action type names
89         static const NamedEnum<actionType, 3> actionTypeNames_;
91         //- The type of action
92         actionType action_;
95     // Private Member Functions
97         //- Remove abort file.
98         void removeFile() const;
100         //- Disallow default bitwise copy construct
101         abortCalculation(const abortCalculation&);
103         //- Disallow default bitwise assignment
104         void operator=(const abortCalculation&);
107 public:
109     //- Runtime type information
110     TypeName("abort");
113     // Constructors
115         //- Construct for given objectRegistry and dictionary.
116         abortCalculation
117         (
118             const word& name,
119             const objectRegistry&,
120             const dictionary&,
121             const bool loadFromFilesUnused = false
122         );
125     //- Destructor
126     virtual ~abortCalculation();
129     // Member Functions
131         //- Return name of the abort file
132         virtual const word& name() const
133         {
134             return name_;
135         }
137         //- Read the dictionary settings
138         virtual void read(const dictionary&);
140         //- Execute, check existence of abort file and take action
141         virtual void execute();
143         //- Execute at the final time-loop, used for cleanup
144         virtual void end();
146         //- Execute, check existence of abort file and take action
147         virtual void write();
149         //- Update for changes of mesh - does nothing
150         virtual void updateMesh(const mapPolyMesh&)
151         {}
153         //- Update for changes of mesh - does nothing
154         virtual void movePoints(const pointField&)
155         {}
159 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
161 } // End namespace Foam
163 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165 #endif
167 // ************************************************************************* //