Source code for ossdbs.utils.field_computation

# Copyright 2023, 2024 Julius Zimmermann
# SPDX-License-Identifier: GPL-3.0-or-later

import logging

import numpy as np

_logger = logging.getLogger(__name__)


[docs]def compute_field_magnitude(fields: np.ndarray): """Compute magnitude of field vector.""" if len(fields.shape) != 2 or fields.shape[1] != 3: raise ValueError("Attempt to compute field magnitude from invalid field vector") # TODO fix for complex vectors field_mags = np.linalg.norm(fields, axis=1).reshape((fields.shape[0], 1)) _logger.debug(f"Shapes of field_mags: {field_mags.shape}") return field_mags
[docs]def compute_field_magnitude_from_components( Ex: np.ndarray, Ey: np.ndarray, Ez: np.ndarray ): """Compute magnitude of field vector.""" Ex2 = (Ex * np.conj(Ex)).real Ey2 = (Ey * np.conj(Ey)).real Ez2 = (Ez * np.conj(Ez)).real field_mags = np.sqrt(Ex2 + Ey2 + Ez2) _logger.debug(f"Shapes of field_mags: {field_mags.shape}") return field_mags