Biomechanical Joint Model
 Author: Anderson Maciel

COME_MoleculesTissue Class Reference

#include <comemoleculestissue.h>

Inherits COME.

Inheritance diagram for COME_MoleculesTissue:

Inheritance graph
[legend]
Collaboration diagram for COME_MoleculesTissue:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 COME_MoleculesTissue ()
virtual ~COME_MoleculesTissue ()
list< COME_Molecule * > * getShape ()
void setRadiusAverage (double radiusN)
void setMass (double massN)
void updateAverageNumConnections ()
void addMolecule (COME_Molecule *moleculeN)
void addMolecule (COME_Molecule *moleculeN, double minDdist)
bool updateEuler (double timestep, double simClock, string fileNameToSaveDeformation)
bool update (double timestep, double simClock, string fileNameToSaveDeformation)
void initForSimulation ()
void makeAllLocalFrames ()
void flow (double timestep)
COME_MoleculenearestTo (COME_Point3D point)
void getEnvelop (COME_Point3D &mins, COME_Point3D &maxs)
double getMass ()
int getAverageNumConnections ()
double getRadiusAverage ()
COME_Point3D getMassCenter ()
COME_Force getGPUForce (int i)
void recalculateAllSpringConstants (int mode, double currTime)
void setSurfaceMolecules ()
 Works only for full diagonals lattice models :-(.
bool isTooClose (COME_Point3D currentPoint, double distance)
void setMoleculesMaterial (COME_Material *newMaterial)
void setMoleculesDensity (double densityN)
void setMoleculesElasticity (double elasticityN)
void setMoleculesFrictionConst (double frictionN)
COME_MaterialgetMoleculesMaterial ()
double getDensity ()
double getElasticity ()
double getFrictionConst ()
double getTopStress ()
void checkInitialPositions ()
void resetInitialPositions ()
void loadDeformationFile (string fileName)
void saveDeformationFile (int fileMode)
void scale (double factorx, double factory, double factorz)
void translate (double dx, double dy, double dz)
void rotate (double rx, double ry, double rz)
void transform (COME_Matrix M)
void transform (COME_Matrix M, COME_Matrix MP)
void scaleNominals (double factor)

Public Attributes

COME_MoleculesChain chain
vector< COME_Point3D * > deformation
vector< double * > deformationStresses
vector< double * > deformationStrains

Protected Attributes

list< COME_Molecule * > shape
double radiusAverage
double mass
int averageNumConnectionsPerMolecule
float accu
double simTime
COME_Vector3Ddymv
COME_Vector3Ddyma
COME_Vector3Ddytv
COME_Vector3Ddyta
COME_Vector3Dytp
COME_Vector3Dytv
COME_Vector3DgpuForces

Detailed Description

This class implements a bio tissue by means of a molecular system.

Definition at line 45 of file comemoleculestissue.h.


Constructor & Destructor Documentation

COME_MoleculesTissue::COME_MoleculesTissue  ) 
 

Default constructor.

Definition at line 54 of file comemoleculestissue.cpp.

References accu, averageNumConnectionsPerMolecule, dyma, dymv, dyta, dytv, gpuForces, mass, COME::parent, radiusAverage, ytp, and ytv.

COME_MoleculesTissue::~COME_MoleculesTissue  )  [virtual]
 

Definition at line 70 of file comemoleculestissue.cpp.

References dyma, dymv, dyta, dytv, gpuForces, shape, ytp, and ytv.


Member Function Documentation

void COME_MoleculesTissue::addMolecule COME_Molecule moleculeN,
double  minDist
 

This method adds moleculeN to the list o molecules of this cartilage. Connections are created automatically according to positions and radius. If some existent molecule is at a distance smaller than minDist DON'T ADD

Definition at line 273 of file comemoleculestissue.cpp.

References COME_Molecule::createLink(), COME_SubSpaceElement::getPosition(), COME_Molecule::getRadius(), and shape.

Here is the call graph for this function:

void COME_MoleculesTissue::addMolecule COME_Molecule moleculeN  ) 
 

This method adds moleculeN to the list o molecules of this cartilage. Connections are created automatically according to positions and radius.

Definition at line 240 of file comemoleculestissue.cpp.

References COME_Molecule::createLink(), COME_SubSpaceElement::getPosition(), COME_Molecule::getRadius(), COME::parent, and shape.

Here is the call graph for this function:

