Summary of DFL

 

Codes of Digital Filtering Initialization (DFL) for WRF have been developed and tested with both single-threaded and MPICH options on platform of Liunx+PGI 6.1.

1.    How to generate WRF DFL executable files?

1)       Copy dfi.tar.gz to directory WRFV2.

2)        Unzip and untar the file.

3)        cd dfi

4)        ./dfl.deck

5)        ls -l main/wrf.exe.dfl   

6)        ./fst.deck

7)        ls -l main/wrf.exe.fst

8)       . ./nodfi.deck

9)        ls -l main/wrf.exe.nodfi

2.    How to run WRF-DFL?

1)       cd test/em_real_dfi

2)       cp namelist.input.dfl namelist.input

3)       ./wrf.exe.dfl

4)       cp wrfrst_d01_2000-01-24_20:10:00   df.save

5)       cp namelist.input.fst namelist.input

6)       ./wrf.exe.fst

3.    Descriptions on affected files and new codes

1)       ./Registry

Registry.EM:    new variables for dfi namelist are added.

 

2)       ./dfl

Affected files:

l       module_domain.F.dfl:   Declaration for hn, the filtering weight coefficients as an new member of the struct domain.

l       module_integrate.F.dfl:

     1). declarations of dfi_grid and null_domain as domain type.

 2). update the interface of sub solve_interface.

 3). allocate dimensions for dfi_grid.

4). update the call sub solve_interface.

     5). after integration, point grid_ptr to the location of dfi_grid.

l       solve_em.F.dfl:

            1). update the dull elements of sub solve_em.

2). declare dfi_grid as domain type with target attribute.

3). before integration starts, calculate filtering coeffients hn.

4). before each step integration, call dfi.

l       solve_em.int.dfl:

1). update the dull elements of sub solve_em.

2). declare dfi_grid as domain type.

l       solve_interface.F.dfl

    1). update the dull elements.

2). declare dfi_grid as domain type.

3). call solve_em with updated interface.

l       Makefile.dyn_em-dfl: add the compilations for dfcoef and dfi.

l       Makefile.frame-dfl:  add the compilation for dfi_ptr_move.

New files:

l       dfi.F:

     The sub to execute digital filtering.

l       dfcoef.F:

     The sub to calculate filter weights with selected window.

l       dfi_ptr_move.F:

The sub to point grid_ptr to the location of dfi_grid at the end of filtering time span.

 

3)       ./fst

Affected files:

l       module_integrate.F.fst:

         1). declare dfi_grid and null_domain as domain type.

         2). allocate dimensions for dfi_grid.

         3). call read_df_save, that is, get the filtered fields.

         4). nullify (dfi_grid).

l       module_domain.F.fst: Declaration for hn, the filtering weight coefficients as an new member of the struct domain.     

l       Makefile.dyn_em-fst: add the compilation for read_df_save.

New files:

l       read_df_save.F

           1). open and read df.save, which is written as a restart file format.

          2). use the filtered fields to replace the unfiltered ones.

 

4)       ./nodfi

Contains the original Makefile and .F files.

 

4.    Potential Problems and Future Work

1)       Need to develop codes of DFL for nested domains.

2)       Currently, the additional ÔgridÕ to store the filtered fields is designated by allocating the same size memories as the forecasted grid. It's expensive for memory requirements, especially for large dimensions.

3)       How to output the filtered fields? Currently they are output using the restart interface. The codes of DFL without restart will solve this problem.

4)       Which prognostic fields to be filtered? Only 3-d forcast fields, or including lateral boundary tendencies, and surface 2-d fields? Further tuning can be done in the files of dfi.F, dfi_ptr_move.F and read_df_save,F.