Skip to content

Commit

Permalink
Merge branch 'develop' into feature/vrfy_manual
Browse files Browse the repository at this point in the history
  • Loading branch information
apchoiCMD authored Nov 13, 2024
2 parents f696d74 + 1c5cc2e commit 312acd6
Show file tree
Hide file tree
Showing 60 changed files with 1,126 additions and 450 deletions.
16 changes: 7 additions & 9 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ while getopts "p:t:c:hvdfa" opt; do
done

case ${BUILD_TARGET} in
hera | orion | hercules | wcoss2 | noaacloud | gaea | gaeac6 )
hera | orion | hercules | wcoss2 | noaacloud | gaeac5 | gaeac6 )
echo "Building GDASApp on $BUILD_TARGET"
source $dir_root/ush/module-setup.sh
module use $dir_root/modulefiles
Expand Down Expand Up @@ -103,14 +103,12 @@ WORKFLOW_BUILD=${WORKFLOW_BUILD:-"OFF"}
CMAKE_OPTS+=" -DWORKFLOW_TESTS=${WORKFLOW_BUILD}"

# JCSDA changed test data things, need to make a dummy CRTM directory
if [[ $BUILD_TARGET == 'hera' ]]; then
if [ -d "$dir_root/bundle/fix/test-data-release/" ]; then rm -rf $dir_root/bundle/fix/test-data-release/; fi
if [ -d "$dir_root/bundle/test-data-release/" ]; then rm -rf $dir_root/bundle/test-data-release/; fi
mkdir -p $dir_root/bundle/fix/test-data-release/
mkdir -p $dir_root/bundle/test-data-release/
ln -sf $GDASAPP_TESTDATA/crtm $dir_root/bundle/fix/test-data-release/crtm
ln -sf $GDASAPP_TESTDATA/crtm $dir_root/bundle/test-data-release/crtm
fi
if [ -d "$dir_root/bundle/fix/test-data-release/" ]; then rm -rf $dir_root/bundle/fix/test-data-release/; fi
if [ -d "$dir_root/bundle/test-data-release/" ]; then rm -rf $dir_root/bundle/test-data-release/; fi
mkdir -p $dir_root/bundle/fix/test-data-release/
mkdir -p $dir_root/bundle/test-data-release/
ln -sf $GDASAPP_TESTDATA/crtm $dir_root/bundle/fix/test-data-release/crtm
ln -sf $GDASAPP_TESTDATA/crtm $dir_root/bundle/test-data-release/crtm

