mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
- the earlier implementation of externally controlled lumped point motion (see merge request !120 and OpenFOAM-v1706 release notes) was conceived for the motion of simple structures such as buildings or simple beams. The motion controller was simply defined in terms of an orientation axis and divisions along that axis. To include complex structures, multiple motion controllers are defined in terms of support points and connectivity. The points can have additional node Ids associated with them, which makes it easier to map to/from FEA models. OLD system/lumpedPointMovement specification -------------------------------------------- //- Reference axis for the locations axis (0 0 1); //- Locations of the lumped points locations (0 0.05 .. 0.5); NEW system/lumpedPointMovement specification -------------------------------------------- // Locations of the lumped points points ( (0 0 0.00) (0 0 0.05) ... (0 0 0.50) ); //- Connectivity for motion controllers controllers { vertical { pointLabels (0 1 2 3 4 5 6 7 8 9 10); } } And the controller(s) must be associated with the given pointDisplacement patch. Eg, somePatch { type lumpedPointDisplacement; value uniform (0 0 0); controllers ( vertical ); // <-- NEW } TUT: adjust building motion tutorial - use new controllor definitions - replace building response file with executable - add updateControl in dynamicMeshDict for slowly moving structure
90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
/*--------------------------------*- C++ -*----------------------------------*\
|
|
| ========= | |
|
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
|
| \\ / O peration | Version: v2006 |
|
|
| \\ / A nd | Website: www.openfoam.com |
|
|
| \\/ M anipulation | |
|
|
\*---------------------------------------------------------------------------*/
|
|
FoamFile
|
|
{
|
|
version 2.0;
|
|
format ascii;
|
|
class dictionary;
|
|
location "system";
|
|
object lumpedPointMovement;
|
|
}
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#include "lumpedPointControllers"
|
|
|
|
//- Offset/shift for lumped points
|
|
origin (0.3 0.15 0);
|
|
|
|
//- Relaxation/scaling factor when updating positions
|
|
relax 1.0;
|
|
|
|
forces
|
|
{
|
|
//- The pressure name (default: p)
|
|
p p;
|
|
|
|
//- Reference pressure [Pa] (default: 0)
|
|
pRef 0;
|
|
|
|
//- Reference density for incompressible calculations (default: 1)
|
|
rhoRef 1;
|
|
}
|
|
|
|
|
|
communication
|
|
{
|
|
commsDir "comms";
|
|
|
|
log on;
|
|
|
|
waitInterval 1;
|
|
|
|
// Coupling frequency (default: 1)
|
|
//calcFrequency 1;
|
|
|
|
timeOut 100;
|
|
|
|
initByExternal false;
|
|
|
|
// Input file of positions/rotation, written by external application
|
|
inputName positions.in;
|
|
|
|
// Output file of forces, written by OpenFOAM
|
|
outputName forces.out;
|
|
|
|
// Log of points/forces/moments during the simulation
|
|
logName movement.log;
|
|
|
|
inputFormat dictionary;
|
|
outputFormat dictionary;
|
|
|
|
debugTable "<case>/output.txt";
|
|
|
|
// Scaling applied to values read from 'inputName'
|
|
scaleInput
|
|
{
|
|
//- Length multiplier (to metres). Eg 0.001 for [mm] -> [m]
|
|
length 1;
|
|
}
|
|
|
|
// Scaling applied to values written to 'outputName'
|
|
scaleOutput
|
|
{
|
|
//- Length multiplier (from metres). Eg 1000 for [m] -> [mm]
|
|
length 1;
|
|
|
|
//- Force units multiplier (from Pa)
|
|
force 1;
|
|
|
|
//- Moment units multiplier (from N.m)
|
|
moment 1;
|
|
}
|
|
}
|
|
|
|
// ************************************************************************* //
|