This repository has been archived on 2023-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
foam-extend4.1-coherent-io/tutorials/incompressible/icoDyMFoam/movingBlockRBF/RBFMotionFunction/kinematicModel.H
2011-05-27 12:42:47 +01:00

58 lines
1.6 KiB
C++

// Motion is a vectorField of all moving boundary points
vectorField motion(ms.movingPoints().size(), vector::zero);
vectorField oldPoints = ms.movingPoints();
scalar oldTime = time_.value() - time_.deltaT().value();
scalar curTime = time_.value();
scalar alphaOld = 0.0;
scalar alphaCur = 0.0;
// scalar rotationAmplitude_(0.707);
// scalar rotationFrequency_(0.0);
// vector translationFrequency_(0.0,0.25,0.0);
// vector translationAmplitude_(0.0,5.0,0.0);
// vector initialRotationOrigin_(0.0,0.0,0.0);
scalar pi=3.141592;
alphaOld = rotationAmplitude_*Foam::sin(2*pi*rotationFrequency_*oldTime);
alphaCur = rotationAmplitude_*Foam::sin(2*pi*rotationFrequency_*curTime);
vector translationVector
(
translationAmplitude_[0]*
(
Foam::sin(2*pi*translationFrequency_[0]*curTime)
- Foam::sin(2*pi*translationFrequency_[0]*oldTime)
),
translationAmplitude_[1]*
(
Foam::sin(2*pi*translationFrequency_[1]*curTime)
- Foam::sin(2*pi*translationFrequency_[1]*oldTime)
),
0
);
tensor RzOld
(
Foam::cos(alphaOld), -Foam::sin(alphaOld), 0,
Foam::sin(alphaOld), Foam::cos(alphaOld), 0,
0, 0, 1
);
tensor RzCur
(
Foam::cos(alphaCur), -Foam::sin(alphaCur), 0,
Foam::sin(alphaCur), Foam::cos(alphaCur), 0,
0, 0, 1
);
vectorField rotationField
(
(RzCur - RzOld)
& (statPoints_ - initialRotationOrigin_)
);
motion = translationVector + rotationField;