Permalink
Browse files

foamNewFunctionObject: script to create template code for a new funct…

…ion object

Run foamNewFunctionObject -h for details
  • Loading branch information...
1 parent 44c73bf commit 59f7f1ef0e0d23b989685f38ccc898c5832b7f88 Chris Greenshields committed Mar 22, 2016
@@ -0,0 +1,83 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
+# \\/ 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/>.
+#
+# Script
+# foamNewFunctionObject
+#
+# Description
+# Create directory with source and compilation files for a new function
+# object
+#
+#------------------------------------------------------------------------------
+Script=${0##*/}
+DIR="$FOAM_ETC/codeTemplates/functionObject"
+
+usage() {
+ while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+ cat<<USAGE
+Usage: $Script [-h | -help] <functionObjectName>
+
+* Create directory with source and compilation files for a new function object
+ <functionObjectName> (dir)
+ - <functionObjectName>.H
+ - <functionObjectName>.C
+ - <functionObjectName>FunctionObject.H
+ - <functionObjectName>FunctionObject.C
+ - IO<functionObjectName>.H
+ - Make (dir)
+ - files
+ - options
+ Compiles a library named lib<functionObjectName>FunctionObject.so in
+ \$FOAM_USER_LIBBIN:
+ $FOAM_USER_LIBBIN
+USAGE
+ exit 1
+}
+
+case "$1" in
+(-h | -help)
+ usage
+ ;;
+-*)
+ usage "$1 is not a valid option/filename"
+ ;;
+esac
+
+[ "$#" -eq 1 ] || usage "Wrong number of arguments"
+[ -d "$1" ] && usage "$1 directory already exists, aborting..."
+
+NAME=$1
+
+echo "Creating function object code directory $NAME" && mkdir $NAME
+for F in $(ls ${DIR}/*.*)
+do
+ FILE=$(basename $F | sed "s#FUNCTIONOBJECT#${NAME}#g")
+ sed "s#FUNCTIONOBJECT#${NAME}#g" ${F} > ${NAME}/${FILE}
+done
+
+echo "Creating Make subdirectory" && mkdir $NAME/Make
+sed "s#FUNCTIONOBJECT#${NAME}#g" ${DIR}/Make/files > $NAME/Make/files
+cp ${DIR}/Make/options $NAME/Make
+
+#------------------------------------------------------------------------------
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
+ \\/ 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 "FUNCTIONOBJECT.H"
+#include "dictionary.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+defineTypeNameAndDebug(FUNCTIONOBJECT, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::FUNCTIONOBJECT::FUNCTIONOBJECT
+(
+ const word& name,
+ const objectRegistry& obr,
+ const dictionary& dict,
+ const bool loadFromFiles
+)
+:
+ name_(name),
+ obr_(obr),
+ wordData_(dict.lookupOrDefault<word>("wordData", "defaultWord")),
+ scalarData_(readScalar(dict.lookup("scalarData"))),
+ labelData_(readLabel(dict.lookup("labelData")))
+{
+ read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::FUNCTIONOBJECT::~FUNCTIONOBJECT()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+void Foam::FUNCTIONOBJECT::read(const dictionary& dict)
+{
+ dict.readIfPresent("wordData", wordData_);
+ dict.lookup("scalarData") >> scalarData_;
+ dict.lookup("labelData") >> labelData_;
+}
+
+
+void Foam::FUNCTIONOBJECT::execute()
+{
+ // Do nothing - only valid on write
+}
+
+
+void Foam::FUNCTIONOBJECT::end()
+{
+ // Do nothing - only valid on write
+}
+
+
+void Foam::FUNCTIONOBJECT::timeSet()
+{
+ // Do nothing - only valid on write
+}
+
+
+void Foam::FUNCTIONOBJECT::write()
+{
+}
+
+
+// ************************************************************************* //
@@ -0,0 +1,176 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
+ \\/ 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::FUNCTIONOBJECT
+
+Group
+
+Description
+ This function object...
+
+ Example of function object specification:
+ \verbatim
+ FUNCTIONOBJECT1
+ {
+ type FUNCTIONOBJECT;
+ functionObjectLibs ("libFUNCTIONOBJECTFunctionObject.so");
+ ...
+ wordData someWord;
+ scalarData 1.0;
+ labelData 1;
+ }
+ \endverbatim
+
+ \heading Function object usage
+ \table
+ Property | Description | Required | Default value
+ type | type name: FUNCTIONOBJECT | yes |
+ wordData | some word option... | no | defaultWord
+ scalarData | some scalar value... | yes |
+ labelData | some label value... | yes |
+ \endtable
+
+SourceFiles
+ FUNCTIONOBJECT.C
+ IOFUNCTIONOBJECT.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef FUNCTIONOBJECT_H
+#define FUNCTIONOBJECT_H
+
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class polyMesh;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+ Class FUNCTIONOBJECT Declaration
+\*---------------------------------------------------------------------------*/
+
+class FUNCTIONOBJECT
+{
+ // Private data
+
+ //- Name of this set of FUNCTIONOBJECT
+ word name_;
+
+ //- Refererence to Db
+ const objectRegistry& obr_;
+
+ // Read from dictionary
+
+ //- word
+ word wordData_;
+
+ //- scalar
+ scalar scalarData_;
+
+ //- label
+ label labelData_;
+
+
+ // Private Member Functions
+
+
+ //- Disallow default bitwise copy construct
+ FUNCTIONOBJECT(const FUNCTIONOBJECT&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const FUNCTIONOBJECT&);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("FUNCTIONOBJECT");
+
+
+ // Constructors
+
+ //- Construct for given objectRegistry and dictionary.
+ // Allow the possibility to load fields from files
+ FUNCTIONOBJECT
+ (
+ const word& name,
+ const objectRegistry&,
+ const dictionary&,
+ const bool loadFromFiles = false
+ );
+
+
+ //- Destructor
+ virtual ~FUNCTIONOBJECT();
+
+
+ // Member Functions
+
+ //- Return name of the FUNCTIONOBJECT
+ virtual const word& name() const
+ {
+ return name_;
+ }
+
+ //- Read the FUNCTIONOBJECT 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();
+
+ //- Called when time was set at the end of the Time::operator++
+ virtual void timeSet();
+
+ //- Write the FUNCTIONOBJECT
+ virtual void write();
+
+ //- Update for changes of mesh
+ virtual void updateMesh(const mapPolyMesh&)
+ {}
+
+ //- Update for changes of mesh
+ virtual void movePoints(const polyMesh&)
+ {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
Oops, something went wrong.

0 comments on commit 59f7f1e

Please sign in to comment.