hexagon logo

Is there a way to get the contact friction reference frame in CFFSUB?

The contact incident marker is defined such that the x-direction is always in the slip velocity direction. I'd like to limit the friction force to only act relative to a direction cosine given by another part, and so break the contact friction into x- and y- forces in the contact incident reference frame to accomplish this.
 
Think of a box rolling on a surface with roller bearings, where the surface is inclined down at 45 degrees relative to the rotation axis of the roller bearings.
Parents
  • Like all Adams Solver subroutines, the CFFSUB can take values into the PAR-array.
    So if you add a marker-ids into the CFFSUB user function like this:
    (.model_1.part_2.marker_3.adams_id), (.model_1.ground.reference.adams_id)
    Then the Adams ID of the markers will appear in the CFFSUB PAR-array: fric->PAR[0] and fric->PAR[1]
    You can then use a SYSFNC call to get the position of the first marker relative to the second marker:
    double ipar[3], dx;
    int errflg;
    ipar[0] = fric->PAR[0];
       ipar[1] = fric->PAR[1];
       ipar[2] = fric->PAR[2];
    c_sysfnc("DX", ipar, 3, &dx, &errflg);
     
     
Reply
  • Like all Adams Solver subroutines, the CFFSUB can take values into the PAR-array.
    So if you add a marker-ids into the CFFSUB user function like this:
    (.model_1.part_2.marker_3.adams_id), (.model_1.ground.reference.adams_id)
    Then the Adams ID of the markers will appear in the CFFSUB PAR-array: fric->PAR[0] and fric->PAR[1]
    You can then use a SYSFNC call to get the position of the first marker relative to the second marker:
    double ipar[3], dx;
    int errflg;
    ipar[0] = fric->PAR[0];
       ipar[1] = fric->PAR[1];
       ipar[2] = fric->PAR[2];
    c_sysfnc("DX", ipar, 3, &dx, &errflg);
     
     
Children
No Data