Skip to content

Commit

Permalink
[email protected] add the enkf mean/recenter capability from RRFS
Browse files Browse the repository at this point in the history
  • Loading branch information
XuLu-NOAA committed Sep 9, 2024
1 parent 223042c commit c4b5920
Show file tree
Hide file tree
Showing 21 changed files with 1,260 additions and 2 deletions.
7 changes: 6 additions & 1 deletion jobs/JHAFS_ENKF
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export USHhafs=$HOMEhafs/ush
export EXEChafs=$HOMEhafs/exec
export PARMhafs=$HOMEhafs/parm
export FIXhafs=$HOMEhafs/fix
export RRFS_RECENTER=${rrfs_recenter:-NO}

export WORKhafs=${WORKhafs:-${DATAROOT:?}/${RUN:?}${storm_num:?}_${cyc:?}_${envir:?}_${hafs_ver:?}}

Expand Down Expand Up @@ -93,7 +94,11 @@ mkdir -p $DATA
cd $DATA

# Execute ex-script
${HOMEhafs}/scripts/exhafs_enkf.sh
if [ "${RRFS_RECENTER}" = NO ] || [ ${ldo_enscalc_option} -eq 0 ]; then
${HOMEhafs}/scripts/exhafs_enkf.sh
else
${HOMEhafs}/scripts/exhafs_recenter.sh
fi
export err=$?; err_chk

# Cleanup DATA dir
Expand Down
3 changes: 3 additions & 0 deletions modulefiles/hafs.hercules.lua
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ load(pathJoin("wgrib2", wgrib2_ver))
nco_ver=os.getenv("nco_ver") or "5.0.6"
load(pathJoin("nco", nco_ver))

ncio_ver=os.getenv("ncio_ver") or "1.1.2"
load(pathJoin("ncio", ncio_ver))

cdo_ver=os.getenv("cdo_ver") or "2.2.0"
load(pathJoin("cdo", cdo_ver))

Expand Down
3 changes: 3 additions & 0 deletions modulefiles/hafs.jet.lua
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,9 @@ nco_ver=os.getenv("nco_ver") or "5.0.6"
load(pathJoin("nco", nco_ver))
--prepend_path("PATH", "/apps/nco/4.9.3/gnu/9.2.0/bin")

ncio_ver=os.getenv("ncio_ver") or "1.1.2"
load(pathJoin("ncio", ncio_ver))

cdo_ver=os.getenv("cdo_ver") or "2.2.0"
load(pathJoin("cdo", cdo_ver))

Expand Down
3 changes: 3 additions & 0 deletions modulefiles/hafs.orion.lua
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@ load(pathJoin("wgrib2", wgrib2_ver))
nco_ver=os.getenv("nco_ver") or "5.0.6"
load(pathJoin("nco", nco_ver))

ncio_ver=os.getenv("ncio_ver") or "1.1.2"
load(pathJoin("ncio", ncio_ver))

cdo_ver=os.getenv("cdo_ver") or "2.2.0"
load(pathJoin("cdo", cdo_ver))

