[770c98]: / Application / Examples / BikeModel / Model / SeatSupport.any

Download this file

90 lines (69 with data), 3.1 kB

/** This folder creates a contact-type of support between the saddle and the pelvis.
The saddle supports the pelvis forward/backward and laterally in both directions,
but it only offers support in the upward direction vertically. This prevents the
model from exploiting a "glued" contact with the seat when driving at high intensity.*/
AnyFolder SeatSupport = {
  AnyComponentDefinition obj = {
      SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
      SubGroupRegexReplace = "$1";
  };  
  AnyVar  Strength=3000;  
  AnyVar  FrictionStrength=3000;
  
  AnyVar Scale=0.005;
  AnyFolder &Pelvis =.BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
  
  Pelvis={
    
    AnyRefNode Seat_contact1R={
      sRel=.Seat_contactR.sRel+{0.085,0.01,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    AnyRefNode Seat_contact1L={
      sRel=.Seat_contactL.sRel+{0.085,0.01,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    AnyRefNode Seat_contact2R={
      sRel=.Seat_contactR.sRel+{0.065,0.005,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    
       
    AnyRefNode Seat_contact2Mid={
      sRel=0.5*(.Seat_contact2R.sRel+.Seat_contact2L.sRel);
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    
    AnyRefNode Seat_contact2L={
      sRel=.Seat_contactL.sRel+{0.065,0.005,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    
    AnyRefNode Seat_contact3R={
      sRel=.Seat_contactR.sRel+{0.025,0,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    AnyRefNode Seat_contact3L={
      sRel=.Seat_contactL.sRel+{0.025,0,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    
    AnyRefNode Seat_contact4R={
      sRel=.Seat_contactR.sRel+{-0.015,0.01,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
    
    AnyRefNode Seat_contact4L={
      sRel=.Seat_contactL.sRel+{-0.015,0.01,0};
      //AnyDrawRefFrame test={ScaleXYZ={.1,.1,.1};};
    }; 
  };   
  
  
    AnyFolder Seat_contact2Mid={
      AnyComponentDefinition obj = {
        SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)";
        SubGroupRegexReplace = "$1";
      };  
      
    AnyRefNode &StartNode = Main.Model.BikeModel.BikeFrame.SaddlePos;
    AnyRefFrame &EndNode =..BodyModel.Trunk.SegmentsLumbar.PelvisSeg.Seat_contact2Mid;
    AnyVector StrengthOfReactionsLin = {.Strength,.FrictionStrength,.Strength,0,.Strength,.Strength}; //List of strengths for the linear muscles   
    AnyFolder &DrawRef=Main.DrawSettings;
    AnyVar ScaleFactor =.1;
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any"
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any"
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any"
    //  #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any"
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" 
    #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" 
  };  
  
};