Blocked teeter

Hello,

I am trying to simulate what happens if a teeter mechanism blocks. I see in the source code of UserTeet that I in such a case should add the following code:

method 1:

IF (ZTime > TimeTeetBlockStart ) THEN
    
  DOF_Flag(DOF_Teet) = .FALSE.

ENDIF

The user help says that in this case the RATE will stay constant while the teeter angle will grow linearly; the teeter angle will only stay constant when the teeter speed happens to be zero at that exact moment. Indeed this is what happens. So how should I proceed if the teeter speed was not exactly zero at that moment? I tried the following:

method 2:

IF (ZTime > TimeTeetBlockStart ) THEN

  QDT( DOF_Teet ) = 0     
  DOF_Flag(DOF_Teet) = .FALSE.

ENDIF

I expected that now the teeter angle would stay constant at the value it had at t=TimeTeetBlockStart, but this does not happen: it still grows linearly.

Then I tried the following:

method 3:

IF (ZTime > TimeTeetBlockStart ) THEN
    
  IF ( BeginTeetBlock ) THEN
      
    TeetBlock = QT( DOF_Teet)
    BeginTeetBlock = .FALSE.  

  ENDIF    
    
    
  QT( DOF_Teet ) = TeetBlock 
  QDT( DOF_Teet ) = 0 
  DOF_Flag(DOF_Teet) = .FALSE.

ENDIF

This works: the teeter angle stays constant at a value of TeetBlock.

But I wonder if this is the correct way to do it? Why does method 2 not work? Looking at the code I see that when setting DOF_Flag(DOF_Teet) to .FALSE. then the left hand side and right hand side of the matrix AugMat (of size NDOF) are not filled in (left to zero), so that the acceleration integrates to a constant speed. Now I guess that the matrix that is fed to the integrator is of size 2 * NDOF, because it also contains the equations for speed which are to be integrated to position. I wonder if that part of the matrix should also be set to zero when DOF_Flag(DOF_Teet) is .FALSE?

When I use a method similar to method 3 to simulate a blocked yaw, I get all NaN’s. So that is why I am wondering if method 3 is a valid method (I was realy after a blocked yaw, the blocked teeter was just a test).

hope anybody can help me out!

regards,
Gerrit

Dear Gerrit,

The DOF_Flag can be used to enable or disable DOFs in FAST over the course of a similation, but it cannot be used to bring a DOF to a sudden stop. Disabling a DOF in FAST really means that the acceleration will be zero, velocity will be constant, and displacement will vary linearly. To bring a DOF to a sudden stop would require a force that is not imposed by setting DOF_Flag for that DOF to False.

You should not change QT and QDT at random. QT and QDT are the instantaneous displacements and velocities of each DOF, which come from time-integration of the accelerations derived through the equations of motion. Changes in QT and QDT should only result from changes in forces/accelerations in the equations of motion (changing QT and QDT directly does not impose the force required to impact the motion).

I hope that helps.

Best regards,

Dear Jason,

Thank, I see what you mean.

Just for interest I wonder then what was meant with the following text in UserTeet:

Maybe I do not quite understand what a ‘latch’ does. From the text above it seems that the teeter goes into a sort of runaway with constant speed, until it hits the end stops? What is the purpose of that? (I originally thought it was some sort of blocking mechanism)

Thanks,
Gerrit

Dear Gerrit,

Yes, I see that that statement is misleading. That statement was written before we understood the full implications of the DOF_Flag option and was never updated. What I said in my prior post sets the record straight. We’ll make sure to update the statement in the source code at some point accordingly.

Sorry for the confusion.

Best regards,