Expand Down
16 changes: 16 additions & 0 deletions parm/analysis/gsi/hafs_mean_recenter.nml.tmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
&setup
fv3_io_layout_y=1,
ens_size=_ENS_SIZE_,
filebase='fv3sar_tile1'
filetail(1)='dynvar'
filetail(2)='tracer'
filetail(3)='sfcvar'
numvar(1)=9
numvar(2)=10
numvar(3)=7
varlist(1)="u v W DZ T delp phis ua va"
varlist(2)="sphum liq_wat ice_wat rainwat snowwat graupel ice_nc rain_nc o3mr sgs_tke"
varlist(3)="t2m q2m f10m tsfc tsfcl emis_ice emis_lnd"
l_write_mean=_L_WRITE_MEAN_
l_recenter=_L_RECENTER_
/
1 change: 1 addition & 0 deletions parm/hafs.conf
Original file line number Diff line number Diff line change
Expand Up @@ -733,6 +733,7 @@ RUN_FGAT={run_fgat} ;; Do we run DA with FGAT?
RUN_ENVAR={run_envar} ;; Do we run hybrid EnVar with either GDAS ensembles or regional ensembles?
RUN_ENSDA={run_ensda} ;; Do we run the ensda system?
RUN_ENKF={run_enkf} ;; Do we run the self-cycled ensda system with EnKF analysis
RRFS_RECENTER={rrfs_recenter} ;; Do we apply the rrfs recenter approach?
RUN_ANALYSIS_MERGE={run_analysis_merge}
RUN_ANALYSIS_MERGE_ENS={run_analysis_merge_ens}
RUN_OCEAN={run_ocean} ;; Do we run with ocean coupling?
Expand Down
1 change: 1 addition & 0 deletions parm/hafs_basic.conf
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ run_fgat=yes ;; Enable FGAT in DA
run_envar=yes ;; Run GSI with hybrid EnVar with either GDAS ensembles or regional ensembles
run_ensda=no ;; Run ensemble data assimilation system
run_enkf=no ;; Run self-cycled ensemble data assimilation system with EnKF analysis
rrfs_recenter=no ;; Recenter Approach From RRFS
run_wave=no ;; Wave coupling
wave_model=ww3 ;; Wave model
run_ocean=yes ;; Ocean coupling
Expand Down
1 change: 1 addition & 0 deletions parm/hafs_holdvars.conf
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ RUN_FGAT={cap_run_fgat} ;; Do we run DA with FGAT?
RUN_ENVAR={cap_run_envar} ;; Do we run hybrid EnVar with either GDAS ensembles or regional ensembles?
RUN_ENSDA={cap_run_ensda} ;; Do we run the ensda system?
RUN_ENKF={cap_run_enkf} ;; Do we run the self-cycled ensda system with EnKF analysis?
RRFS_RECENTER={cap_rrfs_recenter} ;; Do we apply the recenter approach from RRFS?
RUN_ANALYSIS_MERGE={cap_run_analysis_merge}
RUN_ANALYSIS_MERGE_ENS={cap_run_analysis_merge_ens}
RUN_HRDGRAPHICS={cap_run_hrdgraphics} ;; Do we run HRD graphics?
Expand Down
1 change: 1 addition & 0 deletions parm/hafs_holdvars.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ export RUN_FGAT={RUN_FGAT}
export RUN_ENVAR={RUN_ENVAR}
export RUN_ENSDA={RUN_ENSDA}
export RUN_ENKF={RUN_ENKF}
export RRFS_RECENTER={RRFS_RECENTER}
export RUN_ANALYSIS_MERGE={RUN_ANALYSIS_MERGE}
export RUN_ANALYSIS_MERGE_ENS={RUN_ANALYSIS_MERGE_ENS}
export GSI_D01={GSI_D01}
Expand Down
5 changes: 5 additions & 0 deletions rocoto/hafs_workflow.xml.in
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
<!ENTITY GSI_D03 "@[GSI_D03]">
<!ENTITY RUN_ENSDA "@[RUN_ENSDA]">
<!ENTITY RUN_ENKF "@[RUN_ENKF]">
<!ENTITY RRFS_RECENTER "@[RRFS_RECENTER]">
<!ENTITY RUN_ANALYSIS_MERGE "@[RUN_ANALYSIS_MERGE]">
<!ENTITY RUN_ANALYSIS_MERGE_ENS "@[RUN_ANALYSIS_MERGE_ENS]">
<!ENTITY RUN_OCEAN "@[RUN_OCEAN]">
Expand Down Expand Up @@ -1013,6 +1014,7 @@
<dependency>
<and>
<taskdep task="launch"/>
<taskdep task="atm_prep_mvnest"/>
<!-- Wait until the deterministic forecast job is running or completed. -->
<or>
<taskdep task="forecast" state="RUNNING"/>
Expand Down Expand Up @@ -1376,6 +1378,9 @@

<dependency>
<and>
@** if RUN_ATM_MVNEST==YES
<taskdep task="atm_prep_mvnest"/>
@** endif
<metataskdep metatask="atm_ic_ens"/>
@** if gtype==regional
<metataskdep metatask="atm_lbc_ens"/>
Expand Down
5 changes: 5 additions & 0 deletions scripts/exhafs_analysis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,11 @@ if [ ${RUN_ENVAR} = "YES" ]; then

export L_HYB_ENS=.true.

if [ ${RUN_ENSDA} = "YES" ] && [ ! -s ${COMOLD}/${old_out_prefix}.RESTART_ens/mem001/${PDY}.${cyc}0000.fv_core.res.tile1.nc ]; then
echo "WARNING: No HAFS ensemble was found! Use GDAS!"
RUN_ENSDA=NO
fi

if [ ${RUN_ENSDA} != "YES" ] || [ $l_both_fv3sar_gfs_ens = .true. ]; then
# Link gdas ensemble members
mkdir -p ensemble_data
Expand Down
3 changes: 2 additions & 1 deletion scripts/exhafs_enkf_hx.sh
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,8 @@ cat fort.2* > ${GSISTAT}
if [ ${RUN_SELECT:-NO} = "YES" ]; then
echo $(date) START tar obs_input
rm -f ./obsinput.tar
${NLN} $SELECT_OBS ./obsinput.tar
# ${NLN} $SELECT_OBS ./obsinput.tar
ln -sf $SELECT_OBS ./obsinput.tar
tar -cvf obsinput.tar obs_input.*
echo $(date) END tar obs_input
fi
Expand Down
171 changes: 171 additions & 0 deletions scripts/exhafs_recenter.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
#!/bin/sh
# exhafs_recenter: Depend upon the value of ldo_enscalc_option, this script can
# perform the EnKF mean, and recenter functions by running the RRFS's recenter/mean code
# ldo_enscalc_option=1: enkf_mean, calculate the ensemble mean
# ldo_enscalc_option=2: enkf_recenter, recenter the ensemble memmber analysis around the deterministic EnVar analysis

set -xe

if [ ${ENSDA} = YES ]; then
export NHRS=${NHRS_ENS:-126}
export NBDYHRS=${NBDYHRS_ENS:-3}
export NOUTHRS=${NOUTHRS_ENS:-3}
export CASE=${CASE_ENS:-C768}
export CRES=$(echo $CASE | cut -c 2-)
export gtype=${gtype_ens:-regional}
export LEVS=${LEVS_ENS:-65}
else
export NHRS=${NHRS:-126}
export NBDYHRS=${NBDYHRS:-3}
export NOUTHRS=${NOUTHRS:-3}
export CASE=${CASE:-C768}
export CRES=$(echo $CASE | cut -c 2-)
export gtype=${gtype:-regional}
export LEVS=${LEVS:-65}
fi

if [ $GFSVER = PROD2021 ]; then
export atmos="atmos/"
elif [ $GFSVER = PROD2019 ]; then
export atmos=""
else
export atmos="atmos/"
fi

export RUN_ENVAR=${RUN_ENVAR:-NO}
export ldo_enscalc_option=${ldo_enscalc_option:-1}
export nens=${ENS_SIZE:-40}
export PARMgsi=${PARMgsi:-${PARMhafs}/analysis/gsi}

CDATE=${CDATE:-${YMDH}}
yr=$(echo $CDATE | cut -c1-4)
mn=$(echo $CDATE | cut -c5-6)
dy=$(echo $CDATE | cut -c7-8)
CDATEprior=$(${NDATE} -6 $CDATE)
ymdprior=$(echo ${CDATEprior} | cut -c1-8)
hhprior=$(echo ${CDATEprior} | cut -c9-10)

export RESTARTens_inp=${COMOLD}/${old_out_prefix}.RESTART_ens
export RESTARTens_anl=${WORKhafs}/intercom/RESTART_analysis_ens
export DIAGens_anl=${COMhafs}
export GRID_RATIO_ENS=${GRID_RATIO_ENS:-1}
DATOOL=${DATOOL:-${EXEChafs}/hafs_tools_datool.x}
mkdir -p ${RESTARTens_anl}
mkdir -p ${DIAGens_anl}

DATA=${DATA:-${WORKhafs}/enkf_mean}
mkdir -p ${DATA}
cd ${DATA}

