From e356211140bd2d80617c65f4b8dc649297a3ca8b Mon Sep 17 00:00:00 2001 From: Chris Greenshields <http://cfd.direct> Date: Fri, 4 Dec 2015 14:20:23 +0000 Subject: [PATCH] foamNewApp: script to create template for a new application Creates a directory containing source .C file and Make directory Will deprecate foamNewSource with App argument in due course --- bin/foamNewApp | 73 ++++++++++++++++++++++++++++++ etc/codeTemplates/app/Make/files | 3 ++ etc/codeTemplates/app/Make/options | 7 +++ etc/codeTemplates/app/app.C | 47 +++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100755 bin/foamNewApp create mode 100644 etc/codeTemplates/app/Make/files create mode 100644 etc/codeTemplates/app/Make/options create mode 100644 etc/codeTemplates/app/app.C diff --git a/bin/foamNewApp b/bin/foamNewApp new file mode 100755 index 00000000000..b2f664817bd --- /dev/null +++ b/bin/foamNewApp @@ -0,0 +1,73 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2015 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 +# foamNewApp +# +# Description +# Create directory with source and compilation files for a new application +# +#------------------------------------------------------------------------------ +Script=${0##*/} +DIR="$FOAM_ETC/codeTemplates/app" + +usage() { + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat<<USAGE +Usage: $Script [-h | -help] <applicationName> + +* Create directory with source and compilation files for a new application + <applicationName> (dir) + - <applicationName>.C + - Make (dir) + - files + - options + Compiles an executable named <applicationName> in \$FOAM_USER_APPBIN: + $FOAM_USER_APPBIN +USAGE + exit 1 +} + +case "$1" in +(-h | -help) + usage + ;; +-*) + usage "$1 is not a valid filename" + ;; +esac + +[ "$#" -eq 1 ] || usage "Wrong number of arguments" +[ -d "$1" ] && usage "$1 directory already exists, aborting..." + +NAME=$1 + +echo "Creating application code directory $NAME" && mkdir $NAME +sed "s#NAME#${NAME}#g" ${DIR}/app.C > $NAME/$NAME.C + +echo "Creating Make subdirectory" && mkdir $NAME/Make +sed "s#NAME#${NAME}#g" ${DIR}/Make/files > $NAME/Make/files +cp ${DIR}/Make/options $NAME/Make + +#------------------------------------------------------------------------------ diff --git a/etc/codeTemplates/app/Make/files b/etc/codeTemplates/app/Make/files new file mode 100644 index 00000000000..bfe94ae06e9 --- /dev/null +++ b/etc/codeTemplates/app/Make/files @@ -0,0 +1,3 @@ +NAME.C + +EXE = $(FOAM_USER_APPBIN)/NAME diff --git a/etc/codeTemplates/app/Make/options b/etc/codeTemplates/app/Make/options new file mode 100644 index 00000000000..a3ae8da8331 --- /dev/null +++ b/etc/codeTemplates/app/Make/options @@ -0,0 +1,7 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +LIB_LIBS = \ + -lfiniteVolume \ + -lmeshTools diff --git a/etc/codeTemplates/app/app.C b/etc/codeTemplates/app/app.C new file mode 100644 index 00000000000..e143dcdf22f --- /dev/null +++ b/etc/codeTemplates/app/app.C @@ -0,0 +1,47 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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/>. + +Application + NAME + +Description + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + #include "createTime.H" + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nEnd\n" << endl; + return 0; +} + + +// ************************************************************************* // -- GitLab