diff --git a/.github/jobs/build_documentation.sh b/.github/jobs/build_documentation.sh
index c6b73500a2..2c630f5caa 100755
--- a/.github/jobs/build_documentation.sh
+++ b/.github/jobs/build_documentation.sh
@@ -3,7 +3,12 @@
# path to docs directory relative to top level of repository
# $GITHUB_WORKSPACE is set if the actions/checkout@v2 action is run first
-DOCS_DIR=${GITHUB_WORKSPACE}/met/docs
+DOCS_DIR=${GITHUB_WORKSPACE}/docs
+
+if [ ! -e ${DOCS_DIR} ]; then
+ echo "Documentation directory does not exist: ${DOCS_DIR}"
+ exit 1
+fi
# run Make to build the documentation and return to previous directory
cd ${DOCS_DIR}
diff --git a/.github/jobs/get_branch_name.sh b/.github/jobs/get_branch_name.sh
index ec42a94e38..82a1ee9a84 100755
--- a/.github/jobs/get_branch_name.sh
+++ b/.github/jobs/get_branch_name.sh
@@ -11,5 +11,5 @@ fi
branch_name=${branch_name#"refs/heads/"}
-echo ::set-output name=branch_name::$branch_name
+echo "branch_name=${branch_name}" >> $GITHUB_OUTPUT
echo branch_name: $branch_name
diff --git a/.github/jobs/set_job_controls.sh b/.github/jobs/set_job_controls.sh
index 69c69b93f1..b26f6d577d 100755
--- a/.github/jobs/set_job_controls.sh
+++ b/.github/jobs/set_job_controls.sh
@@ -108,15 +108,15 @@ if [ "$run_unit_tests" == "true" ]; then
fi
-echo ::set-output name=run_compile::$run_compile
-echo ::set-output name=run_push::$run_push
-echo ::set-output name=run_unit_tests::$run_unit_tests
-echo ::set-output name=run_diff::$run_diff
-echo ::set-output name=run_update_truth::$run_update_truth
-echo ::set-output name=met_base_repo::$met_base_repo
-echo ::set-output name=met_base_tag::$met_base_tag
-echo ::set-output name=input_data_version::$input_data_version
-echo ::set-output name=truth_data_version::$truth_data_version
+echo "run_compile=${run_compile}" >> $GITHUB_OUTPUT
+echo "run_push=${run_push}" >> $GITHUB_OUTPUT
+echo "run_unit_tests=${run_unit_tests}" >> $GITHUB_OUTPUT
+echo "run_diff=${run_diff}" >> $GITHUB_OUTPUT
+echo "run_update_truth=${run_update_truth}" >> $GITHUB_OUTPUT
+echo "met_base_repo=${met_base_repo}" >> $GITHUB_OUTPUT
+echo "met_base_tag=${met_base_tag}" >> $GITHUB_OUTPUT
+echo "input_data_version=${input_data_version}" >> $GITHUB_OUTPUT
+echo "truth_data_version=${truth_data_version}" >> $GITHUB_OUTPUT
echo run_compile: $run_compile
echo run_push: $run_push
diff --git a/.github/workflows/build_docker_and_trigger_metplus.yml b/.github/workflows/build_docker_and_trigger_metplus.yml
index 0c35e8a674..e6c8c86a3f 100644
--- a/.github/workflows/build_docker_and_trigger_metplus.yml
+++ b/.github/workflows/build_docker_and_trigger_metplus.yml
@@ -18,11 +18,11 @@ jobs:
name: Handle Docker Image
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Get branch name
id: get_branch_name
- run: echo ::set-output name=branch_name::${GITHUB_REF#"refs/heads/"}
+ run: echo branch_name=${GITHUB_REF#refs/heads/} >> $GITHUB_OUTPUT
- name: Build Docker Image
run: .github/jobs/build_docker_image.sh
@@ -47,7 +47,7 @@ jobs:
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- - uses: actions/github-script@v5
+ - uses: actions/github-script@v6
with:
github-token: ${{ secrets.METPLUS_BOT_TOKEN }}
script: |
diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index 4c09b72413..c43c5a6525 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -11,14 +11,15 @@ on:
- met/docs/**
pull_request:
types: [opened, reopened, synchronize]
+ workflow_dispatch:
jobs:
documentation:
name: Build Documentation
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
+ - uses: actions/checkout@v3
+ - uses: actions/setup-python@v4
with:
python-version: '3.6'
- name: Install dependencies
@@ -27,12 +28,12 @@ jobs:
sphinx-gallery Pillow sphinx_rtd_theme sphinx-panels
- name: Build docs
run: ./.github/jobs/build_documentation.sh
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
if: always()
with:
name: documentation
path: artifact/documentation
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
if: failure()
with:
name: documentation_warnings.log
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
index 4380e0f5d6..170e97d14c 100644
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -40,7 +40,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set job controls
id: job_status
run: .github/jobs/set_job_controls.sh
@@ -66,7 +66,7 @@ jobs:
needs: job_control
if: ${{ needs.job_control.outputs.run_compile == 'true' }}
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Create directories to store output
run: mkdir -p ${RUNNER_WORKSPACE}/logs
@@ -92,7 +92,7 @@ jobs:
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -126,7 +126,7 @@ jobs:
- 'pb2nc madis2nc pcp_combine'
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Run Unit Tests in Docker
run: .github/jobs/run_unit_docker.sh
@@ -136,14 +136,14 @@ jobs:
INPUT_DATA_VERSION: ${{ needs.job_control.outputs.input_data_version }}-all
- name: Upload output as artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: unit_1a
path: ${{ runner.workspace }}/output
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -161,7 +161,7 @@ jobs:
- 'met_test_scripts mode_multivar mode_graphics mtd regrid airnow gsi_tools netcdf modis series_analysis gen_ens_prod wwmca_regrid gen_vx_mask grid_weight interp_shape grid_diag grib_tables lidar2nc shift_data_plane trmm2nc aeronet wwmca_plot ioda2nc gaussian'
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Run Unit Tests in Docker
run: .github/jobs/run_unit_docker.sh
@@ -171,14 +171,14 @@ jobs:
INPUT_DATA_VERSION: ${{ needs.job_control.outputs.input_data_version }}-all
- name: Upload output as artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: unit_1b
path: ${{ runner.workspace }}/output
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -197,7 +197,7 @@ jobs:
- 'ref_config_lead_36'
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Run Unit Tests in Docker
run: .github/jobs/run_unit_docker.sh
@@ -207,14 +207,14 @@ jobs:
INPUT_DATA_VERSION: ${{ needs.job_control.outputs.input_data_version }}-all
- name: Upload output as artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: unit_rc_leads
path: ${{ runner.workspace }}/output
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -231,10 +231,10 @@ jobs:
- 'ref_config'
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Download ref_config_leads output from artifact
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: unit_rc_leads
path: ${{ runner.workspace }}/output
@@ -247,14 +247,14 @@ jobs:
INPUT_DATA_VERSION: 'none'
- name: Upload output as artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: unit_rc
path: ${{ runner.workspace }}/output
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -274,10 +274,10 @@ jobs:
- 'ensemble_stat stat_analysis_es'
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Download 1a output from artifact
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: unit_1a
path: ${{ runner.workspace }}/output
@@ -290,14 +290,14 @@ jobs:
INPUT_DATA_VERSION: ${{ needs.job_control.outputs.input_data_version }}-all
- name: Upload output as artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: unit_2a
path: ${{ runner.workspace }}/output
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -317,10 +317,10 @@ jobs:
- 'python point2grid plot_data_plane mode mode_analysis perc_thresh hira plot_point_obs quality_filter obs_summary duplicate_flag'
fail-fast: false
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Download 1a output from artifact
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: unit_1a
path: ${{ runner.workspace }}/output
@@ -333,14 +333,14 @@ jobs:
INPUT_DATA_VERSION: ${{ needs.job_control.outputs.input_data_version }}-all
- name: Upload output as artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: unit_2b
path: ${{ runner.workspace }}/output
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -353,14 +353,14 @@ jobs:
if: ${{ needs.job_control.outputs.run_diff == 'true' }}
steps:
- name: Download data from previous jobs
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
- name: Copy test output into single directory
run: |
mkdir ${RUNNER_WORKSPACE}/output
cp -r unit_*/* ${RUNNER_WORKSPACE}/output/
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Run Diff Tests in Docker
run: .github/jobs/run_diff_docker.sh
@@ -371,7 +371,7 @@ jobs:
- name: Upload diff files as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: diff
path: ${{ runner.workspace }}/diff
@@ -379,7 +379,7 @@ jobs:
- name: Upload logs as artifact
if: always()
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: logs
path: ${{ runner.workspace }}/logs
@@ -391,10 +391,10 @@ jobs:
needs: [job_control, unit_1b, unit_2a, unit_2b, unit_rc]
if: ${{ needs.job_control.outputs.run_update_truth == 'true' }}
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Download data from previous jobs
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
- name: Copy test output into single directory
run: |
diff --git a/data/table_files/Makefile.am b/data/table_files/Makefile.am
index fac2031790..1001e52387 100644
--- a/data/table_files/Makefile.am
+++ b/data/table_files/Makefile.am
@@ -40,6 +40,7 @@ tablefiles_DATA = \
met_header_columns_V3.0.txt \
met_header_columns_V2.0.txt \
airnow_monitoring_site_locations_v2.txt \
+ ndbc_stations.xml \
stat_column_description.txt \
obs_error_table.txt \
grib1_af_131_57.txt \
diff --git a/data/table_files/Makefile.in b/data/table_files/Makefile.in
index db4e0d9834..ed5514f48f 100644
--- a/data/table_files/Makefile.in
+++ b/data/table_files/Makefile.in
@@ -316,6 +316,7 @@ tablefiles_DATA = \
met_header_columns_V3.0.txt \
met_header_columns_V2.0.txt \
airnow_monitoring_site_locations_v2.txt \
+ ndbc_stations.xml \
stat_column_description.txt \
obs_error_table.txt \
grib1_af_131_57.txt \
diff --git a/data/table_files/met_header_columns_V11.0.txt b/data/table_files/met_header_columns_V11.0.txt
index 7a448d8d17..59a97d40a6 100644
--- a/data/table_files/met_header_columns_V11.0.txt
+++ b/data/table_files/met_header_columns_V11.0.txt
@@ -36,5 +36,5 @@ V11.0 : STAT : SSIDX : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID
V11.0 : MODE : OBJ : VERSION MODEL N_VALID GRID_RES DESC FCST_LEAD FCST_VALID FCST_ACCUM OBS_LEAD OBS_VALID OBS_ACCUM FCST_RAD FCST_THR OBS_RAD OBS_THR FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE OBJECT_ID OBJECT_CAT CENTROID_X CENTROID_Y CENTROID_LAT CENTROID_LON AXIS_ANG LENGTH WIDTH AREA AREA_THRESH CURVATURE CURVATURE_X CURVATURE_Y COMPLEXITY INTENSITY_10 INTENSITY_25 INTENSITY_50 INTENSITY_75 INTENSITY_90 INTENSITY_USER INTENSITY_SUM CENTROID_DIST BOUNDARY_DIST CONVEX_HULL_DIST ANGLE_DIFF ASPECT_DIFF AREA_RATIO INTERSECTION_AREA UNION_AREA SYMMETRIC_DIFF INTERSECTION_OVER_AREA CURVATURE_RATIO COMPLEXITY_RATIO PERCENTILE_INTENSITY_RATIO INTEREST
V11.0 : MODE : CTS : VERSION MODEL N_VALID GRID_RES DESC FCST_LEAD FCST_VALID FCST_ACCUM OBS_LEAD OBS_VALID OBS_ACCUM FCST_RAD FCST_THR OBS_RAD OBS_THR FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE FIELD TOTAL FY_OY FY_ON FN_OY FN_ON BASER FMEAN ACC FBIAS PODY PODN POFD FAR CSI GSS HK HSS ODDS
-V11.0 : TCST : TCMPR : VERSION AMODEL BMODEL DESC STORM_ID BASIN CYCLONE STORM_NAME INIT LEAD VALID INIT_MASK VALID_MASK LINE_TYPE TOTAL INDEX LEVEL WATCH_WARN INITIALS ALAT ALON BLAT BLON TK_ERR X_ERR Y_ERR ALTK_ERR CRTK_ERR ADLAND BDLAND AMSLP BMSLP AMAX_WIND BMAX_WIND AAL_WIND_34 BAL_WIND_34 ANE_WIND_34 BNE_WIND_34 ASE_WIND_34 BSE_WIND_34 ASW_WIND_34 BSW_WIND_34 ANW_WIND_34 BNW_WIND_34 AAL_WIND_50 BAL_WIND_50 ANE_WIND_50 BNE_WIND_50 ASE_WIND_50 BSE_WIND_50 ASW_WIND_50 BSW_WIND_50 ANW_WIND_50 BNW_WIND_50 AAL_WIND_64 BAL_WIND_64 ANE_WIND_64 BNE_WIND_64 ASE_WIND_64 BSE_WIND_64 ASW_WIND_64 BSW_WIND_64 ANW_WIND_64 BNW_WIND_64 ARADP BRADP ARRP BRRP AMRD BMRD AGUSTS BGUSTS AEYE BEYE ADIR BDIR ASPEED BSPEED ADEPTH BDEPTH
+V11.0 : TCST : TCMPR : VERSION AMODEL BMODEL DESC STORM_ID BASIN CYCLONE STORM_NAME INIT LEAD VALID INIT_MASK VALID_MASK LINE_TYPE TOTAL INDEX LEVEL WATCH_WARN INITIALS ALAT ALON BLAT BLON TK_ERR X_ERR Y_ERR ALTK_ERR CRTK_ERR ADLAND BDLAND AMSLP BMSLP AMAX_WIND BMAX_WIND AAL_WIND_34 BAL_WIND_34 ANE_WIND_34 BNE_WIND_34 ASE_WIND_34 BSE_WIND_34 ASW_WIND_34 BSW_WIND_34 ANW_WIND_34 BNW_WIND_34 AAL_WIND_50 BAL_WIND_50 ANE_WIND_50 BNE_WIND_50 ASE_WIND_50 BSE_WIND_50 ASW_WIND_50 BSW_WIND_50 ANW_WIND_50 BNW_WIND_50 AAL_WIND_64 BAL_WIND_64 ANE_WIND_64 BNE_WIND_64 ASE_WIND_64 BSE_WIND_64 ASW_WIND_64 BSW_WIND_64 ANW_WIND_64 BNW_WIND_64 ARADP BRADP ARRP BRRP AMRD BMRD AGUSTS BGUSTS AEYE BEYE ADIR BDIR ASPEED BSPEED ADEPTH BDEPTH NUM_MEMBERS TRACK_SPREAD DIST_MEAN MSLP_SPREAD MAX_WIND_SPREAD
V11.0 : TCST : PROBRIRW : VERSION AMODEL BMODEL DESC STORM_ID BASIN CYCLONE STORM_NAME INIT LEAD VALID INIT_MASK VALID_MASK LINE_TYPE ALAT ALON BLAT BLON INITIALS TK_ERR X_ERR Y_ERR ADLAND BDLAND RIRW_BEG RIRW_END RIRW_WINDOW AWIND_END BWIND_BEG BWIND_END BDELTA BDELTA_MAX BLEVEL_BEG BLEVEL_END (N_THRESH) THRESH_[0-9]* PROB_[0-9]*
diff --git a/data/table_files/ndbc_stations.xml b/data/table_files/ndbc_stations.xml
new file mode 100644
index 0000000000..7e73ef73a3
--- /dev/null
+++ b/data/table_files/ndbc_stations.xml
@@ -0,0 +1,1368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Users_Guide/config_options.rst b/docs/Users_Guide/config_options.rst
index b8e50a2152..d7e5075f4e 100644
--- a/docs/Users_Guide/config_options.rst
+++ b/docs/Users_Guide/config_options.rst
@@ -212,15 +212,54 @@ MET tool stating the location of the parsing error.
Runtime Environment Variables
-----------------------------
+.. _config_env_vars:
+
+User-Specified Environment Variables
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When editing configuration files, environment variables may be used for setting
+the configurable parameters if convenient. The configuration file parser expands
+environment variables to their full value before proceeding. Within the configuration
+file, environment variables must be specified in the form **${VAR_NAME}**.
+
+For example, using an environment variable to set the message_type (see below)
+parameter to use ADPUPA and ADPSFC message types might consist of the following.
+
+Setting the environment variable in a Bash Shell:
+
+.. code :: bash
+
+ export MSG_TYP='"ADPUPA", "ADPSFC"'
+
+Referencing that environment variable inside a MET configuration file:
+
+.. code ::
+
+ message_type = [ ${MSG_TYP} ];
+
+In addition to supporting user-specified environment variables within configuration
+files, the environment variables listed below have special meaning if set at runtime.
+
+
MET_AIRNOW_STATIONS
-^^^^^^^^
+^^^^^^^^^^^^^^^^^^^
The MET_AIRNOW_STATIONS environment variable can be used to specify a file that
+will override the default file. If set, it should be the full path to the file.
+The default table can be found in the installed
+*share/met/table_files/airnow_monitoring_site_locations_v2.dat*. This file contains
+ascii column data that allows lookups of latitude, longitude, and elevation for all
+airnow stations based on stationId and/or AqSid.
+
+MET_NDBC_STATIONS
+^^^^^^^^^^^^^^^^^
+
+The MET_NDBC_STATIONS environment variable can be used to specify a file that
will override the default file. If set it should be a full path to the file.
-The default is:
- "MET_BASE/table_files/airnow_monitoring_site_locations_v2.dat"
-This file contains ascii column data that allows lookups of latitude,longitude,
-and elevation for all airnow stations based on stationId and/or AqSid.
+The default table can be found in the installed
+*share/met/table_files/ndbc_stations.xml*. This file contains
+XML content for all stations that allows lookups of latitude, longitude,
+and, in some cases, elevation for all stations based on stationId.
MET_BASE
^^^^^^^^
diff --git a/docs/Users_Guide/data_io.rst b/docs/Users_Guide/data_io.rst
index 6c05461f43..395b66a96d 100644
--- a/docs/Users_Guide/data_io.rst
+++ b/docs/Users_Guide/data_io.rst
@@ -109,6 +109,8 @@ MET gets the valid time from the time variable and the "forecast_reference_time"
"minutes since YYYY-MM-DD HH:MM:SS",
"hours since YYYY-MM-DD HH:MM:SS",
"days since YYYY-MM-DD HH:MM:SS",
+ "months since YYYY-MM-DD HH:MM:SS",
+ "years since YYYY-MM-DD HH:MM:SS",
Accepts "Y", "YY", "YYY", "M", "D", "HH", and "HH:MM".
"HH:MM:SS" is optional
- "degrees_north",
diff --git a/docs/Users_Guide/ensemble-stat.rst b/docs/Users_Guide/ensemble-stat.rst
index 2036ab4457..32c1fbd677 100644
--- a/docs/Users_Guide/ensemble-stat.rst
+++ b/docs/Users_Guide/ensemble-stat.rst
@@ -14,6 +14,31 @@ The Ensemble-Stat tool verifies deterministic ensemble members against gridded a
Scientific and statistical aspects
==================================
+.. _ES_HiRA_framework:
+
+HiRA framework
+--------------
+
+The HiRA framework described in :numref:`PS_HiRA_framework` is also supported in the Ensemble-Stat tool. That support is provided as an interpolation option via the **interp** dictionary. The interpolation dictionary defines how gridded model data is matched to each observation value. Most interpolation methods, such as **UW_MEAN** for the unweighted mean or **BILIN** for bilinear, compute a single value for each ensemble member. When the High Resolution Assessment (HiRA) interpolation method is chosen, as shown below, all of the nearby neighborhood points surrounding each observation from each member are used. Therefore, processing an N-member ensemble using a HiRA neighborhood of size M produces ensemble output with size N*M. This approach fully leverages information from all nearby grid points to evaluate the ensemble quality.
+
+.. code ::
+
+ interp = {
+ field = BOTH;
+ vld_thresh = 1.0;
+ shape = SQUARE;
+
+ type = [
+ {
+ method = HIRA;
+ width = 2;
+ shape = SQUARE;
+ }
+ ];
+ }
+
+In this example, all four grid points of the 2x2 square surrounding each observation point are used to define the ensemble. Therefore, an N-member ensemble is evaluated as an ensemble of size Nx4.
+
Ensemble statistics
-------------------
@@ -125,7 +150,7 @@ ensemble_stat configuration file
The default configuration file for the Ensemble-Stat tool named **EnsembleStatConfig_default** can be found in the installed *share/met/config* directory. Another version is located in *scripts/config*. We encourage users to make a copy of these files prior to modifying their contents. Each configuration file (both the default and sample) contains many comments describing its contents. The contents of the configuration file are also described in the subsections below.
-Note that environment variables may be used when editing configuration files, as described in the :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
____________________
diff --git a/docs/Users_Guide/gen-ens-prod.rst b/docs/Users_Guide/gen-ens-prod.rst
index 4d697d5691..babb8e0ed4 100644
--- a/docs/Users_Guide/gen-ens-prod.rst
+++ b/docs/Users_Guide/gen-ens-prod.rst
@@ -90,7 +90,7 @@ gen_ens_prod configuration file
The default configuration file for the Gen-Ens-Prod tool named **GenEnsProdConfig_default** can be found in the installed *share/met/config* directory. Another version is located in *scripts/config*. We encourage users to make a copy of these files prior to modifying their contents. The contents of the configuration file are described in the subsections below.
-Note that environment variables may be used when editing configuration files, as described in :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
____________________
diff --git a/docs/Users_Guide/grid-stat.rst b/docs/Users_Guide/grid-stat.rst
index 6c4ade2c63..7b550ae0b7 100644
--- a/docs/Users_Guide/grid-stat.rst
+++ b/docs/Users_Guide/grid-stat.rst
@@ -14,7 +14,6 @@ Scientific and statistical aspects of the Grid-Stat tool are briefly described i
Scientific and statistical aspects
==================================
-
Statistical measures
--------------------
@@ -222,7 +221,7 @@ grid_stat configuration file
The default configuration file for the Grid-Stat tool, named **GridStatConfig_default**, can be found in the installed *share/met/config* directory. Other versions of the configuration file are included in *scripts/config*. We recommend that users make a copy of the default (or other) configuration file prior to modifying it. The contents are described in more detail below.
-Note that environment variables may be used when editing configuration files, as described in :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
__________________________
diff --git a/docs/Users_Guide/mode.rst b/docs/Users_Guide/mode.rst
index 5413546077..f5e4caf33f 100644
--- a/docs/Users_Guide/mode.rst
+++ b/docs/Users_Guide/mode.rst
@@ -193,7 +193,7 @@ mode configuration file
The default configuration file for the MODE tool, **MODEConfig_default**, can be found in the installed *share/met/config* directory. Another version of the configuration file is provided in *scripts/config*. We encourage users to make a copy of the configuration files prior to modifying their contents. Descriptions of **MODEConfig_default** and the required variables for any MODE configuration file are also provided below. While the configuration file contains many entries, most users will only need to change a few for their use. Specific options are described in the following subsections.
-Note that environment variables may be used when editing configuration files, as described in :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
_____________________
diff --git a/docs/Users_Guide/plotting.rst b/docs/Users_Guide/plotting.rst
index fcdd436cc4..1db3b4be91 100644
--- a/docs/Users_Guide/plotting.rst
+++ b/docs/Users_Guide/plotting.rst
@@ -80,7 +80,8 @@ plot_point_obs configuration file
The default configuration file for the Plot-Point-Obs tool named **PlotPointObsConfig_default** can be found in the installed *share/met/config* directory. The contents of the configuration file are described in the subsections below.
-Note that environment variables may be used when editing configuration files, as described in :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
+
________________________
.. code-block:: none
diff --git a/docs/Users_Guide/point-stat.rst b/docs/Users_Guide/point-stat.rst
index 4d240515b9..9b9b9806cb 100644
--- a/docs/Users_Guide/point-stat.rst
+++ b/docs/Users_Guide/point-stat.rst
@@ -314,7 +314,7 @@ point_stat configuration file
The default configuration file for the Point-Stat tool named **PointStatConfig_default** can be found in the installed *share/met/config* directory. Another version is located in *scripts/config*. We encourage users to make a copy of these files prior to modifying their contents. The contents of the configuration file are described in the subsections below.
-Note that environment variables may be used when editing configuration files, as described in :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
________________________
@@ -1545,7 +1545,6 @@ The first set of header columns are common to all of the output files generated
* - 31
- S32
- Counts multiplied by the weights for FCST_CAT 3 and OBS_CAT 2
-LINE_TYPE TOTAL S12 S13 S21 S23 S31 S32 PV1 PV2 PV3 PF1 PF2 PF3 MEAN_FCST MEAN_OBS SEEPS
* - 32
- PF1
- marginal probabilities of the forecast values (FCST_CAT 1)
diff --git a/docs/Users_Guide/reformat_grid.rst b/docs/Users_Guide/reformat_grid.rst
index cf2a84cb1b..aadb73eb6f 100644
--- a/docs/Users_Guide/reformat_grid.rst
+++ b/docs/Users_Guide/reformat_grid.rst
@@ -523,7 +523,7 @@ wwmca_regrid configuration file
The default configuration file for the WWMCA-Regrid tool named **WWMCARegridConfig_default** can be found in the installed *share/met/config* directory. We encourage users to make a copy of this file prior to modifying its contents. The contents of the configuration file are described in the subsections below.
-Note that environment variables may be used when editing configuration files, as described in :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
____________________________
diff --git a/docs/Users_Guide/reformat_point.rst b/docs/Users_Guide/reformat_point.rst
index c430bbdcb5..f4430cd8e1 100644
--- a/docs/Users_Guide/reformat_point.rst
+++ b/docs/Users_Guide/reformat_point.rst
@@ -96,15 +96,7 @@ pb2nc configuration file
The default configuration file for the PB2NC tool named **PB2NCConfig_default** can be found in the installed *share/met/config* directory. The version used for the example run in :numref:`Sample test cases` is available in *scripts/config*. It is recommended that users make a copy of configuration files prior to modifying their contents.
-When editing configuration files, environment variables may be used for setting the configurable parameters if convenient. The configuration file parser expands any environment variables to their full value before proceeding. Within the configuration file, environment variables must be specified in the form: **${VAR_NAME}**.
-
-For example, using an environment variable to set the **message_type** (see below) parameter to use ADPUPA and ADPSFC message types might consist of the following:
-
-\* In a C-Shell: **setenv MSG_TYP ' "ADPUPA", "ADPSFC" '**
-
-\* In the configuration file: **message_type = [ ${MSG_TYP} ];**
-
-The contents of the default pb2nc configuration file are described below.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
____________________
@@ -190,12 +182,12 @@ _____________________
The **beg** and **end** variables are used to stratify the model level of observations to be retained. The range shown above is 1 to 255.
-The **level_category** variable is used to specify a comma-separated list of PrepBUFR data level categories to retain. An empty string indicates that all level categories should be retained. Accepted values and their meanings are described in :numref:`table_reform-point_pb2nc_level_category`. See the following for more details:
+The **level_category** variable is used to specify a comma-separated list of PrepBUFR data level categories to retain. An empty string indicates that all level categories should be retained. Accepted values and their meanings are described in :numref:`table_reformat-point_pb2nc_level_category`. See the following for more details:
`PrepBUFR mnemonic table. `_
-.. _table_reform-point_pb2nc_level_category:
+.. _table_reformat-point_pb2nc_level_category:
.. list-table:: Values for the level_category option.
:widths: auto
@@ -315,9 +307,9 @@ The **vld_freq** and **vld_thresh** entries specify the required ratio of valid
pb2nc output
------------
-Each NetCDF file generated by the PB2NC tool contains the dimensions and variables shown in :numref:`table_reform-point_pb2nc_output_dim` and :numref:`table_reform-point_pb2nc_output_vars`.
+Each NetCDF file generated by the PB2NC tool contains the dimensions and variables shown in :numref:`table_reformat-point_pb2nc_output_dim` and :numref:`table_reformat-point_pb2nc_output_vars`.
-.. _table_reform-point_pb2nc_output_dim:
+.. _table_reformat-point_pb2nc_output_dim:
.. list-table:: NetCDF file dimensions for pb2n output
:widths: auto
@@ -340,7 +332,7 @@ Each NetCDF file generated by the PB2NC tool contains the dimensions and variabl
* - obs_var_num
- Number of unique observation variable types (variable)
-.. _table_reform-point_pb2nc_output_vars:
+.. _table_reformat-point_pb2nc_output_vars:
.. list-table:: NetCDF variables in pb2nc output
:widths: auto
@@ -422,13 +414,27 @@ ASCII2NC tool
This section describes how to run the ASCII2NC tool. The ASCII2NC tool is used to reformat ASCII point observations into the NetCDF format expected by the Point-Stat tool. For those users wishing to verify against point observations that are not available in PrepBUFR format, the ASCII2NC tool provides a way of incorporating those observations into MET. If the ASCII2NC tool is used to perform a reformatting step, no configuration file is needed. However, for more complex processing, such as summarizing time series observations, a configuration file may be specified. For details on the configuration file options, see :numref:`config_options` and example configuration files distributed with the MET code.
-Initial versions of the ASCII2NC tool supported only a simple 11 column ASCII point observation format. It currently supports point observation data in the following formats: the default 11 column format, little_r format, `SURFace RADiation (SURFRAD) `_ and Integrated Surface Irradiance Study (ISIS) formats, the Western Wind and Solar Integration Study (WWSIS) format, the `AirNow DailyData_v2, AirNow HourlyData, and AirNow HourlyAQObs formats. `_, and the `AErosol RObotic NEtwork (AERONET) versions 2 and 3 format. `_ WWSIS data are available by request from National Renewable Energy Laboratory (NREL) in Boulder, CO.
+While initial versions of the ASCII2NC tool only supported a simple 11 column ASCII point observation format, support for several additional formats has been added. It currently supports point observation data in the following formats:
+
+• Default 11 column MET point observation format, as described in :numref:`table_reformat-point_ascii2nc_format`
+
+• `little_r format `_
+
+• `SURFace RADiation (SURFRAD) `_ and Integrated Surface Irradiance Study (ISIS) formats
+
+• Western Wind and Solar Integration Study (WWSIS) format. WWSIS data are available by request from National Renewable Energy Laboratory (NREL) in Boulder, CO.
+
+• `AirNow DailyData_v2, AirNow HourlyData, and AirNow HourlyAQObs formats `_
+
+• `National Data Buoy (NDBC) Standard Meteorlogical Data format `_
+
+• `AErosol RObotic NEtwork (AERONET) versions 2 and 3 format `_
-MET version 9.0 adds support for the passing observations to ascii2nc using a Python script with the "-format python" option. An example of running ASCII2NC with Python embedding is included below.
+• Python embedding of point observations, as described in :numref:`pyembed-point-obs-data`. See example below in :numref:`ascii2nc-pyembed`.
-The default ASCII point observation format consists of one row of data per observation value. Each row of data consists of 11 columns as shown in :numref:`table_reform-point_ascii2nc_format`.
+The default ASCII point observation format consists of one row of data per observation value. Each row of data consists of 11 columns as shown in :numref:`table_reformat-point_ascii2nc_format`.
-.. _table_reform-point_ascii2nc_format:
+.. _table_reformat-point_ascii2nc_format:
.. list-table:: Input MET ascii2nc point observation format
:widths: auto
@@ -505,7 +511,7 @@ Required arguments for ascii2nc
Optional arguments for ascii2nc
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-3. The **-format ASCII_format** option may be set to "met_point", "little_r", "surfrad", "wwsis", "airnowhourlyaqobs", "airnowhourly", "airnowdaily_v2", "aeronet", "aeronetv2", "aeronetv3", or "python". If passing in ISIS data, use the "surfrad" format flag.
+3. The **-format ASCII_format** option may be set to "met_point", "little_r", "surfrad", "wwsis", "airnowhourlyaqobs", "airnowhourly", "airnowdaily_v2", "ndbc_standard", "aeronet", "aeronetv2", "aeronetv3", or "python". If passing in ISIS data, use the "surfrad" format flag.
4. The **-config file** option is the configuration file for generating time summaries.
diff --git a/docs/Users_Guide/release-notes.rst b/docs/Users_Guide/release-notes.rst
index c0b49b5e17..35022c5d48 100644
--- a/docs/Users_Guide/release-notes.rst
+++ b/docs/Users_Guide/release-notes.rst
@@ -5,6 +5,36 @@ When applicable, release notes are followed by the GitHub issue number which des
enhancement, or new feature (`MET GitHub issues `_).
Important issues are listed **in bold** for emphasis.
+MET Version 11.0.0-beta3 release notes (20220921)
+-------------------------------------------------
+
+.. warning:: **Ensemble post-processing was added to Gen-Ens-Prod in version 10.1.0 and will be removed from Ensemble-Stat in version 11.0.0!**
+
+* Repository and build:
+
+ * Add initial files to create the MET compilation environment in the dtcenter/met-base Docker image (`dtcenter/METbaseimage#1 `_).
+ * Update the METbaseimage to install Python 3.8.6 from source (`dtcenter/METbaseimage#3 `_).
+ * Restructure the MET Dockerfiles to create images based on the new METbaseimage (`#2196 `_).
+ * Add .zenodo.json file to add metadata about releases (`#2198 `_).
+
+* Bugfixes:
+
+ * Fix the truncated station_id name in the output from IODA2NC (`#2216 `_).
+ * Fix oom() compile time linker error (`#2238 `_).
+ * Store unspecified accumulation interval as 0 rather than bad data (`#2250 `_).
+
+* Enhancements:
+
+ * **Remove ensemble post-processing from the Ensemble-Stat tool** (`#1908 `_).
+ * **Enhance Point-Stat to compute SEEPS for point observations and write new SEEPS and SEEPS_MPR STAT line types** (`#1942 `_).
+ * **Add the fair CRPS statistic to the ECNT line type in a new CRPS_EMP_FAIR column** (`#2206 `_).
+ * Update map data with more recent NaturalEarth definitions (`#2207 `_).
+ * Define new grid class to store semi-structured grid information (e.g. lat or lon vs level or time) (`#1954 `_).
+ * Add support for EPA AirNow ASCII data in ASCII2NC (`#2142 `_).
+ * Add tmp_dir configuration option to the Plot-Point-Obs tool (`#2237 `_).
+ * Refine NetCDF level string handling logic to always interpret @ strings as values (`#2225 `_).
+ * Add support for reading National Blend Model GRIB2 data (`#2055 `_).
+
MET Version 11.0.0-beta2 release notes (20220809)
-------------------------------------------------
@@ -22,6 +52,7 @@ MET Version 11.0.0-beta2 release notes (20220809)
* Add a sum option to the time summaries computed by the point pre-processing tools (`#2204 `_).
* Refine warning/error messages when parsing thresholds (`#2211 `_).
* Add "station_ob" to metadata_map as a message_type metadata variable for ioda2nc (`#2215 `_).
+ * MET: Add a timestamp to the log output at the beginning and end of each MET tool run (`dtcenter/METplus-Internal#18 `_).
* MET: Add the user ID and the command line being executed to the log output at beginning and end of each MET tool run (`dtcenter/METplus-Internal#19 `_).
* MET: Enhance MET to have better signal handling for shutdown events (`dtcenter/METplus-Internal#21 `_).
diff --git a/docs/Users_Guide/series-analysis.rst b/docs/Users_Guide/series-analysis.rst
index 95766ae35b..2b0b391d24 100644
--- a/docs/Users_Guide/series-analysis.rst
+++ b/docs/Users_Guide/series-analysis.rst
@@ -93,7 +93,7 @@ series_analysis configuration file
----------------------------------
The default configuration file for the Series-Analysis tool named **SeriesAnalysisConfig_default** can be found in the installed *share/met/config* directory. The contents of the configuration file are described in the subsections below.
-Note that environment variables may be used when editing configuration files, as described in the :numref:`pb2nc configuration file` for the PB2NC tool.
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
____________________
diff --git a/docs/Users_Guide/tc-pairs.rst b/docs/Users_Guide/tc-pairs.rst
index 3de6d0b470..77ee2af4c7 100644
--- a/docs/Users_Guide/tc-pairs.rst
+++ b/docs/Users_Guide/tc-pairs.rst
@@ -156,7 +156,7 @@ ____________________
}
];
-The **consensus** field allows the user to generate a user-defined consensus forecasts from any number of models. All models used in the consensus forecast need to be included in the **model** field (first entry in **TCPairsConfig_default**). The name field is the desired consensus model name. The **members** field is a comma-separated list of model IDs that make up the members of the consensus. The **required** field is a comma-separated list of true/false values associated with each consensus member. If a member is designated as true, the member is required to be present in order for the consensus to be generated. If a member is false, the consensus will be generated regardless of whether the member is present. The length of the required array must be the same length as the members array. The **min_req** field is the number of members required in order for the consensus to be computed. The required and min_req field options are applied at each forecast lead time. If any member of the consensus has a non-valid position or intensity value, the consensus for that valid time will not be generated.
+The **consensus** field allows the user to generate a user-defined consensus forecasts from any number of models. All models used in the consensus forecast need to be included in the **model** field (first entry in **TCPairsConfig_default**). The name field is the desired consensus model name. The **members** field is a comma-separated list of model IDs that make up the members of the consensus. The **required** field is a comma-separated list of true/false values associated with each consensus member. If a member is designated as true, the member is required to be present in order for the consensus to be generated. If a member is false, the consensus will be generated regardless of whether the member is present. The length of the required array must be the same length as the members array. The **min_req** field is the number of members required in order for the consensus to be computed. The required and min_req field options are applied at each forecast lead time. If any member of the consensus has a non-valid position or intensity value, the consensus for that valid time will not be generated. If a consensus model is indicated in the configuration file there will be non-missing output for the consensus track variables in the output file (NUM_MEMBERS, TRACK_SPREAD, DIST_MEAN, MSLP_SPREAD, MAX_WIND_SPREAD). See the TCMPR line type definitions below.
____________________
@@ -472,7 +472,22 @@ TC-Pairs produces output in TCST format. The default output file name can be ove
* - 78, 79
- A/BDEPTH
- system depth, D-deep, M-medium, S-shallow, X-unknown
-
+ * - 80
+ - NUM_MEMBERS
+ - consensus variable: number of models (or ensemble members) that were used to build the consensus track
+ * - 81
+ - TRACK_SPREAD
+ - consensus variable: the standard deviation of the distances from the member locations to the consensus track location (nm)
+ * - 82
+ - DIST_MEAN
+ - consensus variable: the mean of the distances from the member location to the consensus track location (nm)
+ * - 83
+ - MSLP_SPREAD
+ - consensus variable: the standard deviation of the member's mean sea level pressure values
+ * - 84
+ - MAX_WIND_SPREAD
+ - consensus variable: the standard deviation of the member's maximum wind speed values
+
.. _PROBRIRW Line Type:
.. list-table:: Format information for PROBRIRW (Probability of Rapid Intensification/Weakening) output line type.
diff --git a/docs/Users_Guide/wavelet-stat.rst b/docs/Users_Guide/wavelet-stat.rst
index 15d68616e5..3622a4ff7a 100644
--- a/docs/Users_Guide/wavelet-stat.rst
+++ b/docs/Users_Guide/wavelet-stat.rst
@@ -203,7 +203,9 @@ In the example, the Wavelet-Stat tool will verify the model data in the **sample
wavelet_stat configuration file
-------------------------------
-The default configuration file for the Wavelet-Stat tool, **WaveletStatConfig_default**, can be found in the installed *share/met/config* directory. Another version of the configuration file is provided in *scripts/config*. We recommend that users make a copy of the default (or other) configuration file prior to modifying it. The contents are described in more detail below. Note that environment variables may be used when editing configuration files, as described in the :numref:`pb2nc configuration file` for the PB2NC tool.
+The default configuration file for the Wavelet-Stat tool, **WaveletStatConfig_default**, can be found in the installed *share/met/config* directory. Another version of the configuration file is provided in *scripts/config*. We recommend that users make a copy of the default (or other) configuration file prior to modifying it. The contents are described in more detail below.
+
+Note that environment variables may be used when editing configuration files, as described in the :numref:`config_env_vars`.
_______________________
diff --git a/docs/conf.py b/docs/conf.py
index 9f66d4970b..d7086ba2fb 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -20,11 +20,11 @@
project = 'MET'
author = 'UCAR/NCAR, NOAA, CSU/CIRA, and CU/CIRES'
author_list = 'Opatz, J., T. Jensen, J. Prestopnik, H. Soh, L. Goodrich, B. Brown, R. Bullock, J. Halley Gotway, K. Newman'
-version = '11.0.0-beta2'
+version = '11.0.0-beta3'
verinfo = version
release = f'{version}'
release_year = '2022'
-release_date = f'{release_year}-08-09'
+release_date = f'{release_year}-09-21'
copyright = f'{release_year}, {author}'
# -- General configuration ---------------------------------------------------
diff --git a/internal/scripts/environment/development.seneca b/internal/scripts/environment/development.seneca
index ccbf506dbf..f4b37c5aa1 100644
--- a/internal/scripts/environment/development.seneca
+++ b/internal/scripts/environment/development.seneca
@@ -53,4 +53,4 @@ export PATH="/usr/local/nco/bin:/usr/local/netcdf/bin:\
# SonarQube
export SONARQUBE_DIR=/d1/projects/SonarQube/
export SONARQUBE_WRAPPER_BIN=$SONARQUBE_DIR/build-wrapper-linux-x86
-export SONARQUBE_SCANNER_BIN=$SONARQUBE_DIR/sonar-scanner-4.6.2.2472-linux/bin
+export SONARQUBE_SCANNER_BIN=$SONARQUBE_DIR/sonar-scanner-linux/bin
diff --git a/internal/test_unit/config/STATAnalysisConfig_grid_stat b/internal/test_unit/config/STATAnalysisConfig_grid_stat
index b6c222b123..d499c911e1 100644
--- a/internal/test_unit/config/STATAnalysisConfig_grid_stat
+++ b/internal/test_unit/config/STATAnalysisConfig_grid_stat
@@ -49,9 +49,9 @@ obtype = [];
vx_mask = [ "DTC165", "DTC166" ];
-interp_mthd = [ "UW_MEAN_SQUARE" ];
+interp_mthd = [];
-interp_pnts = [ 9 ];
+interp_pnts = [];
fcst_thresh = [];
obs_thresh = [];
@@ -71,10 +71,11 @@ weight = [];
// Array of STAT-Analysis jobs to be performed on the filtered data
//
jobs = [
- "-job filter -line_type CNT -fcst_thresh NA -alpha 0.05 -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_filter.stat",
- "-job aggregate_stat -line_type SL1L2 -fcst_thresh NA -out_line_type CNT -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_sl1l2_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_sl1l2_out.stat -set_hdr VX_MASK CONUS",
- "-job aggregate -line_type CTC -fcst_thresh \<273 -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_ctc_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_ctc_out.stat -set_hdr VX_MASK CONUS",
- "-job aggregate_stat -line_type CTC -out_line_type ECLV -fcst_thresh \<273 -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_ctc_to_eclv_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_ctc_to_eclv_out.stat -set_hdr VX_MASK CONUS"
+ "-job filter -line_type CNT -fcst_thresh NA -alpha 0.05 -interp_mthd UW_MEAN_SQUARE -interp_pnts 9 -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_filter.stat",
+ "-job aggregate_stat -line_type SL1L2 -fcst_thresh NA -out_line_type CNT -by INTERP_MTHD,INTERP_PNTS -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_sl1l2_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_sl1l2_out.stat -set_hdr VX_MASK CONUS",
+ "-job aggregate -line_type CTC -by INTERP_MTHD,INTERP_PNTS,FCST_THRESH -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_ctc_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_ctc_out.stat -set_hdr VX_MASK CONUS",
+ "-job aggregate_stat -line_type CTC -out_line_type ECLV -by INTERP_MTHD,INTERP_PNTS,FCST_THRESH -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_ctc_to_eclv_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_stat_ctc_to_eclv_out.stat -set_hdr VX_MASK CONUS",
+ "-job aggregate -line_type NBRCTC -by INTERP_MTHD,INTERP_PNTS,FCST_THRESH -dump_row ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_nbrctc_dump.stat -out_stat ${OUTPUT_DIR}/CONFIG_GRID_STAT_agg_nbrctc_out.stat -set_hdr VX_MASK CONUS"
];
////////////////////////////////////////////////////////////////////////////////
diff --git a/internal/test_unit/config/TCPairsConfig_CONSENSUS b/internal/test_unit/config/TCPairsConfig_CONSENSUS
new file mode 100644
index 0000000000..16b2106a2a
--- /dev/null
+++ b/internal/test_unit/config/TCPairsConfig_CONSENSUS
@@ -0,0 +1,198 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// TC-Pairs configuration file.
+//
+// For additional information, please see the MET User's Guide.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// ATCF file format reference:
+// http://www.nrlmry.navy.mil/atcf_web/docs/database/new/abrdeck.html
+//
+
+//
+// Models
+//
+model = [];
+
+//
+// Description
+//
+desc = "NA";
+
+//
+// Storm identifiers
+//
+storm_id = [ "AL132020" ];
+
+//
+// Basins
+//
+basin = [];
+
+//
+// Cyclone numbers
+//
+cyclone = [];
+
+//
+// Storm names
+//
+storm_name = [];
+
+//
+// Model initialization time windows to include or exclude
+//
+init_beg = ${INIT_BEG};
+init_end = ${INIT_END};
+init_inc = [];
+init_exc = [];
+
+//
+// Valid model time windows to include or exclude
+//
+valid_beg = "";
+valid_end = "";
+valid_inc = [];
+valid_exc = [];
+
+//
+// Valid times for which output should be written
+//
+write_valid = [];
+
+//
+// Model initialization hours
+//
+init_hour = [];
+
+//
+// Required lead time in hours
+//
+lead_req = [];
+
+//
+// lat/lon polylines defining masking regions
+//
+init_mask = "";
+valid_mask = "";
+
+//
+// Specify if the code should check for duplicate ATCF lines
+//
+check_dup = TRUE;
+
+//
+// Specify special processing to be performed for interpolated models.
+// Set to NONE, FILL, or REPLACE.
+//
+interp12 = NONE;
+
+//
+// Specify how consensus forecasts should be defined
+// See NHC Consensus Definitions in Table 2:
+// https://www.nhc.noaa.gov/modelsummary.shtml
+//
+consensus = [
+ {
+ name = "UEMN_CONS";
+ members = [ "UE00", "UE01", "UE02", "UE03", "UE04",
+ "UE05", "UE06", "UE07", "UE08", "UE09",
+ "UE10", "UE11", "UE12", "UE13", "UE14",
+ "UE15", "UE16", "UE17", "UE18", "UE19",
+ "UE20", "UE21", "UE22", "UE23", "UE24",
+ "UE25", "UE26", "UE27", "UE28", "UE29",
+ "UE30", "UE31", "UE32", "UE33", "UE34",
+ "UE35" ];
+ required = [];
+ min_req = 36;
+ },
+ {
+ name = "HCCA_CONS";
+ members = [ "AEMI", "GFSI", "CTCI", "DSHP", "EGRI", "EMN2", "EMXI", "HWFI", "LGEM" ];
+ required = [];
+ min_req = 8;
+ },
+ {
+ name = "GFEX_CONS";
+ members = [ "GFSI", "EMXI" ];
+ required = [];
+ min_req = 2;
+ },
+ {
+ name = "TVCA_CONS";
+ members = [ "GFSI", "EGRI", "HWFI", "EMHI", "CTCI", "EMNI" ];
+ required = [];
+ min_req = 2;
+ },
+ {
+ name = "TVCX_CONS";
+ members = [ "GFSI", "EMXI", "EMXI", "HWFI", "CTCI", "EGRI" ];
+ required = [ TRUE, TRUE, FALSE, FALSE, FALSE, FALSE ];
+ min_req = 2;
+ },
+ {
+ name = "ICON_CONS";
+ members = [ "DSHP", "LGEM", "HWFI", "HMNI" ];
+ required = [ TRUE, TRUE, TRUE, TRUE ];
+ min_req = 4;
+ },
+ {
+ name = "IVCN_CONS";
+ members = [ "DSHP", "LGEM", "HWFI", "HMNI", "CTCI" ];
+ required = [];
+ min_req = 2;
+ }
+];
+
+//
+// Forecast lag times
+//
+lag_time = [];
+
+//
+// CLIPER/SHIFOR baseline forecasts to be derived from the BEST
+// and operational (CARQ) tracks.
+//
+best_baseline = [ "BCLP" ];
+oper_baseline = [ "OCLP" ];
+
+//
+// Specify if only those track points common to both the ADECK and BDECK
+// tracks be written out.
+//
+match_points = TRUE;
+
+//
+// Specify the NetCDF output of the gen_dland tool containing a gridded
+// representation of the minimum distance to land.
+//
+dland_file = "${MET_TEST_OUTPUT}/tc_dland/tc_dland_half_deg.nc";
+
+//
+// Specify watch/warning information:
+// - Input watch/warning filename
+// - Watch/warning time offset in seconds
+//
+watch_warn = {
+ file_name = "MET_BASE/tc_data/wwpts_us.txt";
+ time_offset = -14400;
+}
+
+//
+// Modify basin names to make them consistent across ATCF input files.
+//
+basin_map = [
+ { key = "SI"; val = "SH"; },
+ { key = "SP"; val = "SH"; },
+ { key = "AU"; val = "SH"; },
+ { key = "AB"; val = "IO"; },
+ { key = "BB"; val = "IO"; }
+];
+
+//
+// Indicate a version number for the contents of this configuration file.
+// The value should generally not be modified.
+//
+version = "V11.0.0";
diff --git a/internal/test_unit/hdr/met_11_0.hdr b/internal/test_unit/hdr/met_11_0.hdr
index 99e888ee32..c1d7e318f0 100644
--- a/internal/test_unit/hdr/met_11_0.hdr
+++ b/internal/test_unit/hdr/met_11_0.hdr
@@ -33,5 +33,5 @@ SSIDX : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_L
MODE_SOA : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE N_VALID GRID_RES OBJECT_ID OBJECT_CAT CENTROID_X CENTROID_Y CENTROID_LAT CENTROID_LON AXIS_ANG LENGTH WIDTH AREA AREA_THRESH CURVATURE CURVATURE_X CURVATURE_Y COMPLEXITY INTENSITY_10 INTENSITY_25 INTENSITY_50 INTENSITY_75 INTENSITY_90 INTENSITY_50 INTENSITY_SUM
MODE_POA : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE N_VALID GRID_RES OBJECT_ID OBJECT_CAT CENTROID_DIST BOUNDARY_DIST CONVEX_HULL_DIST ANGLE_DIFF ASPECT_DIFF AREA_RATIO INTERSECTION_AREA UNION_AREA SYMMETRIC_DIFF INTERSECTION_OVER_AREA CURVATURE_RATIO COMPLEXITY_RATIO PERCENTILE_INTENSITY_RATIO INTEREST
MODE_CTS : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE N_VALID GRID_RES FIELD TOTAL FY_OY FY_ON FN_OY FN_ON BASER FMEAN ACC FBIAS PODY PODN POFD FAR CSI GSS HK HSS ODDS
-TCST_TCMPR : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE AMODEL BMODEL STORM_ID BASIN CYCLONE STORM_NAME INIT_MASK VALID_MASK TOTAL INDEX LEVEL WATCH_WARN INITIALS ALAT ALON BLAT BLON TK_ERR X_ERR Y_ERR ALTK_ERR CRTK_ERR ADLAND BDLAND AMSLP BMSLP AMAX_WIND BMAX_WIND AAL_WIND_34 BAL_WIND_34 ANE_WIND_34 BNE_WIND_34 ASE_WIND_34 BSE_WIND_34 ASW_WIND_34 BSW_WIND_34 ANW_WIND_34 BNW_WIND_34 AAL_WIND_50 BAL_WIND_50 ANE_WIND_50 BNE_WIND_50 ASE_WIND_50 BSE_WIND_50 ASW_WIND_50 BSW_WIND_50 ANW_WIND_50 BNW_WIND_50 AAL_WIND_64 BAL_WIND_64 ANE_WIND_64 BNE_WIND_64 ASE_WIND_64 BSE_WIND_64 ASW_WIND_64 BSW_WIND_64 ANW_WIND_64 BNW_WIND_64 ARADP BRADP ARRP BRRP AMRD BMRD AGUSTS BGUSTS AEYE BEYE ADIR BDIR ASPEED BSPEED ADEPTH BDEPTH
+TCST_TCMPR : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE AMODEL BMODEL STORM_ID BASIN CYCLONE STORM_NAME INIT_MASK VALID_MASK TOTAL INDEX LEVEL WATCH_WARN INITIALS ALAT ALON BLAT BLON TK_ERR X_ERR Y_ERR ALTK_ERR CRTK_ERR ADLAND BDLAND AMSLP BMSLP AMAX_WIND BMAX_WIND AAL_WIND_34 BAL_WIND_34 ANE_WIND_34 BNE_WIND_34 ASE_WIND_34 BSE_WIND_34 ASW_WIND_34 BSW_WIND_34 ANW_WIND_34 BNW_WIND_34 AAL_WIND_50 BAL_WIND_50 ANE_WIND_50 BNE_WIND_50 ASE_WIND_50 BSE_WIND_50 ASW_WIND_50 BSW_WIND_50 ANW_WIND_50 BNW_WIND_50 AAL_WIND_64 BAL_WIND_64 ANE_WIND_64 BNE_WIND_64 ASE_WIND_64 BSE_WIND_64 ASW_WIND_64 BSW_WIND_64 ANW_WIND_64 BNW_WIND_64 ARADP BRADP ARRP BRRP AMRD BMRD AGUSTS BGUSTS AEYE BEYE ADIR BDIR ASPEED BSPEED ADEPTH BDEPTH NUM_MEMBERS TRACK_SPREAD DIST_MEAN MSLP_SPREAD MAX_WIND_SPREAD
TCST_PROBRIRW : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE ALAT ALON BLAT BLON INITIALS TK_ERR X_ERR Y_ERR ADLAND BDLAND RI_BEG RI_END RI_WINDOW AWIND_END BWIND_BEG BWIND_END BDELTA BDELTA_MAX BLEVEL_BEG BLEVEL_END N_THRESH _VAR_
diff --git a/internal/test_unit/xml/unit_ascii2nc.xml b/internal/test_unit/xml/unit_ascii2nc.xml
index ac2341f270..77f445e1c0 100644
--- a/internal/test_unit/xml/unit_ascii2nc.xml
+++ b/internal/test_unit/xml/unit_ascii2nc.xml
@@ -150,4 +150,56 @@
+
+ &MET_BIN;/ascii2nc
+ \
+ -format ndbc_standard \
+ &DATA_DIR_OBS;/ndbc/13001.txt \
+ &DATA_DIR_OBS;/ndbc/13002.txt \
+ &DATA_DIR_OBS;/ndbc/13008.txt \
+ &DATA_DIR_OBS;/ndbc/13009.txt \
+ &DATA_DIR_OBS;/ndbc/14040.txt \
+ &DATA_DIR_OBS;/ndbc/14043.txt \
+ &DATA_DIR_OBS;/ndbc/15001.txt \
+ &DATA_DIR_OBS;/ndbc/15002.txt \
+ &DATA_DIR_OBS;/ndbc/15006.txt \
+ &DATA_DIR_OBS;/ndbc/28401.txt \
+ &DATA_DIR_OBS;/ndbc/31001.txt \
+ &DATA_DIR_OBS;/ndbc/31003.txt \
+ &DATA_DIR_OBS;/ndbc/31004.txt \
+ &DATA_DIR_OBS;/ndbc/31005.txt \
+ &DATA_DIR_OBS;/ndbc/31006.txt \
+ &DATA_DIR_OBS;/ndbc/31007.txt \
+ &DATA_DIR_OBS;/ndbc/32ST0.txt\
+ &DATA_DIR_OBS;/ndbc/51000.txt \
+ &DATA_DIR_OBS;/ndbc/51001.txt \
+ &DATA_DIR_OBS;/ndbc/51002.txt \
+ &DATA_DIR_OBS;/ndbc/51003.txt \
+ &DATA_DIR_OBS;/ndbc/51004.txt \
+ &DATA_DIR_OBS;/ndbc/51101.txt \
+ &DATA_DIR_OBS;/ndbc/51201.txt \
+ &DATA_DIR_OBS;/ndbc/51202.txt \
+ &DATA_DIR_OBS;/ndbc/51205.txt \
+ &DATA_DIR_OBS;/ndbc/51206.txt \
+ &DATA_DIR_OBS;/ndbc/51207.txt \
+ &DATA_DIR_OBS;/ndbc/51208.txt \
+ &DATA_DIR_OBS;/ndbc/51209.txt \
+ &DATA_DIR_OBS;/ndbc/51211.txt \
+ &DATA_DIR_OBS;/ndbc/51212.txt \
+ &DATA_DIR_OBS;/ndbc/51213.txt \
+ &DATA_DIR_OBS;/ndbc/51WH0.txt \
+ &DATA_DIR_OBS;/ndbc/52200.txt \
+ &DATA_DIR_OBS;/ndbc/52202.txt\
+ &DATA_DIR_OBS;/ndbc/52211.txt \
+ &DATA_DIR_OBS;/ndbc/52212.txt \
+ &OUTPUT_DIR;/ascii2nc/ndbc.nc
+
+
+
+
+
+
+
diff --git a/internal/test_unit/xml/unit_netcdf.xml b/internal/test_unit/xml/unit_netcdf.xml
index 5c0b255240..a6e98311a9 100644
--- a/internal/test_unit/xml/unit_netcdf.xml
+++ b/internal/test_unit/xml/unit_netcdf.xml
@@ -111,4 +111,60 @@
+
+ &MET_BIN;/regrid_data_plane
+ \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_month_376p5.nc \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_month_376p5.nc \
+ &OUTPUT_DIR;/netcdf/regrid_data_plane_months_units.nc \
+ -field 'name="t_an"; level="(0,0,*,*)";' \
+ -v 1
+
+
+
+
+
+ &MET_BIN;/regrid_data_plane
+ \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_month_376p5_day2.nc \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_month_376p5_day2.nc \
+ &OUTPUT_DIR;/netcdf/regrid_data_plane_months_units_day2.nc \
+ -field 'name="t_an"; level="(0,0,*,*)";' \
+ -v 1
+
+
+
+
+
+ &MET_BIN;/regrid_data_plane
+ \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_month_d25_3p66.nc \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_month_d25_3p66.nc\
+ &OUTPUT_DIR;/netcdf/regrid_data_plane_months_units_to_next_month.nc \
+ -field 'name="t_an"; level="(0,0,*,*)";' \
+ -v 1
+
+
+
+
+
+ &MET_BIN;/regrid_data_plane
+ \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_year_3p66.nc \
+ &DATA_DIR_MODEL;/nccf/woa18_decav_t05_04_small_year_3p66.nc \
+ &OUTPUT_DIR;/netcdf/regrid_data_plane_years_units.nc \
+ -field 'name="t_an"; level="(0,0,*,*)";' \
+ -v 1
+
+
+
+
diff --git a/internal/test_unit/xml/unit_stat_analysis_gs.xml b/internal/test_unit/xml/unit_stat_analysis_gs.xml
index 6309f57aef..a70be2d076 100644
--- a/internal/test_unit/xml/unit_stat_analysis_gs.xml
+++ b/internal/test_unit/xml/unit_stat_analysis_gs.xml
@@ -39,6 +39,8 @@
&OUTPUT_DIR;/stat_analysis_gs/CONFIG_GRID_STAT_agg_ctc_out.stat
&OUTPUT_DIR;/stat_analysis_gs/CONFIG_GRID_STAT_agg_stat_ctc_to_eclv_dump.stat
&OUTPUT_DIR;/stat_analysis_gs/CONFIG_GRID_STAT_agg_stat_ctc_to_eclv_out.stat
+ &OUTPUT_DIR;/stat_analysis_gs/CONFIG_GRID_STAT_agg_nbrctc_dump.stat
+ &OUTPUT_DIR;/stat_analysis_gs/CONFIG_GRID_STAT_agg_nbrctc_out.stat
diff --git a/internal/test_unit/xml/unit_stat_analysis_ps.xml b/internal/test_unit/xml/unit_stat_analysis_ps.xml
index d32fe963f7..dba20346c8 100644
--- a/internal/test_unit/xml/unit_stat_analysis_ps.xml
+++ b/internal/test_unit/xml/unit_stat_analysis_ps.xml
@@ -68,9 +68,11 @@
- &MET_BIN;/stat_analysis
+ touch &OUTPUT_DIR;/stat_analysis_ps/EmptyConfigFile; \
+ &MET_BIN;/stat_analysis
\
-lookin &OUTPUT_DIR;/point_stat/point_stat_GRIB1_NAM_GDAS_120000L_20120409_120000V.stat \
+ -config &OUTPUT_DIR;/stat_analysis_ps/EmptyConfigFile \
-job filter -line_type MPR -fcst_var TMP -fcst_lev Z2 -vx_mask DTC165 \
-column_str OBS_SID KDLN,KDHT,KDEN,KDLS,KDMA,KDMN,KDVT,KDEW \
-column_str_exc OBS_SID KDLN,KDHT \
diff --git a/internal/test_unit/xml/unit_tc_pairs.xml b/internal/test_unit/xml/unit_tc_pairs.xml
index d35465237a..44f986fd10 100644
--- a/internal/test_unit/xml/unit_tc_pairs.xml
+++ b/internal/test_unit/xml/unit_tc_pairs.xml
@@ -36,6 +36,25 @@
+
+ &MET_BIN;/tc_pairs
+
+ INIT_BEG "20200823_00"
+ INIT_END "20200823_18"
+
+ \
+ -adeck &DATA_DIR;/adeck/aal132020.dat \
+ -bdeck &DATA_DIR;/bdeck/bal132020.dat \
+ -config &CONFIG_DIR;/TCPairsConfig_CONSENSUS \
+ -out &OUTPUT_DIR;/tc_pairs/al132020_CONSENSUS \
+ -log &OUTPUT_DIR;/tc_pairs/tc_pairs_CONSENSUS.log \
+ -v 2
+
+
+
+
&MET_BIN;/tc_pairs
diff --git a/internal/test_util/libcode/vx_nc_util/Makefile.am b/internal/test_util/libcode/vx_nc_util/Makefile.am
index b374eba00f..39d0cd9867 100644
--- a/internal/test_util/libcode/vx_nc_util/Makefile.am
+++ b/internal/test_util/libcode/vx_nc_util/Makefile.am
@@ -42,6 +42,7 @@ test_pressure_levels_LDADD = -lvx_stat_out \
-lvx_config \
-lvx_gsl_prob \
-lvx_cal \
+ -lvx_nav \
-lvx_util_math \
-lvx_util \
-lvx_math \
diff --git a/internal/test_util/libcode/vx_nc_util/Makefile.in b/internal/test_util/libcode/vx_nc_util/Makefile.in
index 57f091eed3..bc6cf1d1db 100644
--- a/internal/test_util/libcode/vx_nc_util/Makefile.in
+++ b/internal/test_util/libcode/vx_nc_util/Makefile.in
@@ -343,6 +343,7 @@ test_pressure_levels_LDADD = -lvx_stat_out \
-lvx_config \
-lvx_gsl_prob \
-lvx_cal \
+ -lvx_nav \
-lvx_util_math \
-lvx_util \
-lvx_math \
diff --git a/internal/test_util/libcode/vx_series_data/test_series_data.cc b/internal/test_util/libcode/vx_series_data/test_series_data.cc
index d9cd9f0cb3..c717ec8f7f 100644
--- a/internal/test_util/libcode/vx_series_data/test_series_data.cc
+++ b/internal/test_util/libcode/vx_series_data/test_series_data.cc
@@ -7,6 +7,8 @@
// *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
////////////////////////////////////////////////////////////////////////
+using namespace std;
+
#include
#include
#include
diff --git a/scripts/python/derive_WRF_semilatlon.py b/scripts/python/derive_WRF_semilatlon.py
index 4a9bc74f31..d42cfc66c3 100644
--- a/scripts/python/derive_WRF_semilatlon.py
+++ b/scripts/python/derive_WRF_semilatlon.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
import os
import sys
import numpy as np
@@ -13,44 +11,44 @@
## load the data into the numpy array
##
-if len(sys.argv) == 4:
- # Read the input file as the first argument
- input_file = os.path.expandvars(sys.argv[1])
- var_name = sys.argv[2]
- axis = sys.argv[3]
-
- try:
- # Print some output to verify that this script ran
- print("Input File: " + repr(input_file))
- print("Variable: " + repr(var_name))
- print("Axis: " + repr(axis))
-
- # Read input file
- f = Dataset(input_file, 'r')
-
- data = np.float64(f.variables[var_name][0,:,:,:])
- data[data > 1.0e30] = np.nan
-
- pvals = list(np.float64(f.variables["pressure"][:]))
-
- if axis == "lon":
- met_data = np.nanmean(data[::-1], axis=1).copy()
- elif axis == "lat":
- met_data = np.nanmean(data[::-1], axis=2).transpose().copy()
- elif axis == "latlon":
- met_data = np.nanmean(data[::-1], axis=1).copy()
- else:
- print("ERROR: Unsupported axis type: " + axis)
- sys.exit(1)
-
- print("Data Shape: " + repr(met_data.shape))
- print("Data Type: " + repr(met_data.dtype))
- except NameError:
- print("Trouble reading data from input file")
-else:
+if len(sys.argv) != 4:
print("Must specify exactly one input file, variable name, and summary axis (lat, lon, latlon).")
sys.exit(1)
+# Read the input file as the first argument
+input_file = os.path.expandvars(sys.argv[1])
+var_name = sys.argv[2]
+axis = sys.argv[3]
+
+try:
+ # Print some output to verify that this script ran
+ print("Input File: " + repr(input_file))
+ print("Variable: " + repr(var_name))
+ print("Axis: " + repr(axis))
+
+ # Read input file
+ f = Dataset(input_file, 'r')
+
+ data = np.float64(f.variables[var_name][0,:,:,:])
+ data[data > 1.0e30] = np.nan
+
+ pvals = list(np.float64(f.variables["pressure"][:]))
+
+ if axis == "lon":
+ met_data = np.nanmean(data[::-1], axis=1).copy()
+ elif axis == "lat":
+ met_data = np.nanmean(data[::-1], axis=2).transpose().copy()
+ elif axis == "latlon":
+ met_data = np.nanmean(data[::-1], axis=1).copy()
+ else:
+ print("ERROR: Unsupported axis type: " + axis)
+ sys.exit(1)
+
+ print("Data Shape: " + repr(met_data.shape))
+ print("Data Type: " + repr(met_data.dtype))
+except NameError:
+ print("Trouble reading data from input file")
+
###########################################
##
diff --git a/scripts/python/read_ascii_mpr.py b/scripts/python/read_ascii_mpr.py
index 4a8c988405..fa71b8e6d2 100755
--- a/scripts/python/read_ascii_mpr.py
+++ b/scripts/python/read_ascii_mpr.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
import pandas as pd
import os
import sys
@@ -13,24 +11,23 @@
## load the data into the numpy array
##
-if len(sys.argv) == 2:
- # Read the input file as the first argument
- input_file = os.path.expandvars(sys.argv[1])
- try:
- print("Input File:\t" + repr(input_file))
-
- # Read MPR lines, skipping the header row and first column.
- mpr_data = pd.read_csv(input_file, header=None,
- delim_whitespace=True, keep_default_na=False,
- skiprows=1, usecols=range(1,37),
- dtype=str).values.tolist()
- print("Data Length:\t" + repr(len(mpr_data)))
- print("Data Type:\t" + repr(type(mpr_data)))
- except NameError:
- print("Can't find the input file")
-else:
+if len(sys.argv) != 2:
print("ERROR: read_ascii_point.py -> Must specify exactly one input file.")
sys.exit(1)
-########################################################################
+# Read the input file as the first argument
+input_file = os.path.expandvars(sys.argv[1])
+try:
+ print("Input File:\t" + repr(input_file))
+
+ # Read MPR lines, skipping the header row and first column.
+ mpr_data = pd.read_csv(input_file, header=None,
+ delim_whitespace=True, keep_default_na=False,
+ skiprows=1, usecols=range(1,37),
+ dtype=str).values.tolist()
+ print("Data Length:\t" + repr(len(mpr_data)))
+ print("Data Type:\t" + repr(type(mpr_data)))
+except NameError:
+ print("Can't find the input file")
+########################################################################
diff --git a/scripts/python/read_ascii_numpy.py b/scripts/python/read_ascii_numpy.py
index b7a1e081b4..6d129afc1c 100755
--- a/scripts/python/read_ascii_numpy.py
+++ b/scripts/python/read_ascii_numpy.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
import numpy as np
import os
import sys
@@ -13,23 +11,23 @@
## load the data into the numpy array
##
-if len(sys.argv) == 3:
- # Read the input file as the first argument
- input_file = os.path.expandvars(sys.argv[1])
- data_name = sys.argv[2]
- try:
- # Print some output to verify that this script ran
- print("Input File:\t" + repr(input_file))
- print("Data Name:\t" + repr(data_name))
- met_data = np.loadtxt(input_file)
- print("Data Shape:\t" + repr(met_data.shape))
- print("Data Type:\t" + repr(met_data.dtype))
- except NameError:
- print("Can't find the input file")
-else:
+if len(sys.argv) != 3:
print("ERROR: read_ascii_numpy.py -> Must specify exactly one input file and a name for the data.")
sys.exit(1)
+# Read the input file as the first argument
+input_file = os.path.expandvars(sys.argv[1])
+data_name = sys.argv[2]
+try:
+ # Print some output to verify that this script ran
+ print("Input File:\t" + repr(input_file))
+ print("Data Name:\t" + repr(data_name))
+ met_data = np.loadtxt(input_file)
+ print("Data Shape:\t" + repr(met_data.shape))
+ print("Data Type:\t" + repr(met_data.dtype))
+except NameError:
+ print("Can't find the input file")
+
###########################################
##
diff --git a/scripts/python/read_ascii_numpy_grid.py b/scripts/python/read_ascii_numpy_grid.py
index fa72cbff6b..3e4cc25f69 100755
--- a/scripts/python/read_ascii_numpy_grid.py
+++ b/scripts/python/read_ascii_numpy_grid.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
import numpy as np
import os
import sys
@@ -13,23 +11,23 @@
## load the data into the numpy array
##
-if len(sys.argv) == 3:
- # Read the input file as the first argument
- input_file = os.path.expandvars(sys.argv[1])
- data_name = sys.argv[2]
- try:
- # Print some output to verify that this script ran
- print("Input File:\t" + repr(input_file))
- print("Data Name:\t" + repr(data_name))
- met_data = np.loadtxt(input_file)
- print("Data Shape:\t" + repr(met_data.shape))
- print("Data Type:\t" + repr(met_data.dtype))
- except NameError:
- print("Can't find the input file")
-else:
+if len(sys.argv) != 3:
print("ERROR: read_ascii_numpy.py -> Must specify exactly one input file and a name for the data.")
sys.exit(1)
+# Read the input file as the first argument
+input_file = os.path.expandvars(sys.argv[1])
+data_name = sys.argv[2]
+try:
+ # Print some output to verify that this script ran
+ print("Input File:\t" + repr(input_file))
+ print("Data Name:\t" + repr(data_name))
+ met_data = np.loadtxt(input_file)
+ print("Data Shape:\t" + repr(met_data.shape))
+ print("Data Type:\t" + repr(met_data.dtype))
+except NameError:
+ print("Can't find the input file")
+
###########################################
##
diff --git a/scripts/python/read_ascii_point.py b/scripts/python/read_ascii_point.py
index cfd37d272a..ee7d2b7b9f 100755
--- a/scripts/python/read_ascii_point.py
+++ b/scripts/python/read_ascii_point.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
import pandas as pd
import os
import sys
@@ -8,40 +6,40 @@
print("Python Script:\t" + repr(sys.argv[0]))
- ##
- ## input file specified on the command line
- ## load the data into the numpy array
- ##
-
-if len(sys.argv) == 2:
- # Read the input file as the first argument
- input_file = os.path.expandvars(sys.argv[1])
- try:
- print("Input File:\t" + repr(input_file))
-
- # Read and format the input 11-column observations:
- # (1) string: Message_Type
- # (2) string: Station_ID
- # (3) string: Valid_Time(YYYYMMDD_HHMMSS)
- # (4) numeric: Lat(Deg North)
- # (5) numeric: Lon(Deg East)
- # (6) numeric: Elevation(msl)
- # (7) string: Var_Name(or GRIB_Code)
- # (8) numeric: Level
- # (9) numeric: Height(msl or agl)
- # (10) string: QC_String
- # (11) numeric: Observation_Value
-
- point_data = pd.read_csv(input_file, header=None, delim_whitespace=True, keep_default_na=False,
- names=['typ', 'sid', 'vld', 'lat', 'lon', 'elv', 'var', 'lvl', 'hgt', 'qc', 'obs'],
- dtype={'typ':'str', 'sid':'str', 'vld':'str', 'var':'str', 'qc':'str'}).values.tolist()
- print("Data Length:\t" + repr(len(point_data)))
- print("Data Type:\t" + repr(type(point_data)))
- except NameError:
- print("Can't find the input file")
-else:
+##
+## input file specified on the command line
+## load the data into the numpy array
+##
+
+if len(sys.argv) != 2:
print("ERROR: read_ascii_point.py -> Must specify exactly one input file.")
sys.exit(1)
-########################################################################
+# Read the input file as the first argument
+input_file = os.path.expandvars(sys.argv[1])
+try:
+ print("Input File:\t" + repr(input_file))
+
+ # Read and format the input 11-column observations:
+ # (1) string: Message_Type
+ # (2) string: Station_ID
+ # (3) string: Valid_Time(YYYYMMDD_HHMMSS)
+ # (4) numeric: Lat(Deg North)
+ # (5) numeric: Lon(Deg East)
+ # (6) numeric: Elevation(msl)
+ # (7) string: Var_Name(or GRIB_Code)
+ # (8) numeric: Level
+ # (9) numeric: Height(msl or agl)
+ # (10) string: QC_String
+ # (11) numeric: Observation_Value
+
+ point_data = pd.read_csv(input_file, header=None, delim_whitespace=True, keep_default_na=False,
+ names=['typ', 'sid', 'vld', 'lat', 'lon', 'elv', 'var', 'lvl', 'hgt', 'qc', 'obs'],
+ dtype={'typ':'str', 'sid':'str', 'vld':'str', 'var':'str', 'qc':'str'}).values.tolist()
+ print("Data Length:\t" + repr(len(point_data)))
+ print("Data Type:\t" + repr(type(point_data)))
+except NameError:
+ print("Can't find the input file")
+ sys.exit(1)
+########################################################################
diff --git a/scripts/python/read_ascii_xarray.py b/scripts/python/read_ascii_xarray.py
index 53f8574d48..6e906863a7 100755
--- a/scripts/python/read_ascii_xarray.py
+++ b/scripts/python/read_ascii_xarray.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
import numpy as np
import os
import sys
@@ -14,23 +12,23 @@
## load the data into the numpy array
##
-if len(sys.argv) == 3:
- # Read the input file as the first argument
- input_file = os.path.expandvars(sys.argv[1])
- data_name = sys.argv[2]
- try:
- # Print some output to verify that this script ran
- print("Input File:\t" + repr(input_file))
- print("Data Name:\t" + repr(data_name))
- met_data = np.loadtxt(input_file)
- print("Data Shape:\t" + repr(met_data.shape))
- print("Data Type:\t" + repr(met_data.dtype))
- except NameError:
- print("Can't find the input file")
-else:
+if len(sys.argv) != 3:
print("ERROR: read_ascii_xarray.py -> Must specify exactly one input file and a name for the data.")
sys.exit(1)
+# Read the input file as the first argument
+input_file = os.path.expandvars(sys.argv[1])
+data_name = sys.argv[2]
+try:
+ # Print some output to verify that this script ran
+ print("Input File:\t" + repr(input_file))
+ print("Data Name:\t" + repr(data_name))
+ met_data = np.loadtxt(input_file)
+ print("Data Shape:\t" + repr(met_data.shape))
+ print("Data Type:\t" + repr(met_data.dtype))
+except NameError:
+ print("Can't find the input file")
+
###########################################
##
diff --git a/src/basic/vx_cal/is_leap_year.cc b/src/basic/vx_cal/is_leap_year.cc
index 42cc100a76..efc5f66f05 100644
--- a/src/basic/vx_cal/is_leap_year.cc
+++ b/src/basic/vx_cal/is_leap_year.cc
@@ -90,24 +90,91 @@ void increase_one_month(int &year, int &month) {
////////////////////////////////////////////////////////////////////////
-unixtime add_to_unixtime(unixtime base_unixtime,
- int sec_per_unit, double time_value, bool no_leap) {
+#define SEC_MONTH (86400*30)
+#define SEC_YEAR (86400*30*12)
+#define DAY_EPSILON 0.00002
+
+unixtime add_to_unixtime(unixtime base_unixtime, int sec_per_unit,
+ double time_value, bool no_leap) {
unixtime ut;
+ int month, day, year, hour, minute, second;
unixtime time_value_ut = (unixtime)time_value;
double time_fraction = time_value - time_value_ut;
- if (!no_leap || sec_per_unit != 86400) {
+ const char *method_name = "add_to_unixtime() -->";
+
+ if (sec_per_unit == SEC_MONTH || sec_per_unit == SEC_YEAR) {
+ if (time_value < 0) {
+ mlog << Error << "\n" << method_name
+ << " the negative offset (" << time_value
+ << ") is not supported for unit months and years\n\n";
+ exit(-1);
+ }
+
+ unix_to_mdyhms(base_unixtime, month, day, year, hour, minute, second);
+
+ int month_offset;
+ double day_offset;
+ if (sec_per_unit == SEC_YEAR) {
+ year += time_value_ut;
+ time_fraction *= 12; // 12 months/year
+ month_offset = (unixtime)time_fraction;
+ time_fraction -= month_offset;
+ }
+ else month_offset = time_value_ut;
+
+ for (int idx=0; idx 0.5) day++;
+ }
+ }
+ else {
+ day_offset = time_fraction * 30;
+ time_value_ut = (int)day_offset;
+ day += time_value_ut;
+ if (day_offset - time_value_ut > 0.5) day++;
+ if (day > 30) {
+ day -= 30;
+ increase_one_month(year, month);
+ }
+ }
+
+ int day_org = day;
+ bool day_adjusted = false;
+ int max_day = monthly_days[month-1];
+ if (day > max_day) {
+ day = max_day;
+ day_adjusted = true;
+ if (month == 2 && is_leap_year(year)) {
+ if (day_org == 29) day_adjusted = false;
+ day = 29;
+ }
+ }
+ ut = mdyhms_to_unix(month, day, year, hour, minute, second);
+ if (day_adjusted) {
+ mlog << Debug(2) << method_name << "adjusted day " << day_org
+ << " to " << day << " for " << year << "-" << month << "\n";
+ }
+ }
+ else if (!no_leap || sec_per_unit != 86400) {
+ // seconds, minute, hours, and day unit with leap year
bool use_ut = true;
+ // For the precision: case 1: 1.9999 to 2
+ // case 2: 2.0001 to 2
+ // Other cases are as floating number
if ((1.0 - time_fraction) < TIME_EPSILON) time_value_ut += 1;
else if (time_fraction > TIME_EPSILON) use_ut = false;
if (use_ut) ut = (unixtime)(base_unixtime + sec_per_unit * time_value_ut);
else ut = (unixtime)(base_unixtime + sec_per_unit * time_value);
}
- else {
- int day_offset;
- int month, day, year, hour, minute, second;
-
+ else { // no_leap year && unit = day
unix_to_mdyhms(base_unixtime, month, day, year, hour, minute, second);
- day_offset = day + (int)time_value;
+ int day_offset = day + (int)time_value;
if (day_offset < 0) {
while (day_offset < 0) {
decrease_one_month(year, month);
@@ -125,11 +192,11 @@ unixtime add_to_unixtime(unixtime base_unixtime,
ut = mdyhms_to_unix(month, day, year, hour, minute, second);
if (time_fraction > (1-TIME_EPSILON) ) ut += sec_per_unit;
else if (time_fraction > TIME_EPSILON) ut += (time_fraction * sec_per_unit);
- mlog << Debug(5) << "add_to_unixtime() -> "
- << unix_to_yyyymmdd_hhmmss(base_unixtime)
- << " plus " << time_value << " days = "
- << unix_to_yyyymmdd_hhmmss(ut) << "\n";
}
+ mlog << Debug(5) << method_name
+ << unix_to_yyyymmdd_hhmmss(base_unixtime)
+ << " plus " << time_value << " days = "
+ << unix_to_yyyymmdd_hhmmss(ut) << "\n";
return ut;
}
diff --git a/src/basic/vx_cal/time_array.h b/src/basic/vx_cal/time_array.h
index ecfa15e1aa..1eabd0b081 100644
--- a/src/basic/vx_cal/time_array.h
+++ b/src/basic/vx_cal/time_array.h
@@ -60,7 +60,7 @@ class TimeArray {
void extend(int, bool exact = true);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
unixtime operator[](int) const;
diff --git a/src/basic/vx_cal/vx_cal.h b/src/basic/vx_cal/vx_cal.h
index 74885b50a1..272ee17d75 100644
--- a/src/basic/vx_cal/vx_cal.h
+++ b/src/basic/vx_cal/vx_cal.h
@@ -180,14 +180,14 @@ static const double TIME_EPSILON = 0.001;
// Bad Data Values
//
-static const int bad_data_int = -9999;
-static const long long bad_data_ll = -9999LL;
-static const float bad_data_float = -9999.f;
-static const double bad_data_double = -9999.0;
-static const char bad_data_str[] = "-9999";
-static const char bad_data_char = '\0';
-static const char na_str[] = "NA";
-static const string na_string = "NA";
+static const int bad_data_int = -9999;
+static const long long bad_data_ll = -9999LL;
+static const float bad_data_float = -9999.f;
+static const double bad_data_double = -9999.0;
+static const char bad_data_str[] = "-9999";
+static const char bad_data_char = '\0';
+static const char na_str[] = "NA";
+static const std::string na_string = "NA";
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_config/config_file.h b/src/basic/vx_config/config_file.h
index e5a2953692..d079daffba 100644
--- a/src/basic/vx_config/config_file.h
+++ b/src/basic/vx_config/config_file.h
@@ -48,7 +48,7 @@ class MetConfig : public Dictionary {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
//
// set stuff
diff --git a/src/basic/vx_config/config_util.h b/src/basic/vx_config/config_util.h
index d39d08b615..45de85dd0f 100644
--- a/src/basic/vx_config/config_util.h
+++ b/src/basic/vx_config/config_util.h
@@ -33,9 +33,9 @@ static const char conf_key_old_prepbufr_map[] = "obs_prefbufr_map"; // for ba
extern ConcatString parse_conf_version(Dictionary *dict);
extern ConcatString parse_conf_string(Dictionary *dict, const char *, bool check_empty = true);
extern GrdFileType parse_conf_file_type(Dictionary *dict);
-extern map
+extern std::map
parse_conf_output_flag(Dictionary *dict, const STATLineType *, int);
-extern map
+extern std::map
parse_conf_output_stats(Dictionary *dict);
extern int parse_conf_n_vx(Dictionary *dict);
extern Dictionary parse_conf_i_vx_dict(Dictionary *dict, int index);
@@ -43,7 +43,7 @@ extern StringArray parse_conf_tc_model(Dictionary *dict, bool error_out = de
extern StringArray parse_conf_message_type(Dictionary *dict, bool error_out = default_dictionary_error_out);
extern StringArray parse_conf_sid_list(Dictionary *dict, const char *);
extern void parse_sid_mask(const ConcatString &, StringArray &, ConcatString &);
-extern vector
+extern std::vector
parse_conf_llpnt_mask(Dictionary *dict);
extern StringArray parse_conf_obs_qty_inc(Dictionary *dict);
extern StringArray parse_conf_obs_qty_exc(Dictionary *dict);
@@ -51,16 +51,16 @@ extern NumArray parse_conf_ci_alpha(Dictionary *dict);
extern NumArray parse_conf_eclv_points(Dictionary *dict);
extern ClimoCDFInfo parse_conf_climo_cdf(Dictionary *dict);
extern TimeSummaryInfo parse_conf_time_summary(Dictionary *dict);
-extern map parse_conf_key_value_map(
+extern std::map parse_conf_key_value_map(
Dictionary *dict, const char *conf_key_map_name, const char *caller=0);
extern void parse_add_conf_key_value_map(
- Dictionary *dict, const char *conf_key_map_name, map *m);
-extern map
+ Dictionary *dict, const char *conf_key_map_name, std::map *m);
+extern std::map
parse_conf_message_type_map(Dictionary *dict);
-extern map
+extern std::map
parse_conf_message_type_group_map(Dictionary *dict);
-extern map parse_conf_metadata_map(Dictionary *dict);
-extern map
+extern std::map parse_conf_metadata_map(Dictionary *dict);
+extern std::map
parse_conf_obs_name_map(Dictionary *dict);
extern BootInfo parse_conf_boot(Dictionary *dict);
extern RegridInfo parse_conf_regrid(Dictionary *dict, bool error_out = default_dictionary_error_out);
@@ -74,7 +74,7 @@ extern ConcatString parse_conf_tmp_dir(Dictionary *dict);
extern GridDecompType parse_conf_grid_decomp_flag(Dictionary *dict);
extern WaveletType parse_conf_wavelet_type(Dictionary *dict);
extern PlotInfo parse_conf_plot_info(Dictionary *dict);
-extern map
+extern std::map
parse_conf_filter_attr_map(Dictionary *dict);
extern void parse_conf_range_int(Dictionary *dict, int &beg, int &end);
extern void parse_conf_range_double(Dictionary *dict, double &beg, double &end);
diff --git a/src/basic/vx_config/dictionary.h b/src/basic/vx_config/dictionary.h
index 6319e8d78c..4265b7c3d1 100644
--- a/src/basic/vx_config/dictionary.h
+++ b/src/basic/vx_config/dictionary.h
@@ -85,9 +85,9 @@ class DictionaryEntry {
void clear();
- void dump(ostream & out, int = 0) const;
+ void dump(std::ostream & out, int = 0) const;
- void dump_config_format(ostream & out, int = 0) const;
+ void dump_config_format(std::ostream & out, int = 0) const;
//
// set stuff
@@ -219,9 +219,9 @@ class Dictionary {
void clear();
- virtual void dump(ostream &, int = 0) const;
+ virtual void dump(std::ostream &, int = 0) const;
- virtual void dump_config_format(ostream & out, int = 0) const;
+ virtual void dump_config_format(std::ostream & out, int = 0) const;
//
// set stuff
@@ -365,9 +365,9 @@ class DictionaryStack {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
- void dump_config_format(ostream & out, int = 0) const;
+ void dump_config_format(std::ostream & out, int = 0) const;
//
// set stuff
diff --git a/src/basic/vx_config/icode.h b/src/basic/vx_config/icode.h
index 816beaf969..37ba172584 100644
--- a/src/basic/vx_config/icode.h
+++ b/src/basic/vx_config/icode.h
@@ -153,7 +153,7 @@ class IcodeCell {
double as_double() const;
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
};
@@ -203,7 +203,7 @@ class IcodeVector {
void add (const IcodeVector &);
void add_front (const IcodeVector &);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
bool is_mark() const;
bool is_mark(int) const;
@@ -257,9 +257,9 @@ class CellStack {
int depth() const;
- void dump_cell(ostream &, int n, int depth = 0) const;
+ void dump_cell(std::ostream &, int n, int depth = 0) const;
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
};
@@ -311,7 +311,7 @@ class ICVStack {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
};
diff --git a/src/basic/vx_config/idstack.h b/src/basic/vx_config/idstack.h
index f2f36fe909..5fc487f6c0 100644
--- a/src/basic/vx_config/idstack.h
+++ b/src/basic/vx_config/idstack.h
@@ -24,8 +24,6 @@
#include "indent.h"
-using namespace std;
-
////////////////////////////////////////////////////////////////////////
@@ -50,13 +48,13 @@ class Identifier {
Identifier(const Identifier &);
Identifier & operator=(const Identifier &);
- string name;
+ std::string name;
void clear();
void set(const char *);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
};
@@ -143,7 +141,7 @@ class IdentifierArray {
void add(const Identifier &);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
bool has(const char *) const;
diff --git a/src/basic/vx_config/threshold.h b/src/basic/vx_config/threshold.h
index e35c894618..eccbee8ac3 100644
--- a/src/basic/vx_config/threshold.h
+++ b/src/basic/vx_config/threshold.h
@@ -168,7 +168,7 @@ class ThreshNode {
virtual void multiply_by(const double) = 0;
- virtual void get_simple_nodes(vector &) const = 0;
+ virtual void get_simple_nodes(std::vector &) const = 0;
ConcatString s;
ConcatString abbr_s;
@@ -210,7 +210,7 @@ class Or_Node : public ThreshNode {
void multiply_by(const double);
- void get_simple_nodes(vector &) const;
+ void get_simple_nodes(std::vector &) const;
ThreshNode * left_child;
ThreshNode * right_child;
@@ -259,7 +259,7 @@ class And_Node : public ThreshNode {
void multiply_by(const double);
- void get_simple_nodes(vector &) const;
+ void get_simple_nodes(std::vector &) const;
ThreshNode * copy() const;
@@ -310,7 +310,7 @@ class Not_Node : public ThreshNode {
void multiply_by(const double);
- void get_simple_nodes(vector &) const;
+ void get_simple_nodes(std::vector &) const;
ThreshNode * copy() const;
@@ -375,7 +375,7 @@ class Simple_Node : public ThreshNode {
bool need_perc() const;
- void get_simple_nodes(vector &) const;
+ void get_simple_nodes(std::vector &) const;
//
// do stuff
@@ -421,7 +421,7 @@ class SingleThresh {
SingleThresh(const char *);
SingleThresh & operator=(const SingleThresh &);
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
bool operator==(const SingleThresh &) const;
@@ -446,7 +446,7 @@ class SingleThresh {
PercThreshType get_ptype() const;
double get_pvalue() const;
double get_climo_prob() const;
- void get_simple_nodes(vector &) const;
+ void get_simple_nodes(std::vector &) const;
void multiply_by(const double);
diff --git a/src/basic/vx_log/file_fxns.h b/src/basic/vx_log/file_fxns.h
index 5ffaa463fe..84dd361302 100644
--- a/src/basic/vx_log/file_fxns.h
+++ b/src/basic/vx_log/file_fxns.h
@@ -37,9 +37,9 @@ extern ConcatString replace_path(const char * path);
extern int met_open(const char *path, int oflag);
-extern void met_open(ifstream &in, const char *path);
+extern void met_open(std::ifstream &in, const char *path);
-extern void met_open(ofstream &out, const char *path);
+extern void met_open(std::ofstream &out, const char *path);
extern FILE * met_fopen(const char *path, const char *mode);
diff --git a/src/basic/vx_log/vx_log.h b/src/basic/vx_log/vx_log.h
index b8f26c758c..6aa7e5a2d7 100644
--- a/src/basic/vx_log/vx_log.h
+++ b/src/basic/vx_log/vx_log.h
@@ -17,8 +17,6 @@
////////////////////////////////////////////////////////////////////////
-using namespace std;
-
#include "concat_string.h"
#include "indent.h"
#include "string_array.h"
diff --git a/src/basic/vx_math/hist.h b/src/basic/vx_math/hist.h
index 00e282dd9a..f1f26292ed 100644
--- a/src/basic/vx_math/hist.h
+++ b/src/basic/vx_math/hist.h
@@ -115,7 +115,7 @@ inline int Histogram::too_small_count () const { return ( TooSmallCount ); }
////////////////////////////////////////////////////////////////////////
-extern ostream & operator<<(ostream &, const Histogram &);
+extern std::ostream & operator<<(std::ostream &, const Histogram &);
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_math/is_bad_data.h b/src/basic/vx_math/is_bad_data.h
index d8bc9b92a1..601949a0c9 100644
--- a/src/basic/vx_math/is_bad_data.h
+++ b/src/basic/vx_math/is_bad_data.h
@@ -28,22 +28,22 @@
inline int is_bad_data(int a) {
- if(a == bad_data_int || isnan(a)) return(1);
+ if(a == bad_data_int || std::isnan(a)) return(1);
else return(0);
}
inline int is_bad_data(long long a) {
- if(a == bad_data_ll || isnan(a)) return(1);
+ if(a == bad_data_ll || std::isnan(a)) return(1);
else return(0);
}
inline int is_bad_data(double a) {
- if(fabs(a - bad_data_double) < default_tol || isnan(a)) return(1);
+ if(fabs(a - bad_data_double) < default_tol || std::isnan(a)) return(1);
else return(0);
}
inline int is_bad_data(float a) {
- if(fabs(a - bad_data_float) < default_tol || isnan(a)) return(1);
+ if(fabs(a - bad_data_float) < default_tol || std::isnan(a)) return(1);
else return(0);
}
diff --git a/src/basic/vx_math/pwl.h b/src/basic/vx_math/pwl.h
index 2290e33c19..410fe66993 100644
--- a/src/basic/vx_math/pwl.h
+++ b/src/basic/vx_math/pwl.h
@@ -62,7 +62,7 @@ class PiecewiseLinear {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
//
// set stuff
diff --git a/src/basic/vx_math/vx_vector.h b/src/basic/vx_math/vx_vector.h
index 59dc87daf1..53ad9daac1 100644
--- a/src/basic/vx_math/vx_vector.h
+++ b/src/basic/vx_math/vx_vector.h
@@ -53,7 +53,7 @@ class Vector {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
//
// set stuff
@@ -166,7 +166,7 @@ extern void latlon_to_vector(double lat, double lon, double & x, double & y, d
////////////////////////////////////////////////////////////////////////
-extern ostream & operator<<(ostream &, const Vector &);
+extern std::ostream & operator<<(std::ostream &, const Vector &);
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/GridOffset.h b/src/basic/vx_util/GridOffset.h
index dc3b9ec147..4af50d0328 100644
--- a/src/basic/vx_util/GridOffset.h
+++ b/src/basic/vx_util/GridOffset.h
@@ -17,6 +17,7 @@
// Mod# Date Name Description
// ---- ---- ---- -----------
// 000 01-01-99 Rehak Initial version.
+// 001 09-06-22 Prestopnik MET #2227 Remove namesapce std from header files
//
///////////////////////////////////////////////////////////////////////////////
@@ -29,8 +30,6 @@
///////////////////////////////////////////////////////////////////////////////
-using namespace std;
-
class GridOffset
{
public:
diff --git a/src/basic/vx_util/GridTemplate.h b/src/basic/vx_util/GridTemplate.h
index be191ebecf..552dcff295 100644
--- a/src/basic/vx_util/GridTemplate.h
+++ b/src/basic/vx_util/GridTemplate.h
@@ -18,6 +18,7 @@
// ---- ---- ---- -----------
// 000 01-01-99 Rehak Initial version.
// 001 09-07-21 Halley Gotway Add wrap_lon.
+// 002 09-07-22 Prestopnik MET #2227 Remove namespace std from header files
//
///////////////////////////////////////////////////////////////////////////////
@@ -34,8 +35,6 @@
///////////////////////////////////////////////////////////////////////////////
-using namespace std;
-
class GridTemplate {
public:
@@ -118,20 +117,20 @@ class GridTemplate {
bool _wrapLon;
// The offsets that make up the circle
- vector _offsetList;
+ std::vector _offsetList;
// The offsets that define the first and last rows and columns
- vector _offsetLftEdge; // not allocated
- vector _offsetRgtEdge; // not allocated
- vector _offsetTopEdge; // not allocated
- vector _offsetBotEdge; // not allocated
+ std::vector _offsetLftEdge; // not allocated
+ std::vector _offsetRgtEdge; // not allocated
+ std::vector _offsetTopEdge; // not allocated
+ std::vector _offsetBotEdge; // not allocated
// Iterator for finding points within a grid
- mutable vector::const_iterator _pointInGridIterator;
- mutable vector::const_iterator _pointInLftEdgeIterator;
- mutable vector::const_iterator _pointInRgtEdgeIterator;
- mutable vector::const_iterator _pointInTopEdgeIterator;
- mutable vector::const_iterator _pointInBotEdgeIterator;
+ mutable std::vector::const_iterator _pointInGridIterator;
+ mutable std::vector::const_iterator _pointInLftEdgeIterator;
+ mutable std::vector::const_iterator _pointInRgtEdgeIterator;
+ mutable std::vector::const_iterator _pointInTopEdgeIterator;
+ mutable std::vector::const_iterator _pointInBotEdgeIterator;
mutable GridPoint _pointInGridBase;
mutable int _pointInGridNumX;
@@ -168,12 +167,12 @@ class GridTemplateFactory {
};
// String corresponding to the enumerated values above
- vector enum_to_string;
+ std::vector enum_to_string;
- GridTemplates string2Enum(string target);
- string enum2String(GridTemplates gt);
+ GridTemplates string2Enum(std::string target);
+ std::string enum2String(GridTemplates gt);
- GridTemplate* buildGT(string gt, int width, bool wrap_lon);
+ GridTemplate* buildGT(std::string gt, int width, bool wrap_lon);
GridTemplate* buildGT(GridTemplates gt, int width, bool wrap_lon);
};
diff --git a/src/basic/vx_util/ascii_header.h b/src/basic/vx_util/ascii_header.h
index 5c0a498c77..24181e3d2a 100644
--- a/src/basic/vx_util/ascii_header.h
+++ b/src/basic/vx_util/ascii_header.h
@@ -13,8 +13,6 @@
////////////////////////////////////////////////////////////////////////
-using namespace std;
-
#include
#include
@@ -105,8 +103,8 @@ class AsciiHeader {
void assign(const AsciiHeader &);
- StringArray Versions;
- vector Headers;
+ StringArray Versions;
+ std::vector Headers;
public:
diff --git a/src/basic/vx_util/ascii_table.h b/src/basic/vx_util/ascii_table.h
index c13c67c904..6e6ee96290 100644
--- a/src/basic/vx_util/ascii_table.h
+++ b/src/basic/vx_util/ascii_table.h
@@ -357,7 +357,7 @@ inline bool AsciiTable::decimal_points_aligned() const { return ( DecimalPointsA
// externs
//
-extern ostream & operator<<(ostream &, AsciiTable &);
+extern std::ostream & operator<<(std::ostream &, AsciiTable &);
extern void justified_item(const char * text, const int field_width, const char pad, const AsciiTableJust just, char * out);
diff --git a/src/basic/vx_util/command_line.h b/src/basic/vx_util/command_line.h
index 9acbc3fa9b..7c02bf589a 100644
--- a/src/basic/vx_util/command_line.h
+++ b/src/basic/vx_util/command_line.h
@@ -57,7 +57,7 @@ class CLOptionInfo { // command-line option info
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
ConcatString option_text;
@@ -101,7 +101,7 @@ class CLOptionInfoArray {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
void set_alloc_inc(int = 0); // 0 means default value (16)
@@ -112,7 +112,7 @@ class CLOptionInfoArray {
CLOptionInfo & operator[](int) const;
- int lookup(const string &) const;
+ int lookup(const std::string &) const;
};
@@ -143,7 +143,7 @@ class CommandLine {
void do_log();
void get_n_args(StringArray &, const int Nargs,
- const string & switch_name, const int pos);
+ const std::string & switch_name, const int pos);
int get_unlimited_args(StringArray &, const int pos);
@@ -159,7 +159,7 @@ class CommandLine {
bool AllowUnrecognizedSwitches; // default: false
- bool is_switch(const string &) const;
+ bool is_switch(const std::string &) const;
public:
@@ -170,7 +170,7 @@ class CommandLine {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
//
// set stuff
@@ -197,7 +197,7 @@ class CommandLine {
int length(int) const; // length of jth arg
- bool has_option(const string &) const;
+ bool has_option(const std::string &) const;
int next_option(int & index) const; // -1 if no option found
@@ -207,11 +207,11 @@ class CommandLine {
void shift_down(int pos, int k);
- const string operator[](int) const;
+ const std::string operator[](int) const;
void parse();
- void add(CLSetFunction, const string & text, int n_args); // n_args not including switch
+ void add(CLSetFunction, const std::string & text, int n_args); // n_args not including switch
};
diff --git a/src/basic/vx_util/crc_array.h b/src/basic/vx_util/crc_array.h
index 7d86fe97e9..2b7dcb52e3 100644
--- a/src/basic/vx_util/crc_array.h
+++ b/src/basic/vx_util/crc_array.h
@@ -101,9 +101,9 @@ class CRC_Array {
void extend(int, bool exact = true);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
- void dump_one_line(ostream & out, int depth) const;
+ void dump_one_line(std::ostream & out, int depth) const;
//
// set stuff
@@ -330,7 +330,7 @@ return;
template
-void CRC_Array::dump(ostream & out, int depth) const
+void CRC_Array::dump(std::ostream & out, int depth) const
{
@@ -364,7 +364,7 @@ return;
template
-void CRC_Array::dump_one_line(ostream & out, int depth) const
+void CRC_Array::dump_one_line(std::ostream & out, int depth) const
{
@@ -385,7 +385,7 @@ for (j=0; j
-void CRR_Array::dump(ostream & out, int depth) const
+void CRR_Array::dump(std::ostream & out, int depth) const
{
diff --git a/src/basic/vx_util/data_line.cc b/src/basic/vx_util/data_line.cc
index ca1e8db145..f7692fdeb0 100644
--- a/src/basic/vx_util/data_line.cc
+++ b/src/basic/vx_util/data_line.cc
@@ -334,7 +334,7 @@ if ( ! read_single_text_line(ldf) ) { clear(); return ( 0 ); }
size_t len, tpos = std::string::npos;
-if (!Line.find_first_not_of(Delimiter)) { // no leading delimiter
+if (0 == Line.find_first_not_of(Delimiter)) { // no leading delimiter
++count;
Offset.push_back(pos);
Items.push_back(Line.substr(pos, Line.find_first_of(Delimiter, pos) - pos));
diff --git a/src/basic/vx_util/data_line.h b/src/basic/vx_util/data_line.h
index c64b6fc4b4..4608e8a2bd 100644
--- a/src/basic/vx_util/data_line.h
+++ b/src/basic/vx_util/data_line.h
@@ -48,7 +48,7 @@ class PyLineDataFile; // forward reference
class DataLine {
friend class LineDataFile;
- friend ostream & operator<<(ostream &, const DataLine &);
+ friend std::ostream & operator<<(std::ostream &, const DataLine &);
friend Logger & operator<<(Logger &, const DataLine &);
protected:
@@ -96,7 +96,7 @@ class DataLine {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
//
// retrieve stuff
@@ -178,7 +178,7 @@ class LineDataFile {
LineDataFile();
virtual ~LineDataFile();
- ifstream * in;
+ std::ifstream * in;
int open(const char *);
@@ -217,7 +217,7 @@ inline const StringArray & LineDataFile::header() const { return ( Header ); }
////////////////////////////////////////////////////////////////////////
-extern ostream & operator<<(ostream &, const DataLine &);
+extern std::ostream & operator<<(std::ostream &, const DataLine &);
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/data_plane.cc b/src/basic/vx_util/data_plane.cc
index bde7f982bc..0fd0c00efa 100644
--- a/src/basic/vx_util/data_plane.cc
+++ b/src/basic/vx_util/data_plane.cc
@@ -16,6 +16,7 @@
// Mod# Date Name Description
// ---- ---- ---- -----------
// 000 11-01-11 Halley Gotway
+// 001 22-09-29 Prestopnik MET #2227 Remove namespace std from header files
//
///////////////////////////////////////////////////////////////////////////////
@@ -663,7 +664,7 @@ if ( N == 0 ) return; // no shift, so do nothing
int x, y, x_new;
int index_old, index_new;
-std::vector new_data(Nxy);
+vector new_data(Nxy);
for (x=0; x
#include
@@ -43,7 +46,7 @@
////////////////////////////////////////////////////////////////////////
-static std::string met_cmdline = "";
+static string met_cmdline = "";
static int met_start_time;
static int met_end_time;
@@ -146,7 +149,7 @@ void segv_handler(int signum) {
void set_handlers() {
- set_new_handler(oom);
+ set_new_handler(oom);
}
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/main.h b/src/basic/vx_util/main.h
index a008a26c7c..7cbedef200 100644
--- a/src/basic/vx_util/main.h
+++ b/src/basic/vx_util/main.h
@@ -20,8 +20,6 @@
#include
#include
-using namespace std;
-
////////////////////////////////////////////////////////////////////////
#define MET_BUF_SIZE 4096
@@ -29,7 +27,7 @@ using namespace std;
////////////////////////////////////////////////////////////////////////
//extern void log_event(int event_id, string event_msg);
-extern string get_current_time();
+extern std::string get_current_time();
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/mask_poly.h b/src/basic/vx_util/mask_poly.h
index a568318ae0..640124b260 100644
--- a/src/basic/vx_util/mask_poly.h
+++ b/src/basic/vx_util/mask_poly.h
@@ -61,7 +61,7 @@ class MaskPoly {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
//
// set stuff
diff --git a/src/basic/vx_util/ncrr_array.h b/src/basic/vx_util/ncrr_array.h
index 68fbd40592..dc508ca380 100644
--- a/src/basic/vx_util/ncrr_array.h
+++ b/src/basic/vx_util/ncrr_array.h
@@ -77,7 +77,7 @@ class NCRR_Array {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
//
// set stuff
@@ -254,7 +254,7 @@ return;
template
-void NCRR_Array::dump(ostream & out, int depth) const
+void NCRR_Array::dump(std::ostream & out, int depth) const
{
diff --git a/src/basic/vx_util/num_array.h b/src/basic/vx_util/num_array.h
index 72d7ec00e8..be43623ff8 100644
--- a/src/basic/vx_util/num_array.h
+++ b/src/basic/vx_util/num_array.h
@@ -35,7 +35,7 @@ class NumArray {
void assign(const NumArray &);
- vector e;
+ std::vector e;
bool Sorted;
@@ -53,7 +53,7 @@ class NumArray {
void extend(int);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
double operator[](int) const;
diff --git a/src/basic/vx_util/observation.h b/src/basic/vx_util/observation.h
index 58d9e29285..62dd3fe688 100644
--- a/src/basic/vx_util/observation.h
+++ b/src/basic/vx_util/observation.h
@@ -37,23 +37,23 @@ class Observation
public:
- Observation(const string &header_type, const string &station_id,
+ Observation(const std::string &header_type, const std::string &station_id,
const time_t valid_time,
const double latitude, const double longitude,
const double elevation,
- const string &quality_flag,
+ const std::string &quality_flag,
const int grib_code, const double pressure_level_hpa,
const double height_m, const double value,
- const string &var_name = "");
+ const std::string &var_name = "");
- Observation(const string &header_type, const string &station_id,
+ Observation(const std::string &header_type, const std::string &station_id,
const time_t start_time, const time_t end_time,
const double latitude, const double longitude,
const double elevation,
- const string &quality_flag,
+ const std::string &quality_flag,
const int grib_code, const double pressure_level_hpa,
const double height_m, const double value,
- const string &var_name = "");
+ const std::string &var_name = "");
////////////////////////
#ifdef ENABLE_PYTHON
@@ -85,12 +85,12 @@ class Observation
hdrIndex = headerIndex;
}
- string getHeaderType() const
+ std::string getHeaderType() const
{
return _headerType;
}
- string getStationId() const
+ std::string getStationId() const
{
return _stationId;
}
@@ -100,7 +100,7 @@ class Observation
return _validTime;
}
- string getValidTimeString() const
+ std::string getValidTimeString() const
{
return _getTimeString(_validTime);
}
@@ -120,7 +120,7 @@ class Observation
return _elevation;
}
- string getQualityFlag() const
+ std::string getQualityFlag() const
{
return _qualityFlag;
}
@@ -155,7 +155,7 @@ class Observation
return _value;
}
- string getVarName() const
+ std::string getVarName() const
{
return _varName;
}
@@ -201,26 +201,26 @@ class Observation
// Protected members //
///////////////////////
- string _headerType;
- string _stationId;
- time_t _validTime;
- double _latitude;
- double _longitude;
- double _elevation;
- string _qualityFlag;
- string _varName;
- int varCode;
- long hdrIndex;
- double _pressureLevel;
- double _height;
- double _value;
+ std::string _headerType;
+ std::string _stationId;
+ time_t _validTime;
+ double _latitude;
+ double _longitude;
+ double _elevation;
+ std::string _qualityFlag;
+ std::string _varName;
+ int varCode;
+ long hdrIndex;
+ double _pressureLevel;
+ double _height;
+ double _value;
///////////////////////
// Protected methods //
///////////////////////
- static string _getTimeString(const time_t &unix_time)
+ static std::string _getTimeString(const time_t &unix_time)
{
struct tm *time_struct = gmtime(&unix_time);
@@ -232,14 +232,14 @@ class Observation
time_struct->tm_mday, time_struct->tm_hour,
time_struct->tm_min, time_struct->tm_sec);
- return string(time_string);
+ return std::string(time_string);
}
- static string _getTimeString(const time_t &start_time,
+ static std::string _getTimeString(const time_t &start_time,
const time_t &end_time)
{
- string start_time_string = _getTimeString(start_time);
- string end_time_string = _getTimeString(end_time);
+ std::string start_time_string = _getTimeString(start_time);
+ std::string end_time_string = _getTimeString(end_time);
char time_string[tmp_buf_size];
@@ -247,7 +247,7 @@ class Observation
"%s-%s",
start_time_string.c_str(), end_time_string.c_str());
- return string(time_string);
+ return std::string(time_string);
}
};
diff --git a/src/basic/vx_util/polyline.h b/src/basic/vx_util/polyline.h
index 1278a71508..c3a31455d8 100644
--- a/src/basic/vx_util/polyline.h
+++ b/src/basic/vx_util/polyline.h
@@ -51,7 +51,7 @@ class Polyline {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
/////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/stat_column_defs.h b/src/basic/vx_util/stat_column_defs.h
index 111829c07a..9fca87257c 100644
--- a/src/basic/vx_util/stat_column_defs.h
+++ b/src/basic/vx_util/stat_column_defs.h
@@ -437,16 +437,16 @@ static const int n_genmpr_columns = sizeof(genmpr_columns)/sizeof(*genmpr_
////////////////////////////////////////////////////////////////////////
-inline int get_n_mctc_columns (int n) { return(3 + n*n); } // n = N_CAT
-inline int get_n_pct_columns (int n) { return(3 + 3*(max(1, n)-1)); } // n = N_THRESH
-inline int get_n_pstd_columns (int n) { return(17 + max(1, n) ); } // n = N_THRESH
-inline int get_n_pjc_columns (int n) { return(3 + 7*(max(1, n)-1)); } // n = N_THRESH
-inline int get_n_prc_columns (int n) { return(3 + 3*(max(1, n)-1)); } // n = N_THRESH
-inline int get_n_eclv_columns (int n) { return(4 + 2*n); } // n = N_PNT
-inline int get_n_rhist_columns (int n) { return(2 + n); } // n = N_RANK
-inline int get_n_phist_columns (int n) { return(3 + n); } // n = N_BINS
-inline int get_n_relp_columns (int n) { return(2 + n); } // n = N_ENS
-inline int get_n_orank_columns (int n) { return(20 + n); } // n = N_ENS
+inline int get_n_mctc_columns (int n) { return(3 + n*n); } // n = N_CAT
+inline int get_n_pct_columns (int n) { return(3 + 3*(std::max(1, n)-1)); } // n = N_THRESH
+inline int get_n_pstd_columns (int n) { return(17 + std::max(1, n) ); } // n = N_THRESH
+inline int get_n_pjc_columns (int n) { return(3 + 7*(std::max(1, n)-1)); } // n = N_THRESH
+inline int get_n_prc_columns (int n) { return(3 + 3*(std::max(1, n)-1)); } // n = N_THRESH
+inline int get_n_eclv_columns (int n) { return(4 + 2*n); } // n = N_PNT
+inline int get_n_rhist_columns (int n) { return(2 + n); } // n = N_RANK
+inline int get_n_phist_columns (int n) { return(3 + n); } // n = N_BINS
+inline int get_n_relp_columns (int n) { return(2 + n); } // n = N_ENS
+inline int get_n_orank_columns (int n) { return(20 + n); } // n = N_ENS
////////////////////////////////////////////////////////////////////////
diff --git a/src/basic/vx_util/thresh_array.h b/src/basic/vx_util/thresh_array.h
index c3f6cafb2d..7a74dee69c 100644
--- a/src/basic/vx_util/thresh_array.h
+++ b/src/basic/vx_util/thresh_array.h
@@ -43,7 +43,7 @@ class ThreshArray {
void extend(int, bool exact = true);
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
bool operator==(const ThreshArray &) const;
SingleThresh operator[](int) const;
@@ -74,7 +74,7 @@ class ThreshArray {
void multiply_by(const double);
- void get_simple_nodes(vector &);
+ void get_simple_nodes(std::vector &);
ConcatString get_str(const char * = thresh_default_sep,
int precision = thresh_default_precision) const;
diff --git a/src/basic/vx_util_math/so3.h b/src/basic/vx_util_math/so3.h
index ecbfdbd952..dc4f1ad0c9 100644
--- a/src/basic/vx_util_math/so3.h
+++ b/src/basic/vx_util_math/so3.h
@@ -60,7 +60,7 @@ class SO3 {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
//
diff --git a/src/libcode/vx_afm/afm.h b/src/libcode/vx_afm/afm.h
index 2d00ad58ff..cbe3c34d27 100644
--- a/src/libcode/vx_afm/afm.h
+++ b/src/libcode/vx_afm/afm.h
@@ -51,7 +51,7 @@ class AfmBBox {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
int L;
int B;
@@ -82,7 +82,7 @@ class LigatureInfo {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
char * successor_name;
@@ -116,7 +116,7 @@ class AfmCharMetrics {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
int ascii_code;
@@ -154,7 +154,7 @@ class PCC {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
char * name;
@@ -184,7 +184,7 @@ class AfmCompositeInfo {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
char * name;
@@ -215,7 +215,7 @@ class KPX {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
char * name1;
@@ -249,7 +249,7 @@ class Afm {
void do_fontbbox(AfmLine &);
- ifstream * in; // used for reading
+ std::ifstream * in; // used for reading
int line_number; //
void patch_ligatures(LigatureInfo &);
@@ -263,7 +263,7 @@ class Afm {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
int read(const ConcatString&);
diff --git a/src/libcode/vx_afm/afm_line.h b/src/libcode/vx_afm/afm_line.h
index 3ccc32b241..07f3b5af8b 100644
--- a/src/libcode/vx_afm/afm_line.h
+++ b/src/libcode/vx_afm/afm_line.h
@@ -28,7 +28,7 @@
class AfmLine {
- friend istream & operator>>(istream &, AfmLine &);
+ friend std::istream & operator>>(std::istream &, AfmLine &);
private:
@@ -70,7 +70,7 @@ class AfmLine {
////////////////////////////////////////////////////////////////////////
-extern istream & operator>>(istream &, AfmLine &);
+extern std::istream & operator>>(std::istream &, AfmLine &);
////////////////////////////////////////////////////////////////////////
diff --git a/src/libcode/vx_afm/afm_token.h b/src/libcode/vx_afm/afm_token.h
index 158afed618..0153481327 100644
--- a/src/libcode/vx_afm/afm_token.h
+++ b/src/libcode/vx_afm/afm_token.h
@@ -44,7 +44,7 @@ class AfmToken {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
// void set_string(const char *);
void set_string(const ConcatString);
diff --git a/src/libcode/vx_analysis_util/by_case_info.h b/src/libcode/vx_analysis_util/by_case_info.h
index e95bd49846..1084c5331b 100644
--- a/src/libcode/vx_analysis_util/by_case_info.h
+++ b/src/libcode/vx_analysis_util/by_case_info.h
@@ -45,7 +45,7 @@ class ByCaseInfo {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
void add(const ModeLine &);
diff --git a/src/libcode/vx_analysis_util/mode_atts.h b/src/libcode/vx_analysis_util/mode_atts.h
index a20570ddc7..851a7eb653 100644
--- a/src/libcode/vx_analysis_util/mode_atts.h
+++ b/src/libcode/vx_analysis_util/mode_atts.h
@@ -65,7 +65,7 @@ class ModeAttributes {
void clear();
- void dump(ostream & out, int depth = 0) const;
+ void dump(std::ostream & out, int depth = 0) const;
int is_keeper(const ModeLine &) const;
@@ -587,7 +587,7 @@ class ModeAttributes {
////////////////////////////////////////////////////////////////////////
-extern void mode_atts_usage(ostream &);
+extern void mode_atts_usage(std::ostream &);
////////////////////////////////////////////////////////////////////////
diff --git a/src/libcode/vx_analysis_util/mode_job.h b/src/libcode/vx_analysis_util/mode_job.h
index 7e9c2668cc..e7d2958c44 100644
--- a/src/libcode/vx_analysis_util/mode_job.h
+++ b/src/libcode/vx_analysis_util/mode_job.h
@@ -62,13 +62,13 @@ class BasicModeAnalysisJob {
virtual void clear();
- virtual void dump(ostream &, int depth = 0) const;
+ virtual void dump(std::ostream &, int depth = 0) const;
virtual void add_column_by_name (const char *);
virtual void add_column_by_number (int); // numbers start at zero
- virtual void do_output(ostream &) const = 0;
+ virtual void do_output(std::ostream &) const = 0;
virtual void setup() = 0;
@@ -84,8 +84,8 @@ class BasicModeAnalysisJob {
int n_lines_read;
int n_lines_kept;
- ostream * dumpfile; // NOT allocated, so don't delete
- ostream * outfile; // NOT allocated, so don't delete
+ std::ostream * dumpfile; // NOT allocated, so don't delete
+ std::ostream * outfile; // NOT allocated, so don't delete
int n_dump; // number of lines written to dump file
AsciiTable dump_at; // AsciiTable object to buffer dump data
@@ -123,7 +123,7 @@ class SummaryJob : public BasicModeAnalysisJob {
void clear();
- void do_output(ostream &) const;
+ void do_output(std::ostream &) const;
void setup();
@@ -154,7 +154,7 @@ class ByCaseJob : public BasicModeAnalysisJob {
void clear();
- void do_output(ostream &) const;
+ void do_output(std::ostream &) const;
void setup();
diff --git a/src/libcode/vx_analysis_util/mode_line.h b/src/libcode/vx_analysis_util/mode_line.h
index d02d261449..9f111a4c47 100644
--- a/src/libcode/vx_analysis_util/mode_line.h
+++ b/src/libcode/vx_analysis_util/mode_line.h
@@ -48,7 +48,7 @@ class ModeLine : public DataLine {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
int read_line(LineDataFile *); // virtual from base class
diff --git a/src/libcode/vx_analysis_util/stat_job.cc b/src/libcode/vx_analysis_util/stat_job.cc
index af3c450c74..f82b0f6151 100644
--- a/src/libcode/vx_analysis_util/stat_job.cc
+++ b/src/libcode/vx_analysis_util/stat_job.cc
@@ -2046,9 +2046,9 @@ void STATAnalysisJob::setup_stat_file(int n_row, int n) {
case stat_prc: write_prc_header_row (1, n, stat_at, 0, 0); break;
case stat_eclv: write_eclv_header_row (1, n, stat_at, 0, 0); break;
case stat_mpr: write_header_row (mpr_columns, n_mpr_columns, 1, stat_at, 0, 0); break;
- case stat_nbrctc: write_header_row (nbrctc_columns, n_sl1l2_columns, 1, stat_at, 0, 0); break;
- case stat_nbrcts: write_header_row (nbrcts_columns, n_sl1l2_columns, 1, stat_at, 0, 0); break;
- case stat_nbrcnt: write_header_row (nbrcnt_columns, n_sl1l2_columns, 1, stat_at, 0, 0); break;
+ case stat_nbrctc: write_header_row (nbrctc_columns, n_nbrctc_columns, 1, stat_at, 0, 0); break;
+ case stat_nbrcts: write_header_row (nbrcts_columns, n_nbrcts_columns, 1, stat_at, 0, 0); break;
+ case stat_nbrcnt: write_header_row (nbrcnt_columns, n_nbrcnt_columns, 1, stat_at, 0, 0); break;
case stat_grad: write_header_row (grad_columns, n_grad_columns, 1, stat_at, 0, 0); break;
case stat_isc: write_header_row (isc_columns, n_isc_columns, 1, stat_at, 0, 0); break;
case stat_wdir: write_header_row (job_wdir_columns, n_job_wdir_columns, 1, stat_at, 0, 0); break;
diff --git a/src/libcode/vx_analysis_util/stat_job.h b/src/libcode/vx_analysis_util/stat_job.h
index 50cf4a91af..2645e884e2 100644
--- a/src/libcode/vx_analysis_util/stat_job.h
+++ b/src/libcode/vx_analysis_util/stat_job.h
@@ -117,7 +117,7 @@ class STATAnalysisJob {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
//////////////////////////////////////////////////////////////////
@@ -225,11 +225,11 @@ class STATAnalysisJob {
NumArray weight;
// Numeric column thresholds
- map column_thresh_map;
+ std::map column_thresh_map;
// ASCII column string matching
- map column_str_inc_map;
- map column_str_exc_map;
+ std::map column_str_inc_map;
+ std::map column_str_exc_map;
StringArray hdr_name;
StringArray hdr_value;
@@ -243,12 +243,12 @@ class STATAnalysisJob {
// Variables used to the store the analysis job specification
//
char *dump_row; // dump rows used to a file
- ofstream *dr_out; // output file stream for dump row
+ std::ofstream *dr_out; // output file stream for dump row
int n_dump; // number of lines written to dump row
AsciiTable dump_at; // AsciiTable for buffering dump row data
char *stat_file; // dump output statistics to a STAT file
- ofstream *stat_out; // output file stream for -out_stat
+ std::ofstream *stat_out; // output file stream for -out_stat
AsciiTable stat_at; // AsciiTable for buffering output STAT data
int stat_row; // Counter for the current stat row
diff --git a/src/libcode/vx_analysis_util/stat_line.h b/src/libcode/vx_analysis_util/stat_line.h
index e7b63ee9d5..6c2a4282d0 100644
--- a/src/libcode/vx_analysis_util/stat_line.h
+++ b/src/libcode/vx_analysis_util/stat_line.h
@@ -49,7 +49,7 @@ class STATLine : public DataLine {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
int read_line(LineDataFile *); // virtual from base class
diff --git a/src/libcode/vx_analysis_util/time_series.h b/src/libcode/vx_analysis_util/time_series.h
index 0474bc6503..10aab9b890 100644
--- a/src/libcode/vx_analysis_util/time_series.h
+++ b/src/libcode/vx_analysis_util/time_series.h
@@ -52,7 +52,7 @@ class TimeSeries {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
void set(unixtime _start, int _delta, int _n);
diff --git a/src/libcode/vx_color/color.h b/src/libcode/vx_color/color.h
index 986287aa6c..5c0126d2e5 100644
--- a/src/libcode/vx_color/color.h
+++ b/src/libcode/vx_color/color.h
@@ -67,7 +67,7 @@ class Color {
void reverse_video();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
bool is_gray () const;
@@ -172,7 +172,7 @@ class CtableEntry {
double value_low () const;
double value_high () const;
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
};
@@ -191,9 +191,9 @@ inline double CtableEntry::value_high() const { return ( ValueHi ); }
////////////////////////////////////////////////////////////////////////
-extern istream & operator>>(istream &, CtableEntry &);
+extern std::istream & operator>>(std::istream &, CtableEntry &);
-extern ostream & operator<<(ostream &, const CtableEntry &);
+extern std::ostream & operator<<(std::ostream &, const CtableEntry &);
////////////////////////////////////////////////////////////////////////
@@ -264,7 +264,7 @@ class ColorTable {
double gamma() const;
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
CtableEntry operator[](int) const;
diff --git a/src/libcode/vx_color/color_list.h b/src/libcode/vx_color/color_list.h
index 8bcee60348..aebf35b641 100644
--- a/src/libcode/vx_color/color_list.h
+++ b/src/libcode/vx_color/color_list.h
@@ -47,7 +47,7 @@ class ClistEntry {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
void set_name(const std::string);
@@ -102,7 +102,7 @@ class ColorList {
void clear();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
int n_elements() const;
diff --git a/src/libcode/vx_data2d/data_class.h b/src/libcode/vx_data2d/data_class.h
index 401cd4e0c7..06aecd0739 100644
--- a/src/libcode/vx_data2d/data_class.h
+++ b/src/libcode/vx_data2d/data_class.h
@@ -50,7 +50,7 @@ class Met2dData {
void mtdd_clear();
- virtual void dump(ostream &, int depth = 0) const = 0; // dump grid and filename, etc., not data
+ virtual void dump(std::ostream &, int depth = 0) const = 0; // dump grid and filename, etc., not data
//
// set stuff
@@ -105,7 +105,7 @@ class Met2dDataFile : public Met2dData {
void mtddf_clear();
- virtual void dump(ostream &, int depth = 0) const = 0; // dump grid and filename, etc., not data
+ virtual void dump(std::ostream &, int depth = 0) const = 0; // dump grid and filename, etc., not data
//
// set stuff
diff --git a/src/libcode/vx_data2d/level_info.h b/src/libcode/vx_data2d/level_info.h
index 445528017a..377550de62 100644
--- a/src/libcode/vx_data2d/level_info.h
+++ b/src/libcode/vx_data2d/level_info.h
@@ -63,7 +63,7 @@ class LevelInfo
void clear();
- void dump(ostream &) const;
+ void dump(std::ostream &) const;
//
// get stuff
diff --git a/src/libcode/vx_data2d/table_lookup.h b/src/libcode/vx_data2d/table_lookup.h
index d6ae3fa6f7..a234bf72bb 100644
--- a/src/libcode/vx_data2d/table_lookup.h
+++ b/src/libcode/vx_data2d/table_lookup.h
@@ -43,7 +43,7 @@ class Grib1TableEntry {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
int code;
int table_number;
@@ -94,7 +94,7 @@ class Grib2TableEntry {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
int index_a; // Section 0 Discipline
int mtab_set; // Section 1 Master Tables Version Number used by set_var
@@ -139,8 +139,8 @@ class TableFlatFile {
void assign(const TableFlatFile &);
- bool read_grib1(istream &, const char * filename, const int n);
- bool read_grib2(istream &, const char * filename, const int n);
+ bool read_grib1(std::istream &, const char * filename, const int n);
+ bool read_grib2(std::istream &, const char * filename, const int n);
void extend_grib1(int);
void extend_grib2(int);
@@ -164,7 +164,7 @@ class TableFlatFile {
void clear();
- void dump(ostream &, int = 0) const;
+ void dump(std::ostream &, int = 0) const;
//
// set stuff
diff --git a/src/libcode/vx_data2d/var_info.h b/src/libcode/vx_data2d/var_info.h
index d32715d130..7ac6399f6b 100644
--- a/src/libcode/vx_data2d/var_info.h
+++ b/src/libcode/vx_data2d/var_info.h
@@ -96,7 +96,7 @@ class VarInfo
void clear();
- virtual void dump(ostream &) const;
+ virtual void dump(std::ostream &) const;
//
// get stuff
@@ -158,7 +158,7 @@ class VarInfo
void set_req_name(const char *);
void set_name(const char *);
- void set_name(const string);
+ void set_name(const std::string);
void set_units(const char *);
void set_level_info(const LevelInfo &);
void set_req_level_name(const char *);
@@ -272,7 +272,7 @@ struct InputInfo {
class EnsVarInfo {
private:
- vector inputs; // Vector of InputInfo
+ std::vector inputs; // Vector of InputInfo
VarInfo * ctrl_info; // Field info for control member
public:
diff --git a/src/libcode/vx_data2d_factory/is_netcdf_file.cc b/src/libcode/vx_data2d_factory/is_netcdf_file.cc
index 805ce8ee81..3e72029514 100644
--- a/src/libcode/vx_data2d_factory/is_netcdf_file.cc
+++ b/src/libcode/vx_data2d_factory/is_netcdf_file.cc
@@ -25,6 +25,9 @@ using namespace std;
#include
#include
+#include
+using namespace netCDF;
+
#include "is_netcdf_file.h"
#include "vx_nc_util.h"
diff --git a/src/libcode/vx_data2d_grib/data2d_grib.h b/src/libcode/vx_data2d_grib/data2d_grib.h
index 6c72eaca1c..275d77b36e 100644
--- a/src/libcode/vx_data2d_grib/data2d_grib.h
+++ b/src/libcode/vx_data2d_grib/data2d_grib.h
@@ -78,7 +78,7 @@ class MetGrib1DataFile : public Met2dDataFile {
void close();
- void dump(ostream &, int depth = 0) const;
+ void dump(std::ostream &, int depth = 0) const;
bool read_record(const int, const bool read_plane = true);
diff --git a/src/libcode/vx_data2d_grib/grib_classes.h b/src/libcode/vx_data2d_grib/grib_classes.h
index 3b0295cf45..eab0f7b3ac 100644
--- a/src/libcode/vx_data2d_grib/grib_classes.h
+++ b/src/libcode/vx_data2d_grib/grib_classes.h
@@ -18,8 +18,6 @@
////////////////////////////////////////////////////////////////////////
-using namespace std;
-
#include
#include
#include
@@ -366,9 +364,9 @@ class GribRecord {
public:
- vector data; // allocated
+ std::vector data; // allocated
- vector bitmap; // allocated
+ std::vector bitmap; // allocated
Section0_Header * is; // allocated
unsigned char * pds; // allocated
@@ -579,13 +577,13 @@ extern double char4_to_dbl(const unsigned char *);
extern unsigned int char3_to_int(const unsigned char *);
extern unsigned int char2_to_int(const unsigned char *);
-extern ostream & operator<<(ostream &, const GribRecord &);
+extern std::ostream & operator<<(std::ostream &, const GribRecord &);
-extern ostream & operator<<(ostream &, const Section0_Header &);
-extern ostream & operator<<(ostream &, const Section1_Header &);
-extern ostream & operator<<(ostream &, const Section2_Header &);
-extern ostream & operator<<(ostream &, const Section3_Header &);
-extern ostream & operator<<(ostream &, const Section4_Header &);
+extern std::ostream & operator<<(std::ostream &, const Section0_Header &);
+extern std::ostream & operator<<(std::ostream &, const Section1_Header &);
+extern std::ostream & operator<<(std::ostream &, const Section2_Header &);
+extern std::ostream & operator<<(std::ostream &, const Section3_Header &);
+extern std::ostream & operator<<(std::ostream &, const Section4_Header &);
////////////////////////////////////////////////////////////////////////
diff --git a/src/libcode/vx_data2d_grib/grib_strings.h b/src/libcode/vx_data2d_grib/grib_strings.h
index 2fddd2dcef..0b51dd9121 100644
--- a/src/libcode/vx_data2d_grib/grib_strings.h
+++ b/src/libcode/vx_data2d_grib/grib_strings.h
@@ -13,20 +13,16 @@
////////////////////////////////////////////////////////////////////////
-using namespace std;
-
-////////////////////////////////////////////////////////////////////////
-
#include "vx_util.h"
////////////////////////////////////////////////////////////////////////
-static const string missing_str = "MISSING";
-static const char ugrd_abbr_str[] = "UGRD";
-static const char vgrd_abbr_str[] = "VGRD";
-static const string ugrd_vgrd_abbr_str = "UGRD_VGRD";
-static const string wind_abbr_str = "WIND";
-static const string wdir_abbr_str = "WDIR";
+static const std::string missing_str = "MISSING";
+static const char ugrd_abbr_str[] = "UGRD";
+static const char vgrd_abbr_str[] = "VGRD";
+static const std::string ugrd_vgrd_abbr_str = "UGRD_VGRD";
+static const std::string wind_abbr_str = "WIND";
+static const std::string wdir_abbr_str = "WDIR";
////////////////////////////////////////////////////////////////////////
diff --git a/src/libcode/vx_data2d_grib/var_info_grib.h b/src/libcode/vx_data2d_grib/var_info_grib.h
index 9a0b9bf4ce..ef5acef9dc 100644
--- a/src/libcode/vx_data2d_grib/var_info_grib.h
+++ b/src/libcode/vx_data2d_grib/var_info_grib.h
@@ -68,7 +68,7 @@ class VarInfoGrib : public VarInfo
VarInfoGrib(const VarInfoGrib &);
VarInfoGrib & operator=(const VarInfoGrib &);
- void dump(ostream &) const;
+ void dump(std::ostream &) const;
void clear();
//
diff --git a/src/libcode/vx_data2d_grib2/var_info_grib2.h b/src/libcode/vx_data2d_grib2/var_info_grib2.h
index a6bf0fcd5e..8f5bb6a7c5 100644
--- a/src/libcode/vx_data2d_grib2/var_info_grib2.h
+++ b/src/libcode/vx_data2d_grib2/var_info_grib2.h
@@ -19,8 +19,6 @@
#include