We have an exciting announcement about badges coming in May 2025. Until then, we will temporarily stop issuing new badges for course completions and certifications. However, all completions will be recorded and fulfilled after May 2025.
General

General

How can I set up a repeating cycle of timesteps?

    • FAQFAQ
      Participant

      In CFX Expression language, the procedure is as shown below, but the logic would apply in any code.
      LIBRARY:
      CEL:
      &replace EXPRESSIONS:
      customtime = if(cycleno>1,Time-0.03[s]*(cycleno-1),Time)
      cycleno = int(Time/0.03 [s])+1
      dt = if(cycletime <= 0.01[s] ,0.001[s], 0 [s])+ if(cycletime>0.01[s] && cycletime <= 0.02[s], 0.002[s], 0[s]) + if(cycletime >0.02[s] &&
      cycletime<= 0.03[s], 0.003[s], 0.0[s])
      END
      END
      END
      Since we have a repeating cycle of 0.03 [s], we need something to let us know what cycle we are in, so that we can make a custom time counter that will reset at the beginning of each cycle. This makes use of the int() function, which rounds UP to the closest integer.
      cycleno = int(Time/0.03 [s])+1
      Next we can make a time counter that goes from 0-0.03 [s][ repeatedly. This makes use of the conditional if() function:
      cycletime = if(cycleno>1,Time-0.03[s]*(cycleno-1),Time)
      Now, we create a series of additive if() statements to cover each portion of the cycle. each one is only active inside its cycletime range
      dt = if(cycletime <= 0.01[s] ,0.001[s], 0 [s])+ if(cycletime>0.01[s] && cycletime <= 0.02[s], 0.002[s], 0[s]) + if(cycletime >0.02[s] && cycletime<= 0.03[s], 0.003[s], 0.0[s])
      If the list is very long, create a separate if expression for each portion and then add these expressions for a tidier timestep expression that is easier to debug.