Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
d2979826
Commit
d2979826
authored
May 20, 2011
by
mattijs
Browse files
ENH: partialWrite: new functionObject for partial dumps
parent
7e86354f
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/postProcessing/functionObjects/IO/Make/files
View file @
d2979826
partialWrite/partialWrite.C
partialWrite/partialWriteFunctionObject.C
writeRegisteredObject/writeRegisteredObject.C
writeRegisteredObject/writeRegisteredObjectFunctionObject.C
...
...
src/postProcessing/functionObjects/IO/controlDict
0 → 100644
View file @
d2979826
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.7.1 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.5;
deltaT 0.005;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
functions
{
partialWrite
{
// Write some registered objects more often than others.
// Above writeControl determines most frequent dump.
type partialWrite;
// Where to load it from
functionObjectLibs ("libIOFunctionObjects.so");
// Execute upon outputTime
outputControl outputTime;
// Objects to write every outputTime
objectNames (p);
// Write as normal every writeInterval'th outputTime.
writeInterval 3;
}
dumpObjects
{
// Forcibly write registered objects. E.g. fields that have been
// created with NO_READ.
type writeRegisteredObject;
// Where to load it from
functionObjectLibs ("libIOFunctionObjects.so");
// Execute upon outputTime
outputControl outputTime;
// Objects to write
objectNames ();
}
}
// ************************************************************************* //
src/postProcessing/functionObjects/IO/partialWrite/IOpartialWrite.H
0 → 100644
View file @
d2979826
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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.
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Typedef
Foam::IOpartialWrite
Description
Instance of the generic IOOutputFilter for partialWrite.
\*---------------------------------------------------------------------------*/
#ifndef IOpartialWrite_H
#define IOpartialWrite_H
#include
"partialWrite.H"
#include
"IOOutputFilter.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
typedef
IOOutputFilter
<
partialWrite
>
IOpartialWrite
;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C
0 → 100644
View file @
d2979826
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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.
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include
"partialWrite.H"
#include
"dictionary.H"
#include
"Time.H"
#include
"IOobjectList.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
defineTypeNameAndDebug
(
partialWrite
,
0
);
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
partialWrite
::
partialWrite
(
const
word
&
name
,
const
objectRegistry
&
obr
,
const
dictionary
&
dict
,
const
bool
loadFromFiles
)
:
name_
(
name
),
obr_
(
obr
)
{
read
(
dict
);
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
partialWrite
::~
partialWrite
()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void
Foam
::
partialWrite
::
read
(
const
dictionary
&
dict
)
{
dict
.
lookup
(
"objectNames"
)
>>
objectNames_
;
dict
.
lookup
(
"writeInterval"
)
>>
writeInterval_
;
writeInstance_
=
0
;
Info
<<
type
()
<<
" "
<<
name
()
<<
":"
<<
nl
<<
" dumping every outputTime :"
;
forAllConstIter
(
HashSet
<
word
>
,
objectNames_
,
iter
)
{
Info
<<
' '
<<
iter
.
key
();
}
Info
<<
nl
<<
" dumping all other fields every "
<<
writeInterval_
<<
"th outputTime"
<<
nl
<<
endl
;
if
(
writeInterval_
<
1
)
{
FatalIOErrorIn
(
"partialWrite::read(const dictionary&)"
,
dict
)
<<
"Illegal value for writeInterval "
<<
writeInterval_
<<
". It should be >= 1."
<<
exit
(
FatalIOError
);
}
}
void
Foam
::
partialWrite
::
execute
()
{
//Pout<< "execute at time " << obr_.time().timeName()
// << " index:" << obr_.time().timeIndex() << endl;
}
void
Foam
::
partialWrite
::
end
()
{
//Pout<< "end at time " << obr_.time().timeName() << endl;
// Do nothing - only valid on write
}
void
Foam
::
partialWrite
::
write
()
{
//Pout<< "write at time " << obr_.time().timeName() << endl;
if
(
obr_
.
time
().
outputTime
())
{
// Above check so it can be used both with
// outputControl timeStep;
// outputInterval 1;
// or with
// outputControl outputTime;
writeInstance_
++
;
if
(
writeInstance_
==
writeInterval_
)
{
// Normal dump
writeInstance_
=
0
;
}
else
{
// Delete all but marked objects
IOobjectList
objects
(
obr_
,
obr_
.
time
().
timeName
());
forAllConstIter
(
HashPtrTable
<
IOobject
>
,
objects
,
iter
)
{
if
(
!
objectNames_
.
found
(
iter
()
->
name
()))
{
const
fileName
f
=
obr_
.
time
().
timePath
()
/
iter
()
->
name
();
//Pout<< " rm " << f << endl;
rm
(
f
);
}
}
}
}
}
// ************************************************************************* //
src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H
0 → 100644
View file @
d2979826
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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.
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::partialWrite
Description
Allows some fields/registered objects to be written more often than others.
Works in the opposite way: deletes at intermediate times all
but selected fields.
SourceFiles
partialWrite.C
IOpartialWrite.H
\*---------------------------------------------------------------------------*/
#ifndef partialWrite_H
#define partialWrite_H
#include
"pointFieldFwd.H"
#include
"HashSet.H"
#include
"DynamicList.H"
#include
"runTimeSelectionTables.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
// Forward declaration of classes
class
objectRegistry
;
class
dictionary
;
class
mapPolyMesh
;
/*---------------------------------------------------------------------------*\
Class partialWrite Declaration
\*---------------------------------------------------------------------------*/
class
partialWrite
{
protected:
// Private data
//- Name of this set of partialWrite
word
name_
;
const
objectRegistry
&
obr_
;
// Read from dictionary
//- Names of objects to dump always
HashSet
<
word
>
objectNames_
;
//- Write interval for restart dump
label
writeInterval_
;
//- Current dump instance. If reaches writeInterval do a full write.
label
writeInstance_
;
// Private Member Functions
//- Disallow default bitwise copy construct
partialWrite
(
const
partialWrite
&
);
//- Disallow default bitwise assignment
void
operator
=
(
const
partialWrite
&
);
public:
//- Runtime type information
TypeName
(
"partialWrite"
);
// Constructors
//- Construct for given objectRegistry and dictionary.
// Allow the possibility to load fields from files
partialWrite
(
const
word
&
name
,
const
objectRegistry
&
,
const
dictionary
&
,
const
bool
loadFromFiles
=
false
);
//- Destructor
virtual
~
partialWrite
();
// Member Functions
//- Return name of the partialWrite
virtual
const
word
&
name
()
const
{
return
name_
;
}
//- Read the partialWrite data
virtual
void
read
(
const
dictionary
&
);
//- Execute, currently does nothing
virtual
void
execute
();
//- Execute at the final time-loop, currently does nothing
virtual
void
end
();
//- Write the partialWrite
virtual
void
write
();
//- Update for changes of mesh
virtual
void
updateMesh
(
const
mapPolyMesh
&
)
{}
//- Update for changes of mesh
virtual
void
movePoints
(
const
pointField
&
)
{}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
src/postProcessing/functionObjects/IO/partialWrite/partialWriteFunctionObject.C
0 → 100644
View file @
d2979826
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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.
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include
"partialWriteFunctionObject.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
defineNamedTemplateTypeNameAndDebug
(
partialWriteFunctionObject
,
0
);
addToRunTimeSelectionTable
(
functionObject
,
partialWriteFunctionObject
,
dictionary
);
}
// ************************************************************************* //
src/postProcessing/functionObjects/IO/partialWrite/partialWriteFunctionObject.H
0 → 100644
View file @
d2979826
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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.
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Typedef
Foam::partialWriteFunctionObject
Description
FunctionObject wrapper around partialWrite to allow them to be
created via the functions list within controlDict.
SourceFiles
partialWriteFunctionObject.C
\*---------------------------------------------------------------------------*/
#ifndef partialWriteFunctionObject_H
#define partialWriteFunctionObject_H
#include
"partialWrite.H"
#include
"OutputFilterFunctionObject.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
typedef
OutputFilterFunctionObject
<
partialWrite
>
partialWriteFunctionObject
;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment