Chrono::Engine C++ API

#include <ChShaftsPlanetary.h>
Class for defining a planetary gear between three onedegreeoffreedom parts (that is, shafts that can be used to build 1D models of power trains  this is more efficient than simulating power trains modeled full 3D ChBody objects). Planetary gears can be used to make, for instance, the differentials of cars. While traditional gear reducers have one input and one output, the planetary gear have two inputs and one output (or, if you prefer, one input and two outputs).
chrono::ChShaftsPlanetary::ChShaftsPlanetary  (  ) 
Constructor.
CLASS FOR SHAFTS.
void chrono::ChShaftsPlanetary::ConstraintsBiLoad_C  (  double  factor = 1. , 
double  recovery_clamp = 0.1 , 

bool  do_clamp = false 

)  [virtual] 
Adds the current C (constraint violation) to the known term (b_i) of encapsulated ChLcpConstraints
Reimplemented from chrono::ChPhysicsItem.
void chrono::ChShaftsPlanetary::ConstraintsBiLoad_Ct  (  double  factor = 1.  )  [virtual] 
Adds the current Ct (partial tderivative, as in C_dt=0> [Cq]*q_dt=Ct) to the known term (b_i) of encapsulated ChLcpConstraints
Reimplemented from chrono::ChPhysicsItem.
void chrono::ChShaftsPlanetary::ConstraintsFetch_react  (  double  factor = 1.  )  [virtual] 
Fetches the reactions from the lagrangian multiplier (l_i) of encapsulated ChLcpConstraints. Mostly used after the LCP provided the solution in ChLcpConstraints. Also, should convert the reactions obtained from dynamical simulation, from link space to intuitive react_force and react_torque.
Reimplemented from chrono::ChPhysicsItem.
void chrono::ChShaftsPlanetary::ConstraintsLiFetchSuggestedSpeedSolution  (  )  [virtual] 
After the LCP solver has found the l_i lagangian multipliers for the SPEED problem, this function will be called to store the solutions in a cache (to be implemented in ChLink sub classes) so that it can be later retrieved with ConstraintsLiLoadSuggestedSpeedSolution(). If you do not plan to implement a l_i cache, just do not override this function in child classes and do nothing.
Reimplemented from chrono::ChPhysicsItem.
void chrono::ChShaftsPlanetary::ConstraintsLiLoadSuggestedSpeedSolution  (  )  [virtual] 
Fills the solution of the constraint (the lagrangian multiplier l_i) with an initial guess, if any. This can be used for warmstarting the LCP solver before starting the solution of the SPEED problem, if some approximate solution of constraint impulese l_i already exist (ex. cached from a previous LCP execution) When implementing this in sub classes, if no guess is available, set l_i as 0.
Reimplemented from chrono::ChPhysicsItem.
int chrono::ChShaftsPlanetary::Initialize  (  ChSharedPtr< ChShaft > &  mshaft1, 
ChSharedPtr< ChShaft > &  mshaft2,  
ChSharedPtr< ChShaft > &  mshaft3  
)  [virtual] 
Use this function after planetary gear creation, to initialize it, given three shafts to join. Although there's no special requirement, you may think of the three typical moving parts of an apycycloidal reducer: the carrier, the input gear, and the gear with inner teeth that usually is kept fixed (but the ChShaftsPlanetary does not require that one shaft is fixed  it's up to you) Each shaft must belong to the same ChSystem.
mshaft1  first shaft to join (carrier wheel usually the output) 
mshaft2  second shaft to join (wheel usually the input) 
mshaft3  third shaft to join (wheel other input, or fixed) 
void chrono::ChShaftsPlanetary::InjectConstraints  (  ChLcpSystemDescriptor &  mdescriptor  )  [virtual] 
Tell to a system descriptor that there are contraints of type ChLcpConstraint in this object (for further passing it to a LCP solver) Basically does nothing, but maybe that inherited classes may specialize this.
Reimplemented from chrono::ChPhysicsItem.
void chrono::ChShaftsPlanetary::SetTransmissionRatios  (  double  mr1, 
double  mr2,  
double  mr3  
) 
Set the transmission ratios r1 r2 r3 as in r1*w1 + r2*w2 + r3*w3 = 0 For example, for the car differential, if you assume that shaft 1 is the carrier and shafts 2 and 3 go to the wheel hubs, you must use r1=2, r2=1, r3=1 to satisfy the kinematics 2*w1+w2+w3=0 of the differential; equivalently, you may use r1=1, r2=0.5, r3=0.5 (the equation would hold the same).
void chrono::ChShaftsPlanetary::SetTransmissionRatios  (  double  t0  ) 
Setting the transmission ratios r1 r2 r3 for r1*w1 + r2*w2 + r3*w3 = 0 may be cumbersome, but when you deal with typical planetary devices, this function provides a shortcut to setting them for you, given a single parameter 't0', that is the speed ratio t'=w3'/w2' of the inverted planetary. That ratio is simple to get: to invert the planetary, imagine to hold fixed the wheel of shaft 1 (that is w1' =0), move the shaft 2 and see which is the speed of shaft 3, to get the ratio t'=w3'/w2'. Generally, shaft 1 is called the 'carrier'. For example, in normal operation of an epicycloidal reducer, the carrier (shaft 1) is used as output, shaft 2 is the input, and shaft 3 is hold fixed to get one degree of freedom only; but in 'inverted' operation imagine the carrier is fixed, so t' can be easily got as t'=z2/z3, with z=n.of teeth. In a car differential, again with shaft 1 as carrier, one can see that t'=w3'/w2' so t'=1. See the Willis theory for more details on these formulas. Note that t' must be different from 1 (singularity) Once you get t', simply use this function and it will set r1 r2 r3 automatically.
void chrono::ChShaftsPlanetary::StreamIN  (  ChStreamInBinary &  mstream  )  [virtual] 
Method to allow deserializing a persistent binary archive (ex: a file) into transient data.
Reimplemented from chrono::ChPhysicsItem.
void chrono::ChShaftsPlanetary::StreamOUT  (  ChStreamOutBinary &  mstream  )  [virtual] 
Method to allow serializing transient data into a persistent binary archive (ex: a file).
Reimplemented from chrono::ChPhysicsItem.