All programs and scripts in this directory are used to run the ensemble code.
Programs are written as scripts and .f files. Discription of the dependency of the scripts are as follows:
runensda (folder runscripts) Script
driver for ensemble data assimilation. The script sets few basic environment
variables for the EnsDA run.
prep_ensda.sh
(folder scripts) Prepare files for Ensemble Data Assimilation.
delete.sh (folder scripts)envir.sh Sets all environment
variables for EnsDA run; cycle_start_date, to START = WARM or COLD
allcostF.F Calculate total cost functioncostf_now.F Calculates the observational cost
function given observation type and observation timesgetobsincr.FAdds observation incrementssum_r3dv_step.F Calculate the inner
products for step-length updateanlsis_operator.F
Program reads first guess variables and observations, and calculates the residual [R**(-1/2)*(y-Hx)]
anlsis_group_obs.F
This program reads global observation files and creates files with small number of observations
createobs.F
This program reads first guess variables and creates observations by adding random perturbations
H_X_1d.F
This program reads first guess variables and creates observations as random perturbations to the model state
Hx.F
Calculate the obs operator: y=H(x)
bound_sqrtPf.F
Upper bound to the forecast error (co)variance (Bound on ensemble perturbation in the FIRST data assimilation cycle)
sqrtPf = M(x+dx)-M(x) (ensemble forecast perturbations)sqrtPf (Bounded ensemble forecast perturbations [corrected sqrtPf])get_sqrtPx.F
Create ensemble perturbation (sqrtPa or sqrtPf)
x_cntrl = x_cntrlx = ensemble forecastsqrtPx = x - x_cntrlget_stddev.F
This subroutine estimates the standard deviation (square-root variance) and converts it from
n-dimensional variable to 1-dimensional variable
get_x1d.F
Create ensemble state (x1d_...)
x_cntrl = x_cntrlsqrtPx = sqrtPa or sqrtPfx = x_cntrl + sqrtPx - ensemble statelocalize_x1d.F
Create localized forecast ensemble perturbation
random.F
Create perturbed initdat file for ensemble fcst, calculate the random initial ensemble perturbations
x_cntrl = x_cntrl !!! control variable (background)stddev = standard deviation of forecast error (a rough estimate)x = x_cntrl + const* stddev !!! perturbed control variablei:i = ensemble memberrecover_x1d.F
Recover ensemble state from x_cntrl and sqrtPa
res_mean.F
Calculate the ensemble mean
x1d_mean.F
Calculate the ensemble mean
zcntrl_mean.F
Calculate the ensemble mean
cost_filt.f
Gradient calculation using ensembles
cost_filt_step.f
This program performs the gravity wave penalty calculation based on diabatic digital
filter (Huang and Lynch, 1997) step-length related sums (ETOP EBOT)
MAT_VEC.f
Matrix vector multiplication
grad_all.F
Calculate total cost function gradient with respect to cntrl vrbl in ensemble subspace
grad_obs.F
Calculate observation cost function gradient with respect to cntrl vrbl in ensemble subspace
A_matrix_eigen.F
Eigenvalue decomposition (EVD) of the A matrix
calculate_EVD_ESSL.F
Eigenvalue decomposition (EVD) of the A matrix
calculate_MATMUL.F
Eigenvalue decomposition
MATRIX_MATRIX.F
MATRIX * MATRIX product
A_matrix_elements.Fcalculate_EVD.Fcalculate_MATMUL_LAPACK.Fz_cntrl.Fanalysis_cov.Fcalculate_EVD_LAPACK.Finflate.Fcalculate_MATMUL_ESSL.Fredefine_ensemble.Fbsqrt_vec.F noneprepcorr.F
This program calculates the toeplitz correlations based on SOAR compactly supported correlations
smooth.F
This subroutine converts control (FCST) variables from 1-dimensional to n-dimensional
variable, and writes out the n-dimensional variable
weights.f noneintpl_SWM_to_LL.F none subroutineintpl_SWM_to_LL_adj.F none subroutineSOAR.F noneCORR3D.F none subroutinerandom.F
This subroutine converts control (FCST) variables from 1-dimensional to n-dimensional
variable, and writes out the n-dimensional variable
minimize.F
Minimization package, with preconditioning
ensda_programs_KdVB.F
Read and write initial ensemble data assimilation fields
ensda_variables_KdVB.F
General ENSDA variables and parameters
ensda_programs_RAMS.Fensda_variables_RAMS.Fensda_programs_SWM.Fensda_variables_SWM.Fchi_square_bound.F
Scale the sqrt analysis error covariance if out of preassigned bounds for chi-square
test. If NOT, do not change sqrtPa
obs_format_KdVB.Frms_SWM.Fx1d_rms.Fchi_square.Finnov_histogram.Fobs_format_SWM.Fchi_square_ma.FSWM_to_GRADS.Fchi_square_sum.Fauss_histogram.Finnov_norml.Frms_GEOS.Fweights.Fcov_window.Fibin_cycle_sum.Fintpl.Frms_KdVB.Fx1d_format.Falfa_intlze.F
Initialize step-length (ALFA) value set it up at the beginning, and after the
minimization restart
alfanew.F
This program updates the step-length
prior_step.F
Program performs the prior error step calculations (forecast (background) error and model error)
convert_vrbls_from_1d.F
This subroutine converts control (FCST) variables from 1-dimensional to n-dimensional variable,
and writes out the n-dimensional variable
get_num_bias.F
Read file cntrl_vrbl and get num_bias used in ensda
MATRIX_VECTOR.F
MATRIX * VECTOR product (N_! x NENS) * (NENS) = (N_1)
smooth_3d.F
This subroutine creates smooth the 3d control (FCST) variables using a recursive filter
transform.Fconvert_vrbls_to_1d.Finflate.Fz_update.Fget_dim_x1d.Fsmooth.F