3. Running EnKF¶
Input Data Required to Run EnKF¶
This chapter discusses the process of running EnKF cases. It includes:
- Discussions of the input data required to run EnKF.
- A detailed explanation of how to run both a regional and global EnKF with the released run scripts.
- Introduction to the files in a successful regional and global EnKF run directory
Input Data Required to Run EnKF¶
firstguess.mem001
firstguess.mem002
... ...
firstguess.ensmean
Please note that the number of allocated computer cores to run EnKF must be larger than the ensemble size. The ensemble members can be generated using various methods, such as:
- Using global/regional ensemble forecasts.
- Ensemble forecasts generated using multi-physics, multi-models, or adding random perturbations drawn from climatology.
- In cycling assimilation, using ensemble forecasts initialized from previous ensemble analyses generated by EnKF.
This version EnKF can use any of the following ensemble files as the background:
- ARW NetCDF forecast
- NMM NetCDF forecast
- GFS forecast files
For conventional observations:
diag_conv_ges.mem001 diag_conv_ges.mem002 ... ... diag_conv_ges.ensmean
For radiance observations:
diag_instrument_Satellite.mem001 (e.g. diag_hirs4_n19.mem001) diag_ instrument_Satellite.mem002 (e.g. diag_hirs4_n19.mem002) ... ... diag_ instrument_Satellite.ensmean (e.g. diag_hirs4_n19.ensmean)
These diag files contain a lot of information about each observation. For more details on the content of diag files, please refer to the GSI Users Guide Appendix A.2. The preparation of observations for EnKF assimilation is done within GSI, including quality control of observations, selection of observation types for assimilation, and observation error tuning. In the default namelist situation, NO additional online quality control of observations is performed in the EnKF analysis step (although there is an option to do the similar quality control of observations as the GSI variational scheme.)
for observation control:
convinfo - conventional data (prepufr) info file ozinfo - ozone retrieval info file satinfo - satellite channel info file
when satellite radiance data are assimilated, the following files are needed to do the adaptive radiance bias correction:
satbias_in - satellite bias correction coefficient file satbias_pc - satellite bias correction coefficient file for passive channels
Note that this version EnKF uses adaptive bias correction. The bias correction coefficients are in a single file that combined satellite angle dependent and mass bias correction coefficients. See GSI Users Guide for more detail. When the namelist parameter readin_localization is set to true, file hybens_locinfo is needed, in which customized localization values varying by model level are contained.
EnKF and GSI Observer Run Scripts¶
In this release version, four sample run scripts for EnKF applications
are under directory comGSIv3.7_EnKFv1.3/run
:
- ush/comgsi_run_regional.ksh for running regional GSI to generate the observation ensemble priors. Referred to as the GSI observer run scripts.
- ush/comgsi_run_global.ksh is GSI observer run script for global applications (to generate the observation ensemble priors).
- ush/comenkf_run_regional.ksh for running regional EnKF
- ush/comenkf_run_global.ksh for running global EnKF
These run scripts are introduced in detail in the following sections. Also provided are three scripts for generating the GSI and EnKF namelist:
- ush/comgsi_namelist.sh generates GSI namelist on the fly (called by GSI observer run scripts).
- ush/comgsi_namelist_gfs.sh generates GSI namelist on the fly (called by GSI observer run scripts) for global GSI applications.
- ush/comenkf_namelist.sh generates EnKF namelist on the fly (called by EnKF run script) for regional EnKF applications.
General Introduction to the Run Scripts¶
These run scripts provide the run time environment necessary for running the GSI and EnKF executables. They all have similar steps, as follows:
- Request computer resources to run GSI/EnKF.
- Set environmental variables for the machine architecture.
- Set experimental variables (such as experiment name, analysis time, background, and observation).
- Check the definitions of required variables. Generate a run directory for GSI/EnKF
- Copy the GSI/EnKF executable to the run directory.
- Copy/Link the background file/ensemble files to the run directory.
- Link observations to the run directory.
- Link fixed files (statistic, control, and coefficient files) to the run directory.
- Generate namelist for GSI/EnKF.
- Run the GSI/EnKF executable.
- Post-process: save analysis results, generate diagnostic files, clean run directory.
In the GSI Users Guide, three sections explain the first three steps in detail:
- Section 3.2.2.1: Setting up the machine environment (step 1)
- Section 3.2.2.2: Setting up the running environment (step 2)
- Section 3.2.2.3: Setting up an analysis case (step 3)
For this documentation, the first 2 steps will be skipped and the 3rd step in the GSI observer and EnKF run scripts will be discussed. The community GSI analysis run script and the GSI observer run script are the same, with the GSI observer capability controlled by flags that turn off the minimization, select appropriate namelist options and enable looping through all the ensemble members to generate the ensemble observation priors for each member, including the ensemble mean.
GSI Observer Run Scripts¶
Setting up a case¶
This section discusses variables specific to the users case, such as analysis time, working directory, background and observation files, location of fixed files and CRTM coefficients, and the GSI executable file. The script looks like:
#####################################################
# case set up (users should change this part)
#####################################################
#
# ANAL_TIME= analysis time (YYYYMMDDHH)
# WORK_ROOT= working directory, where GSI runs
# PREPBURF = path of PreBUFR conventional obs
# BK_FILE = path and name of background file
# OBS_ROOT = path of observations files
# FIX_ROOT = path of fix files
# GSI_EXE = path and name of the gsi executable
# ENS_ROOT = path where ensemble background files exist
ANAL_TIME=2017051318
JOB_DIR=the_job_directory
#normally you put run scripts here and submit jobs form here,
#require a copy of gsi.x at this directory
RUN_NAME=a_descriptive_run_name_such_as_case05_3denvar_etc
OBS_ROOT=the_directory_where_observation_files_are_located
BK_ROOT=the_directory_where_background_files_are_located
GSI_ROOT=the_comgsi_main directory where src/ ush/ fix/ etc are located
CRTM_ROOT=the_CRTM_directory
ENS_ROOT=the_directory_where_ensemble_backgrounds_are_located
#ENS_ROOT is not required if not running hybrid EnVAR
HH=`echo $ANAL_TIME | cut -c9-10`
GSI_EXE=${JOB_DIR}/gsi.x #assume you have a copy of gsi.x here
WORK_ROOT=${JOB_DIR}/${RUN_NAME}
FIX_ROOT=${GSI_ROOT}/fix
GSI_NAMELIST=${GSI_ROOT}/ush/comgsi_namelist.sh
PREPBUFR=${OBS_ROOT}/nam.t${HH}z.prepbufr.tm00
BK_FILE=${BK_ROOT}/wrfinput_d01.${ANAL_TIME}
The options ANAL_TIME, WORK_ROOT, PREPBURF, BK_FILE, OBS_ROOT, FIX_ROOT, GSI_EXE are all the same settings as the GSI analysis configuration. Two options: BK_ROOT , GSI_ROOT, are the root directories for ensemble members and the GSI system. These exist to make links to the background and GSI system easy and shorter. The new option: GSI_NAMELIST is needed because the namelist section was taken out of the run scripts in this release as a separate file to improve the structure and readability of the run scripts. Users can find the namelist files for both GSI and EnKF in the same directory as the run scripts. Please note the option BK_FILE is pointing to the ensemble mean. The next part of this block has additional options to specify other important aspects of the GSI observer.
#------------------------------------------------
# bk_core= which WRF core is used as background (NMM or ARW or NMMB)
# bkcv_option= which background error covariance and parameter will be used
# (GLOBAL or NAM)
# if_clean = clean : delete temperal files in working directory (default)
# no : leave running directory as is (this is for debug only)
# if_observer = Yes : only used as observation operater for enkf
# if_hybrid = Yes : Run GSI as 3D/4D EnVar
# if_4DEnVar = Yes : Run GSI as 4D EnVar
# if_nemsio = Yes : The GFS background files are in NEMSIO format
# if_oneob = Yes : Do single observation test
if_hybrid=No # Yes, or, No -- case sensitive !
if_4DEnVar=No # Yes, or, No -- case sensitive (set if_hybrid=Yes first)!
if_observer=No # Yes, or, No -- case sensitive !
if_nemsio=No # Yes, or, No -- case sensitive !
if_oneob=No # Yes, or, No -- case sensitive !
bk_core=ARW
bkcv_option=NAM
if_clean=clean
...
# The following two only apply when if_observer = Yes, i.e. run observation operator for EnKF
# no_member number of ensemble members
# BK_FILE_mem path and base for ensemble members
no_member=20
BK_FILE_mem=${BK_ROOT}/wrfarw.mem
The options bk_core, bkcv_option, and, if_clean are the same as in the GSI analysis run scripts. The new option if_observer indicates if this GSI run is for the generation of the observation ensemble priors or for a regular GSI run. The new option no_member specifies the number of ensemble members that are need to be calculated for the observation ensemble priors. This should also be the ensemble number in the EnKF analysis. Option BK_FILE_mem is the path and the name of the ensembles without the ensemble member ID appended. The scripts will add the ensemble member ID as a three digital number, such as 000, 001,….
Loop through ensemble members¶
As mentioned previously, the GSI ensemble observer run scripts are the same as the GSI analysis run scripts released with the community GSI. Since the observer only generates diag files, which includes useful information on the observation innovation, the GSI outer loop number for the observer should be set to 0 to skip all minimization iterations.
The contents of the run scripts can be divided into two parts, those before the following comments and those after:
#################################################
# start to calculate diag files for each member
#################################################
Before this comment, the scripts have the same functionality as when running a GSI analysis, except that the background options in the scripts for the observer funcationality are set for the ensemble mean. Additionally, the namelist is built with the two following options set, which skips the minimization and saves all observation processing from the ensemble mean:
if [ ${if_observer} = Yes ] ; then
nummiter=0
if_read_obs_save='.true.'
if_read_obs_skip='.false.'
else
Please refer to the GSI users guide for detailed explanation of the remainder of this portion of the run scripts. The second portion of the script loops through each member to calculate the observation ensemble priors based on the GSI run environments setup by the first portion.
Listed below is an annotated version of the 2nd part of the GSI observer run script with explanations on each function block.
if [ ${if_observer} = Yes ] ; then
This 2nd part of the script only runs if option if_observer is set to “Yes”. The diag files from the ensemble mean need to be saved first with the following commands:
string=ges
for type in $listall; do
count=0
if [[ -f diag_${type}_${string}.${ANAL_TIME} ]]; then
mv diag_${type}_${string}.${ANAL_TIME} diag_${type}_${string}.ensmean
fi
done
mv wrf_inout wrf_inout_ensmean
The following section builds the namelist for ensemble members. Please note two options need to be set different between mean and members:
# Build the GSI namelist on-the-fly for each member
nummiter=0
if_read_obs_save='.false.'
if_read_obs_skip='.true.'
. $GSI_NAMELIST
The option if_read_obs_save and if_read_obs_skip switch from “True” and “False”, respectively for the mean to “False” and “True”, respectively for the ensemble members.
This saves all observation processing information (including bias correction, thinning, etc) from the ensemble mean and save the same information for the ensemble members to keep observations constant.
The script loops through each ensemble member (from member 001 to no_member) to create the diag files for each member:
# Loop through each member
loop="01"
ensmem=1
while [[ $ensmem -le $no_member ]];do
rm pe0*
print "\$ensmem is $ensmem"
ensmemid=`printf %3.3i $ensmem`
After a member is processed, the script removes the old ensemble member and links to the new member before rerunning the calculation:
# get new background for each member
if [[ -f wrf_inout ]]; then
rm wrf_inout
fi
BK_FILE=${BK_FILE_mem}${ensmemid}
echo $BK_FILE
ln -s $BK_FILE wrf_inout
Run the GSI observer for this member:
# run GSI
echo ' Run GSI with' ${bk_core} 'for member ', ${ensmemid}
case $ARCH in
'IBM_LSF')
${RUN_COMMAND} ./gsi.exe < gsiparm.anl > stdout_mem${ensmemid} 2>&1 ;;
* )
${RUN_COMMAND} ./gsi.exe > stdout_mem${ensmemid} 2>&1 ;;
esac
# run time error check and save run time file status
error=$?
if [ ${error} -ne 0 ]; then
echo "ERROR: ${GSI} crashed for member ${ensmemid} Exit status=${error}"
exit ${error}
fi
ls -l * > list_run_directory_mem${ensmemid}
Generate diag files for this member:
# generate diag files
for type in $listall; do
count=`ls pe*${type}_${loop}* | wc -l`
if [[ $count -gt 0 ]]; then
cat pe*${type}_${loop}* > diag_${type}_${string}.mem${ensmemid}
fi
done
# next member
(( ensmem += 1 ))
done
fi
Since all members are using the same run directory, the run status of each member is overwriten by the following member. The stdout file and the file list in run directory are preserved with the ensemble member ID for debug.
Sample Regional EnKF Run Scripts¶
As described in section 3.2.1, the regional EnKF run scripts have been designed to have a similar structure to the GSI analysis and observer run scripts. Again, please refer to the GSI Users Guide section 3.2.2.1 and 3.2.2.2 for the first two steps.
The 3rd step is to setup the variables specific to the users case, such as analysis time, working directory, background and observation files, location of fixed files and CRTM coefficients, and the EnKF executable. Most of the options in this portion are the same as the 3rd step in the GSI observer run scripts, which is discussed in section 3.2.2 of this Users Guide. Users should setup most of the variables in this portion based on the options in the GSI observer run scripts as they are the variables to setup the same things for the GSI and EnKF. The following is a sample script with explanations:
#####################################################
# case set up (users should change this part)
#####################################################
#
# ANAL_TIME= analysis time (YYYYMMDDHH)
# WORK_ROOT= working directory, where GSI runs
# PREPBURF = path of PreBUFR conventional obs
# OBS_ROOT = path of observations files
# FIX_ROOT = path of fix files
# ENKF_EXE = path and name of the EnKF executable
ANAL_TIME=2014021300 #used by comenkf_namelist.sh
JOB_DIR=the_job_directory
#normally you put run scripts here and submit jobs form here, require a copy of enkf_wrf.x at this directory
RUN_NAME=a_descriptive_run_name_such_as_case05_3denvar_etc
OBS_ROOT=the_directory_where_observation_files_are_located
BK_ROOT=the_directory_where_background_files_are_located
GSI_ROOT=the_comgsi_main directory where src/ ush/ fix/ etc are located
CRTM_ROOT=the_CRTM_directory
diag_ROOT=the_observer_directory_where_diag_files_exist
ENKF_EXE=${JOB_DIR}/enkf_wrf.x
WORK_ROOT=${JOB_DIR}/${RUN_NAME}
FIX_ROOT=${GSI_ROOT}/fix
ENKF_NAMELIST=${GSI_ROOT}/ush/comenkf_namelist.sh
Options ANAL_TIME, BK_ROOT, BK_FILE, GSI_ROOT, FIX_ROOT, CRTM_ROOT have the same meanings as the ensemble GSI observer run scripts and should be set to the same values as the ensemble GSI observer run scripts. The option WORK_ROOT is the working directory which should have enough space to hold the ensemble members and EnKF analysis results. The option diag_ROOT is pointing to the run directory of the GSI observer, where the diag files are generated as data input for the EnKF. The option ENKF_EXE points to the EnKF executable, which is under the GSI source code directory in this release. The option ENKF_NAMELIST is the path and the EnKF namelist file, which sits outside of the run script as a separate file like the GSI namelist. Users can find the namelist files for both GSI and the EnKF in the same directory as the run scripts.
The next part of this block includes several additional options that specify several aspects of the ensemble members.
# ensemble parameters
#
NMEM_ENKF=20
BK_FILE_mem=${BK_ROOT}/wrfarw
NLONS=129
NLATS=70
NLEVS=50
IF_ARW=.true.
IF_NMM=.false.
list="conv"
# list="conv amsua_n18 mhs_n18 hirs4_n19"
Options NMEM_ENKF, BK_FILE_mem are also in the GSI observer run script and should be set to the same values as the GSI observer run script. Options NLONS, NLATS, and NLEVS specify 3 dimensions (XYZ ) of the ensemble grid. Options IF_ARW and IF_NMM indicates which background, ARW NetCDF ensemble or the NMM NetCDF ensemble, is used in this EnKF run. Option list is a list of the observation types that the EnKF will use in the analysis. This list should be based on the diag files generated by the ensemble GSI observer.
At this point, users should be able to run the EnKF for simple cases without changing the rest of the script. However, some advanced users may need to change some of the following blocks for special applications.
#####################################################
# Users should NOT change script after this point
#####################################################
The next block sets the run command to run EnKF on multiple platforms. The ARCH is set at the beginning of the script.
case $ARCH in
'IBM_LSF')
###### IBM LSF (Load Sharing Facility)
RUN_COMMAND="mpirun.lsf " ;;
'LINUX')
if [ $GSIPROC = 1 ]; then
#### Linux workstation - single processor
RUN_COMMAND=""
else
###### Linux workstation - mpi run
RUN_COMMAND="mpirun -np ${GSIPROC} -machinefile ~/mach "
fi ;;
'LINUX_LSF')
###### LINUX LSF (Load Sharing Facility)
RUN_COMMAND="mpirun.lsf " ;;
'LINUX_PBS')
#### Linux cluster PBS (Portable Batch System)
# RUN_COMMAND="mpirun -np ${GSIPROC} " ;;
RUN_COMMAND="mpiexec_mpt -n ${GSIPROC} " ;;
'DARWIN_PGI')
### Mac - mpi run
if [ $GSIPROC = 1 ]; then
#### Mac workstation - single processor
RUN_COMMAND=""
else
###### Mac workstation - mpi run
RUN_COMMAND="mpirun -np ${GSIPROC} -machinefile ~/mach "
fi ;;
* )
print "error: $ARCH is not a supported platform configuration."
exit 1 ;;
esac
The following block sets up fixed files and some analysis-time related values:
# Given the analysis date, compute the date from which the
# first guess comes. Extract cycle and set prefix and suffix
# for guess and observation data files
# gdate=`$ndate -06 $adate`
gdate=$ANAL_TIME
YYYYMMDD=`echo $adate | cut -c1-8`
HH=`echo $adate | cut -c9-10`
# Fixed files
# CONVINFO=${FIX_ROOT}/global_convinfo.txt
# SATINFO=${FIX_ROOT}/global_satinfo.txt
# SCANINFO=${FIX_ROOT}/global_scaninfo.txt
# OZINFO=${FIX_ROOT}/global_ozinfo.txt
CONVINFO=${diag_ROOT}/convinfo
SATINFO=${diag_ROOT}/satinfo
SCANINFO=${diag_ROOT}/scaninfo
OZINFO=${diag_ROOT}/ozinfo
# LOCINFO=${FIX_ROOT}/global_hybens_locinfo.l64.txt
The next block creates a working directory (workdir
) in which EnKF
will run. The directory should have enough disk space to hold all the
files needed for this run. This directory is cleaned before each run,
therefore, save all the files needed from the previous run before
rerunning EnKF.
# Set up workdir
rm -rf $WORK_ROOT
mkdir -p $WORK_ROOT
cd $WORK_ROOT
After creating a working directory, copy or link the EnKF executable, ensembles, diag files (observations), bias correction coefficients, and fixed files into the working directory.
cp $ENKF_EXE ./enkf.x
cp $CONVINFO ./convinfo
cp $SATINFO ./satinfo
cp $SCANINFO ./scaninfo
cp $OZINFO ./ozinfo
# cp $LOCINFO ./hybens_locinfo
cp $diag_ROOT/satbias_in ./satbias_in
cp $diag_ROOT/satbias_pc ./satbias_pc
# get mean
ln -s ${BK_FILE_mem}.ensmean ./firstguess.ensmean
for type in $list; do
ln -s $diag_ROOT/diag_${type}_ges.ensmean .
done
# get each member
imem=1
while [[ $imem -le $NMEM_ENKF ]]; do
member="mem"`printf %03i $imem`
ln -s ${BK_FILE_mem}.${member} ./firstguess.${member}
for type in $list; do
ln -s $diag_ROOT/diag_${type}_ges.${member} .
done
(( imem = $imem + 1 ))
done
The following script is used to generate the EnKF namelist called enkf.nml in the working directory. Some namelist variables are explained in detail in Section 4.3. Appendix A gives a full list of namelist options.
# Build the GSI namelist on-the-fly
. $ENKF_NAMELIST
cat << EOF > enkf.nml
$enkf_namelist
EOF
Copy the ensemble background files to the working directory and rename
them as "analysis.${member}"
. The EnKF will update those files as
the analysis results.
# make analysis files
cp firstguess.ensmean analysis.ensmean
# get each member
imem=1
while [[ $imem -le $NMEM_ENKF ]]; do
member="mem"`printf %03i $imem`
cp firstguess.${member} analysis.${member}
(( imem = $imem + 1 ))
done
The following block runs EnKF and checks if the EnKF has successfully completed.
###################################################
# run EnKF
###################################################
echo ' Run EnKF'
${RUN_COMMAND} ./enkf.x < enkf.nml > stdout 2>&1
##################################################################
# run time error check
##################################################################
error=$?
if [ ${error} -ne 0 ]; then
echo "ERROR: ${ENKF_EXE} crashed Exit status=${error}"
exit ${error}
fi
If this point is reached, the EnKF successfully finishes and exits with 0:
exit
Understanding Resulting Files in GSI Observer and EnKF Run Directory¶
To check if the GSI observer and EnKF runs have been successfully finished, it is important to understand the meaning of each file in the run directory.
The GSI Observer Run Directory¶
After customizing the GSI observer run script to your personal environment, it may be submitted to the batch system just as any other job. Following a successful run, the majority of the files in the GSI observer run directory will be the same as those in a sucessful GSI analysis run directory. The difference for the observer run is that the GSI observer generates more diag and stdout files related to each ensemble member. Below is an example of the files generated in the run directory from a GSI observer run:
amsuabufr diag_amsua_n18_ges.mem010 fit_t1.2014021300 mhsbufr
amsubbufr diag_amsua_n18_ges.mem011 fit_w1.2014021300 obs_input.0001
anavinfo diag_amsua_n18_ges.mem012 fort.201 obs_input.0002
berror_stats diag_amsua_n18_ges.mem013 fort.202 obs_input.0003
convinfo diag_amsua_n18_ges.mem014 fort.203 obs_input.0004
diag_amsua_metop-a_ges.ensmean diag_amsua_n18_ges.mem015 fort.204 obs_input.0006
diag_amsua_metop-a_ges.mem001 diag_amsua_n18_ges.mem016 fort.205 obs_input.0010
diag_amsua_metop-a_ges.mem002 diag_amsua_n18_ges.mem017 fort.206 obs_input.0019
diag_amsua_metop-a_ges.mem003 diag_amsua_n18_ges.mem018 fort.207 obs_input.0021
diag_amsua_metop-a_ges.mem004 diag_amsua_n18_ges.mem019 fort.208 obs_input.0022
diag_amsua_metop-a_ges.mem005 diag_amsua_n18_ges.mem020 fort.209 obs_input.0026
diag_amsua_metop-a_ges.mem006 diag_conv_ges.ensmean fort.210 obs_input.0027
diag_amsua_metop-a_ges.mem007 diag_conv_ges.mem001 fort.211 obs_input.0028
diag_amsua_metop-a_ges.mem008 diag_conv_ges.mem002 fort.212 obs_input.0029
diag_amsua_metop-a_ges.mem009 diag_conv_ges.mem003 fort.213 obs_input.0030
diag_amsua_metop-a_ges.mem010 diag_conv_ges.mem004 fort.214 obs_input.common
diag_amsua_metop-a_ges.mem011 diag_conv_ges.mem005 fort.215 ozinfo
diag_amsua_metop-a_ges.mem012 diag_conv_ges.mem006 fort.217 pcpbias_out
diag_amsua_metop-a_ges.mem013 diag_conv_ges.mem007 fort.218 pcpinfo
diag_amsua_metop-a_ges.mem014 diag_conv_ges.mem008 fort.219 prepbufr
diag_amsua_metop-a_ges.mem015 diag_conv_ges.mem009 fort.220 prepobs_prep.bufrtable
diag_amsua_metop-a_ges.mem016 diag_conv_ges.mem010 fort.221 satbias_ang.out
diag_amsua_metop-a_ges.mem017 diag_conv_ges.mem011 fort.223 satbias_in
diag_amsua_metop-a_ges.mem018 diag_conv_ges.mem012 fort.224 satbias_out
diag_amsua_metop-a_ges.mem019 diag_conv_ges.mem013 fort.225 satbias_out.int
diag_amsua_metop-a_ges.mem020 diag_conv_ges.mem014 fort.226 satbias_pc
diag_amsua_n15_ges.ensmean diag_conv_ges.mem015 fort.227 satbias_pc.out
diag_amsua_n15_ges.mem001 diag_conv_ges.mem016 fort.228 satinfo
diag_amsua_n15_ges.mem002 diag_conv_ges.mem017 fort.229 sigf03
diag_amsua_n15_ges.mem003 diag_conv_ges.mem018 fort.230 stdout
diag_amsua_n15_ges.mem004 diag_conv_ges.mem019 gpsrobufr stdout.anl.2014021300
diag_amsua_n15_ges.mem005 diag_conv_ges.mem020 gsi.exe stdout_mem001
diag_amsua_n15_ges.mem006 diag_hirs4_metop-a_ges.ensmean gsiparm.anl stdout_mem002
diag_amsua_n15_ges.mem007 diag_hirs4_metop-a_ges.mem001 hirs3bufr stdout_mem003
diag_amsua_n15_ges.mem008 diag_hirs4_metop-a_ges.mem002 hirs4bufr stdout_mem004
diag_amsua_n15_ges.mem009 diag_hirs4_metop-a_ges.mem003 l2rwbufr stdout_mem005
diag_amsua_n15_ges.mem010 diag_hirs4_metop-a_ges.mem004 list_run_directory stdout_mem006
diag_amsua_n15_ges.mem011 diag_hirs4_metop-a_ges.mem005 list_run_directory_mem001 stdout_mem007
diag_amsua_n15_ges.mem012 diag_hirs4_metop-a_ges.mem006 list_run_directory_mem002 stdout_mem008
diag_amsua_n15_ges.mem013 diag_hirs4_metop-a_ges.mem007 list_run_directory_mem003 stdout_mem009
diag_amsua_n15_ges.mem014 diag_hirs4_metop-a_ges.mem008 list_run_directory_mem004 stdout_mem010
diag_amsua_n15_ges.mem015 diag_hirs4_metop-a_ges.mem009 list_run_directory_mem005 stdout_mem011
diag_amsua_n15_ges.mem016 diag_hirs4_metop-a_ges.mem010 list_run_directory_mem006 stdout_mem012
diag_amsua_n15_ges.mem017 diag_hirs4_metop-a_ges.mem011 list_run_directory_mem007 stdout_mem013
diag_amsua_n15_ges.mem018 diag_hirs4_metop-a_ges.mem012 list_run_directory_mem008 stdout_mem014
diag_amsua_n15_ges.mem019 diag_hirs4_metop-a_ges.mem013 list_run_directory_mem009 stdout_mem015
diag_amsua_n15_ges.mem020 diag_hirs4_metop-a_ges.mem014 list_run_directory_mem010 stdout_mem016
diag_amsua_n18_ges.ensmean diag_hirs4_metop-a_ges.mem015 list_run_directory_mem011 stdout_mem017
diag_amsua_n18_ges.mem001 diag_hirs4_metop-a_ges.mem016 list_run_directory_mem012 stdout_mem018
diag_amsua_n18_ges.mem002 diag_hirs4_metop-a_ges.mem017 list_run_directory_mem013 stdout_mem019
diag_amsua_n18_ges.mem003 diag_hirs4_metop-a_ges.mem018 list_run_directory_mem014 stdout_mem020
diag_amsua_n18_ges.mem004 diag_hirs4_metop-a_ges.mem019 list_run_directory_mem015 wrfanl.2014021300
diag_amsua_n18_ges.mem005 diag_hirs4_metop-a_ges.mem020 list_run_directory_mem016 wrf_inout
diag_amsua_n18_ges.mem006 errtable list_run_directory_mem017 wrf_inout_ensmean
diag_amsua_n18_ges.mem007 fit_p1.2014021300 list_run_directory_mem018
diag_amsua_n18_ges.mem008 fit_q1.2014021300 list_run_directory_mem019
diag_amsua_n18_ges.mem009 fit_rad1.2014021300 list_run_directory_mem020
This case was a regional analysis with WRF/ARW NetCDF backgrounds. In this case, 20 ensemble members are used to generate the diag files. A brief introduction of the additional files in the GSI observer runs is given below:
- diag_conv_ges.mem??? - Diag files of conventional observations for ensemble member ???.
- diag_conv_ges.ensmean - Diag files of satellite radiance observation for ensemble mean.
- stdout_mem??? - Standard output from GSI observer run for ensemble member ???.
- list_run_directory_mem??? - The list of the files in the run directory after the GSI observer is finished for ensemble member ???.
Files in the EnKF Run Directory¶
After customizing the EnKF run script to your personal environment, it may be submitted to the batch system just as any other job. Upon successful assimilation, the ensemble analyses (both members and ensemble mean), covariance inflation factor to the ensemble analyses, and updated satellite bias correction coefficients (if requested) are output in the run directory. Below is an example of the files generated in the run directory from one of the EnKF regional test cases:
analysis.ensmean diag_amsua_n18_ges.mem003 diag_conv_ges.mem008 firstguess.mem002
analysis.mem001 diag_amsua_n18_ges.mem004 diag_conv_ges.mem009 firstguess.mem003
analysis.mem002 diag_amsua_n18_ges.mem005 diag_conv_ges.mem010 firstguess.mem004
analysis.mem003 diag_amsua_n18_ges.mem006 diag_conv_ges.mem011 firstguess.mem005
analysis.mem004 diag_amsua_n18_ges.mem007 diag_conv_ges.mem012 firstguess.mem006
analysis.mem005 diag_amsua_n18_ges.mem008 diag_conv_ges.mem013 firstguess.mem007
analysis.mem006 diag_amsua_n18_ges.mem009 diag_conv_ges.mem014 firstguess.mem008
analysis.mem007 diag_amsua_n18_ges.mem010 diag_conv_ges.mem015 firstguess.mem009
analysis.mem008 diag_amsua_n18_ges.mem011 diag_conv_ges.mem016 firstguess.mem010
analysis.mem009 diag_amsua_n18_ges.mem012 diag_conv_ges.mem017 firstguess.mem011
analysis.mem010 diag_amsua_n18_ges.mem013 diag_conv_ges.mem018 firstguess.mem012
analysis.mem011 diag_amsua_n18_ges.mem014 diag_conv_ges.mem019 firstguess.mem013
analysis.mem012 diag_amsua_n18_ges.mem015 diag_conv_ges.mem020 firstguess.mem014
analysis.mem013 diag_amsua_n18_ges.mem016 diag_gome_metop-a_ges.ensmean firstguess.mem015
analysis.mem014 diag_amsua_n18_ges.mem017 diag_gome_metop-b_ges.ensmean firstguess.mem016
analysis.mem015 diag_amsua_n18_ges.mem018 diag_omi_aura_ges.ensmean firstguess.mem017
analysis.mem016 diag_amsua_n18_ges.mem019 diag_sbuv2_n16_ges.ensmean firstguess.mem018
analysis.mem017 diag_amsua_n18_ges.mem020 diag_sbuv2_n17_ges.ensmean firstguess.mem019
analysis.mem018 diag_conv_ges.ensmean diag_sbuv2_n18_ges.ensmean firstguess.mem020
analysis.mem019 diag_conv_ges.mem001 diag_sbuv2_n19_ges.ensmean ozinfo
analysis.mem020 diag_conv_ges.mem002 diff.nc satbias_ang.out
anavinfo diag_conv_ges.mem003 enkf.log satbias_in
convinfo diag_conv_ges.mem004 enkf.nml satbias_out.int
diag_amsua_n18_ges.ensmean diag_conv_ges.mem005 enkf.x satbias_pc
diag_amsua_n18_ges.mem001 diag_conv_ges.mem006 firstguess.ensmean satinfo
diag_amsua_n18_ges.mem002 diag_conv_ges.mem007 firstguess.mem001 stdout
This case was a regional analysis with WRF/ARW NetCDF backgrounds. In this case, 20 ensemble members are used to estimate ensemble covariance, and both conventional observations (prepbufr) and radiance observations (AMSU-A) are assimilated.
A brief introduction of the files is given in the table below:
stdout | A text output file. This is the most commonly used file to check the analysis processes as well as basic and important information about the analyses. The contents of stdout are explained in detail in Chapter 4 and users are encouraged to read this file to become familiar with the order of EnKF analysis processing. |
firstguess. mem001-0?? | ensemble members of WRF background, in NetCDF format. This is in the same format as the WRF forecast. The ensemble background of the analysis variables are extracted from the files. |
firstguess.ensmean | ensemble mean of WRF background, in NetCDF format. |
analysis.mem001-0?? | ensemble analysis if EnKF completes successfully. The format is the same as the background file. |
analysis.ensmean | ensemble mean of analyses, in NetCDF format. |
diag_conv_ges.mem001-0?? | diag files in binary for conventional and GPS RO observations, which contain the observations and their priors. |
covinflate.dat | Three-dimensional multiplicative inflation factor fields (from function inflate_ens in module inflation). These inflation fields can be visualized using plotting software. |
*info (convinfo, satinfo,…) | info files that control data usage. Please see GSI User guide Chapter 4 for details. |
satbias_in | the input coefficients of bias correction for satellite radiance observations. |
satbias_pc | the input coefficients of satellite radiance bias correction for passive channels. |
[ch3_table]