本文整理汇总了C++中Species::speciesDihedral方法的典型用法代码示例。如果您正苦于以下问题:C++ Species::speciesDihedral方法的具体用法?C++ Species::speciesDihedral怎么用?C++ Species::speciesDihedral使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Species
的用法示例。
在下文中一共展示了Species::speciesDihedral方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initializeSpeciesDihedrals
/*
* Initialize all Dihedral objects for Molecules of one Species.
*
* This functions assigns pointers to Atoms and Dihedral types ids within
* a contiguous block of Dihedral objects, and sets a pointer in each
* Molecule to the first Dihedral in the associated block.
*/
void Simulation::initializeSpeciesDihedrals(int iSpecies)
{
Species* speciesPtr = 0;
Molecule *moleculePtr = 0;
Dihedral *dihedralPtr = 0;
Atom *firstAtomPtr, *atom0Ptr, *atom1Ptr, *atom2Ptr, *atom3Ptr;
int iMol, iDihedral, atom0Id, atom1Id, atom2Id, atom3Id, type;
int capacity, nDihedral;
speciesPtr = &species(iSpecies);
capacity = speciesPtr->capacity();
nDihedral = speciesPtr->nDihedral();
// Initialize pointers before loop
moleculePtr = &molecules_[firstMoleculeIds_[iSpecies]];
dihedralPtr = &dihedrals_[firstDihedralIds_[iSpecies]];
// Loop over molecules in Species
for (iMol = 0; iMol < capacity; ++iMol) {
firstAtomPtr = &(moleculePtr->atom(0));
moleculePtr->setFirstDihedral(*dihedralPtr);
moleculePtr->setNDihedral(nDihedral);
if (nDihedral > 0) {
// Create dihedrals for a molecule
for (iDihedral = 0; iDihedral < nDihedral; ++iDihedral) {
// Get local indices for atoms and dihedral type
atom0Id = speciesPtr->speciesDihedral(iDihedral).atomId(0);
atom1Id = speciesPtr->speciesDihedral(iDihedral).atomId(1);
atom2Id = speciesPtr->speciesDihedral(iDihedral).atomId(2);
atom3Id = speciesPtr->speciesDihedral(iDihedral).atomId(3);
type = speciesPtr->speciesDihedral(iDihedral).typeId();
// Calculate atom pointers
atom0Ptr = firstAtomPtr + atom0Id;
atom1Ptr = firstAtomPtr + atom1Id;
atom2Ptr = firstAtomPtr + atom2Id;
atom3Ptr = firstAtomPtr + atom3Id;
// Set fields of the Dihedral object
dihedralPtr->setAtom(0, *atom0Ptr);
dihedralPtr->setAtom(1, *atom1Ptr);
dihedralPtr->setAtom(2, *atom2Ptr);
dihedralPtr->setAtom(3, *atom3Ptr);
dihedralPtr->setTypeId(type);
++dihedralPtr;
}
}
++moleculePtr;
}
}