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

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

Location:
branches/maintenance/2.2.2/Modelica
Files:
3 modified

Legend:

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

    r1040 r1118  
    724724      Modelica.Mechanics.Rotational.Torque torque  
    725725                               annotation (extent=[-65, -5; -55, 5]); 
    726       Modelica.Mechanics.Rotational.Clutch clutch1(peak=1.1, fn_max=20)  
     726      Modelica.Mechanics.Rotational.Clutch clutch1(          fn_max=20, peak=1.1) 
    727727        annotation (extent=[-25, -5; -15, 5]); 
    728728      Modelica.Blocks.Sources.Sine sin1(amplitude=10, freqHz=5)  
     
    732732      Modelica.Mechanics.Rotational.Inertia J2(J=1, initType=Modelica.Mechanics.Rotational.Types.Init.InitialState)  
    733733                                 annotation (extent=[-5, -5; 5, 5]); 
    734       Modelica.Mechanics.Rotational.Clutch clutch2(peak=1.1, fn_max=20)  
     734      Modelica.Mechanics.Rotational.Clutch clutch2(          fn_max=20, peak=1.1) 
    735735        annotation (extent=[15, -5; 25, 5]); 
    736736      Modelica.Mechanics.Rotational.Inertia J3(J=1, initType=Modelica.Mechanics.Rotational.Types.Init.InitialState)  
    737737                                 annotation (extent=[35, -5; 45, 5]); 
    738       Modelica.Mechanics.Rotational.Clutch clutch3(peak=1.1, fn_max=20)  
     738      Modelica.Mechanics.Rotational.Clutch clutch3(          fn_max=20, peak=1.1) 
    739739        annotation (extent=[55, -5; 65, 5]); 
    740740      Modelica.Mechanics.Rotational.Inertia J4(J=1, initType=Modelica.Mechanics.Rotational.Types.Init.InitialState)  
     
    18171817      constant SI.AngularAcceleration unitAngularAcceleration = 1; 
    18181818      constant SI.Torque unitTorque = 1; 
    1819        
     1819      Real sa0 = (tau0_max + (tau0_max - tau0))/unitTorque  
     1820        "Value of sa when start of forward sliding at w=0"; 
    18201821    equation  
    18211822      /* Friction characteristic 
     
    18241825      special code shall be generated) */ 
    18251826       
    1826       startForward = pre(mode) == Stuck and (sa > tau0_max/unitTorque or pre(startForward) 
    1827          and sa > tau0/unitTorque) or pre(mode) == Backward and w_relfric > w_small or  
    1828         initial() and (w_relfric > 0); 
    1829       startBackward = pre(mode) == Stuck and (sa < -tau0_max/unitTorque or pre( 
    1830         startBackward) and sa < -tau0/unitTorque) or pre(mode) == Forward and w_relfric < 
    1831         -w_small or initial() and (w_relfric < 0); 
    1832       locked = not free and not (pre(mode) == Forward or startForward or pre( 
    1833         mode) == Backward or startBackward); 
     1827      startForward = pre(mode) == Stuck and sa > tau0_max/unitTorque or  
     1828                     pre(mode) == Backward and w_relfric > w_small or  
     1829                     initial() and (w_relfric > 0); 
     1830      startBackward = pre(mode) == Stuck and sa < -tau0_max/unitTorque or  
     1831                      pre(mode) == Forward and w_relfric < -w_small or  
     1832                      initial() and (w_relfric < 0); 
     1833      locked = not free and not (pre(mode) == Forward or startForward or pre(mode) == Backward or startBackward); 
    18341834       
    18351835      a_relfric = unitAngularAcceleration * 
    1836               (if locked then 0 else if free then sa else if startForward then  
    1837               sa - tau0/unitTorque else if startBackward then sa + tau0/unitTorque else if pre(mode) 
    1838          == Forward then sa - tau0/unitTorque else sa + tau0/unitTorque); 
     1836              (if locked then 0 else if free then sa else  
     1837              if startForward then sa - sa0 else if startBackward then sa + sa0 else  
     1838              if pre(mode)== Forward then sa - sa0 else sa + sa0); 
    18391839       
    18401840      /* Friction torque has to be defined in a subclass. Example for a clutch: 
  • 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: 
  • branches/maintenance/2.2.2/Modelica/package.mo

    r1115 r1118  
    649649                        to warnings.</td>  
    650650  </tr> 
     651 
     652  <tr><td colspan=\"2\"><b>Mechanics.Rotational.Interfaces.</b></td></tr> 
     653  <tr><td valign=\"top\"> FrictionBase </td> 
     654      <td valign=\"top\"> Corrected and simplified parameterized curve description. 
     655                        The previous formulation could lead to an inconsistent mixed system 
     656                        of equations if peak > 1 and then an additional event iteration 
     657                        was needed to find the solution. The change therefore enhances 
     658                        efficiency in some situations. </td>  
     659  </tr> 
     660  <tr><td colspan=\"2\"><b>Mechanics.Translational.Interfaces.</b></td></tr> 
     661  <tr><td valign=\"top\"> FrictionBase </td> 
     662      <td valign=\"top\"> Corrected and simplified parameterized curve description. 
     663                        The previous formulation could lead to an inconsistent mixed system 
     664                        of equations if peak > 1 and then an additional event iteration 
     665                        was needed to find the solution. The change therefore enhances 
     666                        efficiency in some situations. </td>  
     667  </tr> 
     668 
    651669  <tr><td colspan=\"2\"><b>Media.Interfaces.PartialSimpleMedium</b></td></tr> 
    652670  <tr><td valign=\"top\"> pressure<br>