public ComplexVector CalculateAnomalyFieldH(ObservationSite site, AnomalyCurrent jQ) { var gt = CalculateGreenTensorAtoOSiteMagnetic(site); var result = CalculateH(gt, jQ); return(result); }
private static double FindRhoMinInsideAnomaly(LateralDimensions dimensions, ObservationSite site) { var minX = FindMinXInsideAnomaly(dimensions, site); var minY = FindMinYInsideAnomaly(dimensions, site); return((double)Min(minX, minY)); }
public ComplexVector CalculateAnomalyFieldE(ObservationSite site, AnomalyCurrent jQ) { var gt = CalculateGreenTensorAtoOSiteElectric(site); var result = ConvolutorE(gt, jQ); return(result); }
protected override void OnHFieldsAtSiteCalculated(ObservationSite site, ComplexVector normalField, ComplexVector anomalyField) { var e = new MtFieldsAtSiteCalculatedEventArgs(CurrentSource, site, normalField, anomalyField); HFieldsAtSiteCalculated?.Invoke(this, e); }
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))); }
private static double FindRhoMin(LateralDimensions dimensions, ObservationSite site) { if (SiteIsInsideAnomaly(dimensions, site)) { return(FindRhoMinInsideAnomaly(dimensions, site)); } return(FindRhoMinOutsideAnomaly(dimensions, site)); }
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()); }
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); }
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(); }
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); }
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, ' ')); }
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); }
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)); }
/// <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())); }
protected virtual void OnHFieldsAtSiteCalculated(ObservationSite site, ComplexVector normalField, ComplexVector anomalyField) { }
protected abstract ComplexVector CalculateNormalFieldH(ObservationSite site);
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);
public MtFieldsAtSiteCalculatedEventArgs(Polarization polarization, ObservationSite observationSite, ComplexVector normalField, ComplexVector anomalyField) : base(observationSite, normalField, anomalyField) { Polarization = polarization; }
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; }
public static decimal FindMinYInsideAnomaly(LateralDimensions dimensions, ObservationSite site) { var remainder = Decimal.Remainder(site.Y, dimensions.CellSizeY); return(Min(remainder, dimensions.CellSizeY - remainder)); }