mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: rotorDiskSource - local force was not transformed into global frame correctly - mantis #1290
This commit is contained in:
@ -234,6 +234,29 @@ void Foam::fv::rotorDiskSource::setFaceArea(vector& axis, const bool correct)
|
|||||||
reduce(n, sumOp<vector>());
|
reduce(n, sumOp<vector>());
|
||||||
axis = n/mag(n);
|
axis = n/mag(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
volScalarField area
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
name_ + ":area",
|
||||||
|
mesh_.time().timeName(),
|
||||||
|
mesh_,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
mesh_,
|
||||||
|
dimensionedScalar("0", dimArea, 0)
|
||||||
|
);
|
||||||
|
UIndirectList<scalar>(area.internalField(), cells_) = area_;
|
||||||
|
|
||||||
|
Info<< type() << ": " << name_ << " writing field " << area.name()
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
area.write();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -317,7 +340,8 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
|
|||||||
(
|
(
|
||||||
mesh_,
|
mesh_,
|
||||||
axis,
|
axis,
|
||||||
origin
|
origin,
|
||||||
|
cells_
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -339,7 +363,8 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
|
|||||||
(
|
(
|
||||||
mesh_,
|
mesh_,
|
||||||
axis,
|
axis,
|
||||||
origin
|
origin,
|
||||||
|
cells_
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -503,10 +528,6 @@ void Foam::fv::rotorDiskSource::calculate
|
|||||||
scalar AOAmin = GREAT;
|
scalar AOAmin = GREAT;
|
||||||
scalar AOAmax = -GREAT;
|
scalar AOAmax = -GREAT;
|
||||||
|
|
||||||
tmp<vectorField> tUcf(localAxesRotation_->transform(U));
|
|
||||||
|
|
||||||
vectorField& Ucf = tUcf();
|
|
||||||
|
|
||||||
forAll(cells_, i)
|
forAll(cells_, i)
|
||||||
{
|
{
|
||||||
if (area_[i] > ROOTVSMALL)
|
if (area_[i] > ROOTVSMALL)
|
||||||
@ -516,7 +537,7 @@ void Foam::fv::rotorDiskSource::calculate
|
|||||||
const scalar radius = x_[i].x();
|
const scalar radius = x_[i].x();
|
||||||
|
|
||||||
// velocity in local cylindrical reference frame
|
// velocity in local cylindrical reference frame
|
||||||
vector Uc = Ucf[i];
|
vector Uc = localAxesRotation_->transform(U[cellI], i);
|
||||||
|
|
||||||
// transform from rotor cylindrical into local coning system
|
// transform from rotor cylindrical into local coning system
|
||||||
Uc = R_[i] & Uc;
|
Uc = R_[i] & Uc;
|
||||||
@ -581,7 +602,7 @@ void Foam::fv::rotorDiskSource::calculate
|
|||||||
localForce = invR_[i] & localForce;
|
localForce = invR_[i] & localForce;
|
||||||
|
|
||||||
// convert force to global cartesian co-ordinate system
|
// convert force to global cartesian co-ordinate system
|
||||||
force[cellI] = coordSys_.globalVector(localForce);
|
force[cellI] = localAxesRotation_->invTransform(localForce, i);
|
||||||
|
|
||||||
if (divideVolume)
|
if (divideVolume)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user