Пример #1
0
        public ComplexVector CalculateAnomalyFieldH(ObservationSite site, AnomalyCurrent jQ)
        {
            var gt     = CalculateGreenTensorAtoOSiteMagnetic(site);
            var result = CalculateH(gt, jQ);

            return(result);
        }
Пример #2
0
        private static double FindRhoMinInsideAnomaly(LateralDimensions dimensions, ObservationSite site)
        {
            var minX = FindMinXInsideAnomaly(dimensions, site);
            var minY = FindMinYInsideAnomaly(dimensions, site);

            return((double)Min(minX, minY));
        }
Пример #3
0
        public ComplexVector CalculateAnomalyFieldE(ObservationSite site, AnomalyCurrent jQ)
        {
            var gt     = CalculateGreenTensorAtoOSiteElectric(site);
            var result = ConvolutorE(gt, jQ);

            return(result);
        }
Пример #4
0
        protected override void OnHFieldsAtSiteCalculated(ObservationSite site,
                                                          ComplexVector normalField, ComplexVector anomalyField)
        {
            var e = new MtFieldsAtSiteCalculatedEventArgs(CurrentSource, site, normalField, anomalyField);

            HFieldsAtSiteCalculated?.Invoke(this, e);
        }
Пример #5
0
 private static XElement ToXElement(ObservationSite site)
 {
     return(new XElement(ObservationSiteItem,
                         new XAttribute(ObservationSiteNameAttr, site.Name),
                         new XAttribute(ObservationSiteXAttr, site.X),
                         new XAttribute(ObservationSiteYAttr, site.Y),
                         new XAttribute(ObservationSiteZAttr, site.Z)));
 }
Пример #6
0
        private static double FindRhoMin(LateralDimensions dimensions, ObservationSite site)
        {
            if (SiteIsInsideAnomaly(dimensions, site))
            {
                return(FindRhoMinInsideAnomaly(dimensions, site));
            }

            return(FindRhoMinOutsideAnomaly(dimensions, site));
        }
Пример #7
0
        private static double FindRhoMinOutsideAnomaly(LateralDimensions dimensions, ObservationSite site)
        {
            var rhos = new[]
            {
                Abs(site.X),
                Abs(site.Y),
                Abs(site.X - dimensions.Nx * dimensions.CellSizeX),
                Abs(site.Y - dimensions.Ny * dimensions.CellSizeY),
            };

            return((double)rhos.Min());
        }
Пример #8
0
        public AllFieldsAtSite(AllFieldsAtSite site)
        {
            Site = site.Site;

            NormalE1 = new ComplexVector(site.NormalE1);
            NormalE2 = new ComplexVector(site.NormalE2);
            NormalH1 = new ComplexVector(site.NormalH1);
            NormalH2 = new ComplexVector(site.NormalH2);

            AnomalyE1 = new ComplexVector(site.AnomalyE1);
            AnomalyE2 = new ComplexVector(site.AnomalyE2);
            AnomalyH1 = new ComplexVector(site.AnomalyH1);
            AnomalyH2 = new ComplexVector(site.AnomalyH2);
        }
Пример #9
0
        protected override ComplexVector CalculateNormalFieldH(ObservationSite site)
        {
            var admitance = PlaneWaveCalculator.CalculateFieldH(Model, site.Z);

            if (CurrentSource == Polarization.X)
            {
                return(new ComplexVector(0, admitance, 0));
            }
            if (CurrentSource == Polarization.Y)
            {
                return(new ComplexVector(-admitance, 0, 0));
            }
            throw new InvalidOperationException();
        }
Пример #10
0
        private GreenTensor CalculateGreenTensorAtoOSiteElectric(ObservationSite site)
        {
            var plan             = _plansCreater.CreateForAnomalyToObservationSites(site);
            var transceiver      = TranceiverUtils.CreateAnomalyToObservation(Model.Anomaly, site);
            var scalarCalculator = GreenScalarCalculator.NewAtoOElectricCalculator(Logger, Model);
            var scalars          = scalarCalculator.Calculate(plan, transceiver);

            var calc     = new AtoOSiteGreenTensorCalculator(Logger, Model, MemoryProvider);
            var segments = ScalarSegments.AllocateAndConvert(MemoryProvider, plan, scalars);

            var gt = calc.CalculateAtoOElectric(segments, site, MemoryLayoutOrder.AlongLateral);

            segments.Dispose();

            return(gt);
        }
