Esempio n. 1
0
        protected override ComplexVector CalculateNormalFieldE(ObservationSite site)
        {
            var impedance = PlaneWaveCalculator.CalculateFieldE(Model, site.Z);

            if (CurrentSource == Polarization.X)
            {
                return(new ComplexVector(impedance, 0, 0));
            }
            if (CurrentSource == Polarization.Y)
            {
                return(new ComplexVector(0, impedance, 0));
            }
            throw new InvalidOperationException();
        }
Esempio n. 2
0
        protected override AnomalyCurrent CalculateNormalFieldE(ObservationLevel level)
        {
            var normalField = AnomalyCurrent.AllocateNewOneLayer(MemoryProvider, Model);

            Clear(normalField);
            var mtImpedanceOnObs = PlaneWaveCalculator.CalculateFieldE(Model, level.Z);

            if (CurrentSource == Polarization.X)
            {
                var la = GetLayerAccessorX(normalField, 0);
                SetValue(la, mtImpedanceOnObs);
            }

            if (CurrentSource == Polarization.Y)
            {
                var la = GetLayerAccessorY(normalField, 0);
                SetValue(la, mtImpedanceOnObs);
            }

            return(normalField);
        }
Esempio n. 3
0
        private static Complex CalculateEFieldForPlaneWaveOnAnomalies(OmegaModel model, IAnomalyLayer layer)
        {
            var reciever = Receiver.NewVolumetric(layer.Depth, layer.Thickness);

            return(PlaneWaveCalculator.CalculateFieldE(model, reciever.GetWorkingDepth(), layer.Thickness));
        }