Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/myying/PSU_WRF_EnKF


https://github.com/myying/PSU_WRF_EnKF

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

##The following is a detailed description of each configuration file entry
#work flow control
RUN_ENKF=true #if true, run EnKF component
RUN_4DVAR=true #if true, run 4DVar component
#if both RUN_ENKF and RUN_4DVAR are true, run a hybrid E4DVar
RUN_ENVAR=false #if true, run 4DEnVar instead of E4DVar

FORECAST_TO_END=false #if true, run_forecast.sh will run from analysis time to DATE_END

FOLLOW_STORM=true #if true, nested domain will be preset to move following the path of
# storm location from tcvitals data
STORM_ID=al132010 #storm id, format: basin (al) num (13) year (2010)

CLEAN=true #if true, delete unwanted wrfout files in rundir

MULTI_PHYS_ENS=true #if true, use a multi-physics ensemble

MULTI_INC=true #if true, run a multi-incremental version of 4DVar
DECIMATION_FACTOR=3 #ratio of high/low resolution in multi-incremental 4DVar

#experiment design
EXP_NAME=karl #name of experiment
DATE_START=201009121200 #initial date, need to have available first guess (0 6 12 18 h)
DATE_END=201009180000 #end date
DATE_CYCLE_START=201009130000 #date of first assimilation cycle, also need first guess available
DATE_CYCLE_END=201009151800 #date of final assimilation cycle

#time control: unit=minutes
CYCLE_PERIOD=360 #interval among cycles
WRFOUT_INTERVAL=(180 180 180) #interval of wrfout times
LBC_INTERVAL=360 #interval of available first guess files

OBS_WIN_MIN=-180 #observation window start offset
OBS_WIN_MAX=180 #observation window end offset
MINUTES_PER_SLOT=60 #bin size, defines how may time slots are there in a window
#Observation window is usually set to +-1/2 CYCLE_PERIOD, so that
#EnKF analysis date locates in the center of the window.

FORECAST_MINUTES=360 #default length of forecast from analysis

#directories
WORK_DIR=$SCRATCH/$EXP_NAME #path to your experiment work directory
SCRIPT_DIR=$WORK/DA #path to this script set
CODE_DIR=$WORK/code #path to codes
DATA_DIR=$WORK/data/Karl #path to observations
WPS_DIR=$CODE_DIR/WPSV3.4.1 #WPS package (contains geogrid.exe, ungrib.exe, metgrid.exe)
WRF_DIR=$CODE_DIR/WRFV3.4.1 #WRF package (contains real.exe, wrf.exe, ndown.exe and runtime files)
WRF_BC_DIR=$CODE_DIR/WRF_BC_v2.1_alltime #path to update_wrf_bc.exe
WRFDA_DIR=$CODE_DIR/WRFDAV3.5 #WRFDA package (contains da_wrfvar.exe and runtime files)
MULTI_INC_DIR=$CODE_DIR/MULTI_INC #path to da_decimation.exe, da_bdy.exe
ENKF_DIR=$CODE_DIR/EnKF/src #path to enkf.mpi
FG_DIR=$DATA_DIR/fnl #path to first guess files
GEOG_DIR=$WORK/data/geog #path to geog, needed by WPS
BE_DIR=$DATA_DIR #path to be.dat
TCVITALS_DIR=$WORK/data/nhc/tcvitals #tcvitals data files

#domain setup
TWO_WAY_NESTING=true #if true, set feedback=1 in namelist.input for WRF
MAX_DOM=2 #the following options are the same as in namelist.input for WRF
E_WE=(379 298 298)
E_SN=(244 298 298)
E_VERT=(35 35 35)
DX=(27000 9000 3000)
DY=(27000 9000 3000)
TIME_STEP=(90 30 10)
PARENT_ID=(0 1 2)
GRID_RATIO=(1 3 3)
TIME_STEP_RATIO=(1 3 3)
I_PARENT_START=(1 193 100)
J_PARENT_START=(1 73 100)
MAP_PROJ="mercator"
REF_LAT=25.0
REF_LON=-65.0
STAND_LON=-65.0
TRUELAT1=30.0
TRUELAT2=60.0
P_TOP=1000

#physics
MP_PHYSICS=(6 6 6)
RA_LW_PHYSICS=(1 1 1)
RA_SW_PHYSICS=(1 1 1)
RADT=(27 9 3)
SF_SFCLAY_PHYSICS=(1 1 1)
SF_SURFACE_PHYSICS=(1 1 1)
BL_PBL_PHYSICS=(1 1 1)
BLDT=(0 0 0)
CU_PHYSICS=(0 0 0)
CUDT=(5 5 5)
SST_UPDATE=0