void COME_MoleculesTissue::checkInitialPositions  ) 
 

Save current position of all molecules as initial such that it's possible to reset later.

Definition at line 1167 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_Mechatester::clickedCheck().

void COME_MoleculesTissue::flow double  timestep  ) 
 

Definition at line 896 of file comemoleculestissue.cpp.

References M_PI, and shape.

int COME_MoleculesTissue::getAverageNumConnections  ) 
 

Definition at line 120 of file comemoleculestissue.cpp.

References averageNumConnectionsPerMolecule.

double COME_MoleculesTissue::getDensity  ) 
 

Definition at line 196 of file comemoleculestissue.cpp.

References shape.

double COME_MoleculesTissue::getElasticity  ) 
 

Definition at line 202 of file comemoleculestissue.cpp.

References shape.

void COME_MoleculesTissue::getEnvelop COME_Point3D mins,
COME_Point3D maxs
 

This method inspects the positions of all molecules within this organ in the global coordinate system to calculate the minimum and maximum corners of the rectangular organ envelop.

Definition at line 550 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_MoleculesCartilage::getEnvelop(), and COME_MoleculesBone::getEnvelop().

double COME_MoleculesTissue::getFrictionConst  ) 
 

Definition at line 208 of file comemoleculestissue.cpp.

References shape.

COME_Force COME_MoleculesTissue::getGPUForce int  i  ) 
 

Definition at line 227 of file comemoleculestissue.cpp.

References gpuForces.

double COME_MoleculesTissue::getMass  ) 
 

This method returns the total mass of this tissue calculated by adding masses of all molecules.

Definition at line 619 of file comemoleculestissue.cpp.

References mass.

Referenced by COME_MoleculesBone::derivs().

COME_Point3D COME_MoleculesTissue::getMassCenter  ) 
 

This method calculates the center of mass for this bone based on its molecules distribution and density. Then it stores it in the massCenter attribute.

Definition at line 629 of file comemoleculestissue.cpp.

References mass, and shape.

Referenced by COME_MoleculesBone::updateMassCenter().

COME_Material * COME_MoleculesTissue::getMoleculesMaterial  ) 
 

Returns the material of the first molecule of the tissue. Attention, a tissue may have molecules of different materials.

Definition at line 190 of file comemoleculestissue.cpp.

References shape.

double COME_MoleculesTissue::getRadiusAverage  ) 
 

Definition at line 114 of file comemoleculestissue.cpp.

References radiusAverage.

Referenced by COME_MoleculesCartilage::updateSurface(), and COME_MoleculesBone::updateSurface().

list< COME_Molecule * > * COME_MoleculesTissue::getShape  ) 
 

Definition at line 102 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_Mesh::anchorToMolecules(), COME_Mechatester::clickedStartSim(), COME_Collide::detectContactsHybrid(), COME_MoleculesCartilage::initializeJacobian(), loadDeformationFile(), COME_MoleculesCartilage::respondCollision(), and COME_Mechatester::updateClampIntersections().

double COME_MoleculesTissue::getTopStress  ) 
 

Definition at line 214 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_BioStructure::getTopStress().

void COME_MoleculesTissue::initForSimulation  ) 
 

Definition at line 87 of file comemoleculestissue.cpp.

References dyma, dymv, dyta, dytv, gpuForces, shape, ytp, and ytv.

Referenced by update(), and updateEuler().

bool COME_MoleculesTissue::isTooClose COME_Point3D  currentPoint,
double  distance
 

Test if currentPoint is closer than a distance from any of the molecules of this tissue.

Definition at line 130 of file comemoleculestissue.cpp.

References shape.

void COME_MoleculesTissue::loadDeformationFile string  fileName  ) 
 

This method loads a binary file containing only double variables. These are xyz coordinates of numberOfMolecules points in n instants of time.

Definition at line 749 of file comemoleculestissue.cpp.

References deformation, deformationStrains, deformationStresses, and getShape().

Here is the call graph for this function:

void COME_MoleculesTissue::makeAllLocalFrames  ) 
 

Calls COME_Molecule::makeLocalFrame to update the local reference frame for skinning of each molecule.

Definition at line 1152 of file comemoleculestissue.cpp.

References COME::flagSkinning, and shape.

Referenced by COME_BioStructure::rotate(), COME_BioStructure::scale(), and COME_BioStructure::translate().