if [ $ldo_enscalc_option -eq 1 ]; then # enkf_mean
MEAN='.true.'
RECENTER='.false.'
# prepare ensemble mean files
memstr="mem001"
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc fv3sar_tile1_dynvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc fv3sar_tile1_tracer
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc fv3sar_tile1_sfcvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.coupler.res coupler.res
${NLN} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.nc fv_core.res.nc
${NLN} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_srf_wnd.res.tile1.nc fv_srf_wnd.res.tile1.nc
for memstr in $(seq -f 'mem%03g' 1 $nens); do
${NLN} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc fv3sar_tile1_${memstr}_dynvar
${NLN} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc fv3sar_tile1_${memstr}_tracer
${NLN} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc fv3sar_tile1_${memstr}_sfcvar
done
else # enkf_recenter
MEAN='.false.'
RECENTER='.true.'
memstr="mem001"
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc control_dynvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc control_tracer
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc control_sfcvar
${NLN} control_sfcvar control_sfc_data.nc
${NLN} control_tracer control_fv_tracer.res.tile1.nc
${NLN} control_dynvar control_fv_core.res.tile1.nc
MERGE_CMD="${APRUNC} ${DATOOL} remap"
for var in fv_core.res.tile1 fv_tracer.res.tile1 sfc_data; do
in_grid=${WORKhafs}/intercom/RESTART_analysis/grid_spec.nc
out_grid=${RESTARTens_inp}/${memstr}/grid_spec.nc
in_file=${WORKhafs}/intercom/RESTART_analysis/${PDY}.${cyc}0000.${var}.nc
out_file=./control_${var}.nc
if [ ! -s ${in_grid} ] || [ ! -s ${in_file} ] || \
[ ! -s ${out_grid} ] || [ ! -s ${out_file} ]; then
echo "FATAL ERROR: Missing in/out_grid or in/out_file"
exit 1
fi
if [ ${GRID_RATIO_ENS} -eq 1 ]; then
${NCP} $in_file $out_file
else
${MERGE_CMD} \
--in_grid=${in_grid} \
--out_grid=${out_grid} \
--in_file=${in_file} \
--out_file=${out_file}
status=$?; [[ $status -ne 0 ]] && exit $status
fi
done

