physicsTick() {
    this._startStabilizing(); // this ensures that there is no start event when the network is already stable.
    if (this.stabilized === true) return;

    // adaptivity means the timestep adapts to the situation, only applicable for stabilization
    if (
      this.adaptiveTimestep === true &&
      this.adaptiveTimestepEnabled === true
    ) {
      // timestep remains stable for "interval" iterations.
      const doAdaptive = this.adaptiveCounter % this.adaptiveInterval === 0;

      if (doAdaptive) {
        // first the big step and revert.
        this.timestep = 2 * this.timestep;
        this.physicsStep();
        this.revert(); // saves the reference state

        // now the normal step. Since this is the last step, it is the more stable one and we will take this.
        this.timestep = 0.5 * this.timestep;

        // since it's half the step, we do it twice.
        this.physicsStep();
        this.physicsStep();

        this.adjustTimeStep();
      } else {
        this.physicsStep(); // normal step, keeping timestep constant
      }

      this.adaptiveCounter += 1;
    } else {
      // case for the static timestep, we reset it to the one in options and take a normal step.
      this.timestep = this.options.timestep;
      this.physicsStep();
    }

    if (this.stabilized === true) this.revert();
    this.stabilizationIterations++;
  }
A single simulation step (or 'tick') in the physics simulation
@private