Show
Ignore:
Timestamp:
05/04/08 21:39:16 (5 months ago)
Author:
otter
Message:

Enhanced efficiency of friction models of Rotational and Translational library in some situations (only of peak > 1)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/maintenance/2.2.2/Modelica/Mechanics/Translational.mo

    r799 r1118  
    302302      Translational.Spring S1( 
    303303        s_rel0=1, 
    304         c=1e3,  
     304        c=1e3, 
    305305        s_rel(start=1, fixed=false))  
    306306                        annotation (extent=[-58, -20; -38, 0]); 
     
    308308      Translational.SpringDamper SD1( 
    309309        s_rel0=1, 
    310         c=111,  
     310        c=111, 
    311311        s_rel(start=1, fixed=true))  
    312312                        annotation (extent=[20, -20; 40, 0]); 
     
    15261526</ul> 
    15271527</html>")); 
    1528        
     1528    protected  
    15291529      constant SI.Acceleration unitAcceleration = 1; 
    15301530      constant SI.Force unitForce = 1; 
     1531      Real sa0 = (f0_max + (f0_max - f0))/unitForce  
     1532        "Value of sa when start of forward sliding at w=0"; 
    15311533    equation  
    15321534      /* Friction characteristic 
     
    15361538  */ 
    15371539       
    1538       startForward = pre(mode) == Stuck and (sa > f0_max/unitForce and s < (smax - L/2) or  
    1539             pre(startForward) and sa > f0/unitForce and s < (smax - L/2)) or pre(mode) 
    1540          == Backward and v_relfric > v_small or initial() and (v_relfric > 0); 
    1541       startBackward = pre(mode) == Stuck and (sa < -f0_max/unitForce and s > (smin + L/2) or  
    1542             pre(startBackward) and sa < -f0/unitForce and s > (smin + L/2)) or pre(mode) 
    1543          == Forward and v_relfric < -v_small or initial() and (v_relfric < 0); 
     1540      startForward = pre(mode) == Stuck and sa > f0_max/unitForce and s < (smax - L/2) or  
     1541                     pre(mode) == Backward and v_relfric > v_small or initial() and (v_relfric > 0); 
     1542      startBackward = pre(mode) == Stuck and sa < -f0_max/unitForce and s > (smin + L/2) or  
     1543                      pre(mode) == Forward and v_relfric < -v_small or initial() and (v_relfric < 0); 
    15441544       
    15451545      locked = not free and not (pre(mode) == Forward or startForward or pre( 
     
    15471547       
    15481548      a_relfric = unitAcceleration*(if locked then 0 else if free then sa else if startForward then  
    1549               sa - f0/unitForce else if startBackward then sa + f0/unitForce else if pre(mode) == 
    1550         Forward then sa - f0/unitForce else sa + f0/unitForce); 
     1549              sa - sa0 else if startBackward then sa + sa0 else if pre(mode) == Forward then sa - sa0 else sa + sa0); 
    15511550       
    15521551      /* Friction torque has to be defined in a subclass. Example for a clutch: