Skip to content

DOE-ICoM/icom-mesh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

db368de · Oct 21, 2020

History

14 Commits
Oct 9, 2020
Oct 20, 2020
Oct 20, 2020
Oct 14, 2020
Oct 20, 2020
Oct 20, 2020
Oct 20, 2020
Sep 17, 2020

Repository files navigation

ICoM-MESH

The "unified" multi-model meshing workflow.

Quickstart

ICoM-MESH requires a number of dependencies be installed, including: JIGSAW (the underlying mesh generator), MPAS-Tools (to manipulate MPAS-format mesh data-structures), as well as various Python packages and utilities and data files. Once installed, meshes can be built via:

clone/download + unpack this repository
python extract.py
python meshify.py --mesh-path="PATH-TO-USER-MESH-DIRECTORY"

Dependencies can either be built directly from src, or installed using the conda package manager (highly recommended!):

conda create -n icom_mesh_plus python=3.7 netCDF4 scipy geojson fiona mpas_tools jigsaw jigsawpy

It's also necessary to install githubrelease via: pip install githubrelease.

Data files can be downloaded from the ICoM-MESH-DATA repository using the extract.py utility. Assets are unpacked into the local ../data directory.

Each time you want to use ICoM-MESH first activate the environment using: conda activate icom_mesh_plus

Once activated, the various command-line utilities and Python packages will be available to the ICoM-MESH workflows contained in this repository. For example:

conda activate icom_mesh_plus
python meshify.py --mesh-path="mesh/vanilla_100"
conda deactivate

These commands will build the "vanilla-100" mesh configuration defined in the ../mesh/vanilla_100 directory.

Mesh Build

ICoM-MESH defines various mesh configurations, with each ../mesh/USER-MESH-DIRECTORY containing the user-defined script compose.py used to design a particular grid. Running:

python meshify.py --mesh-path="PATH-TO-USER-MESH-DIRECTORY"

initiates the mesh build process, roughly consisting of the following steps:

The local ../USER-MESH-DIRECTORY/compose.py script is called to define: the geometry, 
initial conditions, mesh spacing pattern, etc.
JIGSAW is called to build the triangular mesh.
MPAS mesh-tools is used to assemble MPAS-format data / file structures.
Output is exported for the various ESM, FVCOM and ATS model components.

Output is written to ../mesh/USER-MESH-DIRECTORY/out/ with ../mesh/USER-MESH-DIRECTORY/tmp/ used for scratch storage. Various *.vtk output is also generated, allowing meshes to be visualised with, for example, Paraview.

Mesh Setup

Mesh configurations are defined using a local compose.py script that should contain the following functions:

compose.setgeom: defines the geometry for the mesh: ellipsoid shape, boundaries, 
                 coastlines, stream networks, etc.
compose.setspac: defines the spacing pattern for the mesh: the variation in 
                 target edge length throughout the domain.
compose.setinit: defines the initial conditions: (optional) an initialising mesh 
                 object on which subsequent refinement / optimisation operations 
                 are based.
compose.setopts: defines any runtime meshing options.

This information is used by JIGSAW / MPAS mesh-tools to build a specific mesh configuration.

To define a new configuration, create a new ../mesh/USER-MESH-DIRECTORY containing a compose.py script and ../tmp and ../out subdirectories. Customise the routines in compose.py to define your mesh!

About

The "unified" multi-model meshing workflow.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages