Skip to content
Commits on Source (11)
......@@ -151,6 +151,12 @@ endif()
set(CMAKE_REQUIRED_LIBRARIES ${NETCDF_LIBRARY})
check_library_exists(${NETCDF_LIBRARY} nc_rename_grp "" has_nc_rename_grp)
if (has_nc_rename_grp)
message("-- Found nc_rename_grp in: " ${NETCDF_LIBRARY})
add_definitions(-DHAVE_NC_RENAME_GRP)
endif()
check_library_exists(${NETCDF_LIBRARY} nc_inq_path "" has_nc_inq_path)
if (has_nc_inq_path)
message("-- Found nc_inq_path in: " ${NETCDF_LIBRARY})
......@@ -536,7 +542,7 @@ target_link_libraries (ncwa ${nco_LIB} ${LIB_DEP})
#//////////////////////////
#ANLR
#ANTLR
#cmake can detect relative paths, e.g, antlr/AST.hpp
#detect a user defined system environment variable ANTLR_ROOT
#this sets the include path to ANTLR_INCLUDE directly
......
......@@ -14,15 +14,15 @@
# Machine build parameters
# Source Method Packages Compiler
# aerosol.ess.uci.edu: NCO Configure All else clang
# aerosol.ess.uci.edu: NCO Configure All else GCC
# AppVeyor CI : NCO CMake All else MSVC
# cheyenne.ucar.edu : NCO Makefile All else Intel
# cooley.alcf.anl.g : NCO Configure All else GCC
# edison.nersc.gov : NCO Configure All else Intel
# firn.ess.uci.edu : NCO Configure All else clang
# firn.ess.uci.edu : NCO Configure All else GCC
# frazil.ess.uci.edu : NCO Configure All else clang
# glace.ess.uci.edu : NCO CMake All else GCC
# grele.ess.uci.edu : NCO Makefile All else GCC
# grele.ess.uci.edu : NCO + netCDF Makefile All else GCC
# katabatic.ess.uci.e: NCO CMake All else clang
# rhea.ccs.ornl.gov : NCO Makefile All else GCC
# skyglow.ess.uci.edu: NCO + netCDF Configure All else GCC
......@@ -42,7 +42,7 @@
# Usage (Compilation):
# cd ~/nco/qt;qmake;make;cd - # Qt
# cd ~/nco/bld;make;cd - # Default build
# cd ~/nco/bld;make USR_TKN='-DNC_HAVE_RENAME_GRP';cd - # New API
# cd ~/nco/bld;make USR_TKN='-DHAVE_NC_RENAME_GRP';cd - # New API
# cd ~/nco/bld;make UDUNITS_INC='/usr/include/udunits2';cd - # Fedora build
# cd ~/nco/bld;make cln bin_cln;cd - # Clean all dependencies for fresh build
# cd ~/nco/bld;make dir all; cd - # Create target directories then build
......
......@@ -2,17 +2,17 @@
# http://cvs.fedoraproject.org/viewvc/devel/nco/nco.spec?view=co
Name: nco
Version: 4.7.5
Version: 4.7.6
Release: 1%{?dist}
Summary: Programs that manipulate netCDF files
Group: Applications/Engineering
License: GPL3
URL: http://nco.sf.net/
# Obtain NCO version 4.7.5-1 tar.gz from Sourceforge using CVS:
# Obtain NCO version 4.7.6-1 tar.gz from Sourceforge using CVS:
# cvs -d:pserver:anonymous@nco.cvs.sf.net:/cvsroot/nco login
# cvs -z3 -d:pserver:anonymous@nco.cvs.sf.net:/cvsroot/nco co -r nco-4.7.5-1 -d nco-%{version} nco
# tar czf nco-%{version}.tar.gz --exclude='nco-4.7.5/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude='ncap_yacc.[ch]' ./nco-%{version}
# cvs -z3 -d:pserver:anonymous@nco.cvs.sf.net:/cvsroot/nco co -r nco-4.7.6-1 -d nco-%{version} nco
# tar czf nco-%{version}.tar.gz --exclude='nco-4.7.6/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude='ncap_yacc.[ch]' ./nco-%{version}
Source0: nco-%{version}.tar.gz
#Patch0: nco_install_C_headers.patch
#Patch1: nco_find_udunits-dat.patch
......@@ -108,6 +108,9 @@ fi
# %{_libdir}/libnco++.so
%changelog
* Sat Aug 11 2018 Charlie Zender <zender@uci.edu> - 4.7.6-1
- new upstream 4.7.6
* Sun Jun 10 2018 Charlie Zender <zender@uci.edu> - 4.7.5-1
- new upstream 4.7.5
......
......@@ -5,20 +5,20 @@
# Usage:
# Export tagged, public versions
# /usr/bin/scp ${DATA}/nco-4.7.5.tar.gz zender,nco@web.sf.net:/home/project-web/nco/htdocs/src
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4.7.5 # Build, do not release on SF
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --sf nco-4.7.5 # Build, release on SF
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --nst_all nco-4.7.5 # Install, do not build
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --nst_all nco-4.7.5 # Build and install
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_cnt nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_prs nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cgd_cnt nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cray_prs nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --bbl_cnt nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --blk_cnt nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --dat_cnt nco-4.7.5
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --ute_prs nco-4.7.5
# /usr/bin/scp ${DATA}/nco-4.7.6.tar.gz zender,nco@web.sf.net:/home/project-web/nco/htdocs/src
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4.7.6 # Build, do not release on SF
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --sf nco-4.7.6 # Build, release on SF
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --nst_all nco-4.7.6 # Install, do not build
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --nst_all nco-4.7.6 # Build and install
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_cnt nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_prs nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cgd_cnt nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cray_prs nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --bbl_cnt nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --blk_cnt nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --dat_cnt nco-4.7.6
# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --ute_prs nco-4.7.6
# Export daily snapshot
# ${HOME}/nco/bld/nco_dst.pl --dbg=2
......@@ -256,7 +256,7 @@ if($bld){
# Set up FTP server
chdir $dst_pth_pfx or die "$prg_nm: ERROR unable to chdir to $dst_pth_pfx: $!\n"; # $! is system error string
cmd_prc("$cp_cmd $doc_fl ./$dst_vrs/doc"); # Copy derived documentation to source directory
cmd_prc("$tar_cmd cvzf $dst_fl --exclude='nco-4.7.5/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude=ncap_yacc.[ch] ./$dst_vrs"); # Create gzipped tarfile
cmd_prc("$tar_cmd cvzf $dst_fl --exclude='nco-4.7.6/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude=ncap_yacc.[ch] ./$dst_vrs"); # Create gzipped tarfile
cmd_prc("$rsh_cmd $www_mch $rm_cmd $www_drc/src/$dst_fl"); # Remove any distribution with same name
if($dly_snp){cmd_prc("$rsh_cmd $www_mch $rm_cmd -r $www_drc/src/nco-????????.tar.gz");} # Remove previous daily snapshots from WWW server
cmd_prc("$rcp_cmd $dst_fl $www_mch:$www_drc/src"); # Copy local tarfile to WWW server
......
......@@ -500,6 +500,20 @@ if($USER eq 'zender'){
$tst_cmd[3]="SS_OK";
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
# ncap2 #18
$dsc_sng="Run script to test pack() function";
$tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S '../data/pack.nco' $in_pth_arg in.nc %tmp_fl_00%";
$tst_cmd[1]="ncpdq -O -U %tmp_fl_00% %tmp_fl_01%";
$tst_cmd[2]="ncap2 -O -h -C $fl_fmt $nco_D_flg -v -s 'n2=p_three_dmn_var_dbl.total();' %tmp_fl_01% %tmp_fl_02%";
$tst_cmd[3]="ncks -C -H --trd -v n2 -s '%.2f' %tmp_fl_02%";
$tst_cmd[4]="2802.00";
$tst_cmd[5]="SS_OK";
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
if($dodap eq "FALSE"){
####################
......@@ -1652,6 +1666,7 @@ if($USER eq 'zender'){
$opr_nm='ncks';
####################
#ncks #01
$dsc_sng="Create T42 variable named one, uniformly 1.0 over globe in %tmp_fl_03%. (FAILURE with netCDF4 ncrename nco821)";
$tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lat_T42,lon_T42,gw_T42 $in_pth_arg in.nc %tmp_fl_03%";
......@@ -3041,7 +3056,53 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
# ncks #124
$dsc_sng="netCDF4 test --cal switch" ;
$tst_cmd[0]="ncks -H -C -O $fl_fmt $nco_D_flg --cal -d time,0 -v time $in_pth_arg in.nc|grep '\"1964-03-13 21:09:00\"'";
$tst_cmd[1]=" time = \"1964-03-13 21:09:00\" ;";
$tst_cmd[2]="SS_OK";
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
# Check that xmllint exists
my $xmllint_code=system("xmllint --version 1>: 2>&1");
if($xmllint_code == 0){
# 20180701: csz xmllint produces more false negatives than Emacs XML-validator, only catches egregious mistakes
# ncks #125
$dsc_sng="ncks test --xml switch with groups" ;
$tst_cmd[0]="ncks --xml $fl_fmt $nco_D_flg $in_pth_arg in_grp.nc > %tmp_fl_00%";
$tst_cmd[1]="xmllint --schema '../data/ncml-2.2.xsd' %tmp_fl_00% > /dev/null 2>&1 && echo xml_ok";
$tst_cmd[2]="xml_ok";
$tst_cmd[3]="SS_OK";
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
# ncks #126
$dsc_sng="ncks test --xml switch with regular in.nc" ;
$tst_cmd[0]="ncks --xml $fl_fmt $nco_D_flg $in_pth_arg in.nc > %tmp_fl_00%";
$tst_cmd[1]="xmllint --schema '../data/ncml-2.2.xsd' %tmp_fl_00% > /dev/null 2>&1 && echo xml_ok";
$tst_cmd[2]="xml_ok";
$tst_cmd[3]="SS_OK";
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
} # !XML
# ncks #127
# ncatted -O -a standard_name,,d,, ~/nco/data/in.nc ~/foo.nc
# ncks -O -X 150.,210.,-15.,45. -v gds_var,gds_3dvar ~/foo.nc ~/foo1.nc
# ncap2 -v -O -S '../data/chk-aux-subset.nco' ~/foo1.nc ~/foo2.nc
# ncks -O -C -H --trd -v nbr_err -s '%d' ~/foo2.nc;
$dsc_sng="ncks test auxiliary coords WITHOUT standard_name";
$tst_cmd[0]="ncatted -O $fl_fmt $nco_D_flg -a standard_name,,d,, $in_pth_arg in.nc %tmp_fl_00%";
$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg -X 150.,210.,-15.,45. -v gds_var,gds_3dvar %tmp_fl_00% %tmp_fl_01%";
$tst_cmd[2]="ncap2 -v -O $fl_fmt $nco_D_flg -S '../data/chk-aux-subset.nco' %tmp_fl_01% %tmp_fl_02%";
$tst_cmd[3]="ncks -O -C -H --trd -v nbr_err -s '%d' %tmp_fl_02%";
$tst_cmd[4]="0";
$tst_cmd[5]="SS_OK";
NCO_bm::tst_run(\@tst_cmd);
$#tst_cmd=0; # Reset array
#####################
#### ncpdq tests #### -OK !
#####################
......@@ -5015,7 +5076,7 @@ if(0){
$dsc_sng="test wrapped ttl with dbl_prc patch (harmless failure expected/OK on all chips since wrap behavior is not IEEE-specified)";
$tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v val_max_max_sht $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
$tst_cmd[1]="ncks -C -H --trd -s '%d' -v val_max_max_sht %tmp_fl_00%";
# $nsr_xpc= -31536 ; # Expected on Pentium IV GCC Debian 3.4.3-13, PowerPC xlc
# $nsr_xpc= -31536 ; # Expected on Pentium IV GCC Debian 3.4.3-13, PowerPC xlmlc
# $nsr_xpc= -32768 ; # Expected on Xeon GCC Fedora 3.4.2-6.fc3
# $nsr_xpc= -32768 ; # Expected on Opteron
# $nsr_xpc= -32768 ; # Expected on PentiumIII (Coppermine) gcc 3.4 MEPIS
......
:: cmake build all NCO dependencies obtained with 'git clone'
:: bld.bat
:: Windows script to build NCO on the command line, using Visual Studio
:: 1) clones all NCO dependecies
:: 2) cmake builds all NCO dependencies obtained with 'git clone'
:: 3) cmake builds NCO
:: 4) tests the netcdf build by reading a remote file with the built ncdump
:: 5) tests the NCO build by using the built ncks to read 2 files (in.nc, in_grp.nc)
:: and dumping content to a text file; this text file is compared using the FC tool with pre-existing output (generated in Linux)
:: Notes:
:: 1) must be run from ~/nco/cmake
:: 2) requires manual editing of the 'hdf5' and 'netcdf' generated Visual Studio projects,
:: so that dependencies ZLIB and SZIP are detected. This is explained in ~/nco/cmake/README.md
:: 3) the existence of a NCO build is tested with the existence of a built ncks with
:: if exist %build%\Debug\ncks.exe
:: to force another cmake build, '%build%\Debug\ncks.exe' can be deleted and retyping
:: $bld.bat
:: Pedro Vicente
@echo off
......@@ -409,6 +424,9 @@ set data=%root_win%\..\data
%build%\netcdf-c\build\ncgen\ncgen.exe -k netCDF-4 -b -o %data%\in.nc %data%\in.cdl
%build%\Debug\ncks.exe --jsn_fmt 2 -C -g g10 -v two_dmn_rec_var %data%\in_grp.nc
:: generation of comparison files in UNIX done with
:: pvicente@glace:~/nco/data$ ../cmake/ncks in_grp.nc > in_grp.nc.txt
:: pvicente@glace:~/nco/data$ ../cmake/ncks in.nc > in.nc.txt
:: generate text files in_grp.nc.gen.txt from in_grp.nc and in.nc and use tool FC to compare contents
:: with pre-existing in_grp.nc.txt, in.nc.txt, generated in Linux
:: generation of in_grp.nc.gen.txt must be done in 'data' folder so that paths match
......
......@@ -1675,7 +1675,7 @@ netcdf in {
RDM = 1, 9, 36, 84, 126, 126, 84, 36, 9, 1 ;
SALT = -9.96921e+33, 0.032, 0.033, 0.034, 0.035, 0.036, 0.037, 0.038, -9.96921e+33, -9.96921e+33 ;
SALT = _, 0.032, 0.033, 0.034, 0.035, 0.036, 0.037, 0.038, _, _ ;
albers_conical_equal_area = "" ;
......@@ -1841,9 +1841,9 @@ netcdf in {
"/data/zender/dstccm04/dstccm04_8589_09.nc",
"/data/zender/dstccm04/dstccm04_8589_10.nc" ;
fll_val = 73, -999, 73, -999 ;
fll_val = 73, _, 73, _ ;
fll_val_mss_val = 73, -999, 73, -999 ;
fll_val_mss_val = 73, _, 73, _ ;
float_var = 10 ;
......@@ -2044,21 +2044,21 @@ netcdf in {
mmr_CO2 = 0.000611 ;
msk_prt_mss_prt = 0.5, 1e+36, 1.5, 1e+36 ;
msk_prt_mss_prt = 0.5, _, 1.5, _ ;
mss_val = 73, 1e+36, 73, 1e+36 ;
mss_val = 73, _, 73, _ ;
mss_val_all = 1e+36, 1e+36, 1e+36, 1e+36 ;
mss_val_all = _, _, _, _ ;
mss_val_fst = -999, 73, -999, 73 ;
mss_val_fst = _, 73, _, 73 ;
mss_val_scl = 1e+36 ;
mss_val_scl = _ ;
mss_val_scl_sml = 10000 ;
mss_val_scl_sml = _ ;
nan_arr = 0, 73 ;
nan_scl = 1 ;
nan_scl = _ ;
nbdate = 640224 ;
......@@ -2089,33 +2089,33 @@ netcdf in {
one_dmn_rec_var = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
one_dmn_rec_var__FillValue = 1, 2, 3, 4, 5, 6, 7, 8, 9, 1e+36 ;
one_dmn_rec_var__FillValue = 1, 2, 3, 4, 5, 6, 7, 8, 9, _ ;
one_dmn_rec_var_dbl = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
one_dmn_rec_var_flt = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
one_dmn_rec_var_flt_mss = 1e+36, 2, 3, 4, 5, 6, 7, 8, 9, 1e+36 ;
one_dmn_rec_var_flt_mss = _, 2, 3, 4, 5, 6, 7, 8, 9, _ ;
one_dmn_rec_var_flt_mss_scl = 1e+36, 2, 3, 4, 5, 6, 7, 8, 9, 1e+36 ;
one_dmn_rec_var_flt_mss_scl = _, 2, 3, 4, 5, 6, 7, 8, 9, _ ;
one_dmn_rec_var_flt_scl = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
one_dmn_rec_var_mdn = 1, 1, 2, 2, 2, 2, 10, 10, 10, 10 ;
one_dmn_rec_var_mdn__FillValue = 1, -999, 2, 2, -999, -999, 10, 10, 10, -999 ;
one_dmn_rec_var_mdn__FillValue = 1, _, 2, 2, _, _, 10, 10, 10, _ ;
one_dmn_rec_var_missing_value = 1, 2, 3, 4, 5, 6, 7, 8, 9, 1e+36 ;
one_dmn_rec_var_mss_val = 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36 ;
one_dmn_rec_var_mss_val = _, _, _, _, _, _, _, _, _, _ ;
one_dmn_rec_var_mss_val_arr = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
one_dmn_rec_var_mss_val_arr = _, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
one_dmn_rec_var_sng = "Hello Worl" ;
one_dmn_rec_var_unsorted = 10, 4, 6, 2, 8, 1, 9, 7, 3, 5 ;
one_dmn_rec_var_unsorted__FillValue = 1e+36, 4, 6, 2, 8, 1, 9, 7, 3, 5 ;
one_dmn_rec_var_unsorted__FillValue = _, 4, 6, 2, 8, 1, 9, 7, 3, 5 ;
one_dmn_rec_wgt = 2, 1, 0, 0, 0, 0, 0, 0, 0, 0 ;
......@@ -2197,43 +2197,43 @@ netcdf in {
rec_var_dbl = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
rec_var_dbl_mss_val_dbl_pck = -999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999 ;
rec_var_dbl_mss_val_dbl_pck = _, 32767, 21845, 10922, 0, -10922, -21845, -32767, _, _ ;
rec_var_dbl_mss_val_dbl_pck_lng = -999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999 ;
rec_var_dbl_mss_val_dbl_pck_lng = _, 32767, 21845, 10922, 0, -10922, -21845, -32767, _, _ ;
rec_var_dbl_mss_val_dbl_upk = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ;
rec_var_dbl_mss_val_dbl_upk = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_dbl_mss_val_sht_pck = -999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999 ;
rec_var_dbl_mss_val_sht_pck = _, 32767, 21845, 10922, 0, -10922, -21845, -32767, _, _ ;
rec_var_dbl_mss_val_sht_pck_sht = -999, 32767, 21845, 10922, 0, -10922, -21845, -32767, -999, -999 ;
rec_var_dbl_mss_val_sht_pck_sht = _, 32767, 21845, 10922, 0, -10922, -21845, -32767, _, _ ;
rec_var_dbl_mss_val_sht_upk = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ;
rec_var_dbl_mss_val_sht_upk = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_dbl_pck = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
rec_var_flt = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
rec_var_flt_mss_val_dbl = 1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36 ;
rec_var_flt_mss_val_dbl = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_flt_mss_val_flt = 1e+36, 2, 3, 4, 5, 6, 7, 8, 1e+36, 1e+36 ;
rec_var_flt_mss_val_flt = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_flt_mss_val_flt_all = 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36 ;
rec_var_flt_mss_val_flt_all = _, _, _, _, _, _, _, _, _, _ ;
rec_var_flt_mss_val_flt_all_but_one = 1e+36, 1e+36, 1e+36, 1e+36, 5, 1e+36, 1e+36, 1e+36, 1e+36, 1e+36 ;
rec_var_flt_mss_val_flt_all_but_one = _, _, _, _, 5, _, _, _, _, _ ;
rec_var_flt_mss_val_flt_all_but_two = 1e+36, 1e+36, 1e+36, 1e+36, 5, 1e+36, 1e+36, 1e+36, 1e+36, 10 ;
rec_var_flt_mss_val_flt_all_but_two = _, _, _, _, 5, _, _, _, _, 10 ;
rec_var_flt_mss_val_flt_pck_flt = -9.96921e+33, 0.032, 0.033, 0.034, 0.035, 0.036, 0.037, 0.038, -9.96921e+33, -9.96921e+33 ;
rec_var_flt_mss_val_flt_pck_flt = _, 0.032, 0.033, 0.034, 0.035, 0.036, 0.037, 0.038, _, _ ;
rec_var_flt_mss_val_int = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ;
rec_var_flt_mss_val_int = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_flt_pck = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
rec_var_int_mss_val_dbl = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ;
rec_var_int_mss_val_dbl = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_int_mss_val_flt = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ;
rec_var_int_mss_val_flt = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_int_mss_val_int = -999, 2, 3, 4, 5, 6, 7, 8, -999, -999 ;
rec_var_int_mss_val_int = _, 2, 3, 4, 5, 6, 7, 8, _, _ ;
rec_var_pck_scale_factor_only = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
......@@ -2266,20 +2266,20 @@ netcdf in {
13, 14, 15, 16,
17, 18, 19, 20,
21, 22, 23, 24,
-99, -99, -99, -99,
-99, -99, -99, -99,
_, _, _, _,
_, _, _, _,
33, 34, 35, 36,
37, 38, 39, 40,
41, 42, 43, 44,
45, 46, 47, 48,
49, 50, 51, 52,
53, 54, 55, 56,
-99, 58, 59, 60,
_, 58, 59, 60,
61, 62, 63, 64,
65, 66, 67, 68,
69, 70, 71, 72,
-99, 74, 75, 76,
77, 78, 79, -99 ;
_, 74, 75, 76,
77, 78, 79, _ ;
three = 3 ;
......@@ -2350,64 +2350,64 @@ netcdf in {
13, 14, 15, 16,
17, 18, 19, 20,
21, 22, 23, 24,
-99, -99, -99, -99,
-99, -99, -99, -99,
_, _, _, _,
_, _, _, _,
33, 34, 35, 36,
37, 38, 39, 40,
41, 42, 43, 44,
45, 46, 47, 48,
49, 50, 51, 52,
53, 54, 55, 56,
-99, 58, 59, 60,
_, 58, 59, 60,
61, 62, 63, 64,
65, 66, 67, 68,
69, 70, 71, 72,
-99, 74, 75, 76,
77, 78, 79, -99 ;
_, 74, 75, 76,
77, 78, 79, _ ;
three_dmn_var_int =
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16,
-99, -99, -99, -99,
-99, -99, -99, -99,
_, _, _, _,
_, _, _, _,
25, 26, 27, 28,
29, 30, 31, 32,
33, 34, 35, 36,
37, 38, 39, 40,
41, -99, 43, 44,
41, _, 43, 44,
45, 46, 47, 48,
49, 50, 51, 52,
53, 54, 55, 56,
-99, 58, 59, 60,
-99, 62, 63, 64,
65, -99, 67, 68,
_, 58, 59, 60,
_, 62, 63, 64,
65, _, 67, 68,
69, 70, 71, 72,
-99, 74, 75, -99,
_, 74, 75, _,
77, 78, 79, 80 ;
three_dmn_var_sht =
1, 2, 3, 4,
5, 6, 7, 8,
-99, 10, 11, 12,
_, 10, 11, 12,
13, 14, 15, 16,
17, 18, 19, 20,
21, 22, 23, 24,
25, 26, 27, 28,
29, 30, 31, 32,
-99, 34, 35, -99,
_, 34, 35, _,
37, 38, 39, 40,
41, 42, 43, 44,
-99, 46, 47, 48,
_, 46, 47, 48,
49, 50, 51, 52,
53, 54, 55, 56,
57, 58, 59, -99,
57, 58, 59, _,
61, 62, 63, 64,
65, 66, 67, 68,
69, 70, 71, 72,
-99, -99, -99, -99,
-99, -99, -99, -99 ;
_, _, _, _,
_, _, _, _ ;
time = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
......@@ -2645,9 +2645,9 @@ netcdf in {
val_one_int = 1 ;
val_one_mss = 1, 1e+36 ;
val_one_mss = 1, _ ;
val_one_mss_int = 1, -99 ;
val_one_mss_int = 1, _ ;
val_one_one_int = 1, 1 ;
......@@ -2667,19 +2667,19 @@ netcdf in {
0, 1, 0, 0,
1, 1, 0, 2 ;
var_mss_0 = 1e+36, 1, 2, 3 ;
var_mss_0 = _, 1, 2, 3 ;
var_mss_1 = 0, 1e+36, 2, 3 ;
var_mss_1 = 0, _, 2, 3 ;
var_mss_2 = 0, 1, 1e+36, 3 ;
var_mss_2 = 0, 1, _, 3 ;
var_mss_3 = 0, 1, 2, 1e+36 ;
var_mss_3 = 0, 1, 2, _ ;
var_mss_nil = 0, 1, 2, 3 ;
var_nm-dash = 1 ;
vld_rng = 273, -999, 180, 179, 273, 360, 361, 1e+36, -1e+36, 273 ;
vld_rng = 273, _, 180, 179, 273, 360, 361, 1e+36, -1e+36, 273 ;
vmr_CO2 = 0.0004 ;
......@@ -2688,22 +2688,22 @@ netcdf in {
wgt_one = 1, 1 ;
wnd_spd =
-999, 0.5, 1.5, 0.5,
_, 0.5, 1.5, 0.5,
1.5, 0.5, 1.5, 0.5,
0.5, -999, 0.5, 0.5,
0.5, _, 0.5, 0.5,
0.5, 0.5, 0.5, 0.5,
0.5, 1.5, -999, 1.5,
0.5, 1.5, _, 1.5,
0.5, 1.5, 0.5, 1.5,
0.5, 0.5, 0.5, -999,
0.5, 0.5, 0.5, _,
0.5, 0.5, 0.5, 0.5,
1.5, 1.5, 1.5, 1.5,
-999, 1.5, 1.5, 1.5,
_, 1.5, 1.5, 1.5,
0.5, 0.5, 0.5, 0.5,
0.5, -999, 0.5, 0.5,
0.5, _, 0.5, 0.5,
2.5, 2.5, 2.5, 2.5,
2.5, 2.5, -999, 2.5,
2.5, 2.5, _, 2.5,
0.5, 0.5, 0.5, 0.5,
0.5, 0.5, 0.5, -999,
0.5, 0.5, 0.5, _,
0.5, 0.5, 0.5, 0.5,
0.5, 0.5, 0.5, 0.5,
0.5, 0.5, 2.5, 0.5,
......
......@@ -70,6 +70,7 @@ netcdf in_grp {
non_coord:purpose = "Test whether netCDF4 supports renaming non-coordinates to coordinates" ;
float one ;
one:long_name = "one" ;
double ppc_big(time) ;
......@@ -141,10 +142,9 @@ netcdf in_grp {
unique = 73 ;
val_one_mss = 1, 1e+36 ;
val_one_mss = 1, _ ;
group: g1 {
variables:
int g1v1 ;
......@@ -190,7 +190,6 @@ netcdf in_grp {
v1 = 1 ;
group: g1g1 {
variables:
double ppc_big(time) ;
......@@ -231,7 +230,6 @@ netcdf in_grp {
} // group /g1/g1\:g2
} // group /g1
group: g2 {
variables:
float lon(lon) ;
......@@ -248,7 +246,6 @@ netcdf in_grp {
} // group /g2
group: g4 {
variables:
int one_dmn_rec_var(time) ;
one_dmn_rec_var:long_name = "one dimensional record variable" ;
......@@ -299,7 +296,6 @@ netcdf in_grp {
} // group /g5
group: g6 {
variables:
float area(lat) ;
......@@ -311,7 +307,6 @@ netcdf in_grp {
area1 = 21, 31 ;
group: g6g1 {
variables:
float area(lat) ;
......@@ -321,7 +316,6 @@ netcdf in_grp {
} // group /g6/g6g1
} // group /g6
group: g7 {
variables:
float gds_crd(gds_crd) ;
gds_crd:long_name = "Geodesic coordinate" ;
......@@ -367,7 +361,6 @@ netcdf in_grp {
ppc_flt = 0, 0.1, 0.12, 0.123, 0.1234, 0.12345, 0.123456, 0.1234567, 0.1234568, 0.1234568 ;
group: g7g1 {
variables:
float gds_var(gds_crd) ;
gds_var:units = "meter" ;
......@@ -392,7 +385,6 @@ netcdf in_grp {
} // group /g8
group: g9 {
group: g9g1 {
variables:
int v6 ;
......@@ -407,7 +399,6 @@ netcdf in_grp {
group: g9g1g1g1g1 {
group: g9g1g1g1g1g1 {
group: g9g1g1g1g1g1g1 {
variables:
double ppc_big(time) ;
......@@ -440,7 +431,6 @@ netcdf in_grp {
} // group /g9/g9g1
} // group /g9
group: g10 {
variables:
float three_dmn_rec_var(time,lat,lon) ;
three_dmn_rec_var:units = "watt meter-2" ;
......@@ -484,7 +474,6 @@ netcdf in_grp {
} // group /g10
group: g11 {
variables:
byte byte_var ;
byte_var:long_name = "byte-type variable" ;
......
......@@ -241,6 +241,9 @@
/* Define to 1 if compiler finds external `nc_inq_path' function */
#undef HAVE_NC_INQ_PATH
/* Define to 1 if compiler finds external `nc_rename_grp' function */
#undef HAVE_NC_RENAME_GRP
/* Define to 1 if compiler finds external `nc_set_log_level' function */
#undef HAVE_NC_SET_LOG_LEVEL
......@@ -520,6 +523,9 @@
/* Define to 1 if compiler needs external `nc_inq_path' function */
#undef NEED_NC_INQ_PATH
/* Define to 1 if compiler needs external `nc_rename_grp' function */
#undef NEED_NC_RENAME_GRP
/* Define to 1 if compiler needs external `nc_set_log_level' function */
#undef NEED_NC_SET_LOG_LEVEL
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for NCO netCDF Operators 4.7.5.
# Generated by GNU Autoconf 2.69 for NCO netCDF Operators 4.7.6.
#
# Report bugs to <nco-bugs@lists.sourceforge.net>.
#
......@@ -592,8 +592,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='NCO netCDF Operators'
PACKAGE_TARNAME='nco'
PACKAGE_VERSION='4.7.5'
PACKAGE_STRING='NCO netCDF Operators 4.7.5'
PACKAGE_VERSION='4.7.6'
PACKAGE_STRING='NCO netCDF Operators 4.7.6'
PACKAGE_BUGREPORT='nco-bugs@lists.sourceforge.net'
PACKAGE_URL=''
 
......@@ -1388,7 +1388,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures NCO netCDF Operators 4.7.5 to adapt to many kinds of systems.
\`configure' configures NCO netCDF Operators 4.7.6 to adapt to many kinds of systems.
 
Usage: $0 [OPTION]... [VAR=VALUE]...
 
......@@ -1459,7 +1459,7 @@ fi
 
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of NCO netCDF Operators 4.7.5:";;
short | recursive ) echo "Configuration of NCO netCDF Operators 4.7.6:";;
esac
cat <<\_ACEOF
 
......@@ -1621,7 +1621,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
NCO netCDF Operators configure 4.7.5
NCO netCDF Operators configure 4.7.6
generated by GNU Autoconf 2.69
 
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2487,7 +2487,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
 
It was created by NCO netCDF Operators $as_me 4.7.5, which was
It was created by NCO netCDF Operators $as_me 4.7.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
$ $0 $@
......@@ -3742,7 +3742,7 @@ fi
 
# Define the identity of the package.
PACKAGE='nco'
VERSION='4.7.5'
VERSION='4.7.6'
 
 
cat >>confdefs.h <<_ACEOF
......@@ -18405,6 +18405,20 @@ cat >>confdefs.h <<_ACEOF
#define NEED_NC_SET_LOG_LEVEL 1
_ACEOF
 
fi
ac_fn_c_check_func "$LINENO" "nc_rename_grp" "ac_cv_func_nc_rename_grp"
if test "x$ac_cv_func_nc_rename_grp" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_NC_RENAME_GRP 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define NEED_NC_RENAME_GRP 1
_ACEOF
fi
 
ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
......@@ -21496,7 +21510,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by NCO netCDF Operators $as_me 4.7.5, which was
This file was extended by NCO netCDF Operators $as_me 4.7.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
CONFIG_FILES = $CONFIG_FILES
......@@ -21562,7 +21576,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
NCO netCDF Operators config.status 4.7.5
NCO netCDF Operators config.status 4.7.6
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
 
......
......@@ -54,7 +54,7 @@
# 20170808: Choose between traditional version and Git-based version
# If Git, consider that Linux dynamic libraries will have full messy name, MacOSX will not
# https://stackoverflow.com/questions/43526939/how-to-insert-git-based-version-in-autoconf-managed-project
AC_INIT([NCO netCDF Operators],[4.7.5],[nco-bugs@lists.sourceforge.net],[nco])
AC_INIT([NCO netCDF Operators],[4.7.6],[nco-bugs@lists.sourceforge.net],[nco])
# Print GNU copyright in configure script
AC_COPYRIGHT
......@@ -388,7 +388,7 @@ esac
# "#define HAVE_XXX 1" and "#undef NEED_XXX" when function xxx() is found and
# "#undef HAVE_XXX" and "#define NEED_XXX 1" when function xxx() is not found
# Purpose: CPP macros like "if(NEED_XXX)" are simpler to read than "if(!HAVE_xxx)"
NCO_CHECK_FUNCS([nc_inq_format nc_inq_path nc_set_log_level])
NCO_CHECK_FUNCS([nc_inq_format nc_inq_path nc_set_log_level nc_rename_grp])
NCO_CHECK_FUNCS([getopt getopt_long])
NCO_CHECK_FUNCS([atan2])
NCO_CHECK_FUNCS([acosf asinf atanf atan2f cosf expf fabsf fmodf log10f logf powf sinf sqrtf tanf])
......
......@@ -311,6 +311,7 @@ make install
# Latest sysadmin-compiled module usage:
# Personal recipe last modified: 20180405
# Personal recipe last used successfully: 20180406
# NB: aims4 and acme1 only accept connections from whitelisted domains (e.g., uci.edu)
export GNU_TRP=`~/nco/autobld/config.guess`
cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
export PATH=/usr/local/uvcdat/2016-01-21/Externals/bin:${PATH}
......@@ -328,6 +329,7 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
# Latest sysadmin-compiled module usage:
# Personal recipe last modified: 2016??
# Personal recipe last used successfully: 20180406
# NB: aims4 and acme1 only accept connections from whitelisted domains (e.g., uci.edu)
export GNU_TRP=`~/nco/autobld/config.guess`
cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
ANTLR_ROOT=${HOME} CC='gcc' CXX='g++' NETCDF_ROOT='/usr/local/uvcdat/2016-01-21/Externals' UDUNITS2_PATH='/usr/local/uvcdat/2016-01-21/Externals' ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
......@@ -344,18 +346,19 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
# Sysadmin upgrade request: support@lcrc.anl.gov
# Latest ticket: AREQ0215917 on 20180413
# Latest sysadmin-compiled module usage: soft add +netcdf-4.6.1 soft add +nco-4.7.4 # 20180417
# Personal recipe last modified: 20161223
# Personal recipe last used successfully: 20180406
# fails to link to udunits...why?
# Personal recipe last modified: 20180729
# Personal recipe last used successfully: 20180729 (up to ncap2 linking with antlr)
# Fails to link to system-installed udunits...why?
# nm -a /soft/udunits/2.1.21/lib/libudunits2.a | grep ut_read_xml
# First use: 20161223 Latest use: 20161223
# soft add +antlr-2.7.7 # 20161223 this ANTLR appears to be stock and not NCO-compatible
# soft add +udunits-2.1.21 # 20161223 this UDUnits was compiled without -fPIC so fails with NCO
soft add +netcdf-4.3.3.1-gnu5.2-serial
soft add +gcc-5.3
soft add +netcdf-c-4.4.1.1-f77-4.4.4-gcc-5.3.0-serial
soft add +gsl-2.3
export GNU_TRP=`~/nco/autobld/config.guess`
cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
ANTLR_ROOT=${HOME} CC='gcc' CXX='g++' NETCDF_ROOT='/soft/netcdf_serial/4.3.3.1/gnu-5.2' UDUNITS2_PATH=${HOME} ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
ANTLR_ROOT=${HOME} CC='gcc' CXX='g++' NETCDF_ROOT='/soft/spack-0.10.0/opt/spack/linux-centos6-x86_64/gcc-5.3.0/netcdf-4.4.1.1-2dtwbu4ojkwj5tqd4uqvomnu6ecmh6tx' UDUNITS2_PATH=${HOME} ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
ANTLR_ROOT='/soft/antlr/2.7.7' CC='gcc' CXX='g++' NETCDF_ROOT='/soft/spack-0.10.0/opt/spack/linux-centos6-x86_64/gcc-5.3.0/netcdf-4.4.1.1-2dtwbu4ojkwj5tqd4uqvomnu6ecmh6tx' UDUNITS2_PATH=${HOME} ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
/bin/cp -f config.log nco.config.log.${GNU_TRP}.foo
/bin/cp -f libtool nco.libtool.${GNU_TRP}.foo
make clean;make > nco.make.${GNU_TRP}.foo 2>&1
......@@ -368,7 +371,7 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
# Latest ticket: 216373 on 20180413
# Latest sysadmin-compiled module usage: module load netcdf/4.6.1 module load nco/4.7.4 # 20180417
# Personal recipe last modified: 20180427
# Personal recipe last used successfully: 20180427 (getopt errors were eliminated by removing ~/include/getopt*.h)
# Personal recipe last used successfully: 20180711 (getopt errors were eliminated by removing ~/include/getopt*.h)
module purge
module load ncarenv intel ncarcompilers mpt netcdf
module add intel
......@@ -424,7 +427,7 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
# Latest ticket: INC0118469 on 20180413
# Latest sysadmin-compiled module usage: module load nco/4.7.4 # 20180430 (without ncap2)
# Personal recipe last modified: 20170807
# Personal recipe last used successfully: 20180302 (20180406 but can't find antlr)
# Personal recipe last used successfully: 20180808 (but must manually link to -L${HOME}/lib_edison to find antlr)
module load szip
module load gsl
module load udunits2
......@@ -723,7 +726,15 @@ To build NCO with netCDF4, we require changes from the default process:
************************************************************************
End NETCDF4
************************************************************************
cd
/bin/rm -r -f nco
git clone git@github.com:nco/nco.git
cd nco
<configure>
make install
cd ~/nco/data
make
cd ~/nco
************************************************************************
Start LINUXAMD64
Status: Appears to work. Make sure to compile netCDF and DAP with CFLAGS+='-fPIC'
......@@ -737,7 +748,12 @@ x86_64-unknown-linux-gnu
# Zender uses this on MACOSX aerosol/firn as well
export GNU_TRP=`~/nco/autobld/config.guess`
cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
# Pre-20180729 (antlr from macports seemed to have stopped linking, so build it from scratch)
CC='gcc' CFLAGS='' CXX='g++' CXXFLAGS='' ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
# Firn 20180729
ANTLR_ROOT=${HOME} CC='gcc' CFLAGS='' CXX='g++' CXXFLAGS='' ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
# Aerosol 20180729
ANTLR_ROOT=${HOME} CC=${LINUX_CC} CFLAGS='' CXX=${LINUX_CXX} CXXFLAGS='' ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
/bin/cp -f config.log nco.config.log.${GNU_TRP}.foo
/bin/cp -f libtool nco.libtool.${GNU_TRP}.foo
make clean;make > nco.make.${GNU_TRP}.foo 2>&1
......@@ -778,7 +794,7 @@ make check >> nco.make.${GNU_TRP}.foo 2>&1
make install >> nco.make.${GNU_TRP}.foo 2>&1
scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU_TRP}.foo nco.make.${GNU_TRP}.foo dust.ess.uci.edu:Sites/nco/rgr
# gcc/g++ Zender uses this to debug NCO with pre-built netCDF binaries in /usr (frazil, skyglow)
# gcc/g++ Zender uses this to debug NCO with pre-built netCDF binaries in /usr (skyglow)
export GNU_TRP=`~/nco/autobld/config.guess`
cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
# Pre-20170810 GCC7 dies on nco_yyget_leng() prototype with --enable-debug-custom option
......
// Purpose: Script to test subsetting with auxiliary coordinates
// print("Test script for subsetting of auxiliary coordinates\n");
// Count number of errors
nbr_err=0;
if( $gds_crd.size != 2 )
{
print("ERROR: gds_crd dim wrong size\n");
nbr_err++;
}
if( lat_gds.type() != NC_DOUBLE || lat_gds.min() != 0.0d || lat_gds.max() != 30.0d)
{
print("ERROR: lat_gds coord wrong\n");
nbr_err++;
}
if( lon_gds.type() != NC_DOUBLE || lon_gds.min() !=180.0d || lon_gds.max() != 180.0d )
{
print("ERROR: lon_gds coord wrong\n");
nbr_err++;
}
if( gds_var.type() != NC_FLOAT || gds_var.ndims() != 1 )
{
print("ERROR: gds_var shape wrong\n");
nbr_err++;
}
if( fabs(gds_var.min() - 273.5d)>1e-1d || fabs(gds_var.total() - 547.2d)>1e-1d )
{
print("ERROR: gds_var values wrong\n");
nbr_err++;
}
if( gds_3dvar.type() != NC_FLOAT || gds_3dvar.ndims() != 2 )
{
print("ERROR: gds_3dvar shape wrong\n");
nbr_err++;
}
if( fabs(gds_3dvar.min() - 273.5d)>1e-1d || fabs(gds_3dvar.total() - 5562.0d)>1e-1d )
{
print("ERROR: gds_3dvar values wrong\n");
nbr_err++;
}
// Results summany
print("RESULTS SUMMARY: total errors=");print(nbr_err,"%d");
......@@ -22,7 +22,7 @@ netcdf enum {
ubyte enum enum_ubyte_t {Clear=0,Cumulonimbus=1,Stratus=2,Missing=128};
short enum enum_sht_t {Small=-32000,Medium=0,Large=32767,missing_value=-32768};
uint enum enum_uint_t {Greek_Καλημέρα=0,Japanese_キャク=1,Chinese_龥=3};
// 20180522: Until today the base type of cargo was uint64. Changed it to uint because toolsUI 4.6.11 XML barfs on int64/uint64 enum because NcML lacks enum8 type. Once this changes can revert to uint64 (which works fine with C-library, NCO, and ncdump).
// 20180522: Until today the base type of cargo was uint64. Changed it to uint because toolsUI 4.6.11 XML barfs on int64/uint64 enum because NcML lacks enum8 type. Once this changes can revert to uint64 (which works fine with C-library, NCO, and ncdump).
uint enum cargo {bags\ of\ the\ best\ Sligo\ rags = 1000000,
barrels\ of\ bones = 2000000,
bails\ of\ old\ nanny\ goats\'\ tails = 3000000,
......@@ -33,11 +33,14 @@ netcdf enum {
ubyte enum special_characters_type {name\ with\ spaces=0,
name1_\,_with_comma=1,
name2\ \,\ with_comma=2,
lost_value=128};
lost_value=128};
int64 enum Months {Jan=1, Feb=2, Mar=3, Apr=4, May=5, June=6, July=7, Aug=8, Sept=9, Oct=10, Nov=11, Dec=12, MISSING=9223372036854775807} ;
dimensions:
lat=2;
lon=4;
sss=3;
rec=8;
variables:
......@@ -58,7 +61,9 @@ netcdf enum {
special_characters_type character_test(lon);
special_characters_type character_test:_FillValue=lost_value;
data:
Months Summer(sss);
data:
cld_flg=Stratus,_,Cumulonimbus,Clear;
size=_,Small,Medium,Large;
language=Chinese_龥,Japanese_キャク,Greek_Καλημέρα,Greek_Καλημέρα;
......@@ -77,4 +82,5 @@ netcdf enum {
character_test=name\ with\ spaces,name1_\,_with_comma,name2\ \,\ with_comma,_;
Summer = June, July, Aug;
} //end root group
......@@ -85,6 +85,7 @@ netcdf in_grp {
non_coord:purpose = "Test whether netCDF4 supports renaming non-coordinates to coordinates";
float one;
one:long_name = "one";
float val_one_mss(lat);
val_one_mss:long_name = "one regular value, one missing value";
......
// -*-C++-*-
// Purpose: CDL file to test multiple record dimensions
// Usage:
// ncgen -k netCDF-4 -b -o ~/nco/data/mlt_rcd.nc ~/nco/data/mlt_rcd.cdl
// ncrcat -O -p ~/nco/data mlt_rcd.nc mlt_rcd.nc ~/foo.nc
netcdf mlt_rcd {
dimensions:
time1=unlimited;
time2=unlimited;
time3=unlimited;
variables:
int var1(time1);
int var2(time2);
int var3(time3);
data:
var1=1;
var2=2,2;
var3=3,3,3;
} // end root group
......@@ -872,7 +872,7 @@ if [ "${mdl_typ}" = 'mpas' ]; then
fi # !mdl_typ
# http://stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash
# http://stackoverflow.com/questions/17420994/bash-regex-match-string
# NB: Order and 'elif' ensures name matches only fullest rx
# NB: Order and 'elif' ensure name matches only fullest rx
if [[ "${caseid}" =~ ^(.*)([0-9][0-9][0-9][0-9][01][0-9].nc.?)$ ]]; then
nm_typ='yyyymm'
elif [[ "${caseid}" =~ ^(.*)([0-9][0-9][0-9][0-9]-[01][0-9]-01.nc.?)$ ]]; then
......@@ -978,13 +978,17 @@ fi # !no_stg_grd
if [ "${par_typ}" = 'bck' ]; then
par_opt=' &'
par_opt_cf=''
par_sng='Background'
elif [ "${par_typ}" = 'mpi' ]; then
mpi_flg='Yes'
par_opt=' &'
par_opt_cf=''
par_sng='MPI'
if [ -n "${UVCDAT_SETUP_PATH}" ]; then
printf "${spt_nm}: UVCDAT has been initialized in the shell running this job, and MPI-mode parallelization of ${spt_nm} is requested. Unfortunately UVCDAT's environment and the MPI-mode of ${spt_nm} do not play well together. The Workflow group is working toward a solution. The current workarounds are 1) do not use MPI-mode when UVCDAT is loaded or 2) do not initialize UVCDAT when invoking MPI-mode.\n"
fi # !UVCDAT_SETUP_PATH
elif [ "${par_typ}" = 'nil' ] || [ -z "${par_typ}" ]; then
par_sng='Serial'
fi # !par_typ
if [ -n "${rgr_map}" ]; then
if [ ! -f "${rgr_map}" ]; then
......@@ -1488,6 +1492,7 @@ else
fi # !caseid
printf "Running climatology script ${spt_nm} from directory ${drc_spt}\n"
printf "NCO binaries version ${nco_vrs} from directory ${drc_nco}\n"
printf "Parallelism mode = ${par_sng}\n"
if [ "${sbs_flg}" = 'Yes' ]; then
if [ ${inp_std} = 'No' ]; then
if [ "${drc_in_usr_flg}" = 'Yes' ]; then
......
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2"
elementFormDefault="qualified">
<!-- XML encoding of Netcdf container object -->
<xsd:element name="netcdf">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs="0">
<xsd:element name="readMetadata"/>
<xsd:element name="explicit"/>
</xsd:choice>
<xsd:element name="iospParam" minOccurs="0" />
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="enumTypedef"/>
<xsd:element ref="group"/>
<xsd:element ref="dimension"/>
<xsd:element ref="variable"/>
<xsd:element ref="attribute"/>
<xsd:element ref="remove"/>
</xsd:choice>
<xsd:element ref="aggregation" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="location" type="xsd:anyURI"/>
<xsd:attribute name="id" type="xsd:string"/>
<xsd:attribute name="title" type="xsd:string"/>
<xsd:attribute name="enhance" type="xsd:string"/>
<xsd:attribute name="addRecords" type="xsd:boolean"/>
<!-- iosp class name -->
<xsd:attribute name="iosp" type="xsd:string"/>
<!-- iosp parameter -->
<xsd:attribute name="iospParam" type="xsd:string"/>
<!-- raf buffer size -->
<xsd:attribute name="bufferSize" type="xsd:int"/>
<!-- for aggregations -->
<xsd:attribute name="ncoords" type="xsd:string"/>
<xsd:attribute name="coordValue" type="xsd:string"/>
<xsd:attribute name="section" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- XML encoding of group object -->
<xsd:element name="group">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="enumTypedef"/>
<xsd:element ref="dimension"/>
<xsd:element ref="variable"/>
<xsd:element ref="attribute"/>
<xsd:element ref="group"/>
<xsd:element ref="remove"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="orgName" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- XML encoding of dimension object -->
<xsd:element name="dimension">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:token" use="required"/>
<xsd:attribute name="length" type="xsd:string"/>
<xsd:attribute name="isUnlimited" type="xsd:boolean" default="false"/>
<xsd:attribute name="isVariableLength" type="xsd:boolean" default="false"/>
<xsd:attribute name="isShared" type="xsd:boolean" default="true"/>
<xsd:attribute name="orgName" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- XML encoding of Variable object -->
<xsd:element name="variable">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="values" minOccurs="0"/>
<xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="logicalSection" minOccurs="0"/>
<xsd:element ref="logicalSlice" minOccurs="0"/>
<xsd:element ref="logicalReduce" minOccurs="0"/>
<xsd:element ref="remove" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:token" use="required"/>
<xsd:attribute name="type" type="DataType"/>
<xsd:attribute name="typedef" type="xsd:string"/>
<xsd:attribute name="shape" type="xsd:token"/>
<xsd:attribute name="orgName" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- XML encoding of values -->
<xsd:element name="values">
<xsd:complexType mixed="true">
<xsd:attribute name="start" type="xsd:float"/>
<xsd:attribute name="increment" type="xsd:float"/>
<xsd:attribute name="npts" type="xsd:int"/>
<xsd:attribute name="separator" type="xsd:string"/>
<xsd:attribute name="fromAttribute" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- XML encoding of Attribute object -->
<xsd:element name="attribute">
<xsd:complexType mixed="true">
<xsd:attribute name="name" type="xsd:token" use="required"/>
<xsd:attribute name="type" type="DataType" default="String"/>
<xsd:attribute name="value" type="xsd:string"/>
<xsd:attribute name="separator" type="xsd:string"/>
<xsd:attribute name="orgName" type="xsd:string"/>
<xsd:attribute name="isUnsigned" type="xsd:boolean"/>
</xsd:complexType>
</xsd:element>
<!-- possible data types for Variable, Attribute objects -->
<xsd:simpleType name="DataType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="byte"/>
<xsd:enumeration value="char"/>
<xsd:enumeration value="short"/>
<xsd:enumeration value="int"/>
<xsd:enumeration value="long"/>
<xsd:enumeration value="float"/>
<xsd:enumeration value="double"/>
<xsd:enumeration value="String"/>
<xsd:enumeration value="string"/>
<xsd:enumeration value="Structure"/>
<xsd:enumeration value="Sequence"/>
<xsd:enumeration value="opaque"/>
<xsd:enumeration value="enum1"/>
<xsd:enumeration value="enum2"/>
<xsd:enumeration value="enum4"/>
</xsd:restriction>
</xsd:simpleType>
<!-- XML encoding of enum typedef object -->
<xsd:element name="enumTypedef">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="enum" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType mixed="true">
<xsd:attribute name="key" type="xsd:int" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:token" use="required"/>
<xsd:attribute name="type" type="DataType" default="enum1"/>
</xsd:complexType>
</xsd:element>
<!-- Dataset **********************************************************************-->
<xsd:element name="remove">
<xsd:complexType>
<xsd:attribute name="type" type="ObjectType" use="required"/>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="ObjectType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="attribute"/>
<xsd:enumeration value="dimension"/>
<xsd:enumeration value="variable"/>
<xsd:enumeration value="group"/>
</xsd:restriction>
</xsd:simpleType>
<!-- logical view: use only a section of original -->
<xsd:element name="logicalSection">
<xsd:complexType>
<xsd:attribute name="section" type="xsd:token" use="required"/> <!-- creates anonymous dimension -->
</xsd:complexType>
</xsd:element>
<xsd:element name="logicalSlice">
<xsd:complexType>
<xsd:attribute name="dimName" type="xsd:token" use="required"/>
<xsd:attribute name="index" type="xsd:int" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="logicalReduce">
<xsd:complexType>
<xsd:attribute name="dimNames" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<!-- aggregation -->
<xsd:element name="aggregation">
<xsd:complexType>
<xsd:sequence>
<!-- experimental - modify each dataset in aggregation -->
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="group"/>
<xsd:element ref="dimension"/>
<xsd:element ref="variable"/>
<xsd:element ref="attribute"/>
<xsd:element ref="remove"/>
</xsd:choice>
<xsd:element name="variableAgg" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element ref="promoteGlobalAttribute" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="cacheVariable" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="netcdf" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="scan" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="location" type="xsd:string" use="required"/>
<xsd:attribute name="regExp" type="xsd:string"/>
<xsd:attribute name="suffix" type="xsd:string"/>
<xsd:attribute name="subdirs" type="xsd:boolean" default="true"/>
<xsd:attribute name="olderThan" type="xsd:string"/>
<xsd:attribute name="dateFormatMark" type="xsd:string"/>
<xsd:attribute name="enhance" type="xsd:boolean"/>
</xsd:complexType>
</xsd:element>
<!-- fmrcSingle only -->
<xsd:element name="scanFmrc" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="location" type="xsd:string" use="required"/>
<xsd:attribute name="regExp" type="xsd:string"/>
<xsd:attribute name="suffix" type="xsd:string"/>
<xsd:attribute name="subdirs" type="xsd:boolean" default="true"/>
<xsd:attribute name="olderThan" type="xsd:string"/>
<xsd:attribute name="runDateMatcher" type="xsd:string"/>
<xsd:attribute name="forecastDateMatcher" type="xsd:string"/>
<xsd:attribute name="forecastOffsetMatcher" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="type" type="AggregationType" use="required"/>
<xsd:attribute name="dimName" type="xsd:token"/>
<xsd:attribute name="recheckEvery" type="xsd:string"/>
<xsd:attribute name="timeUnitsChange" type="xsd:boolean"/>
<!-- fmrc, fmrcSingle only -->
<xsd:attribute name="fmrcDefinition" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- type of aggregation -->
<xsd:simpleType name="AggregationType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="forecastModelRunCollection"/>
<xsd:enumeration value="forecastModelRunSingleCollection"/>
<xsd:enumeration value="joinExisting"/>
<xsd:enumeration value="joinNew"/>
<xsd:enumeration value="tiled"/>
<xsd:enumeration value="union"/>
</xsd:restriction>
</xsd:simpleType>
<!-- promote global attribute to variable -->
<xsd:element name="promoteGlobalAttribute">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:token" use="required"/>
<xsd:attribute name="orgName" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<!-- cache a Variable for efficiency -->
<xsd:element name="cacheVariable">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:token" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
This diff is collapsed.
p_three_dmn_var_dbl=pack(three_dmn_var_dbl);
p_time=pack(time,0,1.0);
p_three_dmn_var_dbl1=pack(three_dmn_var_dbl,0.0,1.0);
p_time_udunits=pack(time_udunits,0.0,1.0);
p_three_dmn_var_dbl2=pack(three_dmn_var_dbl,0.0,1.0);