From c0b38033ea919661f8a1f6bf6788a50e7798e334 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 23 Jun 2017 14:43:09 +0100 Subject: [PATCH] ENH: integration of lumpedPointMotion - This provides a mechanism for moving mesh patches based on external input (eg, from an external structures solver). The patch points are influenced by the position and rotation of the lumped points. BC: lumpedPointDisplacementPointPatchVectorField Controlling mechanisms: - externalCoupler for coordinating the master/slave - lumpedPointMovement manages the patch-points motion, but also for extracting forces/moments - lumpedPointState represents the positions/rotations of the controlling points Utils: - lumpedPointZones diagnostic for visualizing the correspondence between controlling points and patch faces - lumpedPointMovement Test that the patch motion is as desired without invoking moveMesh. With the -slave option, return items from a precalculated table for the lumpedPointDisplacementPointPatchVectorField BC. --- applications/test/externalCoupler/Make/files | 3 + .../test/externalCoupler/Make/options | 7 + .../externalCoupler/Test-externalCoupler.C | 97 +++ .../lumped/lumpedPointForces/Make/files | 3 + .../lumped/lumpedPointForces/Make/options | 10 + .../lumpedPointForces/lumpedPointForces.C | 177 ++++ .../lumped/lumpedPointMovement/Make/files | 3 + .../lumped/lumpedPointMovement/Make/options | 10 + .../lumpedPointMovement/lumpedPointMovement.C | 263 ++++++ .../lumped/lumpedPointZones/Make/files | 3 + .../lumped/lumpedPointZones/Make/options | 10 + .../lumpedPointZones/lumpedPointZones.C | 107 +++ src/Allwmake | 1 + src/lumpedPointMotion/Make/files | 13 + src/lumpedPointMotion/Make/options | 10 + src/lumpedPointMotion/externalCoupler.C | 309 +++++++ src/lumpedPointMotion/externalCoupler.H | 207 +++++ ...edPointDisplacementPointPatchVectorField.C | 285 +++++++ ...edPointDisplacementPointPatchVectorField.H | 200 +++++ src/lumpedPointMotion/lumpedPointIOMovement.C | 142 ++++ src/lumpedPointMotion/lumpedPointIOMovement.H | 133 +++ src/lumpedPointMotion/lumpedPointMovement.C | 790 ++++++++++++++++++ src/lumpedPointMotion/lumpedPointMovement.H | 399 +++++++++ src/lumpedPointMotion/lumpedPointMovementI.H | 162 ++++ .../lumpedPointMovementWriter.C | 447 ++++++++++ src/lumpedPointMotion/lumpedPointState.C | 362 ++++++++ src/lumpedPointMotion/lumpedPointState.H | 194 +++++ src/lumpedPointMotion/lumpedPointStateI.H | 67 ++ .../lumpedPointStateWriter.C | 326 ++++++++ src/lumpedPointMotion/lumpedPointTools.C | 161 ++++ src/lumpedPointMotion/lumpedPointTools.H | 86 ++ 31 files changed, 4987 insertions(+) create mode 100644 applications/test/externalCoupler/Make/files create mode 100644 applications/test/externalCoupler/Make/options create mode 100644 applications/test/externalCoupler/Test-externalCoupler.C create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointForces/Make/files create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointForces/Make/options create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointForces/lumpedPointForces.C create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointMovement/Make/files create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointMovement/Make/options create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointMovement/lumpedPointMovement.C create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointZones/Make/files create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointZones/Make/options create mode 100644 applications/utilities/postProcessing/lumped/lumpedPointZones/lumpedPointZones.C create mode 100644 src/lumpedPointMotion/Make/files create mode 100644 src/lumpedPointMotion/Make/options create mode 100644 src/lumpedPointMotion/externalCoupler.C create mode 100644 src/lumpedPointMotion/externalCoupler.H create mode 100644 src/lumpedPointMotion/lumpedPointDisplacementPointPatchVectorField.C create mode 100644 src/lumpedPointMotion/lumpedPointDisplacementPointPatchVectorField.H create mode 100644 src/lumpedPointMotion/lumpedPointIOMovement.C create mode 100644 src/lumpedPointMotion/lumpedPointIOMovement.H create mode 100644 src/lumpedPointMotion/lumpedPointMovement.C create mode 100644 src/lumpedPointMotion/lumpedPointMovement.H create mode 100644 src/lumpedPointMotion/lumpedPointMovementI.H create mode 100644 src/lumpedPointMotion/lumpedPointMovementWriter.C create mode 100644 src/lumpedPointMotion/lumpedPointState.C create mode 100644 src/lumpedPointMotion/lumpedPointState.H create mode 100644 src/lumpedPointMotion/lumpedPointStateI.H create mode 100644 src/lumpedPointMotion/lumpedPointStateWriter.C create mode 100644 src/lumpedPointMotion/lumpedPointTools.C create mode 100644 src/lumpedPointMotion/lumpedPointTools.H diff --git a/applications/test/externalCoupler/Make/files b/applications/test/externalCoupler/Make/files new file mode 100644 index 0000000000..0e55c301e2 --- /dev/null +++ b/applications/test/externalCoupler/Make/files @@ -0,0 +1,3 @@ +Test-externalCoupler.C + +EXE = $(FOAM_USER_APPBIN)/Test-externalCoupler diff --git a/applications/test/externalCoupler/Make/options b/applications/test/externalCoupler/Make/options new file mode 100644 index 0000000000..e2c645cc88 --- /dev/null +++ b/applications/test/externalCoupler/Make/options @@ -0,0 +1,7 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/lumpedPointMotion/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -llumpedPointMotion diff --git a/applications/test/externalCoupler/Test-externalCoupler.C b/applications/test/externalCoupler/Test-externalCoupler.C new file mode 100644 index 0000000000..90cd38d07c --- /dev/null +++ b/applications/test/externalCoupler/Test-externalCoupler.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 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 . + +Application + Test-externalCoupler + +Description + Test of master/slave communication etc. +\*---------------------------------------------------------------------------*/ + +#include "argList.H" +#include "externalCoupler.H" + +using namespace Foam; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// Main program: + +int main(int argc, char *argv[]) +{ + argList::noParallel(); + argList::addOption("max", "N", "max number of calls (default: 1000)"); + argList::addBoolOption("slave", "run as slave"); + + #include "setRootCase.H" + + const label maxCount = args.optionLookupOrDefault