Source code for mpas_tools.mesh.creation.jigsaw_driver

from __future__ import absolute_import, division, print_function, \
    unicode_literals

import numpy
import jigsawpy


[docs]def jigsaw_driver(cellWidth, x, y, on_sphere=True, geom_points=None, geom_edges=None): ''' A function for building a jigsaw mesh Parameters ---------- cellWidth : ndarray The size of each cell in the resulting mesh as a function of space x, y : ndarray The x and y coordinates of each point in the cellWidth array (lon and lat for spherical mesh) on_sphere : logical Whether this mesh is spherical or planar geom_points : list of point coordinates for bounding polygon for planar mesh geom_edges : list of edges between points in geom_points that define the bounding polygon ''' # Authors # ------- # Mark Petersen, Phillip Wolfram, Xylar Asay-Davis # setup files for JIGSAW opts = jigsawpy.jigsaw_jig_t() opts.geom_file = 'mesh.msh' opts.jcfg_file = 'mesh.jig' opts.mesh_file = 'mesh-MESH.msh' opts.hfun_file = 'mesh-HFUN.msh' # save HFUN data to file hmat = jigsawpy.jigsaw_msh_t() if on_sphere: hmat.mshID = 'ELLIPSOID-GRID' hmat.xgrid = numpy.radians(x) hmat.ygrid = numpy.radians(y) else: hmat.mshID = 'EUCLIDEAN-GRID' hmat.xgrid = x hmat.ygrid = y hmat.value = cellWidth jigsawpy.savemsh(opts.hfun_file, hmat) # define JIGSAW geometry geom = jigsawpy.jigsaw_msh_t() if on_sphere: geom.mshID = 'ELLIPSOID-MESH' geom.radii = 6371.*numpy.ones(3, float) else: geom.mshID = 'EUCLIDEAN-MESH' geom.vert2 = geom_points geom.edge2 = geom_edges #geom.edge2.index = geom_edges print (geom_points) jigsawpy.savemsh(opts.geom_file, geom) # build mesh via JIGSAW! mesh = jigsawpy.jigsaw_msh_t() opts.hfun_scal = 'absolute' opts.hfun_hmax = float("inf") opts.hfun_hmin = 0.0 opts.mesh_dims = +2 # 2-dim. simplexes opts.optm_qlim = 0.9375 opts.verbosity = +1 jigsawpy.cmd.jigsaw(opts)