Skip to content

Modules: Pre-processing #19

Open
Open
@utkinis

Description

@utkinis

Description

Write a module to generate the input data for FastIce from topography data. Most of the functionality is already implemented in the scripts, need to package and expose API.

The pre-processing happens in two stages:

  1. Extract the data from the source, e.g., BedMachine. Keep only relevant data, convert to the format supported by FastIce.
  2. In FastIce, load the data in a compatible format, select a subset of the data, transform, and create the object supporting sampling this data.

Step 1 should be outside the FastIce repo, and step 2 could be the part of the core library. We need to support synthetic data sources to be able to generate topography analytically.

Tasks

Data extraction (Stage 1)

  • BedMachine Greenland/Antarctica - NetCDF
  • Vavilov ice cap - GeoTIFF
  • GLAMOS (Swiss glaciers) - GeoTIFF

Data processing (Stage 2)

  • Load data for a selected region. By default, the region includes the whole data range.
  • Transform the data (scale, translate, rotate)
  • Compute the axis-aligned bounding-box (AABB)
  • Generate the rotation matrix minimising the AABB volume
  • Create the DEM sampler object returning the value at (x, y) in 3D, or (x) in 2D, and optionally the gradient vector at a point (using AD)
  • For DEM data, create an SDF object returning the signed distance to the closest point on a surface, and optionally the gradient vector (using AD)
  • For DEM, make a combined sampler returning the result of a binary operation between the two samplers, for example, to offset the smooth real data with a procedural noise

Synthetic data sources

  • Make a collection of SDF primitives: sphere, box, etc. Each primitive should conform to the same interface as the SDF object for a real data
  • Set operations: Union, Intersection, Difference
  • Create an SDF object returning the distance estimate for an arbitrary smooth function
  • Make a data source stochastically generating the bed topography

Extensions for distributed computing

  • Each MPI rank must load only the subset of the data that is relevant to it's local subdomain

Metadata

Metadata

Assignees

Labels

devDevelopment step

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions