Ejemplo n.º 1
0
        public FieldInputData GetFieldInputData()
        {
            var modesInfo = GetCalculatedModesInfo();
            var options   = "RA";
            var mLimit    = 999;
            var nr        = 1;
            var rr        = new List <double>();
            var nsd       = 1;
            var sDepths   = new List <double>();
            var nrd       = 1;
            var rDepths   = new List <double>();
            var nrr       = 1;
            var rd        = new List <double>();

            var fieldInputData = new FieldInputData(modesInfo, options,
                                                    mLimit, nr, rr, nsd, sDepths, nrd, rDepths, nrr, rd);

            return(fieldInputData);
        }
Ejemplo n.º 2
0
        public AcousticFieldSnapshots CalculateFieldPressure(FieldInputData fieldData)
        {
            var maxM = Math.Min(fieldData.ModesLimit, fieldData.ModesInfo.ModesCount);

            string comp = "";

            if (fieldData.Options.Length > 2)
            {
                comp = fieldData.Options[2].ToString();
            }

            var rangedDataManager = new RangedDataManager();

            rangedDataManager.ProceedReceiverRanges(fieldData.Nr, fieldData.ReceiverRanges);

            var zMin = -3.40282347E+38;
            var zMax = 3.40282347E+38;

            rangedDataManager.ProceedSourceAndReceiverDepths(zMin, zMax, fieldData.Nsd, fieldData.Nrd, fieldData.SourceDepths, fieldData.ReceiverDepths);

            var result = new AcousticFieldSnapshots();

            result.Ranges.AddRange(rangedDataManager.ReceiverRanges);
            result.SourceDepths.AddRange(rangedDataManager.SourceDepths);
            result.ReceiverDepths.AddRange(rangedDataManager.ReceiverDepths);

            var C = Enumerable.Repeat(new Complex(), maxM + 1).ToList();

            var receiverDisplacements = Enumerable.Repeat(0d, fieldData.Nrr + 1).ToList();

            var Nrr = fieldData.Nrr;

            if (fieldData.Nrr != rangedDataManager.Nrd)
            {
                Nrr = rangedDataManager.Nrd;
                receiverDisplacements = Enumerable.Repeat(0d, Nrr + 1).ToList();
            }

            for (var i = 0; i < fieldData.ReceiverDisplacements.Count; i++)
            {
                receiverDisplacements[i] = fieldData.ReceiverDisplacements[i];
            }

            if (Nrr > 1)
            {
                receiverDisplacements[2] = -999.9;
            }
            if (Nrr > 2)
            {
                receiverDisplacements[3] = -999.9;
            }

            var subTabMod = new SubTabulator();

            subTabMod.SubTabulate(receiverDisplacements, Nrr);

            var readModesMod = new ModesPreparationManager();

            var phiS = readModesMod.GetPreparedModes(fieldData.ModesInfo, maxM, rangedDataManager.SourceDepths, rangedDataManager.Nsd, "N", result.Warnings);
            var phiR = readModesMod.GetPreparedModes(fieldData.ModesInfo, maxM, rangedDataManager.ReceiverDepths, rangedDataManager.Nrd, comp, result.Warnings);
            var pressureFieldCalculator = new PressueFieldCalculator();

            result.Snapshots.Add(new List <List <Complex> >());

            for (var IS = 1; IS <= rangedDataManager.Nsd; IS++)
            {
                for (var i = 1; i <= fieldData.ModesInfo.ModesCount; i++)
                {
                    C[i] = phiS[i][IS];
                }

                var P = pressureFieldCalculator.Evaluate(C, phiR, rangedDataManager.Nrd, rangedDataManager.ReceiverRanges,
                                                         rangedDataManager.Nr, receiverDisplacements, fieldData.ModesInfo.K, fieldData.ModesInfo.ModesCount, fieldData.Options);
                result.Snapshots.Add(P);
            }

            return(result);
        }
Ejemplo n.º 3
0
        public Mock <IMapper <FieldComputingRequiredData, FieldInputData> > FieldInputDataMapper(FieldInputData fieldInputData)
        {
            var mock = new Mock <IMapper <FieldComputingRequiredData, FieldInputData> >();

            mock.Setup(x => x.Map(It.IsAny <FieldComputingRequiredData>())).Returns(fieldInputData);

            return(mock);
        }