#ENKF options
NUM_ENS=60 #ensemble size
NMCPU=$((NUM_ENS+1)) #for parallel: number of CPUs for members
NICPU=2 #.. .. : number of CPUs for decomposition in i direction
NJCPU=2 #.. .. : .. .. .. in j ..
INFLATION_COEF=1.0 #prior covariance inflation coefficient
RELAX_OPT=0 #posterior covariance relaxation options
# 0: relax-to-prior-perturbation (Zhang et al 2004)
# 1: relax-to-prior-spread (Whitaker and Hamill 2012)
RELAX_ADAPTIVE=false #for $RELAX_OPT=1, if true, turn on adaptive algorithm (ACR, Ying and Zhang 2015)
RELAXATION_COEF=0.8 #relaxation coefficient
REPLACE_MEAN=false #if true, replace ensemble mean with $REPLACE_MEAN_WITH after analysis
REPLACE_MEAN_WITH=forecast

#data sources
INCLUDE_LITTLE_R=true #include LITTLE_R formatted data as input to obsproc.exe
INCLUDE_BUFR=false # .. BUFR ..
INCLUDE_MADIS=false # .. MADIS ..

#Some of the following switches are shared in namelist_enkf and namelist_wrfvar to select certain observation types
# in namelist.enkf in wrfvar namelist.input
USE_SYNOPOBS=true # / use_synopobs
USE_SURFOBS=false # use_surface /
USE_SOUNDOBS=true # use_sounding use_soundobs
USE_PILOTOBS=true # / use_pilotobs
USE_PROFILEROBS=true # use_profiler use_profilerobs
USE_AIREPOBS=true # use_aircft use_airepobs
USE_METAROBS=true # use_metar use_metarobs
USE_SHIPSOBS=true # use_sfcshp use_shipsobs
USE_SSMIOBS=false # use_spssmi /
USE_SATEMOBS=false # / use_satemobs
USE_GPSPWOBS=false # use_gpspw use_gpspwobs
USE_GPSREFOBS=false # / use_gpsrefobs
USE_ATOVS=false # use_atovs /
USE_GEOAMVOBS=true # use_satwnd use_geoamvobs
USE_POLARAMVOBS=false # / use_polaramvobs
USE_QSCATOBS=false # / use_qscatobs
USE_RADAROBS=false # / use_radarobs
USE_RADAR_RF=false # use_radar_rf /
USE_RADAR_RV=false # use_radar_rv /
USE_AIRBORNE_RF=false # use_airborne_rf /
USE_AIRBORNE_RV=false # use_airborne_rv /
USE_BOGUSOBS=false # / use_bogusobs
USE_BUOYOBS=true # / use_buoyobs

#data thinning coef for EnKF
THIN_SURFACE=0
THIN_SOUNDING=0
THIN_PROFILER=0
THIN_AIRCFT=0
THIN_METAR=0
THIN_SFCSHP=0
THIN_SPSSMI=0
THIN_ATOVS=0
THIN_SATWND=10
THIN_GPSPW=0
THIN_RADAR=0

#localization distance (km for HROI, # of layers for VROI) for EnKF
HROI_SFC=900 #horizontal radius of influence for surface obs
HROI_UPPER=900 #horizontal radius of influence for upper air obs
HROI_RADAR=45 #horizontal radius of influence for radar obs,
# in EnKF, radar obs are treated with SCL option (a blend of ROIs used)
VROI=15 #vertical radius of influence
VROI_RADAR=15 #vertical radius of influence for radar obs

#WRFDA options
CV_OPTIONS=3 #3 - uses be.dat.cv3
#5/6 - uses be.dat from run_gen_be.sh ($BE_DIR)
VAR_SCALING1=1.0 #the following options are the same as in namelist.input for WRFDA
VAR_SCALING2=1.0
VAR_SCALING3=1.0
VAR_SCALING4=1.0
VAR_SCALING5=1.0
LEN_SCALING1=1.0
LEN_SCALING2=1.0
LEN_SCALING3=1.0
LEN_SCALING4=1.0
LEN_SCALING5=1.0
#WRFDA options (for 4DVar)
MAX_EXT_ITS=1
NTMAX=80
VAR4D_LBC=false
#HYBRID options (alpha cv method related)
ALPHACV_METHOD=2
JE_FACTOR=1.25

#CPU usage
HOSTPPN=12 #number of CPUs per node on host machines
HOSTTYPE=jet #host type (used in job_submit.sh, currently supports "jet" and "stampede")
JOB_SUBMIT_MODE=2 # 1 - submit run_cycle.sh to queue as a single job. The scheduling of
# each component is taken care of in each module script.
# 2 - execute run_cycle.sh as a bash script, each component is submitted
# as a separate job in the queue, scheduling is done by the queue.

real_ntasks=$HOSTPPN #number of CPUs per WPS component (geogrid.exe, metgrid.exe, real.exe)
wrf_ntasks=$((HOSTPPN*8)) # .. .. .. .. WRF run (wrf.exe)
var3d_ntasks=$HOSTPPN # .. .. .. .. 3DVar component (perturb_ic da_wrfvar.exe)
var4d_ntasks=(240 480 960) # .. .. .. .. 4DVar component (da_wrfvar.exe) (for each domain)
enkf_ntasks=$((NMCPU*$NICPU*$NJCPU)) # .. .. .. .. EnKF component (enkf.mpi)
var4d_ppn=$HOSTPPN #CPUs per node for 4DVar component (for using larger memory)
enkf_ppn=4 # .. .. .. for EnKF .. ..