Пример #11
0
        private void WriteFreqAndCoord(StreamWriter sw, double frequency, ObservationSite site)
        {
            var name = site.Name.PadLeft(15, ' ');

            var xStr = site.X.ToString("F2").PadLeft(10, ' ');
            var yStr = site.Y.ToString("F2").PadLeft(10, ' ');
            var zStr = site.Z.ToString("F2").PadLeft(10, ' ');

            if (ExportNames)
            {
                sw.Write("{0} ", name);
            }

            sw.Write(" {0} {1} {2} ", xStr, yStr, zStr);
            sw.Write("{0} ", frequency.ToString("E").PadLeft(14, ' '));
        }
Пример #12
0
        public int ObservationSites()
        {
            int result = 0;

            using (SqlConnection connection = new SqlConnection(connectionString: DB.ConnectionString))
            {
                var observationSiteManager = new ObservationSiteManager(connection);
                var observationSite        = new ObservationSite
                {
                    State    = "TX",
                    Office   = "Amarillo",
                    CallSign = "KAMA",
                };
                observationSiteManager.Create(observationSite);
                observationSite = new ObservationSite
                {
                    State    = "TX",
                    Office   = "Lubbock",
                    CallSign = "KLBB",
                };
                observationSiteManager.Create(observationSite);
                observationSite = new ObservationSite
                {
                    State    = "NM",
                    Office   = "Albuquerque",
                    CallSign = "KABX",
                };
                observationSiteManager.Create(observationSite);
                observationSite = new ObservationSite
                {
                    State    = "OK",
                    Office   = "Tulsa",
                    CallSign = "KINX",
                };
                observationSiteManager.Create(observationSite);
                observationSite = new ObservationSite
                {
                    State    = "OR",
                    Office   = "Portland",
                    CallSign = "KRTX",
                };
                observationSiteManager.Create(observationSite);
            }
            return(result);
        }
        public GreenTensor CalculateAtoOMagnetic(ScalarSegments segments, ObservationSite site, MemoryLayoutOrder layoutOrder)
        {
            if (segments == null)
            {
                throw new ArgumentNullException(nameof(segments));
            }

            var greenTensor = AllocateNew("xx", "yx", "xy", "xz", "yz", "zx", "zy");

            SetSegments(segments);
            SetGreenTensorAndRadii(greenTensor, segments.Radii);

            PrepareValuesForAtoOMagneticSite(layoutOrder);
            PrepareKnotsAtoO(segments.Radii, site);

            RunAlongXMagnetic(site);
            RunAlongYMagnetic(site);

            return(greenTensor);
        }
Пример #14
0
        private static double FindRhoMax(LateralDimensions dimensions, ObservationSite site)
        {
            if (site == null)
            {
                throw new ArgumentNullException(nameof(site));
            }

            var anomalySizeX = dimensions.Nx * dimensions.CellSizeX;
            var anomalySizeY = dimensions.Ny * dimensions.CellSizeY;

            var anomalyXStart = 0;
            var anomalyYStart = 0;

            var anomalyXEnd = anomalyXStart + anomalySizeX;
            var anomalyYEnd = anomalyYStart + anomalySizeY;

            var maxX = (double)Max(Abs(anomalyXStart - site.X), Abs(anomalyXEnd - site.X));
            var maxY = (double)Max(Abs(anomalyYStart - site.Y), Abs(anomalyYEnd - site.Y));

            return(Sqrt(maxX * maxX + maxY * maxY));
        }