# Configure
echo "Configuring ..."
Expand Down
5 changes: 3 additions & 2 deletions mains/gdas.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ int runApp(int argc, char** argv, const std::string traits, const std::string ap

apps["converttostructuredgrid"] = []() {
return std::make_unique<oops::ConvertToStructuredGrid<Traits>>();
};
};
apps["convertstate"] = []() {
return std::make_unique<oops::ConvertState<Traits>>();
};
Expand All @@ -67,7 +67,7 @@ int runApp(int argc, char** argv, const std::string traits, const std::string ap
return std::make_unique<oops::HofX4D<Traits, ufo::ObsTraits>>();
};
apps["localensembleda"] = []() {
return std::make_unique<oops::LocalEnsembleDA<fv3jedi::Traits, ufo::ObsTraits>>();
return std::make_unique<oops::LocalEnsembleDA<Traits, ufo::ObsTraits>>();
};
apps["variational"] = []() {
return std::make_unique<oops::Variational<Traits, ufo::ObsTraits>>();
Expand Down Expand Up @@ -106,6 +106,7 @@ int main(int argc, char ** argv) {
const std::set<std::string> validApps = {
"converttostructuredgrid",
"convertstate",
"ensmean",
"hofx4d",
"localensembleda",
"variational"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ prepend_path("MODULEPATH", '/ncrc/proj/epic/spack-stack/spack-stack-1.6.0/envs/u
prepend_path("MODULEPATH", '/ncrc/proj/epic/rocoto/modulefiles')

-- below two lines get us access to the spack-stack modules
load("stack-intel/2023.1.0")
load("stack-cray-mpich/8.1.25")
load("stack-intel/2023.2.0")
load("stack-cray-mpich/8.1.28")
-- JCSDA has 'jedi-fv3-env/unified-dev', but we should load these manually as needed
load("cmake/3.23.1")
load("gettext/0.20.2")
Expand Down Expand Up @@ -44,11 +44,12 @@ load("fckit/0.11.0")
load("fiat/1.2.0")
load("ectrans/1.2.0")
load("fms/2023.04")
load("esmf/8.5.0")
load("atlas/0.35.1")
load("sp/2.5.0")
load("gsl-lite/0.37.0")
load("libjpeg/2.1.0")
load("krb5/1.16.3")
load("krb5/1.20.1")
load("libtirpc/1.3.3")
load("hdf/4.2.15")
load("jedi-cmake/1.4.0")
Expand Down Expand Up @@ -84,9 +85,9 @@ local mpinproc = '-n'
setenv('MPIEXEC_EXEC', mpiexec)
setenv('MPIEXEC_NPROC', mpinproc)

setenv("CRTM_FIX","/gpfs/f5/ufs-ard/world-shared/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/gpfs/f5/ufs-ard/world-shared/GDASApp/CI/data")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/gpfs/f5/ufs-ard/world-shared/GDASApp/CI/data/test")
setenv("CRTM_FIX","/gpfs/f5/nggps_emc/world-shared/GDASApp/fix/crtm/2.4.0")
setenv("GDASAPP_TESTDATA","/gpfs/f5/nggps_emc/world-shared/GDASApp/testdata")
setenv("GDASAPP_UNIT_TEST_DATA_PATH", "/gpfs/f5/nggps_emc/world-shared/GDASApp/unittestdata")

whatis("Name: ".. "pkgName")
whatis("Version: ".. "pkgVersion")
Expand Down
136 changes: 136 additions & 0 deletions parm/aero/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Search path for model and obs for JCB
# -------------------------------------
algorithm_path: "{{PARMgfs}}/gdas/jcb-algorithms"
app_path_algorithm: "{{PARMgfs}}/gdas/jcb-gdas/algorithm/aero"
app_path_model: "{{PARMgfs}}/gdas/jcb-gdas/model/aero"
app_path_observations: "{{PARMgfs}}/gdas/jcb-gdas/observations/aero"
app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle/aero"


# Places where we deviate from the generic file name of a yaml
# ------------------------------------------------------------
final_increment_to_latlon_file: aero_final_increment_gaussian
final_increment_file: aero_final_increment_cubed_sphere
model_file: aero_model_pseudo
initial_condition_file: aero_background # Initial conditions for 4D apps is background
background_error_file: "{{BERROR_YAML}}"

# Assimilation standard things (not prepended with model choice)
# ----------------------------
window_begin: "{{ AERO_WINDOW_BEGIN | to_isotime }}"
window_length: "{{ AERO_WINDOW_LENGTH }}"
bound_to_include: begin
minimizer: DRPCG
final_diagnostics_departures: anlmob
final_prints_frequency: PT3H
number_of_outer_loops: 2
analysis_variables: [mass_fraction_of_sulfate_in_air,
mass_fraction_of_hydrophobic_black_carbon_in_air,
mass_fraction_of_hydrophilic_black_carbon_in_air,
mass_fraction_of_hydrophobic_organic_carbon_in_air,
mass_fraction_of_hydrophilic_organic_carbon_in_air,
mass_fraction_of_dust001_in_air, mass_fraction_of_dust002_in_air,
mass_fraction_of_dust003_in_air, mass_fraction_of_dust004_in_air,
mass_fraction_of_dust005_in_air, mass_fraction_of_sea_salt001_in_air,
mass_fraction_of_sea_salt002_in_air, mass_fraction_of_sea_salt003_in_air,
mass_fraction_of_sea_salt004_in_air]

# Model things
# ------------
# Geometry
aero_layout_x: {{ layout_x | default(1, true) }}
aero_layout_y: {{ layout_y | default(1, true) }}
aero_npx_ges: {{ npx_ges | default(49, true) }}
aero_npy_ges: {{ npy_ges | default(49, true) }}
aero_npz_ges: {{ npz_ges | default(127, true) }}
aero_npx_anl: {{ npx_anl | default(49, true) }}
aero_npy_anl: {{ npy_anl | default(49, true) }}
aero_npz_anl: {{ npz_anl | default(127, true) }}
aero_npx_clim_b: {{ npx_clim_b | default(49, true) }}
aero_npy_clim_b: {{ npy_clim_b | default(49, true) }}
aero_npz_clim_b: {{ npz_anl | default(127, true) }}

aero_fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS

# Background
aero_background_path: ./bkg
aero_background_ensemble_path: ./ens/mem%mem%

# Default background time is for 3D applications
{% if DOIAU == True %}
aero_background_time_iso: "{{ AERO_WINDOW_BEGIN | to_isotime }}"
{% else %}
aero_background_time_iso: "{{ current_cycle | to_isotime }}"
{% endif %}
aero_cycle_time_iso: "{{ current_cycle | to_isotime }}"
aero_cycle_time_fv3: "{{ current_cycle | to_fv3time }}"

# time for background error calculation for next cycle
{% set offset_td = "+6H" | to_timedelta %}
{% set background_time = current_cycle | add_to_datetime(offset_td) %}
aero_background_error_time_iso: "{{ background_time | to_isotime }}"
aero_background_error_time_fv3: "{{ background_time | to_fv3time }}"

# Background error
aero_berror_data_directory: "{{ DATA }}/berror"
aero_berror_diffusion_directory: "{{ DATA }}/diffusion"
aero_standard_devation_path: ./stddev
aero_climatological_b_path: ./clm_stddev
aero_diagb_weight: {{ aero_diagb_weight | default(1.0, true) }}
aero_diagb_static_rescale_factor: {{aero_staticb_rescaling_factor | default(1.0, true) }}
aero_diagb_rescale_factor: {{aero_diagb_rescale | default(1.0, true) }}
aero_diagb_n_halo: {{ aero_diagb_n_halo | default(1, true) }}
aero_diagb_n_neighbors: {{ aero_diagb_n_neighbors | default(1, true) }}
aero_diagb_smooth_horiz_iter: {{ aero_diagb_smooth_horiz_iter | default(1, true) }}
aero_diagb_smooth_vert_iter: {{ aero_diagb_smooth_vert_iter | default(1, true) }}
aero_diffusion_iter: {{ aero_diffusion_iter | default(1, true) }}
aero_diffusion_horiz_len: {{ aero_diffusion_horiz_len | default(1.0, true)}}
aero_diffusion_fixed_val: {{ aero_diffusion_fixed_val | default(1.0, true)}}

# Forecasting
aero_forecast_timestep: "{{ BKG_TSTEP }}"

# Observation things
# ------------------
observations: all_observations

crtm_coefficient_path: "{{ DATA }}/crtm/"

# Naming conventions for observational files
aero_obsdataroot_path: "{{COM_OBS}}"

aero_obsdatain_path: "{{aero_obsdatain_path}}"
aero_obsdatain_prefix: "{{OPREFIX}}"
aero_obsdatain_suffix: ".tm00.nc"

aero_obsdataout_path: "{{aero_obsdataout_path}}"
aero_obsdataout_prefix: diag_
aero_obsdataout_suffix: "_{{ current_cycle | to_YMDH }}.nc"

# Naming conventions for bias correction files
aero_obsbiasroot_path: "{{COM_CHEM_ANALYSIS_PREV}}"

aero_obsbiasin_path: "{{DATA}}/obs/"
aero_obsbiasin_prefix: "{{GPREFIX}}"
aero_obsbiasin_suffix: ".satbias.nc"
aero_obstlapsein_prefix: "{{GPREFIX}}"
aero_obstlapsein_suffix: ".tlapse.txt"
aero_obsbiascovin_prefix: "{{GPREFIX}}"
aero_obsbiascovin_suffix: ".satbias_cov.nc"

aero_obsbiasout_path: "{{DATA}}/bc/"
aero_obsbiasout_prefix: "{{APREFIX}}"
aero_obsbiasout_suffix: ".satbias.nc"
aero_obsbiascovout_prefix: "{{APREFIX}}"
aero_obsbiascovout_suffix: ".satbias_cov.nc"

bias_files:
atms_n20: rad_varbc_params.tar
atms_npp: rad_varbc_params.tar
mtiasi_metop-a: rad_varbc_params.tar
mtiasi_metop-b: rad_varbc_params.tar
amsua_n19: rad_varbc_params.tar
ssmis_f17: rad_varbc_params.tar
ssmis_f18: rad_varbc_params.tar
cris-fsr_n20: rad_varbc_params.tar
cris-fsr_npp: rad_varbc_params.tar
10 changes: 10 additions & 0 deletions parm/aero/jcb-prototype_3dvar.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Algorithm
# ---------
algorithm: 3dfgat

# Observation things
# ------------------
observations:
- viirs_n20_aod
- viirs_npp_aod
# - viirs_n21_aod
5 changes: 3 additions & 2 deletions parm/atm/jcb-prototype_3dvar.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ observations:
- conventional_ps
- gnssro
# - gpsro
# - mtiasi_metop-a
# - mtiasi_metop-b
# - iasi_metop-a
# - iasi_metop-b
# - ompsnp_n20
- ompsnp_npp
# - ompstc_n20
Expand All @@ -29,3 +29,4 @@ observations:
# - satwnd.viirs_npp
# - scatwind_ascat_metop-a
# - snowcvr
# - abi_g16
4 changes: 2 additions & 2 deletions parm/atm/jcb-prototype_lgetkf.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ observations:
- conventional_ps
- gnssro
# - gpsro
# - mtiasi_metop-a
# - mtiasi_metop-b
# - iasi_metop-a
# - iasi_metop-b
# - ompsnp_n20
- ompsnp_npp
# - ompstc_n20
Expand Down
4 changes: 2 additions & 2 deletions parm/atm/jcb-prototype_lgetkf_observer.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ observations:
- conventional_ps
- gnssro
# - gpsro
# - mtiasi_metop-a
# - mtiasi_metop-b
# - iasi_metop-a
# - iasi_metop-b
# - ompsnp_n20
- ompsnp_npp
# - ompstc_n20
Expand Down
4 changes: 2 additions & 2 deletions parm/atm/jcb-prototype_lgetkf_solver.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ observations:
- conventional_ps
- gnssro
# - gpsro
# - mtiasi_metop-a
# - mtiasi_metop-b
# - iasi_metop-a
# - iasi_metop-b
# - ompsnp_n20
- ompsnp_npp
# - ompstc_n20
Expand Down
16 changes: 16 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_gsrcsr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"data_format" : "bufr_d",
"data_type" : "gsrcsr",
"cycle_type" : "{{ RUN }}",
"cycle_datetime" : "{{ current_cycle | to_YMDH }}",
"dump_directory" : "{{ DMPDIR }}",
"ioda_directory" : "{{ COM_OBS }}",
"subsets" : ['NC021046'],
"data_description" : "NC021046 ABI, GOES-16; NC021046 ABI, GOES-17, NC021046 ABI, GOES-18",
"data_provider" : "U.S. NOAA/NESDIS",
"sensor_info" : { "sensor_name": "ABI", "sensor_full_name": "Advanced Baseline Imager", "sensor_id": 617 },
"satellite_info" : [
{ "satellite_name": "g16", "satellite_full_name": "GOES-16", "satellite_id": 270, "launch time": "20171119" },
{ "satellite_name": "g17", "satellite_full_name": "GOES-17", "satellite_id": 271, "launch time": "20180301" },
{ "satellite_name": "g18", "satellite_full_name": "GOES-18", "satellite_id": 272, "launch time": "20220301" } ]
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ observations:

ioda:
backend: netcdf
obsdataout: "{{ COM_OBS }}/{{ RUN }}.t{{ cyc }}z.mtiasi_$(splitvar).tm00.nc"
obsdataout: "{{ COM_OBS }}/{{ RUN }}.t{{ cyc }}z.iasi_$(splitvar).tm00.nc"

dimensions:
- name: Channel
Expand Down
11 changes: 11 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_insitu_profile_argo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cycle_datetime: '{{ current_cycle | to_YMDH }}'
cycle_type: '{{ RUN }}'
data_description: 6-hrly in situ ARGO profiles
data_format: subpfl
data_provider: U.S. NOAA
data_type: argo
dump_directory: '{{ DMPDIR }}'
ioda_directory: '{{ COM_OBS }}'
source: NCEP data tank
subsets: SUBPFL
ocean_basin: '{{ OCEAN_BASIN_FILE }}'
11 changes: 11 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_insitu_profile_bathy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cycle_datetime: '{{ current_cycle | to_YMDH }}'
cycle_type: '{{ RUN }}'
data_description: 6-hrly in situ Bathythermal profiles
data_format: bathy
data_provider: U.S. NOAA
data_type: bathy
dump_directory: '{{ DMPDIR }}'
ioda_directory: '{{ COM_OBS }}'
source: NCEP data tank
subsets: BATHY
ocean_basin: '{{ OCEAN_BASIN_FILE }}'
11 changes: 11 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_insitu_profile_glider.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cycle_datetime: '{{ current_cycle | to_YMDH }}'
cycle_type: '{{ RUN }}'
data_description: 6-hrly in situ GLIDER profiles
data_format: subpfl
data_provider: U.S. NOAA
data_type: glider
dump_directory: '{{ DMPDIR }}'
ioda_directory: '{{ COM_OBS }}'
source: NCEP data tank
subsets: SUBPFL
ocean_basin: '{{ OCEAN_BASIN_FILE }}'
11 changes: 11 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_insitu_profile_tesac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cycle_datetime: '{{ current_cycle | to_YMDH }}'
cycle_type: '{{ RUN }}'
data_description: 6-hrly in situ TESAC profiles
data_format: tesac
data_provider: U.S. NOAA
data_type: tesac
dump_directory: '{{ DMPDIR }}'
ioda_directory: '{{ COM_OBS }}'
source: NCEP data tank
subsets: TESAC
ocean_basin: '{{ OCEAN_BASIN_FILE }}'
11 changes: 11 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_insitu_profile_xbtctd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cycle_datetime: '{{ current_cycle | to_YMDH }}'
cycle_type: '{{ RUN }}'
data_description: 6-hrly in situ XBT/XCTD profiles
data_format: xbtctd
data_provider: U.S. NOAA
data_type: xbtctd
dump_directory: '{{ DMPDIR }}'
ioda_directory: '{{ COM_OBS }}'
source: NCEP data tank
subsets: XBTCTD
ocean_basin: '{{ OCEAN_BASIN_FILE }}'
11 changes: 11 additions & 0 deletions parm/ioda/bufr2ioda/bufr2ioda_insitu_surface_trkob.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cycle_datetime: '{{ current_cycle | to_YMDH }}'
cycle_type: '{{ RUN }}'
data_description: 6-hrly in situ TRACKOB surface
data_format: trkob
data_provider: U.S. NOAA
data_type: trackob
dump_directory: '{{ DMPDIR }}'
ioda_directory: '{{ COM_OBS }}'
source: NCEP data tank
subsets: TRACKOB
ocean_basin: '{{ OCEAN_BASIN_FILE }}'
Loading

0 comments on commit 312acd6

Please sign in to comment.