Angular damper rotational restraint
This commit is contained in:
parent
704829a15e
commit
e7fd51dc97
3 changed files with 230 additions and 0 deletions
|
@ -25,6 +25,7 @@ $(sixDOF)/sixDOFODE/constraints/translationalConstraints/periodicOscillation/per
|
|||
$(sixDOF)/sixDOFODE/restraints/translationalRestraints/translationalRestraint/translationalRestraint.C
|
||||
$(sixDOF)/sixDOFODE/restraints/translationalRestraints/linearSpringDamper/linearSpringDamper.C
|
||||
$(sixDOF)/sixDOFODE/restraints/rotationalRestraints/rotationalRestraint/rotationalRestraint.C
|
||||
$(sixDOF)/sixDOFODE/restraints/rotationalRestraints/angularDamper/angularDamper.C
|
||||
|
||||
$(sixDOF)/sixDOFODE/sixDOFODE.C
|
||||
$(sixDOF)/sixDOFODE/newSixDOFODE.C
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | foam-extend: Open Source CFD
|
||||
\\ / O peration | Version: 4.0
|
||||
\\ / A nd | Web: http://www.foam-extend.org
|
||||
\\/ M anipulation | For copyright notice see file Copyright
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of foam-extend.
|
||||
|
||||
foam-extend 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.
|
||||
|
||||
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "angularDamper.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
defineTypeNameAndDebug(angularDamper, 0);
|
||||
addToRunTimeSelectionTable
|
||||
(
|
||||
rotationalRestraint,
|
||||
angularDamper,
|
||||
word
|
||||
);
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::angularDamper::angularDamper
|
||||
(
|
||||
const word& name,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
rotationalRestraint(name, dict),
|
||||
angDampingCoeffs_(dict.lookup("angularDamping")),
|
||||
inGlobal_(dict.lookup("inGlobalCoordinateSystem"))
|
||||
{}
|
||||
|
||||
|
||||
Foam::autoPtr<Foam::rotationalRestraint>
|
||||
Foam::angularDamper::clone() const
|
||||
{
|
||||
return autoPtr<rotationalRestraint>
|
||||
(
|
||||
new angularDamper(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::angularDamper::~angularDamper()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
Foam::vector Foam::angularDamper::restrainingMoment
|
||||
(
|
||||
const scalar,
|
||||
const tensor& toRelative,
|
||||
const vector& omega
|
||||
) const
|
||||
{
|
||||
vector rm;
|
||||
|
||||
if (inGlobal_)
|
||||
{
|
||||
// Restraint given in global (inertial) coordinate system, transform it
|
||||
// to local
|
||||
rm = (toRelative & angDampingCoeffs_) & omega;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Restraint already in local (body) coordinate system
|
||||
rm = angDampingCoeffs_ & omega;
|
||||
}
|
||||
|
||||
return -rm;
|
||||
}
|
||||
|
||||
|
||||
void Foam::angularDamper::write(Ostream& os) const
|
||||
{
|
||||
os.writeKeyword("type") << tab << type()
|
||||
<< token::END_STATEMENT << nl << nl;
|
||||
|
||||
os.writeKeyword("angularDamping") << tab << angDampingCoeffs_
|
||||
<< token::END_STATEMENT << nl;
|
||||
os.writeKeyword("inGlobalCoordinateSystem") << tab << inGlobal_
|
||||
<< token::END_STATEMENT << endl;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,118 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | foam-extend: Open Source CFD
|
||||
\\ / O peration | Version: 4.0
|
||||
\\ / A nd | Web: http://www.foam-extend.org
|
||||
\\/ M anipulation | For copyright notice see file Copyright
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of foam-extend.
|
||||
|
||||
foam-extend 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.
|
||||
|
||||
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::angularDamper
|
||||
|
||||
Description
|
||||
Rotational restraint corresponding to angular damper defined by angular
|
||||
damping coefficients.
|
||||
|
||||
Author
|
||||
Vuko Vukcevic, FSB Zagreb. All rights reserved.
|
||||
|
||||
SourceFiles
|
||||
angularDamper.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef angularDamper_H
|
||||
#define angularDamper_H
|
||||
|
||||
#include "rotationalRestraint.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class angularDamper Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class angularDamper
|
||||
:
|
||||
public rotationalRestraint
|
||||
{
|
||||
// Private Data
|
||||
|
||||
//- Angular damping coefficients
|
||||
diagTensor angDampingCoeffs_;
|
||||
|
||||
//- Whether the damper is applied in global or local c. s.
|
||||
Switch inGlobal_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("angularDamper");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from dictionary
|
||||
angularDamper
|
||||
(
|
||||
const word& name,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct and return a clone
|
||||
virtual autoPtr<rotationalRestraint> clone() const;
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~angularDamper();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Restraint specific functions
|
||||
|
||||
//- Return restraining moment (in the global coordinate system)
|
||||
virtual vector restrainingMoment
|
||||
(
|
||||
const scalar t,
|
||||
const tensor& toRelative,
|
||||
const vector& omega
|
||||
) const;
|
||||
|
||||
|
||||
// I-O Functions and Operators
|
||||
|
||||
//- Virtual write function
|
||||
virtual void write(Ostream& os) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
Reference in a new issue