Source code for simbi.coordinate_handler

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 15 15:27:11 2022

@author: hofer
"""

import numpy as np

[docs]def get_1Dcoordinates(max_coords: list, scalar: int=1, clength: int=200 ) -> tuple[list[np.ndarray], int]: """ Calculates 1D coordinates for each dimension. Args: max_coords: List of maximum coordinates for each dimension. scalar: Scalar for maximum coordinates. clength: Coordinate length. Returns: coords_1d: List of 1D coordinates for each dimension. clength: Coordinate length. """ new_max_coords = [maxv * scalar for maxv in max_coords] coords_1d = [np.linspace(-maxv, maxv, clength) for maxv in new_max_coords] return coords_1d, clength
[docs]def get_differential_elements(coord_list: list[np.ndarray]) -> list[float]: """ Calculates differential elements for numeric integration Args: coord_list: List of coordinates for each dimension. Returns: dx_nd: List of differential elements for each dimension. """ dim = len(coord_list) dx_1d = [coords[1] - coords[0] for coords in coord_list] dx_nd = [np.prod(dx_1d[:dim-i]) for i in range(len(dx_1d))] return dx_nd
[docs]def get_coordinates(max_coords: list[float], scalar: int=1, clength: int=200, multi: bool=False ) -> tuple[list[np.ndarray], list[np.ndarray], list[float], int]: """ Gets coordinates for each dimension. Args: max_coords: List of maximum coordinates for each dimension. scalar: Scalar for maximum coordinates. clength: Coordinate length. Returns: coords_1d: List of 1D coordinates for each dimension. coord_maps: List of coordinate maps for each dimension. differential_elements: List of differential elements for each dimension. clength: Coordinate length. """ dim = len(max_coords) coords_1d, _ = get_1Dcoordinates(max_coords, scalar, clength) differential_elements = get_differential_elements(coords_1d) coord_maps = [np.meshgrid(*coords_1d[:dim-i]) for i in range(len(coords_1d))] if multi: return coords_1d, coord_maps, differential_elements, clength else: return coords_1d, coord_maps[0], differential_elements[0], clength
[docs]def integrate_array(iarray, differential_element): return np.sum(iarray) * differential_element