Esempio n. 1
0
        public static ISO19030RESULT CalcAverageData(List <ISO19030RESULT> iso19030resultList)
        {
            var result = new ISO19030RESULT();

            result.PV          = iso19030resultList.Average(d => d.PV);
            result.SPEED_VG    = iso19030resultList.Average(d => d.SPEED_VG);
            result.SPEED_LW    = iso19030resultList.Average(d => d.SPEED_LW);
            result.SHAFT_POWER = iso19030resultList.Average(d => d.SHAFT_POWER);
            result.SHAFT_REV   = iso19030resultList.Average(d => d.SHAFT_REV);

            result.DRAFT_FORE = iso19030resultList.Average(d => d.DRAFT_FORE);
            result.DRAFT_AFT  = iso19030resultList.Average(d => d.DRAFT_AFT);

            return(result);
        }
Esempio n. 2
0
        public static List <ISO19030RESULT> CreateResultData(List <ISO19030File> sailingData, List <double[]> powerToSpeedTable)
        {
            int index = 0;
            var iso19030resultList = new List <ISO19030RESULT>();

            foreach (var item in sailingData)
            {
                if (item.VALID_CHAUVENT == true && item.VALID_VALIDATION == true && item.VALID_REFCONDITION == true)
                {
                    try
                    {
                        var iso19030result = new ISO19030RESULT();


                        var speedLwMeter         = item.SPEED_VG * 0.5144;
                        var Rw                   = windResistance.data.raa[index] / 1000 * speedLwMeter / 0.98;
                        var correctPower         = item.ME1_SHAFT_POWER - (windResistance.data.raa[index] / 1000 * speedLwMeter) / 0.98;
                        var powerToSpeedEquation = powerToSpeedTable[(int)((Math.Truncate(((item.DRAFT_FORE + item.DRAFT_AFT) * 0.5 + 5) * 10)) - Math.Truncate((ballastValues.DRAFT_FORE + ballastValues.DRAFT_AFT) * 0.5 * 10))]; //  Draft (Ballast) Fore, Draft (Ballast) Aft

                        iso19030result.SPEED_VG      = item.SPEED_VG;
                        iso19030result.SPEED_LW      = item.SPEED_LW;
                        iso19030result.SHAFT_POWER   = item.ME1_SHAFT_POWER;
                        iso19030result.SHAFT_REV     = item.ME1_RPM_SHAFT;
                        iso19030result.DRAFT_FORE    = item.DRAFT_FORE;
                        iso19030result.DRAFT_AFT     = item.DRAFT_AFT;
                        iso19030result.CORRECT_POWER = correctPower;

                        //Calculate Performance
                        iso19030result.PV  = DataFunctions.PVcalculator(powerToSpeedEquation, correctPower, item.SPEED_LW);
                        iso19030result.PPV = DataFunctions.PPVcalculator(powerToSpeedEquation, correctPower, item.SPEED_LW);

                        iso19030resultList.Add(iso19030result);
                    }
                    catch
                    {
                        Filters.FILTER_TOTAL_COUNT++;
                    }
                }
                index++;
            }

            return(iso19030resultList);
        }