diff --git a/ci/install-dependencies-linux.sh b/ci/install-dependencies-linux.sh index 666af4999c5..dd8d3c41540 100755 --- a/ci/install-dependencies-linux.sh +++ b/ci/install-dependencies-linux.sh @@ -41,8 +41,7 @@ sudo apt-get update sudo apt-get install -y --no-install-recommends --no-install-suggests $packages # Install packages via conda -conda update -n base -c conda-forge conda --solver libmamba -conda install ${conda_packages} -c conda-forge --solver libmamba +conda install ${conda_packages} -c conda-forge echo "${CONDA}/bin" >> $GITHUB_PATH # Remove pcre-config from conda's path so cmake won't find the conda's one diff --git a/ci/install-dependencies-macos.sh b/ci/install-dependencies-macos.sh index d2af804cb62..cc92e9b6652 100755 --- a/ci/install-dependencies-macos.sh +++ b/ci/install-dependencies-macos.sh @@ -42,8 +42,7 @@ fi brew install ${packages} # Install packages via conda -conda update -n base -c conda-forge conda --solver libmamba -conda install ${conda_packages} -c conda-forge --solver libmamba +conda install ${conda_packages} -c conda-forge echo "${CONDA}/bin" >> $GITHUB_PATH # Remove pcre-config from conda's path so cmake won't find the conda's one diff --git a/ci/install-dependencies-windows.sh b/ci/install-dependencies-windows.sh index 507f7d1e7c9..5b3a5f6a1f5 100755 --- a/ci/install-dependencies-windows.sh +++ b/ci/install-dependencies-windows.sh @@ -48,8 +48,7 @@ if [ "$PACKAGE" = "true" ]; then fi # install more packages using conda -$CONDA\\Scripts\\conda.exe update -n base -c conda-forge conda --solver libmamba -$CONDA\\Scripts\\conda.exe install ${conda_packages} -c conda-forge --solver libmamba +$CONDA\\Scripts\\conda.exe install ${conda_packages} -c conda-forge echo "$CONDA\\Library\\bin" >> $GITHUB_PATH echo "$CONDA\\Scripts" >> $GITHUB_PATH diff --git a/doc/examples/ex03/ex03.bat b/doc/examples/ex03/ex03.bat index dfb9e231f53..b304a10fa9c 100644 --- a/doc/examples/ex03/ex03.bat +++ b/doc/examples/ex03/ex03.bat @@ -3,7 +3,7 @@ REM REM Purpose: Resample track data, do spectral analysis, and plot REM GMT modules: filter1d, fitcircle, gmtconvert, gmtinfo, project, sample1d REM spectrum1d, plot, subplot, legend, math -REM DOS calls: echo, set, del +REM DOS calls: set, del REM REM This example begins with data files "ship_03.txt" and "sat_03.txt" which REM are measurements of a quantity "g" (a "gravity anomaly" which is an diff --git a/doc/examples/ex04/ex04.bat b/doc/examples/ex04/ex04.bat index 5197be66f48..bc6198ca345 100644 --- a/doc/examples/ex04/ex04.bat +++ b/doc/examples/ex04/ex04.bat @@ -2,7 +2,6 @@ REM GMT EXAMPLE 04 REM REM Purpose: 3-D mesh and color plot of Hawaiian topography and geoid REM GMT modules: grdcontour, grdimage, grdview, basemap, coast, text, makecpt -REM DOS calls: echo REM gmt begin gmt figure ex04 diff --git a/doc/examples/ex04/ex04.sh b/doc/examples/ex04/ex04.sh index 51216368d2e..f9020b5f80d 100755 --- a/doc/examples/ex04/ex04.sh +++ b/doc/examples/ex04/ex04.sh @@ -3,7 +3,6 @@ # # Purpose: 3-D mesh and color plot of Hawaiian topography and geoid # GMT modules: colorbar, grdcontour, grdimage, grdview, basemap, coast, text, makecpt -# Unix progs: echo, rm # gmt begin gmt figure ex04 diff --git a/doc/examples/ex07/ex07.bat b/doc/examples/ex07/ex07.bat index 1bac14ae916..e683ae5929f 100644 --- a/doc/examples/ex07/ex07.bat +++ b/doc/examples/ex07/ex07.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 07 REM REM Purpose: Make a basemap with earthquakes and isochrons, etc. REM GMT modules: coast, legend, text, plot +REM DOS calls: del REM gmt begin ex07 gmt coast -R-50/0/-10/20 -JM24c -Slightblue -GP26+r300+ftan+bdarkbrown -Dl -Wthinnest -B --FORMAT_GEO_MAP=dddF diff --git a/doc/examples/ex11/ex11.sh b/doc/examples/ex11/ex11.sh index 4c348b20a7f..333f6fa26c4 100755 --- a/doc/examples/ex11/ex11.sh +++ b/doc/examples/ex11/ex11.sh @@ -3,7 +3,7 @@ # # Purpose: Create a 3-D RGB Cube # GMT modules: set, grdimage, grdmath, text, plot -# Unix progs: rm +# Unix progs: echo, rm gmt begin ex11 # Use gmt plot to plot "cut-along-the-dotted" lines. gmt set MAP_TICK_LENGTH_PRIMARY 0 diff --git a/doc/examples/ex18/ex18.bat b/doc/examples/ex18/ex18.bat index f157ae11453..f83da7f8063 100644 --- a/doc/examples/ex18/ex18.bat +++ b/doc/examples/ex18/ex18.bat @@ -4,7 +4,7 @@ REM Purpose: Illustrates volumes of grids inside contours and spatial REM selection of data REM GMT modules: gmtset, gmtselect, gmtspatial, grdclip, grdcontour, grdimage REM GMT modules: grdmath, grdvolume, makecpt, coast, colorbar, text, plot -REM DOS calls: del +REM DOS calls: del, echo, set REM gmt begin ex18 REM Use spherical gmt projection since SS data define on sphere diff --git a/doc/examples/ex18/ex18.sh b/doc/examples/ex18/ex18.sh index 76b829e9aa9..a8e172c0c21 100755 --- a/doc/examples/ex18/ex18.sh +++ b/doc/examples/ex18/ex18.sh @@ -5,7 +5,7 @@ # selection of data # GMT modules: gmtset, gmtselect, gmtspatial, grdclip, grdcontour, grdimage # GMT modules: grdmath, grdvolume, makecpt, coast, colorbar, text, plot -# Unix progs: rm +# Unix progs: echo, rm # gmt begin ex18 # Use spherical gmt projection since SS data define on sphere diff --git a/doc/examples/ex21/ex21.bat b/doc/examples/ex21/ex21.bat index 2fad1dd66f6..5832a475812 100644 --- a/doc/examples/ex21/ex21.bat +++ b/doc/examples/ex21/ex21.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 21 REM REM Purpose: Plot a time-series REM GMT modules: set, convert, info, basemap, plot +REM DOS calls: del, echo, set REM gmt begin ex21 REM File has time stored as dd-Mon-yy so set input format to match it diff --git a/doc/examples/ex22/ex22.bat b/doc/examples/ex22/ex22.bat index a94f744d7ba..7e57c8f63e5 100644 --- a/doc/examples/ex22/ex22.bat +++ b/doc/examples/ex22/ex22.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 22 REM REM Purpose: Automatic map of last month of world-wide seismicity REM GMT modules: set, coast, plot, legend +REM DOS calls: del, echo, set REM gmt begin ex22 gmt set FONT_ANNOT_PRIMARY 10p FONT_TITLE 18p FORMAT_GEO_MAP ddd:mm:ssF diff --git a/doc/examples/ex22/ex22.sh b/doc/examples/ex22/ex22.sh index 74626afecd1..00844697f8e 100755 --- a/doc/examples/ex22/ex22.sh +++ b/doc/examples/ex22/ex22.sh @@ -3,7 +3,7 @@ # # Purpose: Automatic map of last month of world-wide seismicity # GMT modules: coast, plot, legend -# Unix progs: cat, sed, awk, wget|curl +# Unix progs: cat, wget|curl # gmt begin ex22 # Get the data (-s silently) from USGS using the curl diff --git a/doc/examples/ex26/ex26.bat b/doc/examples/ex26/ex26.bat index ba81bd024e0..0f782a23dbc 100644 --- a/doc/examples/ex26/ex26.bat +++ b/doc/examples/ex26/ex26.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 26 REM REM Purpose: Demonstrate general vertical perspective projection REM GMT modules: coast +REM DOS calls: set REM gmt begin ex26 REM first do an overhead of the east coast from 160 km altitude point straight down diff --git a/doc/examples/ex27/ex27.bat b/doc/examples/ex27/ex27.bat index 866fb398acb..7fcb2abc292 100644 --- a/doc/examples/ex27/ex27.bat +++ b/doc/examples/ex27/ex27.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 27 REM REM Purpose: Illustrates how to plot Mercator img grids REM GMT modules: makecpt, grdimage, grdinfo, coast, colorbar +REM DOS calls: set REM gmt begin ex27 REM Gravity in tasman_grav.nc is in 0.1 mGal increments and the grid diff --git a/doc/examples/ex28/ex28.bat b/doc/examples/ex28/ex28.bat index 84eaa6b0619..f65c70a2ccd 100644 --- a/doc/examples/ex28/ex28.bat +++ b/doc/examples/ex28/ex28.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 28 REM REM Purpose: Illustrates how to mix UTM data and UTM gmt projection REM GMT modules: makecpt, grdimage, coast, text, basemap +REM DOS calls: echo REM gmt begin ex28 REM Set up a color table diff --git a/doc/examples/ex28/ex28.sh b/doc/examples/ex28/ex28.sh index f4a45dc107d..aa4f65f4e9b 100755 --- a/doc/examples/ex28/ex28.sh +++ b/doc/examples/ex28/ex28.sh @@ -3,6 +3,7 @@ # # Purpose: Illustrates how to mix UTM data and UTM gmt projection # GMT modules: makecpt, grdimage, coast, text, basemap +# Unix progs: echo # gmt begin ex28 # Set up a color table diff --git a/doc/examples/ex35/ex35.sh b/doc/examples/ex35/ex35.sh index 3c56722658e..c67cd369edb 100755 --- a/doc/examples/ex35/ex35.sh +++ b/doc/examples/ex35/ex35.sh @@ -3,7 +3,7 @@ # # Purpose: Illustrate sphtriangulate and sphdistance with GSHHG crude data # GMT modules: coast, plot, makecpt, grdimage, grdcontour, sphtriangulate, sphdistance -# Unix progs: rm +# Unix progs: awk, rm # # set AWK to awk if undefined diff --git a/doc/examples/ex36/ex36.bat b/doc/examples/ex36/ex36.bat index f6d6a8c854c..74acc8e1347 100644 --- a/doc/examples/ex36/ex36.bat +++ b/doc/examples/ex36/ex36.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 36 REM REM Purpose: Illustrate sphinterpolate with Mars radii data REM GMT modules: plot, makecpt, grdimage, sphinterpolate +REM DOS calls: del REM gmt begin ex36 REM Interpolate data of Mars radius from Mariner9 and Viking Orbiter spacecrafts diff --git a/doc/examples/ex36/ex36.sh b/doc/examples/ex36/ex36.sh index 8e4de2fef9a..428a94b2240 100755 --- a/doc/examples/ex36/ex36.sh +++ b/doc/examples/ex36/ex36.sh @@ -2,7 +2,7 @@ # GMT EXAMPLE 36 # # Purpose: Illustrate sphinterpolate with Mars radii data -# GMT modules: plot, makecpt, grdimage, sphinterpolate +# GMT modules: plot, makecpt, grdimage, sphinterpolate, subplot # Unix progs: rm # gmt begin ex36 diff --git a/doc/examples/ex38/ex38.sh b/doc/examples/ex38/ex38.sh index fdad2492105..a439bb4e111 100755 --- a/doc/examples/ex38/ex38.sh +++ b/doc/examples/ex38/ex38.sh @@ -2,7 +2,7 @@ # GMT EXAMPLE 38 # # Purpose: Illustrate histogram equalization on topography grids -# GMT modules: colorbar, text, makecpt, grdhisteq, grdimage +# GMT modules: colorbar, text, makecpt, grdhisteq, grdimage, subplot # Unix progs: rm # gmt begin ex38 diff --git a/doc/examples/ex39/ex39.bat b/doc/examples/ex39/ex39.bat index 40276f3b88f..9c056b804d8 100644 --- a/doc/examples/ex39/ex39.bat +++ b/doc/examples/ex39/ex39.bat @@ -2,13 +2,14 @@ REM GMT EXAMPLE 39 REM REM Purpose: Illustrate evaluation of spherical harmonic coefficients REM GMT modules: colorbar, text, makecpt, grdimage, sph2grd +REM DOS calls: del, echo REM gmt begin ex39 REM Evaluate the first 180, 90, and 30 order/degrees of Venus spherical REM harmonics topography model, skipping the L = 0 term (radial mean). REM File truncated from http://www.ipgp.fr/~wieczor/SH/VenusTopo180.txt.zip REM Wieczorek, M. A., Gravity and topography of the terrestrial planets, - REM Treatise on Geophysics, 10, 165-205, doi:10.1016/B978-044452748-6/00156-5, 2007 + REM Treatise on Geophysics, 10, 165-205, doi:10.1016/B978-044452748-6/00156-5, 2007 gmt sph2grd @VenusTopo180.txt -I1 -Rg -Ng -Gv1.nc -F1/1/25/30 gmt sph2grd @VenusTopo180.txt -I1 -Rg -Ng -Gv2.nc -F1/1/85/90 diff --git a/doc/examples/ex39/ex39.sh b/doc/examples/ex39/ex39.sh index a25582bf4ef..4dd045192f3 100755 --- a/doc/examples/ex39/ex39.sh +++ b/doc/examples/ex39/ex39.sh @@ -2,8 +2,8 @@ # GMT EXAMPLE 39 # # Purpose: Illustrate evaluation of spherical harmonic coefficients -# GMT modules: colorbar, text, makecpt, grdimage, sph2grd -# Unix progs: rm +# GMT modules: colorbar, text, makecpt, grd2cpt, grdimage, sph2grd +# Unix progs: echo, rm # gmt begin ex39 # Evaluate the first 180, 90, and 30 order/degrees of Venus spherical diff --git a/doc/examples/ex40/ex40.bat b/doc/examples/ex40/ex40.bat index 440472c36d8..713671669dc 100644 --- a/doc/examples/ex40/ex40.bat +++ b/doc/examples/ex40/ex40.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 40 REM REM Purpose: Illustrate line simplification and area calculations REM GMT modules: basemap, text, plot, gmtsimplify, gmtspatial, subplot +REM DOS calls: del REM gmt begin ex40 diff --git a/doc/examples/ex42/ex42.bat b/doc/examples/ex42/ex42.bat index c7918fd7ef0..22af6a168f8 100644 --- a/doc/examples/ex42/ex42.bat +++ b/doc/examples/ex42/ex42.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 42 REM REM Purpose: Illustrate Antarctica and stereographic projection REM GMT modules: makecpt, grdimage, coast, legend, colorbar, text, plot +REM DOS calls: del, echo REM gmt begin ex42 gmt set FONT_ANNOT_PRIMARY 12p FONT_LABEL 12p PROJ_ELLIPSOID WGS-84 FORMAT_GEO_MAP dddF diff --git a/doc/examples/ex42/ex42.sh b/doc/examples/ex42/ex42.sh index 14905380454..40c1e6d53ef 100755 --- a/doc/examples/ex42/ex42.sh +++ b/doc/examples/ex42/ex42.sh @@ -2,8 +2,8 @@ # GMT EXAMPLE 42 # # Purpose: Illustrate Antarctica and stereographic projection -# GMT modules: makecpt, grdimage, coast, legend, colorbar, set, text, plot -# Unix progs: [curl grdconvert] +# GMT modules: makecpt, grdimage, coast, legend, colorbar, set, text, plot, [grdconvert] +# Unix progs: [curl, gunzip] # gmt begin ex42 gmt set PROJ_ELLIPSOID WGS-84 diff --git a/doc/examples/ex43/ex43.bat b/doc/examples/ex43/ex43.bat index 53388a37d00..3534303d935 100644 --- a/doc/examples/ex43/ex43.bat +++ b/doc/examples/ex43/ex43.bat @@ -1,8 +1,8 @@ REM GMT EXAMPLE 43 REM REM Purpose: Illustrate regression and outlier detection -REM GMT modules: gmtregress, basemap, legend, text, plot -REM DOS calls: grep, awk, sed +REM GMT modules: gmtregress, basemap, legend, text, plot, which +REM DOS calls: grep, awk, sed, echo, del, set REM REM Data from Table 7 in Rousseeuw and Leroy, 1987. diff --git a/doc/examples/ex43/ex43.sh b/doc/examples/ex43/ex43.sh index b98cc7e2274..145c8646d39 100755 --- a/doc/examples/ex43/ex43.sh +++ b/doc/examples/ex43/ex43.sh @@ -3,7 +3,7 @@ # # Purpose: Illustrate regression and outlier detection # GMT modules: gmtregress, basemap, legend, text, plot -# Unix progs: grep, awk, sed +# Unix progs: cat, grep, awk, sed, rm # # set AWK to awk if undefined diff --git a/doc/examples/ex45/ex45.bat b/doc/examples/ex45/ex45.bat index 268018c4e39..1b8fe07995a 100644 --- a/doc/examples/ex45/ex45.bat +++ b/doc/examples/ex45/ex45.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 45 REM REM Purpose: Illustrate use of trend1d mixed models REM GMT modules: text, plot, trend1d +REM DOS calls: del REM gmt begin ex45 diff --git a/doc/examples/ex47/ex47.sh b/doc/examples/ex47/ex47.sh index 291071d9adf..f2b1e99c28e 100755 --- a/doc/examples/ex47/ex47.sh +++ b/doc/examples/ex47/ex47.sh @@ -3,7 +3,7 @@ # # Purpose: Illustrate use of gmtregress with different norms and types # GMT modules: gmtregress, plot, text, subplot -# Unix progs: rm +# Unix progs: grep, sed, rm # # Because all panels are almost identical we make a bash function that plots diff --git a/doc/examples/ex48/ex48.sh b/doc/examples/ex48/ex48.sh index 9bd7ff5fea8..5479f5039e3 100755 --- a/doc/examples/ex48/ex48.sh +++ b/doc/examples/ex48/ex48.sh @@ -3,6 +3,7 @@ # # Purpose: Illustrate use of trimmed lines with vectors, networks, and local spiderwebs # GMT modules: makecpt, coast, plot, sphtriangulate, grdimate, gmtmath, text +# Unix progs: echo, rm # gmt begin ex48 diff --git a/doc/examples/ex49/ex49.bat b/doc/examples/ex49/ex49.bat index 4754263e7a6..85311695900 100644 --- a/doc/examples/ex49/ex49.bat +++ b/doc/examples/ex49/ex49.bat @@ -3,6 +3,7 @@ REM REM Purpose: Illustrate data analysis using the seafloor depth/age relationship REM GMT modules: blockmode, gmtmath, grdcontour, grdimage, grdsample, makecpt, REM subplot, basemap, legend, colorbar, plot, xyz2grd +REM DOS calls: del REM gmt begin ex49 diff --git a/doc/examples/ex49/ex49.sh b/doc/examples/ex49/ex49.sh index d6f41c0cd29..517cce89bbe 100755 --- a/doc/examples/ex49/ex49.sh +++ b/doc/examples/ex49/ex49.sh @@ -4,6 +4,7 @@ # Purpose: Illustrate data analysis using the seafloor depth/age relationship # GMT modules: blockmode, gmtmath, grdcontour, grdimage, grdsample, makecpt, # subplot, basemap, legend, colorbar, plot, xyz2grd +# Unix progs: rm # gmt begin ex49 diff --git a/doc/examples/ex50/ex50.bat b/doc/examples/ex50/ex50.bat index 1c70a06ee0f..b8242916a9b 100644 --- a/doc/examples/ex50/ex50.bat +++ b/doc/examples/ex50/ex50.bat @@ -2,6 +2,7 @@ REM GMT EXAMPLE 50 REM REM Purpose: Illustrate different statistical distributions in gmtmath REM GMT modules: math, set, plot, text +REM DOS calls: del, echo REM gmt begin ex50 diff --git a/doc/examples/ex50/ex50.sh b/doc/examples/ex50/ex50.sh index 4874dea4ed8..a8b104b93fc 100755 --- a/doc/examples/ex50/ex50.sh +++ b/doc/examples/ex50/ex50.sh @@ -3,6 +3,7 @@ # # Purpose: Illustrate different statistical distributions in gmtmath # GMT modules: math, set, plot, text +# Unix progs: rm # gmt begin ex50 diff --git a/doc/examples/ex52/ex52.sh b/doc/examples/ex52/ex52.sh index 47f502ced69..40f8719888c 100755 --- a/doc/examples/ex52/ex52.sh +++ b/doc/examples/ex52/ex52.sh @@ -3,6 +3,7 @@ # # Purpose: Mixing images and overlaying them on the Earth # GMT modules: grdgradient, grdimage, grdmath, grdmix, grdsample, solar +# Unix progs: rm res=20m # Change to 15m, 10m, 06m, 05m, 04m, 03m, 02m, 01m, 30s for higher resolutions diff --git a/doc/examples/ex53/ex53.sh b/doc/examples/ex53/ex53.sh index 6d6d57e943c..59cba0d7618 100755 --- a/doc/examples/ex53/ex53.sh +++ b/doc/examples/ex53/ex53.sh @@ -4,6 +4,7 @@ # # Purpose: Illustrate subplot with loops # GMT modules: makecpt, subplot, set, plot, grdimage, clip, coast +# Unix progs: rm # gmt begin ex53 @@ -22,4 +23,4 @@ gmt begin ex53 done < $data gmt subplot end rm -f Top12Cities.txt -gmt end show +gmt end show \ No newline at end of file diff --git a/doc/rst/source/reference/features.rst b/doc/rst/source/reference/features.rst index 960759016ab..9d227a92a66 100644 --- a/doc/rst/source/reference/features.rst +++ b/doc/rst/source/reference/features.rst @@ -519,28 +519,18 @@ URLs and remote files Three classes of files are given special treatment in GMT. -#. Some data sets are ubiquitous and used by nearly all GMT users. - At the moment this collection is limited to Earth relief grids. If you specify - a grid input named **@earth_relief_**\ *res* on a command line then - such a grid will automatically be downloaded from the GMT Data Server and placed - in the *server* directory under **$GMT_USERDIR** [~/.gmt]. The resolution *res* allows a choice among - 15 common grid spacings: 01d, 30m, 20m, 15m, 10m, 06m, 05m, 04m, 03m, 02m, 01m, - 30s, and 15s (with file sizes 111 kb, 376 kb, 782 kb, 1.3 Mb, 2.8 Mb, 7.5 Mb, - 11 Mb, 16 Mb, 27 Mb, 58 Mb, 214 Mb, 778 Mb, and 2.6 Gb respectively) as well - as the SRTM tile resolutions 03s and 01s (6.8 Gb and 41 Gb for the whole set, respectively). Once - one of these grids have been downloaded any future reference will simply obtain the - file from **$GMT_USERDIR** (except if explicitly removed by the user). - **Note**: The 15 arc-sec data comes from the original dataset SRTM15+. - Lower resolutions are spherically Gaussian-filtered versions of SRTM15+. - The SRTM (version 3) 1 and 3 arc-sec tiles are only available over land - between 60 degrees south and north latitude and are stored as highly compressed JPEG2000 - tiles on the GMT server. These are individually downloaded as requested, converted to netCDF - grids and stored in subdirectories srtm1 and srtm3 under the server directory, and assembled - into a seamless grid using :doc:`/grdblend`. A tile is only downloaded and converted - once (unless the user cleans the data directories). +#. GMT offers several remote global data grids that you can access via our remote file mechanism + (e.g. **@earth_relief**). The first time you access one of these files, GMT will download + the file (or a subset tile) from the selected GMT server and save it to the *server* directory + under your **$GMT_USERDIR** directory [~/.gmt]. Once one of these grids have been downloaded + any future reference will simply obtain the file from **$GMT_USERDIR** (except if explicitly + removed by the user). See the `Remote Datasets `_ + section for a comprehensive list of available remote datasets and detailed information. + + #. If a file is given as a full URL, starting with **http://**, **https://**, or **ftp://**, then the file will be downloaded to the current directory and subsequently - read from there (until removed by the user). If the URL is actually a CGI Get + read from there (until removed by the user). If the URL is actually a CGI Get command (i.e., ends in ?par=val1&par2=val2...) then we download the file each time we encounter the URL. #. Demonstration files used in online documentation, example scripts, or even the @@ -548,11 +538,11 @@ Three classes of files are given special treatment in GMT. encountered on the command line it is understood to be a short-hand representation of the full URL to *filename* on the GMT Cache Data site. Since this address may change over time we use the leading - @ to simplify access to these files. Such files will also be downloaded + @ to simplify access to these files. Such files will also be downloaded to :term:`DIR_CACHE` and subsequently read from there (until removed by the user). #. By default, remote files are downloaded from the SOEST data server. However, you can override that selection by setting the environmental parameter **$GMT_DATA_SERVER** or - the default setting for :term:`GMT_DATA_SERVER`. Alternatively, configure the CMake + the default setting for :term:`GMT_DATA_SERVER`. Alternatively, configure the CMake parameter GMT_DATA_SERVER at compile time. #. If your Internet connection is slow or nonexistent (e.g., on a plane) you can also limit the size of the largest datafile to download via :term:`GMT_DATA_SERVER_LIMIT` or @@ -560,7 +550,7 @@ Three classes of files are given special treatment in GMT. The user cache (:term:`DIR_CACHE`) and all its contents can be cleared any time via the command **gmt clear cache**, while the server directory with downloaded data -can be cleared via the command **gmt clear data**. Finally, when a remote file is requested +can be cleared via the command **gmt clear data**. Finally, when a remote file is requested we also check if that file has changed at the server and re-download the updated file; this check is only performed no more often than once a day. diff --git a/doc/rst/source/supplements/potential/gmtgravmag3d.rst b/doc/rst/source/supplements/potential/gmtgravmag3d.rst index b34624b10b4..3c6d50b8d12 100644 --- a/doc/rst/source/supplements/potential/gmtgravmag3d.rst +++ b/doc/rst/source/supplements/potential/gmtgravmag3d.rst @@ -12,7 +12,7 @@ Synopsis .. include:: ../../common_SYN_OPTs.rst_ -**gmt gravmag3d** *xyz_file* |-T|\ **v**\ *vert_file* OR |-T|\ **r\|s**\ *raw_file* OR |-M|\ **+s**\ *body,params* +**gmt gravmag3d** *xyz_file* |-T|\ **+v**\ *vert_file* OR |-T|\ **+r\|+s**\ *raw_file* OR |-M|\ **+s**\ *body,params* [ |-C|\ *density* ] [ |-E|\ *thickness* ] [ |-F|\ *xy_file* ] @@ -97,15 +97,15 @@ Required Arguments (not all) .. _-T: -**-Tv**\ *vert_file* (must have when passing a *xyz_file*) OR **-Tr\|s**\ *raw_file* - Gives names of a xyz and vertex (**-Tv**\ *vert_file*) files defining a close surface. +**-T+v**\ *vert_file* (must have when passing a *xyz_file*) OR **-T+r\|+s**\ *raw_file* + Gives names of a xyz and vertex (**-T+v**\ *vert_file*) files defining a closed surface. The file formats correspond to the output of the :doc:`triangulate ` program. The *xyz* file can have 3, 4, 5, 6 or 8 columns. In first case (3 columns) the magnetization (or density) are assumed constant (controlled by |-C| or |-H|). Following cases are: 4 columns -> 4rth col magnetization intensity; 5 columns: mag, mag dip; 6 columns: mag, mag dec, mag dip; 8 columns: field dec, field dip, mag, mag dec, mag dip. - When n columns > 3 the third argument of the |-H| option is ignored. A *raw* format (selected by the **-Tr** option) + When n columns > 3 the third argument of the |-H| option is ignored. A *raw* format (selected with the **-T+r** option) is a file with N rows (one per triangle) and 9 columns corresponding to the *x, y, z* coordinates of each of the three - vertex of each triangle. Alternatively, the **-Ts** option indicates that the surface file is in the ASCII STL + vertex of each triangle. Alternatively, the **-T+s** option indicates that the surface file is in the ASCII STL (Stereo Lithographic) format. These two type of files are used to provide a closed surface. Optional Arguments diff --git a/doc/rst/source/supplements/seis/grdvs30.rst b/doc/rst/source/supplements/seis/grdvs30.rst index 11353d37483..b34c7bb3dcb 100644 --- a/doc/rst/source/supplements/seis/grdvs30.rst +++ b/doc/rst/source/supplements/seis/grdvs30.rst @@ -27,7 +27,7 @@ Description ----------- Takes one topographic grid in geographical coordinates and a constant craton value or a craton file -which are taken as weights ranging from 1 (one) on stable shields (craton) and 0 in active tectonic regions +which are taken as weights ranging from 0 on stable shields (craton) and 1 (one) in active tectonic regions -- values in between will be computed as the weighted average of the craton and tectonic models. An optional argument *water_vel* is the value that water-covered areas will be set to; the default is 600. diff --git a/doc/rst/source/text.rst b/doc/rst/source/text.rst index 16685b916a7..f1ade3ae8b8 100644 --- a/doc/rst/source/text.rst +++ b/doc/rst/source/text.rst @@ -168,9 +168,9 @@ Optional Arguments [0/0]. If *dy* is not specified then it is set equal to *dx*. Prepend an optional directive: - - **-j** - Offset the text away from the point instead (i.e., the + - **j** - Offset the text away from the point instead (i.e., the text justification will determine the direction of the shift). - - **-J** - Shorten diagonal offsets at corners by :math:`\sqrt{2}`. + - **J** - Shorten diagonal offsets at corners by :math:`\sqrt{2}`. Optionally, append the modifier: @@ -196,10 +196,12 @@ Optional Arguments at the Upper Left corner of the map. - **+f** - Set the font ([*size*][,\ *fontname*][,\ *color*]); if no font info is given then the input file must have this information in one of its columns. - - **+h** - Use the most recent segment header as the text to be plotted. - comes from the data record. Instead, use **+h** or **+l** to select the - **+j** - Set the text justification; if no justification is given then the input file must have this item as a column. + + Normally, the text is read from the data records. Alternative ways to provide text: + + - **+h** - Use the most recent segment header as the text to be plotted. - **+l** - Use the most recent segment label as the text to be plotted. - **+r** - Use the record number (counting up from *first* [0]) as the text to be plotted. - **+t** - Use the appended *text* to set a fixed text string (if *text* contains plus @@ -207,14 +209,16 @@ Optional Arguments - **+z** - Format incoming *z* values to a string using the supplied *format* [if not appended we use :term:`FORMAT_FLOAT_MAP`]. - **Notes**: (1) If |-Z| is in effect then the *z* value used for formatting is in the - 4th, not 3rd column. If you only want a specific word from the trailing text and - not the whole line, use **-it**\ *word* to indicate which word (0 is the first word) - you want. (2) Items read from the data file should be in the same order as - the modifiers are specified with the |-F| option. Example: - **-F**\ **+f**\ 12p,Helvetica-Bold,red\ **+j+a** selects a 12p red - Helvetica-Bold font and expects to read the justification and angle - from the file, in that order, after *x* *y* and before *text*. + **Notes**: |-F|\ **+h**\|\ **l**\|\ **r**\|\ **t**\| **z** can't be used with |-M|. + + **Notes**: (1) If |-Z| is in effect then the *z* value used for formatting is in the + 4th, not 3rd column. If you only want a specific word from the trailing text and + not the whole line, use **-it**\ *word* to indicate which word (0 is the first word) + you want. (2) Items read from the data file should be in the same order as + the modifiers are specified with the |-F| option. Example: + **-F**\ **+f**\ 12p,Helvetica-Bold,red\ **+j+a** selects a 12p red + Helvetica-Bold font and expects to read the justification and angle + from the file, in that order, after *x* *y* and before *text*. .. _-G: diff --git a/src/gmt_api.c b/src/gmt_api.c index 9afb1436385..99e5e93505b 100644 --- a/src/gmt_api.c +++ b/src/gmt_api.c @@ -10315,7 +10315,7 @@ GMT_LOCAL void gmtapi_get_record_init (struct GMTAPI_CTRL *API) { } } -void * GMT_Get_Record (void *V_API, unsigned int mode, int *retval) { +void *GMT_Get_Record(void *V_API, unsigned int mode, int *retval) { /* Retrieves the next data record from the virtual input source and * returns the number of columns found via *retval (unless retval == NULL). * If current record is a segment header then we return 0. @@ -10348,7 +10348,10 @@ void * GMT_Get_Record (void *V_API, unsigned int mode, int *retval) { record = API->api_get_record (API, mode, &n_fields); } while (API->get_next_record); - if (!(n_fields == EOF || n_fields == GMT_IO_NEXT_FILE)) API->current_rec[GMT_IN]++; /* Increase record count, unless EOF */ + if (!(n_fields == EOF || n_fields == GMT_IO_NEXT_FILE)) { /* Increase record count, unless EOF */ + API->current_rec[GMT_IN]++; + if (GMT->current.io.variable_in_columns) GMT->current.io.n_numerical_cols = (unsigned int)n_fields; /* Keep track of this */ + } if (retval) *retval = n_fields; /* Requested we return the number of fields found */ return (record); /* Return pointer to current record */ @@ -13461,6 +13464,10 @@ struct GMT_RESOURCE * GMT_Encode_Options (void *V_API, const char *module_name, else if (!strncmp (module, "gravprisms", 10U) && (opt = GMT_Find_Option (API, 'C', *head))) { deactivate_input = true; /* Turn off implicit input since none is in effect */ } + /* 1z. Check if gmtgravmag3d is producing grids or datasets */ + else if (!strncmp (module, "gmtgravmag3d", 12U)) { + //type = (opt = GMT_Find_Option (API, 'F', *head)) ? 'D' : 'G'; /* Giving -F means compute over a line, else grid */ + } /* 2a. Get the option key array for this module */ key = gmtapi_process_keys (API, keys, type, *head, n_per_family, &n_keys); /* This is the array of keys for this module, e.g., "BC[i] == GMT_BC_IS_NOTSET) HH->BC[i] = type; + for (i = 0; i < 4; i++) + if (HH->BC[i] == GMT_BC_IS_NOTSET) HH->BC[i] = type; } /* Check if geographic conditions can be used with this grid */ if (HH->gn && !gmt_grd_is_global (GMT, h)) { /* User has requested geographical conditions, but grid is not global */ - GMT_Report (GMT->parent, GMT_MSG_WARNING, "Longitude range too small; geographic boundary condition changed to natural.\n"); + GMT_Report(GMT->parent, GMT_MSG_INFORMATION, "Longitude range too small; geographic boundary condition changed to natural.\n"); HH->nxp = HH->nyp = 0; HH->gn = HH->gs = false; - for (i = 0; i < 4; i++) if (HH->BC[i] == GMT_BC_IS_NOTSET) HH->BC[i] = GMT_BC_IS_NATURAL; + for (i = 0; i < 4; i++) + if (HH->BC[i] == GMT_BC_IS_NOTSET) HH->BC[i] = GMT_BC_IS_NATURAL; } else if (gmt_grd_is_global (GMT, h)) { /* Grid is truly global */ double xtest = fmod (180.0, h->inc[GMT_X]) * HH->r_inc[GMT_X]; @@ -12733,11 +12735,13 @@ int gmt_BC_init (struct GMT_CTRL *GMT, struct GMT_GRID_HEADER *h) { if (GMT->parent->ignore_BC) xtest = 0.0; /* To bypass the checks below */ /* xtest should be within GMT_CONV4_LIMIT of zero or of one. */ if (xtest > GMT_CONV4_LIMIT && xtest < (1.0 - GMT_CONV4_LIMIT) && GMT->current.proj.projection_GMT == 0) { - /* Maybe error. We need it to divide into 180 so we can phase-shift at poles but not if we already projected the grid to Cartesian. */ + /* Maybe error. We need it to divide into 180 so we can phase-shift at poles but not if we + already projected the grid to Cartesian. */ GMT_Report (GMT->parent, GMT_MSG_WARNING, "x_inc does not divide 180; geographic boundary condition changed to natural.\n"); HH->nxp = HH->nyp = 0; HH->gn = HH->gs = false; - for (i = 0; i < 4; i++) if (HH->BC[i] == GMT_BC_IS_NOTSET) HH->BC[i] = GMT_BC_IS_NATURAL; + for (i = 0; i < 4; i++) + if (HH->BC[i] == GMT_BC_IS_NOTSET) HH->BC[i] = GMT_BC_IS_NATURAL; } else { HH->nxp = urint (360.0 * HH->r_inc[GMT_X]); diff --git a/src/gmtbinstats.c b/src/gmtbinstats.c index 5025dc8ed35..5a1299cc778 100644 --- a/src/gmtbinstats.c +++ b/src/gmtbinstats.c @@ -295,7 +295,7 @@ static int parse (struct GMT_CTRL *GMT, struct GMTBINSTATS_CTRL *Ctrl, struct GM n_errors += gmt_M_check_condition (GMT, Ctrl->S.mode == -2, "Option -S: Unable to decode radius\n"); n_errors += gmt_M_check_condition (GMT, Ctrl->S.mode == -3, "Option -S: Radius is negative\n"); } - n_errors += gmt_check_binary_io (GMT, (Ctrl->W.active) ? 4 : 3); + n_errors += gmt_check_binary_io(GMT, (Ctrl->C.mode == GMTBINSTATS_COUNT) ? 2 : (Ctrl->W.active) ? 4 : 3); if (Ctrl->W.active) { /* Update the mode if median or mode */ if (Ctrl->C.mode == GMTBINSTATS_MEDIAN) Ctrl->C.mode = GMTBINSTATS_MEDIANW; if (Ctrl->C.mode == GMTBINSTATS_MODE) Ctrl->C.mode = GMTBINSTATS_MODEW; diff --git a/src/longopt/psxy_inc.h b/src/longopt/psxy_inc.h index 59ac017288b..d06037fc9b3 100644 --- a/src/longopt/psxy_inc.h +++ b/src/longopt/psxy_inc.h @@ -31,7 +31,7 @@ static struct GMT_KEYWORD_DICTIONARY module_kw[] = { /* Local options for this m GMT_TP_STANDARD }, GMT_C_CPT_KW, { 0, 'D', "offset", "", "", "", "", GMT_TP_STANDARD }, - { 0, 'E', "errorbars", + { 0, 'E', "errorbars|error_bars|error_bar", "x,y,X,Y", "xbar,ybar,boxwhisker,stemleaf", "a,A,c,n,w,p", "asymmetrical,lhbounds,symbolfill,notch,capwidth,pen", GMT_TP_STANDARD }, diff --git a/src/potential/gmtgravmag3d.c b/src/potential/gmtgravmag3d.c index fabd64a7e9a..a3ff4315fb8 100644 --- a/src/potential/gmtgravmag3d.c +++ b/src/potential/gmtgravmag3d.c @@ -33,7 +33,7 @@ #define THIS_MODULE_MODERN_NAME "gmtgravmag3d" #define THIS_MODULE_LIB "potential" #define THIS_MODULE_PURPOSE "Compute the gravity/magnetic anomaly of a 3-D body by the method of Okabe" -#define THIS_MODULE_KEYS "D)" +#define THIS_MODULE_KEYS "DF" #define THIS_MODULE_NEEDS "R" #define THIS_MODULE_OPTIONS "-:RVfhior" GMT_ADD_xg_OPT @@ -178,7 +178,7 @@ GMT_LOCAL int check_triang_cw (struct GMTGRAVMAG3D_CTRL *Ctrl, unsigned int n, u static int usage (struct GMTAPI_CTRL *API, int level) { const char *name = gmt_show_name_and_purpose (API, THIS_MODULE_LIB, THIS_MODULE_CLASSIC_NAME, THIS_MODULE_PURPOSE); if (level == GMT_MODULE_PURPOSE) return (GMT_NOERROR); - GMT_Usage (API, 0, "usage: %s [] -Tv | -Tr|s | -M+s/ [-C] [-E] " + GMT_Usage (API, 0, "usage: %s [
] -T+v | -T+r|+s | -M+s/ [-C] [-E] " "[-F] [-G%s] [-H///] [%s] [-L] [%s] " "[-S] [-Z] [%s] [-fg] [%s] [%s] [%s] [%s]%s[%s]\n", name, GMT_OUTGRID, GMT_I_OPT, GMT_Rgeo_OPT, GMT_V_OPT, GMT_h_OPT, GMT_i_OPT, GMT_o_OPT, GMT_r_OPT, GMT_xg_OPT, GMT_PAR_OPT); @@ -188,13 +188,13 @@ static int usage (struct GMTAPI_CTRL *API, int level) { GMT_Message (API, GMT_TIME_NONE, " REQUIRED ARGUMENTS:\n"); GMT_Usage (API, 1, "\n
"); GMT_Usage (API, -2, "One or more data files (in ASCII, binary, netCDF) with data; see -T for format. If no files are given, standard input is read"); - GMT_Usage (API, 1, "\n-Tv | -Tr|s"); - GMT_Usage (API, -2, "Give names of xyz and vertex (-Tv) files defining a closed surface. " - "If has more then 3 columns it means variable magnetization; see docs for more details. " + GMT_Usage (API, 1, "\n-T+v | -T+r|+s"); + GMT_Usage (API, -2, "Give names of xyz and vertex (-T+v) files defining a closed surface. " + "If has more then 3 columns it means variable magnetization; see HTML docs for more details. " "The file formats correspond to the output of the triangulate program. " "Alternatively, use directives to indicate specific formats:"); - GMT_Usage (API, 3, "r: Append in raw triangle format (x1 y1 z1 x2 ... z3)."); - GMT_Usage (API, 3, "s: Append in STL format."); + GMT_Usage (API, 3, "+r: Append in raw triangle format (x1 y1 z1 x2 ... z3)."); + GMT_Usage (API, 3, "+s: Append in STL format."); GMT_Usage (API, 1, "\nOR"); GMT_Usage (API, 1, "\n-M+s/"); GMT_Usage (API, -2, "Select among one or more of the following bodies and append , where x0 and y0 are the horizontal coordinates " @@ -263,7 +263,7 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM unsigned int pos = 0, n_errors = 0; int n_par, err_npar = 0, nBELL = 0, nCIL = 0, nPRI = 0, nCONE = 0, nELL = 0, nPIR = 0, nSPHERE = 0; - char p[GMT_LEN256] = {""}, p2[GMT_LEN256] = {""}; + char p[GMT_LEN256] = {""}, p2[GMT_LEN256] = {""}, *c = NULL; struct GMT_OPTION *opt = NULL; struct GMTAPI_CTRL *API = GMT->parent; @@ -333,7 +333,7 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM if (n_par < 8) Ctrl->M.params[BELL][nBELL][7] = Ctrl->npts_circ; if (n_par < 9) Ctrl->M.params[BELL][nBELL][8] = Ctrl->n_slices; if (Ctrl->M.params[BELL][nBELL][6] || Ctrl->M.params[SPHERE][nSPHERE][7] <= 0 || Ctrl->M.params[SPHERE][nSPHERE][8] <= 0) { - GMT_Report (API, GMT_MSG_ERROR, "Bad parameters for the 'bell' body. Please, RTFM (read the manual)."); + GMT_Report(API, GMT_MSG_ERROR, "Bad parameters for the 'bell' body. Please, read the manual."); return GMT_PARSE_ERROR; } Ctrl->M.type[BELL][nBELL] = BELL; @@ -344,7 +344,7 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM if (n_par < 3) err_npar = 1; if (n_par < 6) Ctrl->M.params[CYLINDER][nCIL][5] = Ctrl->npts_circ; if (Ctrl->M.params[SPHERE][nSPHERE][5] <= 0) { - GMT_Report (API, GMT_MSG_ERROR, "Bad parameters for the 'cylinder' body. Please, RTFM (read the manual)."); + GMT_Report(API, GMT_MSG_ERROR, "Bad parameters for the 'cylinder' body. Please, read the manual."); return GMT_PARSE_ERROR; } Ctrl->M.type[CYLINDER][nCIL] = CYLINDER; @@ -362,8 +362,8 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM if (n_par < 4) err_npar = 1; if (n_par < 7) Ctrl->M.params[ELLIPSOID][nELL][6] = Ctrl->npts_circ; if (n_par < 8) Ctrl->M.params[ELLIPSOID][nELL][7] = Ctrl->n_slices; - if (Ctrl->M.params[SPHERE][nSPHERE][6] <= 0 || Ctrl->M.params[SPHERE][nSPHERE][7] <= 0) { - GMT_Report (API, GMT_MSG_ERROR, "Bad parameters for the 'ellipsoid' body. Please, RTFM (read the manual)."); + if (Ctrl->M.params[ELLIPSOID][nELL][6] <= 0 || Ctrl->M.params[ELLIPSOID][nELL][7] <= 0) { + GMT_Report (API, GMT_MSG_ERROR, "Bad parameters for the 'ellipsoid' body. Please, read the manual."); return GMT_PARSE_ERROR; } Ctrl->M.type[ELLIPSOID][nELL] = ELLIPSOID; @@ -387,7 +387,7 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM if (n_par < 5) Ctrl->M.params[SPHERE][nSPHERE][4] = Ctrl->npts_circ; if (n_par < 6) Ctrl->M.params[SPHERE][nSPHERE][5] = Ctrl->n_slices; if (Ctrl->M.params[SPHERE][nSPHERE][4] <= 0 || Ctrl->M.params[SPHERE][nSPHERE][5] <= 0) { - GMT_Report (API, GMT_MSG_ERROR, "Bad parameters for the 'sphere' body. Please, RTFM (read the manual)."); + GMT_Report (API, GMT_MSG_ERROR, "Bad parameters for the 'sphere' body. Please, read the manual."); return GMT_PARSE_ERROR; } Ctrl->M.type[SPHERE][nSPHERE] = SPHERE; @@ -404,17 +404,32 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM } break; case 'E': - n_errors += gmt_M_repeated_module_option (API, Ctrl->E.active); + n_errors += gmt_M_repeated_module_option(API, Ctrl->E.active); n_errors += gmt_get_required_double (GMT, opt->arg, opt->option, 0, &Ctrl->E.dz); break; case 'S': - n_errors += gmt_M_repeated_module_option (API, Ctrl->S.active); + n_errors += gmt_M_repeated_module_option(API, Ctrl->S.active); n_errors += gmt_get_required_double (GMT, opt->arg, opt->option, 0, &Ctrl->S.radius); Ctrl->S.radius *= 1000; /* Expect km, convert to meters */ break; case 'T': /* Selected input mesh format */ - n_errors += gmt_M_repeated_module_option (API, Ctrl->T.active); - if (opt->arg[0] == 'p') { + n_errors += gmt_M_repeated_module_option(API, Ctrl->T.active); + if ((c = strstr(opt->arg, "+v"))) { + c[0] = '\0'; + n_errors += gmt_get_required_file(GMT, opt->arg, opt->option, 0, GMT_IS_DATASET, GMT_IN, GMT_FILE_REMOTE, &(Ctrl->T.t_file)); + Ctrl->T.triangulate = true; + } + else if ((c = strstr(opt->arg, "+r"))) { + c[0] = '\0'; + n_errors += gmt_get_required_file(GMT, opt->arg, opt->option, 0, GMT_IS_DATASET, GMT_IN, GMT_FILE_REMOTE, &(Ctrl->T.raw_file)); + Ctrl->T.raw = true; + } + else if ((c = strstr(opt->arg, "+s"))) { + c[0] = '\0'; + n_errors += gmt_get_required_file(GMT, opt->arg, opt->option, 0, GMT_IS_DATASET, GMT_IN, GMT_FILE_REMOTE, &(Ctrl->T.stl_file)); + Ctrl->T.stl = true; + } + else if (opt->arg[0] == 'p') { /* Non documented. And start of backward compat section. */ char *pch; Ctrl->T.xyz_file = strdup(&opt->arg[1]); Ctrl->T.triangulate = true; @@ -469,8 +484,6 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM if (gmt_M_check_condition(GMT, Ctrl->T.raw && Ctrl->S.active, "Warning: -Tr overrides -S\n")) Ctrl->S.active = false; - /*n_errors += gmt_M_check_condition (GMT, !Ctrl->In.file, "Must specify input file\n");*/ - return (n_errors ? GMT_PARSE_ERROR : GMT_NOERROR); } @@ -478,6 +491,7 @@ static int parse(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GM /* -------------------------------------------------------------------------*/ GMT_LOCAL int read_xyz(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, struct GMT_OPTION *options, double *lon_0, double *lat_0) { /* read xyz[m] file with point data coordinates */ + bool first_time = true; int n_cols = 0, error; unsigned int k, n = 0; size_t n_alloc = 10 * GMT_CHUNK; @@ -486,20 +500,7 @@ GMT_LOCAL int read_xyz(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, str struct GMT_RECORD *In = NULL; FILE *fp = NULL; - /* First, count number of columns */ - if ((fp = gmt_fopen (GMT, Ctrl->T.xyz_file, "r")) == NULL) return -1; - while (fgets (line, GMT_LEN256, fp)) { - if (line[0] == '#') continue; - n_cols = sscanf (line, "%lg %lg %lg %lg %lg %lg %lg %lg", &x1, &x2, &x3, &x4, &x5, &x6, &x7, &x8); - break; - } - fclose(fp); - if (n_cols < 3 || n_cols == 7 || n_cols > 8) { - GMT_Report (GMT->parent, GMT_MSG_ERROR, "Wrong number of columns (%d) in file %s\n", n_cols, Ctrl->T.xyz_file); - return -1; - } - - if ((error = GMT_Set_Columns (GMT->parent, GMT_IN, (unsigned int)n_cols, GMT_COL_FIX_NO_TEXT)) != GMT_NOERROR) + if ((error = GMT_Set_Columns (GMT->parent, GMT_IN, 0, GMT_COL_VAR)) != GMT_NOERROR) return error; if (GMT_Init_IO (GMT->parent, GMT_IS_DATASET, GMT_IS_POINT, GMT_IN, GMT_ADD_DEFAULT, 0, options) != GMT_NOERROR) /* Establishes data input */ return GMT->parent->error; @@ -507,55 +508,65 @@ GMT_LOCAL int read_xyz(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, str if (GMT_Begin_IO (GMT->parent, GMT_IS_DATASET, GMT_IN, GMT_HEADER_ON) != GMT_NOERROR) /* Enables data input and sets access mode */ return GMT->parent->error; - Ctrl->triang = gmt_M_memory (GMT, NULL, n_alloc, struct GMTGRAVMAG3D_XYZ); - Ctrl->T.m_var = (n_cols == 3) ? false : true; /* x,y,z */ - if (n_cols == 4) { - Ctrl->T.m_var1 = true; - Ctrl->box.mag_int = gmt_M_memory (GMT, NULL, n_alloc, double); - } - else if (n_cols == 5) { - Ctrl->T.m_var2 = true; - Ctrl->okabe_mag_var2 = gmt_M_memory (GMT, NULL, n_alloc, struct MAG_VAR2); - } - else if (n_cols == 6) { - Ctrl->T.m_var3 = true; - Ctrl->okabe_mag_var3 = gmt_M_memory (GMT, NULL, n_alloc, struct MAG_VAR3); - } - else if (n_cols == 8) { - Ctrl->T.m_var4 = true; - Ctrl->okabe_mag_var4 = gmt_M_memory (GMT, NULL, n_alloc, struct MAG_VAR4); - } - - if (n_cols > 3) { /* A bit ugly doing this here but only now we know enough */ - Ctrl->H.active = true; - Ctrl->C.active = false; - } - do { /* Keep returning records until we reach EOF */ - if ((In = GMT_Get_Record (GMT->parent, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */ - if (gmt_M_rec_is_error (GMT)) /* Bail if there are any read errors */ + if ((In = GMT_Get_Record(GMT->parent, GMT_READ_DATA, NULL)) == NULL) { /* Read next record, get NULL if special case */ + if (gmt_M_rec_is_error(GMT)) /* Bail if there are any read errors */ return (GMT_RUNTIME_ERROR); - else if (gmt_M_rec_is_eof (GMT)) /* Reached end of file */ + else if (gmt_M_rec_is_eof(GMT)) /* Reached end of file */ break; continue; /* Go back and read the next record */ } if (In->data == NULL) { - gmt_quit_bad_record (GMT->parent, In); + gmt_quit_bad_record(GMT->parent, In); return (GMT->parent->error); } + if (first_time) { /* Only now we know the number of columns and can do some checks and memory allocs. */ + n_cols = GMT->current.io.n_numerical_cols; + + if (n_cols < 3 || n_cols == 7 || n_cols > 8) { + GMT_Report(GMT->parent, GMT_MSG_ERROR, "Wrong number of columns (%d) in file %s\n", n_cols, Ctrl->T.xyz_file); + return (GMT_RUNTIME_ERROR); + } + + Ctrl->triang = gmt_M_memory(GMT, NULL, n_alloc, struct GMTGRAVMAG3D_XYZ); + Ctrl->T.m_var = (n_cols == 3) ? false : true; /* x,y,z */ + if (n_cols == 4) { + Ctrl->T.m_var1 = true; + Ctrl->box.mag_int = gmt_M_memory(GMT, NULL, n_alloc, double); + } + else if (n_cols == 5) { + Ctrl->T.m_var2 = true; + Ctrl->okabe_mag_var2 = gmt_M_memory(GMT, NULL, n_alloc, struct MAG_VAR2); + } + else if (n_cols == 6) { + Ctrl->T.m_var3 = true; + Ctrl->okabe_mag_var3 = gmt_M_memory(GMT, NULL, n_alloc, struct MAG_VAR3); + } + else if (n_cols == 8) { + Ctrl->T.m_var4 = true; + Ctrl->okabe_mag_var4 = gmt_M_memory(GMT, NULL, n_alloc, struct MAG_VAR4); + } + + if (n_cols > 3) { + Ctrl->H.active = true; + Ctrl->C.active = false; + } + first_time = false; + } + if (n == n_alloc) { n_alloc = (size_t)(n_alloc * 1.7); - Ctrl->triang = gmt_M_memory (GMT, Ctrl->triang, n_alloc, struct GMTGRAVMAG3D_XYZ); + Ctrl->triang = gmt_M_memory(GMT, Ctrl->triang, n_alloc, struct GMTGRAVMAG3D_XYZ); if (Ctrl->T.m_var1) - Ctrl->box.mag_int = gmt_M_memory (GMT, Ctrl->box.mag_int, n_alloc, double); + Ctrl->box.mag_int = gmt_M_memory(GMT, Ctrl->box.mag_int, n_alloc, double); else if (Ctrl->T.m_var2) - Ctrl->okabe_mag_var2 = gmt_M_memory (GMT, Ctrl->okabe_mag_var2, n_alloc, struct MAG_VAR2); + Ctrl->okabe_mag_var2 = gmt_M_memory(GMT, Ctrl->okabe_mag_var2, n_alloc, struct MAG_VAR2); else if (Ctrl->T.m_var3) - Ctrl->okabe_mag_var3 = gmt_M_memory (GMT, Ctrl->okabe_mag_var3, n_alloc, struct MAG_VAR3); + Ctrl->okabe_mag_var3 = gmt_M_memory(GMT, Ctrl->okabe_mag_var3, n_alloc, struct MAG_VAR3); else - Ctrl->okabe_mag_var4 = gmt_M_memory (GMT, Ctrl->okabe_mag_var4, n_alloc, struct MAG_VAR4); + Ctrl->okabe_mag_var4 = gmt_M_memory(GMT, Ctrl->okabe_mag_var4, n_alloc, struct MAG_VAR4); } Ctrl->triang[n].x = In->data[0]; Ctrl->triang[n].y = -In->data[1]; /* - because y must be positive 'south'*/ @@ -581,14 +592,16 @@ GMT_LOCAL int read_xyz(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, str n++; } while (true); - if (GMT_End_IO (GMT->parent, GMT_IN, 0) != GMT_NOERROR) /* Disables further data input */ + if (GMT->current.io.variable_in_columns) GMT->current.io.n_numerical_cols = 0; /* To undo what we did in GMT_Get_Record() */ + + if (GMT_End_IO(GMT->parent, GMT_IN, 0) != GMT_NOERROR) /* Disables further data input */ return GMT->parent->error; - Ctrl->triang = gmt_M_memory (GMT, Ctrl->triang, (size_t)n, struct GMTGRAVMAG3D_XYZ); - if (Ctrl->T.m_var1) Ctrl->box.mag_int = gmt_M_memory (GMT, Ctrl->box.mag_int, (size_t)n, double); - else if (Ctrl->T.m_var2) Ctrl->okabe_mag_var2 = gmt_M_memory (GMT, Ctrl->okabe_mag_var2, (size_t)n, struct MAG_VAR2); - else if (Ctrl->T.m_var3) Ctrl->okabe_mag_var3 = gmt_M_memory (GMT, Ctrl->okabe_mag_var3, (size_t)n, struct MAG_VAR3); - else Ctrl->okabe_mag_var4 = gmt_M_memory (GMT, Ctrl->okabe_mag_var4, (size_t)n, struct MAG_VAR4); + Ctrl->triang = gmt_M_memory(GMT, Ctrl->triang, (size_t)n, struct GMTGRAVMAG3D_XYZ); + if (Ctrl->T.m_var1) Ctrl->box.mag_int = gmt_M_memory(GMT, Ctrl->box.mag_int, (size_t)n, double); + else if (Ctrl->T.m_var2) Ctrl->okabe_mag_var2 = gmt_M_memory(GMT, Ctrl->okabe_mag_var2, (size_t)n, struct MAG_VAR2); + else if (Ctrl->T.m_var3) Ctrl->okabe_mag_var3 = gmt_M_memory(GMT, Ctrl->okabe_mag_var3, (size_t)n, struct MAG_VAR3); + else Ctrl->okabe_mag_var4 = gmt_M_memory(GMT, Ctrl->okabe_mag_var4, (size_t)n, struct MAG_VAR4); *lon_0 = 0.; *lat_0 = 0.; if (Ctrl->box.is_geog) { @@ -745,7 +758,7 @@ GMT_LOCAL void solids(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl) { #define bailout(code) {gmt_M_free_options (mode); return (code);} #define Return(code) {Free_Ctrl (GMT, Ctrl); gmt_end_module (GMT, GMT_cpy); bailout (code);} -EXTERN_MSC int GMT_gmtgravmag3d (void *V_API, int mode, void *args) { +EXTERN_MSC int GMT_gmtgravmag3d(void *V_API, int mode, void *args) { bool bat = true, DO = true; unsigned int row, col, i, j, k, kk; @@ -857,14 +870,6 @@ EXTERN_MSC int GMT_gmtgravmag3d (void *V_API, int mode, void *args) { solids(GMT, Ctrl); } -#if 0 - for (i = 0; i < 24; i++) { - fprintf(stderr, "%.2f %.2f %.2f ", Ctrl->raw_mesh[i].t1[0], Ctrl->raw_mesh[i].t1[1], Ctrl->raw_mesh[i].t1[2]); - fprintf(stderr, "%.2f %.2f %.2f ", Ctrl->raw_mesh[i].t2[0], Ctrl->raw_mesh[i].t2[1], Ctrl->raw_mesh[i].t2[2]); - fprintf(stderr, "%.2f %.2f %.2f\n", Ctrl->raw_mesh[i].t3[0], Ctrl->raw_mesh[i].t3[1], Ctrl->raw_mesh[i].t3[2]); - } -#endif - if (n_swap > 0) GMT_Report (API, GMT_MSG_INFORMATION, "%d triangles had ccw order\n", n_swap); /* --------------------------------------------------------------------------------------- */ @@ -1071,26 +1076,7 @@ EXTERN_MSC int GMT_gmtgravmag3d (void *V_API, int mode, void *args) { } } - if (Ctrl->G.active) { - if (Ctrl->C.active) { - strcpy (Gout->header->title, "Gravity field"); - strcpy (Gout->header->z_units, "mGal"); - } - else { - strcpy (Gout->header->title, "Magnetic field"); - strcpy (Gout->header->z_units, "nT"); - } - - if (GMT_Set_Comment (API, GMT_IS_GRID, GMT_COMMENT_IS_OPTION | GMT_COMMENT_IS_COMMAND, options, Gout)) { - error = API->error; - goto END; - } - if (GMT_Write_Data (API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_CONTAINER_AND_DATA, NULL, Ctrl->G.file, Gout) != GMT_NOERROR) { - error = API->error; - goto END; - } - } - else { + if (Ctrl->F.active) { double out[3]; char save[GMT_LEN64] = {""}; struct GMT_RECORD *Out = gmt_new_record (GMT, out, NULL); @@ -1125,6 +1111,25 @@ EXTERN_MSC int GMT_gmtgravmag3d (void *V_API, int mode, void *args) { goto END; } } + else { + if (Ctrl->C.active) { + strcpy(Gout->header->title, "Gravity field"); + strcpy(Gout->header->z_units, "mGal"); + } + else { + strcpy(Gout->header->title, "Magnetic field"); + strcpy(Gout->header->z_units, "nT"); + } + + if (GMT_Set_Comment(API, GMT_IS_GRID, GMT_COMMENT_IS_OPTION | GMT_COMMENT_IS_COMMAND, options, Gout)) { + error = API->error; + goto END; + } + if (GMT_Write_Data(API, GMT_IS_GRID, GMT_IS_FILE, GMT_IS_SURFACE, GMT_CONTAINER_AND_DATA, NULL, Ctrl->G.file, Gout) != GMT_NOERROR) { + error = API->error; + goto END; + } + } END: gmt_M_toc(GMT,""); /* Print total run time, but only if -Vt was set */ @@ -1154,7 +1159,7 @@ EXTERN_MSC int GMT_gmtgravmag3d (void *V_API, int mode, void *args) { } /* -----------------------------------------------------------------*/ -GMT_LOCAL int read_stl (struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl) { +GMT_LOCAL int read_stl(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl) { /* read a file with triagles in the stl format and returns nb of triangles */ unsigned int ndata_s; size_t n_alloc; @@ -1206,7 +1211,7 @@ GMT_LOCAL int read_stl (struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl) { } /* -----------------------------------------------------------------*/ -GMT_LOCAL int facet_triangulate (struct GMTGRAVMAG3D_CTRL *Ctrl, struct BODY_VERTS *body_verts, unsigned int i, bool bat) { +GMT_LOCAL int facet_triangulate(struct GMTGRAVMAG3D_CTRL *Ctrl, struct BODY_VERTS *body_verts, unsigned int i, bool bat) { /* Sets coordinates for the facet whose effect is being calculated */ double x_a, x_b, x_c, y_a, y_b, y_c, z_a, z_b, z_c; struct GMTGRAVMAG3D_XYZ *triang = Ctrl->triang; @@ -1286,7 +1291,7 @@ GMT_LOCAL int facet_triangulate (struct GMTGRAVMAG3D_CTRL *Ctrl, struct BODY_VER } /* -----------------------------------------------------------------*/ -GMT_LOCAL int facet_raw (struct GMTGRAVMAG3D_CTRL *Ctrl, struct BODY_VERTS *body_verts, unsigned int i, bool geo) { +GMT_LOCAL int facet_raw(struct GMTGRAVMAG3D_CTRL *Ctrl, struct BODY_VERTS *body_verts, unsigned int i, bool geo) { /* Sets coordinates for the facet in the RAW format */ double cos_a, cos_b, cos_c, x_a, x_b, x_c, y_a, y_b, y_c, z_a, z_b, z_c; @@ -1310,7 +1315,7 @@ GMT_LOCAL int facet_raw (struct GMTGRAVMAG3D_CTRL *Ctrl, struct BODY_VERTS *body } /* ---------------------------------------------------------------------- */ -GMT_LOCAL void set_center (struct GMTGRAVMAG3D_CTRL *Ctrl) { +GMT_LOCAL void set_center(struct GMTGRAVMAG3D_CTRL *Ctrl) { /* Calculates triangle center by an approximate (iterative) formula */ int i, j, k = 5; double x, y, z, xa[6], ya[6], xb[6], yb[6], xc[6], yc[6]; @@ -1367,7 +1372,7 @@ GMT_LOCAL void gmtgravmag3d_triang_norm (int n_triang) { } #endif -GMT_LOCAL int check_triang_cw (struct GMTGRAVMAG3D_CTRL *Ctrl, unsigned int n, unsigned int type) { +GMT_LOCAL int check_triang_cw(struct GMTGRAVMAG3D_CTRL *Ctrl, unsigned int n, unsigned int type) { /* Checks that triangles are given in the correct clock-wise order. If not swap them. This is a tricky issue. In the case of "classic" trihedron (x positive right; y positive "north" and z positive up), diff --git a/src/potential/solids.c b/src/potential/solids.c index fb9537ae5ba..4a2f43b6fbb 100644 --- a/src/potential/solids.c +++ b/src/potential/solids.c @@ -143,6 +143,14 @@ int five_psoid(struct GMT_CTRL *GMT, struct GMTGRAVMAG3D_CTRL *Ctrl, int body_ty a = Ctrl->M.params[body_type][nb][0]; b = Ctrl->M.params[body_type][nb][1]; c = Ctrl->M.params[body_type][nb][2]; z_c = Ctrl->M.params[body_type][nb][3]; x0 = Ctrl->M.params[body_type][nb][4]; y0 = Ctrl->M.params[body_type][nb][5]; + if (body_type == SPHERE) { /* This has less parameters so the above is wrong. */ + b = c = a; z_c = Ctrl->M.params[body_type][nb][1]; + x0 = Ctrl->M.params[body_type][nb][2]; y0 = Ctrl->M.params[body_type][nb][3]; + } + if (body_type == BELL) { + a = b; b = c; c = Ctrl->M.params[body_type][nb][0]; + } + z_top = z_c + c; z_bot = z_c; n_tri = (hemi) ? 2 * npts_circ * n_slices : 2 * (npts_circ * (n_slices*2 - 1)); diff --git a/src/pstext.c b/src/pstext.c index ae84439cab3..e00f5eb93e2 100644 --- a/src/pstext.c +++ b/src/pstext.c @@ -713,7 +713,7 @@ static int parse (struct GMT_CTRL *GMT, struct PSTEXT_CTRL *Ctrl, struct GMT_OPT n_errors += gmt_M_check_condition (GMT, Ctrl->G.mode && Ctrl->M.active, "Option -Gc: Cannot be used with -M.\n"); n_errors += gmt_M_check_condition (GMT, Ctrl->G.mode && Ctrl->W.active, "Option -Gc: Cannot be used with -W.\n"); n_errors += gmt_M_check_condition (GMT, Ctrl->G.mode && Ctrl->D.line, "Option -Gc: Cannot be used with -D...v.\n"); - n_errors += gmt_M_check_condition (GMT, Ctrl->M.active && Ctrl->F.get_text, "Option -M: Cannot be used with -F...+l|h.\n"); + n_errors += gmt_M_check_condition (GMT, Ctrl->M.active && Ctrl->F.get_text, "Option -M: Cannot be used with -F...+l|h|r|t|z.\n"); n_errors += gmt_M_check_condition (GMT, Ctrl->S.active && !(Ctrl->G.active && Ctrl->G.mode == 0), "Option -S: Requires -G as well.\n"); n_errors += gmt_M_check_condition (GMT, strchr ("cC", Ctrl->C.mode) && !Ctrl->M.active, "Option -C: Box shape mode +tc|C is only available when -M is selected.\n"); diff --git a/src/seis/grdvs30.c b/src/seis/grdvs30.c index b86b156daca..3ce6a3ed713 100644 --- a/src/seis/grdvs30.c +++ b/src/seis/grdvs30.c @@ -161,6 +161,7 @@ static int parse (struct GMT_CTRL *GMT, struct VS30_CTRL *Ctrl, struct GMT_Z_IO unsigned int n_errors = 0, n_files = 0; char p[GMT_LEN16] = {""}, *pch; + float t; struct GMT_OPTION *opt = NULL; struct GMTAPI_CTRL *API = GMT->parent; @@ -186,21 +187,19 @@ static int parse (struct GMT_CTRL *GMT, struct VS30_CTRL *Ctrl, struct GMT_Z_IO if ((pch = strstr(opt->arg, "+g")) != NULL) Ctrl->C.is_grid = true; /* Useless if Ctrl->C.file = NULL is set below */ - if (!gmt_check_filearg (GMT, 'C', Ctrl->C.file, GMT_IN, GMT_IS_DATASET)) { + t = atof(opt->arg); + if (t >= 0 && t <= 1) { + Ctrl->C.val = t; Ctrl->C.file = NULL; - Ctrl->C.val = atof (opt->arg); - if (Ctrl->C.val < 0 || Ctrl->C.val > 1) { - GMT_Report (GMT->parent, GMT_MSG_NORMAL, "Errorn in -C. Must provide either a file name or a value in the [0 1] interval.\n", p); - n_errors++; - } + } + else if (!gmt_check_filearg(GMT, 'C', Ctrl->C.file, GMT_IN, GMT_IS_DATASET)) { + GMT_Report(GMT->parent, GMT_MSG_NORMAL, "Errorn in -C. Must provide either a file name or a value in the [0 1] interval.\n", p); + n_errors++; } break; case 'G': /* Output file */ - n_errors += gmt_M_repeated_module_option (API, Ctrl->G.active); - if (!gmt_check_filearg (GMT, 'G', opt->arg, GMT_OUT, GMT_IS_GRID)) - Ctrl->G.file = strdup (opt->arg); - else - n_errors++; + n_errors += gmt_M_repeated_module_option(API, Ctrl->G.active); + n_errors += gmt_get_required_file(GMT, opt->arg, opt->option, 0, GMT_IS_GRID, GMT_OUT, GMT_FILE_LOCAL, &(Ctrl->G.file)); break; case 'W': Ctrl->W.water = (float)atof (opt->arg); @@ -211,7 +210,7 @@ static int parse (struct GMT_CTRL *GMT, struct VS30_CTRL *Ctrl, struct GMT_Z_IO } } - n_errors += gmt_M_check_condition (GMT, !Ctrl->G.file, "Syntax error -G option: Must specify output grid file\n"); + n_errors += gmt_M_check_condition (GMT, !Ctrl->G.active, "Syntax error -G option: Must specify output grid file\n"); n_errors += gmt_M_check_condition (GMT, !Ctrl->C.active, "Syntax error -C option: Must specify a value or a file name.\n"); return (n_errors ? GMT_PARSE_ERROR : GMT_NOERROR); @@ -260,7 +259,9 @@ EXTERN_MSC int GMT_grdvs30 (void *V_API, int mode, void *args) { uint64_t ij; int error = 0; char cmd[GMT_LEN256] = {""}; - char crat_grd[GMT_LEN16] = {""}, mask_grd[GMT_LEN16] = {""}, grad_grd[GMT_LEN16] = {""}; + char crat_grd[GMT_LEN32] = {""}, mask_grd[GMT_LEN32] = {""}, grad_grd[GMT_LEN32] = {""}; + /* + */ float crat, lg; double (*table)[4], tvs[2], vv, wesn[4]; @@ -312,7 +313,7 @@ EXTERN_MSC int GMT_grdvs30 (void *V_API, int mode, void *args) { Return (API->error); /* Prepare the grdlandmask arguments */ - sprintf (cmd, "-G%s -I%f/%f -Df -R%.16g/%.16g/%.16g/%.16g --GMT_HISTORY=false ", + sprintf (cmd, "-G%s -I%.16g/%.16g -Df -R%.16g/%.16g/%.16g/%.16g --GMT_HISTORY=false ", mask_grd, G->header->inc[GMT_X], G->header->inc[GMT_Y], wesn[XLO], wesn[XHI], wesn[YLO], wesn[YHI]); GMT_Report (API, GMT_MSG_LONG_VERBOSE, "Calling grdlandmask with args %s\n", cmd); diff --git a/test/baseline/psevents.dvc b/test/baseline/psevents.dvc index f98a0eb84c3..f12d863a488 100644 --- a/test/baseline/psevents.dvc +++ b/test/baseline/psevents.dvc @@ -1,5 +1,6 @@ outs: -- md5: 19a661f5d2867f45491a562444c8e09c.dir +- md5: 5fd50ad6273f9fd101c94e26a75e59e7.dir nfiles: 7 path: psevents hash: md5 + size: 368204 diff --git a/test/psevents/events.sh b/test/psevents/events.sh index 3d9325980eb..3114c664446 100755 --- a/test/psevents/events.sh +++ b/test/psevents/events.sh @@ -1,7 +1,6 @@ #!/usr/bin/env bash # Test gmt psevents with some quakes -# GMT_KNOWN_FAILURE ps=events.ps