Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / postProcessing / functionObjects / utilities / timeActivatedFileUpdate / timeActivatedFileUpdate.H
blobd2acacfdac4da111b9d6baf77c9acba3ed4e1100
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2009-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 Class
25     Foam::timeActivatedFileUpdate
27 Description
28     Performs a file copy/replacement once a specified time has been reached.
30     Example usage to update the fvSolution dictionary at various times
31     throughout the calculation:
33         fileUpdate1
34         {
35             type              timeActivatedFileUpdate;
36             functionObjectLibs ("libutilityFunctionObjects.so");
37             outputControl     timeStep;
38             outputInterval    1;
39             fileToUpdate      "$FOAM_CASE/system/fvSolution";
40             timeVsFile
41             (
42                 (-1 "$FOAM_CASE/system/fvSolution.0")
43                 (0.10 "$FOAM_CASE/system/fvSolution.10")
44                 (0.20 "$FOAM_CASE/system/fvSolution.20")
45                 (0.35 "$FOAM_CASE/system/fvSolution.35")
46             );
47         }
50 SourceFiles
51     timeActivatedFileUpdate.C
52     IOtimeActivatedFileUpdate.H
54 \*---------------------------------------------------------------------------*/
56 #ifndef timeActivatedFileUpdate_H
57 #define timeActivatedFileUpdate_H
59 #include "pointFieldFwd.H"
60 #include "Tuple2.H"
62 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
64 namespace Foam
67 // Forward declaration of classes
68 class objectRegistry;
69 class dictionary;
70 class mapPolyMesh;
72 /*---------------------------------------------------------------------------*\
73                   Class timeActivatedFileUpdate Declaration
74 \*---------------------------------------------------------------------------*/
76 class timeActivatedFileUpdate
78     // Private data
80         //- Name of this set of timeActivatedFileUpdate objects
81         word name_;
83         //- Owner database
84         const objectRegistry& obr_;
86         //- On/off switch
87         bool active_;
89         //- Name of file to update
90         fileName fileToUpdate_;
92         //- List of times vs filenames
93         List<Tuple2<scalar, fileName> > timeVsFile_;
95         //- Index of last file copied
96         label lastIndex_;
99     // Private Member Functions
101         //- Update file
102         void updateFile();
104         //- Disallow default bitwise copy construct
105         timeActivatedFileUpdate(const timeActivatedFileUpdate&);
107         //- Disallow default bitwise assignment
108         void operator=(const timeActivatedFileUpdate&);
111 public:
113     //- Runtime type information
114     TypeName("timeActivatedFileUpdate");
117     // Constructors
119         //- Construct for given objectRegistry and dictionary.
120         //  Allow the possibility to load fields from files
121         timeActivatedFileUpdate
122         (
123             const word& name,
124             const objectRegistry&,
125             const dictionary&,
126             const bool loadFromFiles = false
127         );
130     //- Destructor
131     virtual ~timeActivatedFileUpdate();
134     // Member Functions
136         //- Return name of the set of timeActivatedFileUpdate
137         virtual const word& name() const
138         {
139             return name_;
140         }
142         //- Read the timeActivatedFileUpdate data
143         virtual void read(const dictionary&);
145         //- Execute, currently does nothing
146         virtual void execute();
148         //- Execute at the final time-loop, currently does nothing
149         virtual void end();
151         //- Calculate the timeActivatedFileUpdate and write
152         virtual void write();
154         //- Update for changes of mesh
155         virtual void updateMesh(const mapPolyMesh&)
156         {}
158         //- Update for changes of mesh
159         virtual void movePoints(const pointField&)
160         {}
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 } // End namespace Foam
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 #endif
172 // ************************************************************************* //