Learn R Programming

gsw (version 1.0-3)

saar: Global SA lookup file

Description

This dataset is not intended for users, but rather for internal use within the gsw package. The dataset stores the 1.4M lookup table defined in the 8.3M file src/gsw_saar_data.c in the C library. (The .c file exceeds CRAN limitations on size.)

Arguments

Details

The data are designed to replace C elements defined as below in src/gsw_saar_data.c:

    static int	gsw_nx=91, gsw_ny=45, gsw_nz=45;
    static double	longs_ref[91];
    static double	lats_ref[45];
    static double	p_ref[45];
    static double	ndepth_ref[4095];
    static double	saar_ref[184275];
    static double	delta_sa_ref[184275];

R storage is in a list named saar, with elements named as in the C code, i.e. gsw_nx etc.

C storage for these variables is allocated as needed, and the data are inserted, when gsw is launched. Thus, the existing C library code "knows" about the data as local storage, which keeps alterations to the C library to a minimum.

The code used to create the RDA file (using the Fortran data file, version 3.0.3) is given below.

    gsw_nx <- 91
    gsw_ny <- 45
    gsw_nz <- 45
    f <- file("~/src/gsw_fortran_v3_03/gsw_data_v3_0.dat", "r")
    longs_ref <- scan(f, double(), n=gsw_nx)
    lats_ref <- scan(f, double(), n=gsw_ny)
    p_ref <- scan(f, double(), n=gsw_nz)
    ndepth_ref <- scan(f, double(), n=gsw_nx*gsw_ny)
    saar_ref <- scan(f, double(), n=gsw_nx*gsw_ny*gsw_nz)
    delta_sa_ref <- scan(f, double(), n=gsw_nx*gsw_ny*gsw_nz)
    saar <- list(gsw_nx=gsw_nx, gsw_ny=gsw_ny, gsw_nz=gsw_nz,
                 longs_ref=longs_ref, lats_ref=lats_ref, p_ref=p_ref, ndepth_ref=ndepth_ref,
                 saar_ref=saar_ref, delta_sa_ref=delta_sa_ref)
    save(saar, file="saar.rda")
    tools::resaveRdaFiles("saar.rda")
    close(f)