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:
Extract the data from the source, e.g., BedMachine. Keep only relevant data, convert to the format supported by FastIce.
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
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:
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)
Data processing (Stage 2)
Synthetic data sources
Extensions for distributed computing