Ejemplo n.º 1
0
        private GreenTensor CalculateGreenTensorMagnetic(SourceLayer layer, ObservationLevel level)
        {
            var plan             = _plansCreater.CreateForSourceToObservation(layer, level);
            var transceiver      = TranceiverUtils.CreateSourceToObservations(SourceThickness, layer, level);
            var scalarCalculator = GreenScalarCalculator.NewAtoOMagneticCalculator(Logger, Model);

            plan.CalculateI5 = false;
            var scalars = scalarCalculator.Calculate(plan, transceiver);

            using (var segments = ScalarSegments.AllocateAndConvert(MemoryProvider, plan, scalars))
            {
                var tensorPlan = new TensorPlan(_templateTensorPlan, layer, level);
                _gtc.ResetKnots();
                var gt = _gtc.CalculateAtoOMagnetic(segments, MemoryLayoutOrder.AlongVertical, tensorPlan);

                PerformGreenTensorFft(gt);
                return(gt);
            }
        }
Ejemplo n.º 2
0
        private unsafe GreenTensor CalculateGreenTensorAtoOLevelMagnetic(ObservationLevel level)
        {
            using (Solver.Profiler?.StartAuto(ProfilerEvent.AtoOGreenCalc))
            {
                var plan             = _plansCreater.CreateForAnomalyToObservationLevels(level);
                var transceiver      = TranceiverUtils.CreateAnomalyToObservation(Model.Anomaly, level);
                var scalarCalculator = GreenScalarCalculator.NewAtoOMagneticCalculator(Logger, Model);
                plan.CalculateI5 = false;
                var scalars = scalarCalculator.Calculate(plan, transceiver);

                using (var segments = ScalarSegments.AllocateAndConvert(MemoryProvider, plan, scalars))
                {
                    var tensorPlan = new TensorPlan(_templateTensorPlan, level);
                    _gtc.ResetKnots();
                    var gt = _gtc.CalculateAtoOMagnetic(segments, MemoryLayoutOrder.AlongVertical, tensorPlan);

                    PerformGreenTensorFft(gt);
                    return(gt);
                }
            }
        }