COME_Molecule * COME_MoleculesTissue::nearestTo COME_Point3D  point  ) 
 

This method returns the molecule of this organ which is the nearest of the given point.

Definition at line 597 of file comemoleculestissue.cpp.

References shape, and COME_Point3D::vpDistance().

Here is the call graph for this function:

void COME_MoleculesTissue::recalculateAllSpringConstants int  mode,
double  currTime
 

This method start procedure to calculate all spring constants of this tissue based in Young's modulus of their neighbouring molecules.

Definition at line 653 of file comemoleculestissue.cpp.

References chain, COME_MoleculesChain::currentLength, COME_MoleculesChain::force, COME_MoleculesChain::lastLength, COME_MoleculesChain::nominalLength, NUMERICALLY, shape, COME_MoleculesChain::targetLength, updateAverageNumConnections(), and COME_MoleculesChain::updateLengths().

Here is the call graph for this function:

void COME_MoleculesTissue::resetInitialPositions  ) 
 

Load initial positions of all molecules reseting them.

Definition at line 1179 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_Mechatester::clickedReset().

void COME_MoleculesTissue::rotate double  rx,
double  ry,
double  rz
 

Rotate all molecules of the tissue by the angles in the order xyz. To rotate in another order, make several consecutive calls to this function with zero angles for the axis you don't want to rotate.

Rotate on X

Rotate on Y

Rotate on Z

Definition at line 1087 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_BioStructure::rotate().

void COME_MoleculesTissue::saveDeformationFile int  fileMode  ) 
 

This method saves xyz coordinates and stress of all molecules of this tissue now onto a binary file.

Definition at line 837 of file comemoleculestissue.cpp.

References COME::framesOnFile, NEW, and COME::parent.

Referenced by COME_Scenario::createPrecalculatedFiles().

void COME_MoleculesTissue::scale double  factorx,
double  factory,
double  factorz
 

Scale the geometry of the tissue by the factor. It scales the molecules positions and radius.

Definition at line 1037 of file comemoleculestissue.cpp.

Referenced by COME_BioStructure::scale().

void COME_MoleculesTissue::scaleNominals double  factor  ) 
 

Definition at line 1136 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_BioStructure::scaleNominals().

void COME_MoleculesTissue::setMass double  massN  ) 
 

void COME_MoleculesTissue::setMoleculesDensity double  densityN  ) 
 

Definition at line 158 of file comemoleculestissue.cpp.

References shape.

void COME_MoleculesTissue::setMoleculesElasticity double  elasticityN  ) 
 

Definition at line 168 of file comemoleculestissue.cpp.

References shape.

void COME_MoleculesTissue::setMoleculesFrictionConst double  frictionN  ) 
 

Definition at line 178 of file comemoleculestissue.cpp.

References shape.

void COME_MoleculesTissue::setMoleculesMaterial COME_Material newMaterial  ) 
 

The following 7 methods are based in the assumption that all molecules of the tissue are equal. So, they set the same values to all molecules and get allways the values for the first molecule.

Definition at line 148 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_Scenario::addOrganFromFile(), and COME_Mechatester::clickedAssociate().

void COME_MoleculesTissue::setRadiusAverage double  radiusN  ) 
 

Definition at line 108 of file comemoleculestissue.cpp.

References radiusAverage.

void COME_MoleculesTissue::setSurfaceMolecules  ) 
 

Works only for full diagonals lattice models :-(.

Definition at line 712 of file comemoleculestissue.cpp.

References shape.

void COME_MoleculesTissue::transform COME_Matrix  M,
COME_Matrix  MP
 

Apply the transformation given by the matrix M to the fixed free molecules and MP to the molecules fixed at the origin. Used to transform two side attached structures like the ligaments.

Definition at line 1016 of file comemoleculestissue.cpp.

void COME_MoleculesTissue::transform COME_Matrix  M  ) 
 

Apply the transformation given by the matrix M to the fixed free molecules. Used to transform one side attached structures like the cartilages.

Definition at line 997 of file comemoleculestissue.cpp.

Referenced by COME_BioStructure::globalToLocal().

void COME_MoleculesTissue::translate double  dx,
double  dy,
double  dz
 

Translate all molecules by the distances.

Definition at line 1070 of file comemoleculestissue.cpp.

References shape.

Referenced by COME_BioStructure::translate().

bool COME_MoleculesTissue::update double  timestep,
double  simClock,
string  fileNameToSaveDeformation
 

