Skip to main content
. 2024 Mar 26;24(7):2114. doi: 10.3390/s24072114
Algorithm A1 Calculating Bunker Volume from Sensor Data
  • 1:

    procedure BunkerVolume( sensorValuesList,mountHeightList,bunkerWidth,bunkerLength )

  • 2:

           numSensorslengthofsensorValuesList

  • 3:

           numValidSensors0

  • 4:

           avgHeight0

  • 5:

          for ctr,(sensorValue,mountHeight) in enumerate(zip(sensorValuesList,mountHeightList)) do

  • 6:

               if ctr=0 then

  • 7:

                      sensorValuePrev1

  • 8:

                      mountHeightPrev0

  • 9:

                      sensorValueNextsensorValuesList[ctr+1]

  • 10:

                    mountHeightNextmountHeightList[ctr+1]

  • 11:

               else if ctr=numSensors1 then

  • 12:

                      sensorValuePrevsensorValuesList[ctr1]

  • 13:

                      mountHeightPrevmountHeightList[ctr1]

  • 14:

                      sensorValueNext1

  • 15:

                      mountHeightNext0

  • 16:

               else

  • 17:

                      sensorValuePrevsensorValuesList[ctr1]

  • 18:

                      mountHeightPrevmountHeightList[ctr1]

  • 19:

                      sensorValueNextsensorValuesList[ctr+1]

  • 20:

                      mountHeightNextmountHeightList[ctr+1]

  • 21:

               end if

  • 22:

               if 0<sensorValue<mountHeight then

  • 23:

                      avgHeightavgHeight+mountHeightsensorValue

  • 24:

                      numValidSensorsnumValidSensors+1

  • 25:

               else if (0<sensorValuePrev<mountHeightPrev) and (0<sensorValueNext<mountHeightNext) then

  • 26:

                      sensorValueTemp(sensorValuePrev+sensorValueNext)/2

  • 27:

                      mountHeightTemp(mountHeightPrev+mountHeightNext)/2

  • 28:

                      avgHeightavgHeight+mountHeightTempsensorValueTemp

  • 29:

                      numValidSensorsnumValidSensors+1

  • 30:

               else if 0<sensorValuePrev<mountHeightPrev then

  • 31:

                      avgHeightavgHeight+mountHeightPrevsensorValuePrev

  • 32:

                      numValidSensorsnumValidSensors+1

  • 33:

               else if 0<sensorValueNext<mountHeightNext then

  • 34:

                      avgHeightavgHeight+mountHeightNextsensorValueNext

  • 35:

                      numValidSensorsnumValidSensors+1

  • 36:

               end if

  • 37:

          end for

  • 38:

          if numValidSensors>0 then

  • 39:

             avgHeightavgHeight/numValidSensors

  • 40:

             volumeavgHeight*bunkerWidth*bunkerLength

  • 41:

          else

  • 42:

             volume0

  • 43:

          end if

  • 44:

          return volume

  • 45:

    end procedure