${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc fv3sar_tile1_dynvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc fv3sar_tile1_tracer
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc fv3sar_tile1_sfcvar
for memstr in $(seq -f 'mem%03g' 1 $nens); do
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc fv3sar_tile1_${memstr}_dynvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc fv3sar_tile1_${memstr}_tracer
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc fv3sar_tile1_${memstr}_sfcvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc rec_fv3sar_tile1_${memstr}_dynvar
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc rec_fv3sar_tile1_${memstr}_tracer
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc rec_fv3sar_tile1_${memstr}_sfcvar
done
fi

${NCP} ${PARMgsi}/hafs_mean_recenter.nml.tmp ./
sed -e "s/_ENS_SIZE_/${nens:-40}/g" \
-e "s/_L_WRITE_MEAN_/${MEAN:-.false.}/g" \
-e "s/_L_RECENTER_/${RECENTER:-.false.}/g" \
hafs_mean_recenter.nml.tmp > hafs_mean_recenter.nml

RECENTEREXEC=${RECENTEREXEC:-$HOMEhafs/exec/hafs_tools_enmean_recenter.x}
${APRUNC} ${RECENTEREXEC} < hafs_mean_recenter.nml 2>&1 | tee stdout

if [ $ldo_enscalc_option -eq 1 ]; then # enkf_mean
memstr="ensmean"
mkdir -p ${RESTARTens_anl}/${memstr}
${NCP} fv3sar_tile1_dynvar ${RESTARTens_anl}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc
${NCP} fv3sar_tile1_tracer ${RESTARTens_anl}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc
${NCP} fv3sar_tile1_sfcvar ${RESTARTens_anl}/${memstr}/${PDY}.${cyc}0000.sfc_data.nc
${NCP} ${RESTARTens_inp}/mem001/${PDY}.${cyc}0000.coupler.res ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/mem001/${PDY}.${cyc}0000.fv_core.res.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/mem001/${PDY}.${cyc}0000.fv_srf_wnd.res.tile1.nc ${RESTARTens_anl}/${memstr}/
#${NCP} ${RESTARTens_inp}/mem001/${PDY}.${cyc}0000.phy_data.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/mem001/grid_spec.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/mem001/oro_data.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/mem001/atmos_static.nc ${RESTARTens_anl}/${memstr}/
elif [ $ldo_enscalc_option -eq 2 ]; then # enkf_recenter
mkdir -p ${RESTARTens_anl}/anlmean
${NCP} fv3sar_tile1_dynvar ${RESTARTens_anl}/anlmean/${PDY}.${cyc}0000.fv_core.res.tile1.nc
${NCP} fv3sar_tile1_tracer ${RESTARTens_anl}/anlmean/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc
${NCP} fv3sar_tile1_sfcvar ${RESTARTens_anl}/anlmean/${PDY}.${cyc}0000.sfc_data.nc
#${NCP} ${COMhafs}/RESTART_analysis/{*grid_spec.nc,*sfc_data.nc,*coupler.res,gfs_ctrl.nc,fv_core.res.nc,*bndy*} ${RESTARTens_anl}/anlmean/
${NCP} ${RESTARTens_anl}/ensmean/${PDY}.${cyc}0000.coupler.res ${RESTARTens_anl}/anlmean/
${NCP} ${RESTARTens_anl}/ensmean/${PDY}.${cyc}0000.fv_core.res.nc ${RESTARTens_anl}/anlmean/
${NCP} ${RESTARTens_anl}/ensmean/${PDY}.${cyc}0000.fv_srf_wnd.res.tile1.nc ${RESTARTens_anl}/anlmean/
${NCP} ${RESTARTens_anl}/ensmean/grid_spec.nc ${RESTARTens_anl}/anlmean/
${NCP} ${RESTARTens_anl}/ensmean/oro_data.nc ${RESTARTens_anl}/anlmean/
${NCP} ${RESTARTens_anl}/ensmean/atmos_static.nc ${RESTARTens_anl}/anlmean/
for memstr in $(seq -f 'mem%03g' 1 $nens); do
mkdir -p ${RESTARTens_anl}/${memstr}
${NCP} rec_fv3sar_tile1_${memstr}_dynvar ${RESTARTens_anl}/${memstr}/${PDY}.${cyc}0000.fv_core.res.tile1.nc
${NCP} rec_fv3sar_tile1_${memstr}_tracer ${RESTARTens_anl}/${memstr}/${PDY}.${cyc}0000.fv_tracer.res.tile1.nc
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.coupler.res ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_core.res.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/${memstr}/${PDY}.${cyc}0000.fv_srf_wnd.res.tile1.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/${memstr}/grid_spec.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/${memstr}/oro_data.nc ${RESTARTens_anl}/${memstr}/
${NCP} ${RESTARTens_inp}/${memstr}/atmos_static.nc ${RESTARTens_anl}/${memstr}/
done
else
echo "Wrong ldo_enscalc_option: $ldo_enscalc_option"
fi

exit
42 changes: 42 additions & 0 deletions sorc/hafs_tools.fd/sorc/build_hafs_utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
## * Merging internal libraries into a single folder with a single driver script
## * Ported hafs_change_prepbufr under hafs_tools.fd from HWRF (2021-06-07)
## Added hafs_datool & hafs_vi to CMake based build: Biju Thomas 2022-01-25
## Added enmean_recenter from RRFS: Xu Lu 2024-08-05
#################################################################################

set -x -e
Expand Down Expand Up @@ -249,6 +250,46 @@ _hafsutils_vi (){

#----

# FUNCTION:

# _hafsenmean_recenter.sh

# DESCRIPTION:

# This function compiles and install the HAFS utility vi
# application.

# NOTE:

# This function should never be called directly by the user and is for
# internal use only within this script.

_hafsenmean_recenter (){

# Remove the build dir if it exists from previous build
if [ -d "${HAFS_UTILS_SORC}/build" ]; then
rm -rf ${HAFS_UTILS_SORC}/build
fi

# Create a build directory for a fresh build
mkdir ${HAFS_UTILS_SORC}/build

cd ${HAFS_UTILS_SORC}/build

# Generate makefile using CMake for the application
# BUILD_TYPE supports RELEASE OR DEBUG MODE
cmake ../hafs_enmean_recenter -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DBUILD_TYPE=${BUILD_TYPE}

# Build the hafs_vi application.
make all VERBOSE=3

# Move the hafs_vi application executable to the HAFS
# utility application executables path.
make install
}

#----


# FUNCTION:

Expand Down Expand Up @@ -290,6 +331,7 @@ build_hafsutils (){
# Build the vi application
_hafsutils_vi

_hafsenmean_recenter
}

#----
Expand Down
Loading

0 comments on commit c4b5920

Please sign in to comment.