hexagon logo

Variable length

Hello everyone,
 
Some help please because I'm running out of ideas.
 
So, I have two markers / construction frames : first one has a fix location, but the second one is dependent by the first marker.
 
There is a relationship between markers: the 2nd one moves along the axis of the 1st one, only after the distance (DM) between them drops under a certain length.
 
So far I've tried with IF function and with VARVAL... but no success.
 
Examples :
marker_2 = (LOC_RELATIVE_TO({0.0, 0.0, (IF(....))}, marker_1) or
marker_2 = (LOC_RELATIVE_TO({0.0, 0.0, (VARVAL(....))}, marker_1)
 
 
 
How can I integrate a run-time variable into a marker definition ?
 
 
 
 
Thank you very much!
  • What you are doing with "LOC_RELATIVE_TO" is a parameterization in the Adams interface.
    The IF function and the VARVAL() function is used in the solver, so they cannot be used for parameterization of a marker in the interface.
     
    For parameterizations you can use this syntax:
    (DM(marker_1, marker_2) < 10.0 ? 9.0 : 11.0)
  • DM function is, unfortunately, not suitable to me.
    I need a function for both ADAMS interface and Solver.
     
    Other ideas ??
  • You were asking about parameterizations - that is used when MODELING in the Adams interface, as in creating your model.
    If you want something that controls the position of two markers (on different parts of course) during an analysis, you use constraints or forces.
  • You can't integrate run-time expressions in the parameterization.
    Once the simulation starts, the parameterization is gone, dead, does not exist from a solver perspective. The marker is where it is.
     
    But what you write as "the 2nd one moves along the axis of the 1st one" is a solver constraint, not a parameterization.
    Use for example a translational joint or an inline jprim.
    constraint create primitive_joint inline jprim_name=jprim_1 &
    i_marker_name = marker_2 &
    j_marker_name = marker 1
    This forces marker_2 to move along the z_axis of marker_1.
     
    Then you write "only after the distance (DM) between them drops under a certain length." I don't completely understand what you intend here. What does it do when the length is greater than the specified value? Free to move as it wants along the axis specified by the jprim above?
    If that is the case, this is handled by a force. If the trigger value (DM as you call it) is greater than zero, then an SFORCE is appropriate utilizing a IMPACTfunction. (if DM can be zero or negative, you should use a VFORCE as a translational SFORCE never can have length zero when the direction would become undefined)
    force create direct single_component_force &
    type = translational &
    action_only=off &
    i_marker = marker_2 &
    j_marker=marker_1 &
    function="BISTOP(DZ(marker_2,marker_1,marker_2),VZ(marker_2,marker_1,marker_2), 42, 1e4, 1.1,10, 0.1)
    This will allow marker_2 to move freely along the z-axis of marker_1 as long as the distance between them is greater than 42. If distance is lower than 42, they will move together.
     
    Note that marker_1 and marker_2 must of course belong to different parts.
     
     
     
     
  • Thank you to both of you, Henrik and JSlat !
     
    The main idea is that I want to recreate a bump-stop element for my ACar model.
     
    My client does not really understand these concepts like free length, clearance, and compressed length (at the end of Jounce).
    It looks like the client does not get the bump-stop representation from ADAMS Car Sweat smile
    Then, I took the decision to have a graphical representation (a revolution geometry) of the bump-stop.
    It would be much easier for me to explain to the client how this bump-stop does work during the wheel travel.
     
    Now : I would like this revolution geometry to vary in height during the jounce movement.
    Of course, this bump-stop behaves acc. to a spline (deflation vs. force).
     
    In my measurement I used functions like IF and VARVAL and ADAMS returns excellent results for the bump-stop.
     
    Do you think is it possible to vary the height / length of a revolution geometry ? I mean in real time during the jounce.
     
     
    Many thanks! I look forward to your suggestions.
  • Complicated customers....
    No, it won't be easy to make a variable (solid) geometry.
    You can of course divide the bump stop geometry in multiple separate parts and move each one independently.
    The most basic of this is to only have one small cylinder at the end of the bumpstop to represent the geometry. If you make it the length of the fully compressed length, it can visually show when the bumpstop reaches that length (metal-to-metal almost). And use the technique that I described to move that (end) part of the bumpstop.
     
    An alternative to the force approach is to use a GCON. A motion can only be a function of time, sot hat is not usable here, but a translational joint together with a GCON would do the trick. A GCON can easily be made to be a function of a distance in the model.
  • With the current abilities in ADAMS it's not possible to create an own dynamic bumstop graphic.
     
    I see three workarounds:
    1) Use something like
    geometry modify shape spring_damper spring_damper_name = .mdi_front_vehicle.MDI_FRONT_SUSPENSION.bul_jounce_bumper.graphic cup_length_at_ij = 2,100 tip_length_at_ij = 0,100
    to modify the bumpstop geometry to what you prefer. It'll not change change length, but will move with the parts.
    The mod needs to be done before animation as the read_proprety or other macros override this mod.
     
    2) Combine geometry modify shape spring_damper with an animation call back macro.
    This can modify geometry lengths in every step of the animation and thus at least fake-animate what you wanted to be parametrized.
     
    3) Use a CCON to dynamically position a marker at the bumpstop "contact point"
    Create a spring graphic between the fixed and and that dynamic marker.
    Voila: a dynamic bump-spring-graphic. Not exactly what you wanted, but close enough.
     
  • If I properly understand your problem, the second marker (which I assume is attached to geometry?) does something after a distance parameter is met. If you set up a measure between markers a sensor can trigger the motion you want when the condition is true.