Пример #15
0
        /// <inheritdoc/>
        public string ToDelimitedString()
        {
            CultureInfo culture = CultureInfo.CurrentCulture;

            return(string.Format(
                       culture,
                       StringHelper.StringFormatSequence(0, 27, Configuration.FieldSeparator),
                       Id,
                       SetIdObx.HasValue ? SetIdObx.Value.ToString(culture) : null,
                       ValueType,
                       ObservationIdentifier?.ToDelimitedString(),
                       ObservationSubId,
                       ObservationValue != null ? string.Join(Configuration.FieldRepeatSeparator, ObservationValue) : null,
                       Units?.ToDelimitedString(),
                       ReferencesRange,
                       InterpretationCodes != null ? string.Join(Configuration.FieldRepeatSeparator, InterpretationCodes.Select(x => x.ToDelimitedString())) : null,
                       Probability.HasValue ? Probability.Value.ToString(Consts.NumericFormat, culture) : null,
                       NatureOfAbnormalTest != null ? string.Join(Configuration.FieldRepeatSeparator, NatureOfAbnormalTest) : null,
                       ObservationResultStatus,
                       EffectiveDateOfReferenceRange.HasValue ? EffectiveDateOfReferenceRange.Value.ToString(Consts.DateTimeFormatPrecisionSecond, culture) : null,
                       UserDefinedAccessChecks,
                       DateTimeOfTheObservation.HasValue ? DateTimeOfTheObservation.Value.ToString(Consts.DateTimeFormatPrecisionSecond, culture) : null,
                       ProducersId?.ToDelimitedString(),
                       ResponsibleObserver != null ? string.Join(Configuration.FieldRepeatSeparator, ResponsibleObserver.Select(x => x.ToDelimitedString())) : null,
                       ObservationMethod != null ? string.Join(Configuration.FieldRepeatSeparator, ObservationMethod.Select(x => x.ToDelimitedString())) : null,
                       EquipmentInstanceIdentifier != null ? string.Join(Configuration.FieldRepeatSeparator, EquipmentInstanceIdentifier.Select(x => x.ToDelimitedString())) : null,
                       DateTimeOfTheAnalysis.HasValue ? DateTimeOfTheAnalysis.Value.ToString(Consts.DateTimeFormatPrecisionSecond, culture) : null,
                       ObservationSite != null ? string.Join(Configuration.FieldRepeatSeparator, ObservationSite.Select(x => x.ToDelimitedString())) : null,
                       ObservationInstanceIdentifier?.ToDelimitedString(),
                       MoodCode?.ToDelimitedString(),
                       PerformingOrganizationName?.ToDelimitedString(),
                       PerformingOrganizationAddress?.ToDelimitedString(),
                       PerformingOrganizationMedicalDirector?.ToDelimitedString(),
                       PatientResultsReleaseCategory
                       ).TrimEnd(Configuration.FieldSeparator.ToCharArray()));
        }
Пример #16
0
 protected virtual void OnHFieldsAtSiteCalculated(ObservationSite site,
                                                  ComplexVector normalField, ComplexVector anomalyField)
 {
 }
Пример #17
0
 protected abstract ComplexVector CalculateNormalFieldH(ObservationSite site);
Пример #18
0
 private static bool SiteIsInsideAnomaly(LateralDimensions dimensions, ObservationSite site)
 {
     return(!(site.X < 0 || site.Y < 0 ||
              site.X > dimensions.Nx * dimensions.CellSizeX ||
              site.Y > dimensions.Ny * dimensions.CellSizeY));
 }
 private double GetYShift(ObservationSite site)
 => (double)(-Model.LateralDimensions.CellSizeY / 2 + site.Y);
 private void PrepareKnotsAtoO(double[] radii, ObservationSite site)
 => PrepareKnots(leftX: 0, rightX: Nx, xShift: GetXShift(site),
                 leftY: 0, rightY: Ny, yShift: GetYShift(site), radii: radii);
Пример #21
0
 public MtFieldsAtSiteCalculatedEventArgs(Polarization polarization, ObservationSite observationSite,
                                          ComplexVector normalField, ComplexVector anomalyField)
     : base(observationSite, normalField, anomalyField)
 {
     Polarization = polarization;
 }
Пример #22
0
 public AllFieldsAtSite(ObservationSite site)
 {
     Site = site;
 }
 private void RunAlongXMagnetic(ObservationSite site) =>
 RunAlongXMagnetic(leftX: 0, rightX: Nx, xShift: GetXShift(site),
                   leftY: 0, rightY: Ny, yShift: GetYShift(site));
 public FieldsAtSiteCalculatedEventArgs(ObservationSite observationSite, ComplexVector normalField, ComplexVector anomalyField)
 {
     ObservationSite = observationSite;
     NormalField     = normalField;
     AnomalyField    = anomalyField;
 }
Пример #25
0
        public static decimal FindMinYInsideAnomaly(LateralDimensions dimensions, ObservationSite site)
        {
            var remainder = Decimal.Remainder(site.Y, dimensions.CellSizeY);

            return(Min(remainder, dimensions.CellSizeY - remainder));
        }