This method implements the Runge-Kutta 4 method for numeric integration to calculate the new positions for all molecules of this organ. If ... If a deformation file is loaded, use positions from file instead of calculate them.

Record positions of all molecules of this tissue in this time onto the output file.

Definition at line 388 of file comemoleculestissue.cpp.

References dymv, initForSimulation(), and simTime.

Referenced by COME_MoleculesCartilage::update().

Here is the call graph for this function:

void COME_MoleculesTissue::updateAverageNumConnections  ) 
 

This method calculates and updates the average number of connections per molecule in this tissue.

Definition at line 728 of file comemoleculestissue.cpp.

References shape.

Referenced by recalculateAllSpringConstants().

bool COME_MoleculesTissue::updateEuler double  timestep,
double  simClock,
string  fileNameToSaveDeformation
 

Record positions of all molecules of this tissue in this time onto the output file.

Definition at line 304 of file comemoleculestissue.cpp.

References dymv, initForSimulation(), and simTime.

Here is the call graph for this function:


Member Data Documentation

float COME_MoleculesTissue::accu [protected]
 

Definition at line 52 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue().

int COME_MoleculesTissue::averageNumConnectionsPerMolecule [protected]
 

Definition at line 51 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), and getAverageNumConnections().

COME_MoleculesChain COME_MoleculesTissue::chain
 

Definition at line 104 of file comemoleculestissue.h.

Referenced by recalculateAllSpringConstants().

vector<COME_Point3D*> COME_MoleculesTissue::deformation
 

Definition at line 108 of file comemoleculestissue.h.

Referenced by loadDeformationFile().

vector<double*> COME_MoleculesTissue::deformationStrains
 

Definition at line 110 of file comemoleculestissue.h.

Referenced by loadDeformationFile().

vector<double*> COME_MoleculesTissue::deformationStresses
 

Definition at line 109 of file comemoleculestissue.h.

Referenced by loadDeformationFile().

COME_Vector3D * COME_MoleculesTissue::dyma [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), initForSimulation(), and ~COME_MoleculesTissue().

COME_Vector3D* COME_MoleculesTissue::dymv [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), initForSimulation(), update(), updateEuler(), and ~COME_MoleculesTissue().

COME_Vector3D * COME_MoleculesTissue::dyta [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), initForSimulation(), and ~COME_MoleculesTissue().

COME_Vector3D * COME_MoleculesTissue::dytv [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), initForSimulation(), and ~COME_MoleculesTissue().

COME_Vector3D * COME_MoleculesTissue::gpuForces [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), getGPUForce(), initForSimulation(), and ~COME_MoleculesTissue().

double COME_MoleculesTissue::mass [protected]
 

Definition at line 50 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), getMass(), and getMassCenter().

double COME_MoleculesTissue::radiusAverage [protected]
 

Definition at line 49 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), getRadiusAverage(), and setRadiusAverage().

list<COME_Molecule*> COME_MoleculesTissue::shape [protected]
 

Definition at line 48 of file comemoleculestissue.h.

Referenced by addMolecule(), checkInitialPositions(), flow(), getDensity(), getElasticity(), getEnvelop(), getFrictionConst(), getMassCenter(), getMoleculesMaterial(), getShape(), getTopStress(), initForSimulation(), isTooClose(), makeAllLocalFrames(), nearestTo(), recalculateAllSpringConstants(), resetInitialPositions(), rotate(), scaleNominals(), setMoleculesDensity(), setMoleculesElasticity(), setMoleculesFrictionConst(), setMoleculesMaterial(), setSurfaceMolecules(), translate(), updateAverageNumConnections(), and ~COME_MoleculesTissue().

double COME_MoleculesTissue::simTime [protected]
 

Definition at line 53 of file comemoleculestissue.h.

Referenced by update(), and updateEuler().

COME_Vector3D * COME_MoleculesTissue::ytp [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), initForSimulation(), and ~COME_MoleculesTissue().

COME_Vector3D * COME_MoleculesTissue::ytv [protected]
 

Definition at line 56 of file comemoleculestissue.h.

Referenced by COME_MoleculesTissue(), initForSimulation(), and ~COME_MoleculesTissue().


The documentation for this class was generated from the following files:
Generated on Thu Dec 1 10:14:26 2005 for COME - Biomechanical Joint Model by  doxygen 1.4.5