Acceleration Structures

Two different acceleration structures are implemented in LyceanEM. The first is a tile based method which is optimised for scenarios where the source and sink are positioned with the majority of triangles in a plane, such as a satellite above a map tile.

The second is a brute force approach without any acceleration method.

class lyceanem.models.acceleration_structures.Brute_Force_acceleration_structure(blocking_mesh)[source]

This class is used to create a brute force acceleration structure for the scattering calculation.

Parameters:

blocking_mesh (meshio.Mesh) – The mesh to be used for the blocking structure.

triangle_verticies

The vertices of the triangles in the blocking mesh.

Type:

numpy.ndarray of float

triangles

The triangles in the blocking mesh.

Type:

numpy.ndarray of int

calculate_scattering(source_mesh, sink_mesh, alpha, beta, wavelength, self_to_self, chunk_count=1)[source]

Calculate the scattering from the source mesh to the sink mesh.

class lyceanem.models.acceleration_structures.Tile_acceleration_structure(blocking_mesh, n_cells)[source]

This class is used to create a tile acceleration structure for the scattering calculation.

Parameters:
  • blocking_mesh (meshio.Mesh) – The mesh to be used for the blocking structure.

  • n_cells (int) – The number of cells to be used for the tile acceleration structure.

triangle_verticies

The vertices of the triangles in the blocking mesh.

Type:

numpy.ndarray of float

max_x

The maximum x coordinate of the blocking mesh.

Type:

float

min_x

The minimum x coordinate of the blocking mesh.

Type:

float

max_y

The maximum y coordinate of the blocking mesh.

Type:

float

min_y

The minimum y coordinate of the blocking mesh.

Type:

float

max_z

The maximum z coordinate of the blocking mesh.

Type:

float

min_z

The minimum z coordinate of the blocking mesh.

Type:

float

tile_size

The size of the tiles used for the acceleration structure.

Type:

float

y_cells_count

The number of cells in the y direction.

Type:

int

z_cells_count

The number of cells in the z direction.

Type:

int

bin_counts

The counts of triangles in each bin.

Type:

numpy.ndarray of float

binned_triangles_count

The total number of triangles in the bins

Type:

int

binned_triangles

The triangles in the bins.

Type:

numpy.ndarray of float

calculate_scattering(source_mesh, sink_mesh, alpha, beta, wavelength, self_to_self, chunk_count=1)[source]

Calculate the scattering from the source mesh to the sink mesh.