示例#1
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();
        }
示例#2
0
        protected override AnomalyCurrent CalculateNormalFieldH(ObservationLevel level)
        {
            var normalField = AnomalyCurrent.AllocateNewOneLayer(MemoryProvider, Model);

            Clear(normalField);
            var mtAdmitanceOnObs = PlaneWaveCalculator.CalculateFieldH(Model, level.Z);

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

            if (CurrentSource == Polarization.Y)
            {
                var la = GetLayerAccessorX(normalField, 0);
                SetValue(la, -mtAdmitanceOnObs);
            }

            return(normalField);
        }
示例#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));
        }