Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs 2010-02-05 17:20:02 +00:00
commit dd2b8a8200
6 changed files with 59 additions and 12 deletions

View File

@ -155,7 +155,9 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion()
: :
motionState_(), motionState_(),
restraints_(), restraints_(),
restraintNames_(),
constraints_(), constraints_(),
constraintNames_(),
maxConstraintIterations_(0), maxConstraintIterations_(0),
refCentreOfMass_(vector::zero), refCentreOfMass_(vector::zero),
momentOfInertia_(diagTensor::one*VSMALL), momentOfInertia_(diagTensor::one*VSMALL),
@ -188,7 +190,9 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
tau tau
), ),
restraints_(), restraints_(),
restraintNames_(),
constraints_(), constraints_(),
constraintNames_(),
maxConstraintIterations_(0), maxConstraintIterations_(0),
refCentreOfMass_(refCentreOfMass), refCentreOfMass_(refCentreOfMass),
momentOfInertia_(momentOfInertia), momentOfInertia_(momentOfInertia),
@ -201,7 +205,9 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion(const dictionary& dict)
: :
motionState_(dict), motionState_(dict),
restraints_(), restraints_(),
restraintNames_(),
constraints_(), constraints_(),
constraintNames_(),
maxConstraintIterations_(0), maxConstraintIterations_(0),
refCentreOfMass_(dict.lookupOrDefault("refCentreOfMass", centreOfMass())), refCentreOfMass_(dict.lookupOrDefault("refCentreOfMass", centreOfMass())),
momentOfInertia_(dict.lookup("momentOfInertia")), momentOfInertia_(dict.lookup("momentOfInertia")),
@ -221,7 +227,9 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
: :
motionState_(sDoFRBM.motionState()), motionState_(sDoFRBM.motionState()),
restraints_(sDoFRBM.restraints()), restraints_(sDoFRBM.restraints()),
restraintNames_(sDoFRBM.restraintNames()),
constraints_(sDoFRBM.constraints()), constraints_(sDoFRBM.constraints()),
constraintNames_(sDoFRBM.constraintNames()),
maxConstraintIterations_(sDoFRBM.maxConstraintIterations()), maxConstraintIterations_(sDoFRBM.maxConstraintIterations()),
refCentreOfMass_(sDoFRBM.refCentreOfMass()), refCentreOfMass_(sDoFRBM.refCentreOfMass()),
momentOfInertia_(sDoFRBM.momentOfInertia()), momentOfInertia_(sDoFRBM.momentOfInertia()),
@ -251,23 +259,29 @@ void Foam::sixDoFRigidBodyMotion::addRestraints
restraints_.setSize(restraintDict.size()); restraints_.setSize(restraintDict.size());
restraintNames_.setSize(restraintDict.size());
forAllConstIter(IDLList<entry>, restraintDict, iter) forAllConstIter(IDLList<entry>, restraintDict, iter)
{ {
if (iter().isDict()) if (iter().isDict())
{ {
Info<< "Adding restraint: " << iter().keyword() << endl; // Info<< "Adding restraint: " << iter().keyword() << endl;
restraints_.set restraints_.set
( (
i, i,
sixDoFRigidBodyMotionRestraint::New(iter().dict()) sixDoFRigidBodyMotionRestraint::New(iter().dict())
); );
}
i++; restraintNames_[i] = iter().keyword();
i++;
}
} }
restraints_.setSize(i); restraints_.setSize(i);
restraintNames_.setSize(i);
} }
} }
@ -285,25 +299,33 @@ void Foam::sixDoFRigidBodyMotion::addConstraints
constraints_.setSize(constraintDict.size()); constraints_.setSize(constraintDict.size());
constraintNames_.setSize(constraintDict.size());
forAllConstIter(IDLList<entry>, constraintDict, iter) forAllConstIter(IDLList<entry>, constraintDict, iter)
{ {
if (iter().isDict()) if (iter().isDict())
{ {
Info<< "Adding constraint: " << iter().keyword() << endl; // Info<< "Adding constraint: " << iter().keyword() << endl;
constraints_.set constraints_.set
( (
i++, i,
sixDoFRigidBodyMotionConstraint::New(iter().dict()) sixDoFRigidBodyMotionConstraint::New(iter().dict())
); );
constraintNames_[i] = iter().keyword();
i++;
} }
} }
constraints_.setSize(i); constraints_.setSize(i);
if (constraints_.size()) constraintNames_.setSize(i);
if (!constraints_.empty())
{ {
maxConstraintIters_ = readLabel maxConstraintIterations_ = readLabel
( (
constraintDict.lookup("maxIterations") constraintDict.lookup("maxIterations")
); );

View File

@ -91,9 +91,15 @@ class sixDoFRigidBodyMotion
//- Restraints on the motion //- Restraints on the motion
PtrList<sixDoFRigidBodyMotionRestraint> restraints_; PtrList<sixDoFRigidBodyMotionRestraint> restraints_;
//- Names of the restraints
wordList restraintNames_;
//- Constaints on the motion //- Constaints on the motion
PtrList<sixDoFRigidBodyMotionConstraint> constraints_; PtrList<sixDoFRigidBodyMotionConstraint> constraints_;
//- Names of the constraints
wordList constraintNames_;
//- Maximum number of iterations allowed to attempt to obey //- Maximum number of iterations allowed to attempt to obey
// constraints // constraints
label maxConstraintIterations_; label maxConstraintIterations_;
@ -146,10 +152,16 @@ class sixDoFRigidBodyMotion
inline const PtrList<sixDoFRigidBodyMotionRestraint>& inline const PtrList<sixDoFRigidBodyMotionRestraint>&
restraints() const; restraints() const;
//- Return access to the restraintNames
inline const wordList& restraintNames() const;
//- Return access to the constraints //- Return access to the constraints
inline const PtrList<sixDoFRigidBodyMotionConstraint>& inline const PtrList<sixDoFRigidBodyMotionConstraint>&
constraints() const; constraints() const;
//- Return access to the constraintNames
inline const wordList& constraintNames() const;
//- Return access to the maximum allowed number of //- Return access to the maximum allowed number of
// constraint iterations // constraint iterations
inline label maxConstraintIterations() const; inline label maxConstraintIterations() const;

View File

@ -34,8 +34,8 @@ Foam::sixDoFRigidBodyMotionConstraint::New(const dictionary& sDoFRBMCDict)
word sixDoFRigidBodyMotionConstraintTypeName = word sixDoFRigidBodyMotionConstraintTypeName =
sDoFRBMCDict.lookup("sixDoFRigidBodyMotionConstraint"); sDoFRBMCDict.lookup("sixDoFRigidBodyMotionConstraint");
Info<< "Selecting sixDoFRigidBodyMotionConstraint function " // Info<< "Selecting sixDoFRigidBodyMotionConstraint function "
<< sixDoFRigidBodyMotionConstraintTypeName << endl; // << sixDoFRigidBodyMotionConstraintTypeName << endl;
dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find dictionaryConstructorTablePtr_->find

View File

@ -107,6 +107,12 @@ Foam::sixDoFRigidBodyMotion::restraints() const
} }
inline const Foam::wordList& Foam::sixDoFRigidBodyMotion::restraintNames() const
{
return restraintNames_;
}
inline const Foam::PtrList<Foam::sixDoFRigidBodyMotionConstraint>& inline const Foam::PtrList<Foam::sixDoFRigidBodyMotionConstraint>&
Foam::sixDoFRigidBodyMotion::constraints() const Foam::sixDoFRigidBodyMotion::constraints() const
{ {
@ -114,6 +120,13 @@ Foam::sixDoFRigidBodyMotion::constraints() const
} }
inline const Foam::wordList&
Foam::sixDoFRigidBodyMotion::constraintNames() const
{
return constraintNames_;
}
inline Foam::label Foam::sixDoFRigidBodyMotion::maxConstraintIterations() const inline Foam::label Foam::sixDoFRigidBodyMotion::maxConstraintIterations() const
{ {
return maxConstraintIterations_; return maxConstraintIterations_;

View File

@ -69,7 +69,7 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
{ {
dictionary constraintsDict; dictionary constraintsDict;
constraintsDict.add("maxIterations", maxConstraintIters_); constraintsDict.add("maxIterations", maxConstraintIterations_);
forAll(constraints_, rI) forAll(constraints_, rI)
{ {

View File

@ -34,8 +34,8 @@ Foam::sixDoFRigidBodyMotionRestraint::New(const dictionary& sDoFRBMRDict)
word sixDoFRigidBodyMotionRestraintTypeName = word sixDoFRigidBodyMotionRestraintTypeName =
sDoFRBMRDict.lookup("sixDoFRigidBodyMotionRestraint"); sDoFRBMRDict.lookup("sixDoFRigidBodyMotionRestraint");
Info<< "Selecting sixDoFRigidBodyMotionRestraint function " // Info<< "Selecting sixDoFRigidBodyMotionRestraint function "
<< sixDoFRigidBodyMotionRestraintTypeName << endl; // << sixDoFRigidBodyMotionRestraintTypeName << endl;
dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find dictionaryConstructorTablePtr_->find