Skip to content

Point Segment

Fields

cfsem.flux_density_point_segment

flux_density_point_segment(
    xyzp: Array3xN,
    xyzfil: Array3xN,
    dlxyzfil: Array3xN,
    ifil: NDArray[float64],
    par: bool = True,
) -> Array3xN

Biot-Savart law calculation for B-field contributions from many filament segments to many observation points, treating each segment as a point source.

Parameters:

Name Type Description Default
xyzp Array3xN

[m] x,y,z coords of observation points

required
xyzfil Array3xN

[m] x,y,z coords of filament segment start points

required
dlxyzfil Array3xN

[m] x,y,z deltas from segment start to segment end

required
ifil NDArray[float64]

[A] current in each filament segment

required
par bool

Whether to use CPU parallelism

True

Returns:

Type Description
Array3xN

[T] (Bx, By, Bz) magnetic flux density at observation points

Source code in cfsem/bindings.py
def flux_density_point_segment(
    xyzp: Array3xN,
    xyzfil: Array3xN,
    dlxyzfil: Array3xN,
    ifil: NDArray[float64],
    par: bool = True,
) -> Array3xN:
    """
    Biot-Savart law calculation for B-field contributions from many filament segments
    to many observation points, treating each segment as a point source.

    Args:
        xyzp: [m] x,y,z coords of observation points
        xyzfil: [m] x,y,z coords of filament segment start points
        dlxyzfil: [m] x,y,z deltas from segment start to segment end
        ifil: [A] current in each filament segment
        par: Whether to use CPU parallelism

    Returns:
        [T] (Bx, By, Bz) magnetic flux density at observation points
    """
    xyzp = _3tup_contig(xyzp)
    xyzfil = _3tup_contig(xyzfil)
    dlxyzfil = _3tup_contig(dlxyzfil)
    ifil = ascontiguousarray(ifil).ravel()
    return em_flux_density_point_segment(xyzp, xyzfil, dlxyzfil, ifil, par)

cfsem.vector_potential_point_segment

vector_potential_point_segment(
    xyzp: Array3xN,
    xyzfil: Array3xN,
    dlxyzfil: Array3xN,
    ifil: NDArray[float64],
    par: bool = True,
) -> Array3xN

Vector potential calculation for A-field contribution from many filament segments to many observation points, treating each segment as a point source.

Parameters:

Name Type Description Default
xyzp Array3xN

[m] x,y,z coords of observation points

required
xyzfil Array3xN

[m] x,y,z coords of filament segment start points

required
dlxyzfil Array3xN

[m] x,y,z deltas from segment start to segment end

required
ifil NDArray[float64]

[A] current in each filament segment

required
par bool

Whether to use CPU parallelism

True

Returns:

Type Description
Array3xN

[Wb/m] or [V-s/m] (Ax, Ay, Az) magnetic vector potential at observation points

Source code in cfsem/bindings.py
def vector_potential_point_segment(
    xyzp: Array3xN,
    xyzfil: Array3xN,
    dlxyzfil: Array3xN,
    ifil: NDArray[float64],
    par: bool = True,
) -> Array3xN:
    """
    Vector potential calculation for A-field contribution from many filament
    segments to many observation points, treating each segment as a point source.

    Args:
        xyzp: [m] x,y,z coords of observation points
        xyzfil: [m] x,y,z coords of filament segment start points
        dlxyzfil: [m] x,y,z deltas from segment start to segment end
        ifil: [A] current in each filament segment
        par: Whether to use CPU parallelism

    Returns:
        [Wb/m] or [V-s/m] (Ax, Ay, Az) magnetic vector potential at observation points
    """
    xyzp = _3tup_contig(xyzp)
    xyzfil = _3tup_contig(xyzfil)
    dlxyzfil = _3tup_contig(dlxyzfil)
    ifil = ascontiguousarray(ifil).ravel()
    return em_vector_potential_point_segment(xyzp, xyzfil, dlxyzfil, ifil, par)