Skip to content

ClimateGlobalChange/squadgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

\file README.md \author Paul Ullrich \version May 8, 2024

Copyright 2024 Paul Ullrich

This file is distributed as part of the Tempest source code package. Permission is granted to use, copy, modify and distribute this source code and its documentation under the terms of the GNU General Public License. This software is provided "as is" without express or implied warranty.

Spherical Quadrilateral Mesh Generator (SQuadGen)

REQUIRED EXTERNAL LIBRARIES libpng libnetcdf

BUILDING Modify src/Makefile to specify NetCDF paths make all

SYNOPSIS ./SQuadGen

PARAMETERS --grid_type ["CS"] (Options: CS | ICO | OCT1 | OCT2) --refine_type ["LOWCONN"] (Options: LOWCONN | CUBIT | LOWCONNOLD) --refine_level [2] --resolution [10] --refine_file [""] --refine_rect [""] --output [""] --loadcsrefinementmap [false] --smooth_type ["NONE"] (Options: NONE | SPRING | PRESSURE) --smooth_dist [1] (Smooth distance, -1 = smooth entire mesh) --smooth_iter [10] --lon_base [-180.000000] --lat_base [0.000000] --x_rotate [0.000000] --y_rotate [0.000000] --lon_ref [0.000000] --lat_ref [0.000000] --orient_ref [0.000000] --tessellate [0] --subcellres [0] --invert [false] --block_refine [false]

DESCRIPTION SQuadGen is a mesh generation utility that uses a cubed-sphere base mesh to generate quadrilateral meshes with user-specified enhancements. In order to determine where enhancement is desired, the user provides a PNG file which corresponds to a latitude-longitude grid. Raster values with higher brightness (whiter values) are tagged for refinement. The algorithm uses a basic paving technique and supports two paving stencil types: Low-connectivity (LOWCONN) and CUBIT-type transition regions.

OPTIONS --grid_type (CS) | ICO

Type of base mesh to use for refinement: cubed-sphere (CS) or icosahedral
(ICO).  If ICO is specified, generate a basic icosahedral flag mesh.  All
refinement criteria will be ignored in this case.

--refine_type (LOWCONN) | CUBIT | LOWCONNOLD

Type of paving stencil to use LOWCONN, CUBIT or LOWCONNOLD.  LOWCONN provides
a few enhancements over the previous LOWCONN old template by removing
spurious elements with high aspect ratios (typically near interior corners).

--refine_level

Number of levels of refinement to use in grid generation. Each refinement 
level corresponds to a 2x refinement of the mesh.

--resolution

Base resolution of the mesh. For cubed-sphere meshes this corresponds to the
number of faces along each edge of the cubed-sphere.

--refine_file

Filename of the PNG file to use for specifying refinement regions.

--refine_rect

An argument specifying rectangular regions on the cubed-sphere where 
refinement should be applied. Each refine_rect should be separated by a
semi-colon and consists of five arguments:

<lon1>,<lat1>,<lon2>,<lat2>,<level>

where <lon1>,<lat1> are the longitude-latitude coordinates of the lower-right
corner of the refinement region, <lon2>,<lat2> are the longitude-latitude
coordinates of the upper-right corner of the refinement region, and <level>
is the number of levels of refinement.

--output

Filename for the output EXODUS-format grid file.

--loadcsrefinementmap

(ADVANCED) If specified, the refinement map will be reloaded from the
previously generated refine_map.dat file.  This option allows for manual
editing of the cubed-sphere refine map.

--smooth_type (NONE) | SPRING

If SPRING is specified, use spring-dynamics type mesh smoothing once the
refined mesh has been generated.

--smooth_dist

By default (smooth dist 1) only nodes which are part of the transition region
will be smoothed.  Larger values of smooth_dist includes nodes of distance
smooth_dist away from the transition region (by edge connectivity).  If
smooth_dist is set to -1 then the entire mesh will be subjected to smoothing.

--smooth_iter

Number of smoothing iterations to perform.  A larger value will typically
result in a smoother mesh.

--lon_base

Longitude coordinate (in degrees) of the left-most edge of the PNG image.

--lon_shift

Amount of rotation (in degrees) to apply to the base mesh.

--lon_ref

The central longitude of the first panel of the cubed-sphere (in degrees).

--lat_ref

The central latitude of the first panel of the cubed-sphere (in degrees).

--orient_ref

The orientation of the cubed sphere at <lon_ref>,<lat_ref> in degrees.
A value of 0 means the cubed-sphere is aligned perfectly zonal at the\
reference point. A value of 45 means the cubed-sphere is inclined by 45
degrees at this point.

--invert

Invert the base image (so black identifies regions of refinement).

--block_refine

Turn on block-wise tagging of elements for refinement.