WRF Software Testing

The testing conducted on the WRF code to insure bit-for-bit behavior on differing 
processor counts runs through hundreds of short forecasts in about 30 minutes. These 
simulations are very short (about 10 time steps).  The purpose is to activate as many 
possible physics options.  If single processor vs multiple processor results differ, 
then there is a strong likelihood that improper initialization of variables or 
missing communications or race conditions exist.  While tracking down the root cause 
of the problem is extremely time consuming, physics options that exhibit clean 
bit-wise reproducible results are more likely to be robust.  

This testing is conducted automatically when modifications are proposed to either the 
develop branch or one of the release branches of the WRF github repository, located
at:
https://github.com/wrf-model/WRF


For more information on the testing sytstem, please see 
https://github.com/davegill/wrf-coop/blob/master/README_user.md 

 
===========================
       WRF Test Framework
===========================


1.   Overview 

The WRF Testing Framework is designed to build, test, and analyze test results for 
one or more versions of the WRF model. This is a docker containerized solution that
is available for interactive testing, but mostly the purpose of the wrf-coop software
is support of the WRF automated jenkins testing.

    COMPILERS:    
             GNU fortran versions 9

    PARALLEL BUILD CONFIGURATIONS:
             Serial => S     (single-processor) build
             OpenMP => O     (multithreaded, shared memory) build
             MPI    => M     (multiprocessor, distributed memory) build

     WRF COMPILE-TIME VARIATIONS
             Test Name                      Parallel Tests
	     ARW                            SOM  
	     ARW real*8                     SOM
	     ARW Nested                     SOM
	     ARW Moving Nest                  M
             CHEM                           S M
             CHEM with KPP                  S M
             Idealized Fire                 SOM
             Idealized Super Cell           SOM
             Idealized Super Cell real*8    SOM
             Idealized Baroclinc Wave       SOM
             Idealized 2D Hill              S
             Idealized Single Column Model  S
	     WRFPlus                             
	     WRFDA-4DVAR                         

      ARW em_real RUN-TIME VARIATIONS
             Adaptive Time Stepping
             Digital Filtering
             FDDA: Spectral nudging, obs nudging, surface and upper air nudging
             Stochastic Forcing
             Nesting
             Vertical Nesting
             Hybrid and Terrain Following Vertical Coordinates
             Dry and Moist Potential Temperature
             restart


2.   Physics Options Applied in WRF Tests

The following Table and associated table Key summarizes the combinations of physics 
options that are tested for WRF.   It is important to note that while the choice of 
one physics option should not influence the choice of another physics option (i.e., 
the choice of a microphysics scheme should be independent of the cumulus scheme choice), 
in practice certain options are developed and tested for a small subset of other physics 
option combinations.   Therefore, the following table is useful as a guide for 
combinations of WRF physics options that are known to provide bit-for-bit results 
between serial and MPI versions of WRF.   Each row in the table represents a specific 
test, and each column a specific physics option.   Each of the physics combinations 
listed in the tables can be considered a "safe" combination that will provide successful 
short-term forecasts with bit-for-bit results when comparing single-processor output 
against multi-processor output.  



            				KEY 1:   Column Labels      (Tables 1-7)
            				----------------------------------------
            				NL   => Test Namelist Identifier
            				PBL  => Planetary Boundary Layer Scheme
            				CU   => Cumulus Scheme
            				MP   => Microphysics Scheme
            				LW   => Longwave Radiation Scheme
            				SW   => Shortwave Radiation Scheme
            				SFC  => Surface Physics Scheme
            				LAND => Land Surface Scheme
            				URB  => Urban Physics Scheme
            				SHCU => Shallow Cumulus Scheme
            				TOPO => Topography-Following Wind Scheme
            				----------------------------------------



                 			KEY 2:  Test Namelist Codes (Tables 1-7)
                 			----------------------------------------
                 			AD => Adaptive Time Stepping
                 			DF => Digital Filtering
                 			FD => FDDA
                 			NE => Basic Nesting
                 			VN => Vertical Nesting
                 			----------------------------------------


                                 TABLE 1: 
          WRF ARW Tests, Providing Successful 10 Time Step Forecasts, 
                       and Bit-for-Bit Results for
              Serial vs. MPI Runs and Serial vs. OpenMP Runs

NL      	PBL     CU      MP      LW      SW      SFC     LAND    URB     SHCU    TOPO
cmt     	1       11      6       4       4       1       2       0       0       0
conus   	C       C       C       C       C       C       C       0       0       0
kiaps1NE        11      14      16      14      14      1       4       0       4       0
kiaps2  	1       3       16      14      14      91      4       1       4       0
rap     	5       1       28      4       4       5       3       0       0       0
solaraNE        5       16      8       4       4       5       2       0       0       0
tropical        T       T       T       T       T       T       T       0       0       0
urb3bNE 	8       3       16      14      14      2       4       3       0       0
03      	4       3       3       24      24      4       1       0       0       0
03DF    	4       6       3       4       4       4       1       0       0       0
03FD    	4       14      3       4       4       4       1       0       0       0
3dtke   	0       C       C       C       C       1       C       0       0       0
06      	8       2       6       24      24      2       1       0       0       0
07NE    	8       6       8       5       5       1       2       2       0       0
10      	4       14      10      1       2       4       7       0       0       0
11      	4       2       10      1       2       4       7       0       0       0
14      	4       2       3       3       3       4       3       0       0       0
16      	9       6       8       5       5       2       7       0       0       0
17      	2       1       4       3       3       2       2       0       0       0
17AD    	2       1       4       3       3       2       2       0       0       0
18      	10      14      8       5       5       10      7       0       0       0
20      	12      3       4       1       2       1       2       0       0       0
20NE    	12      1       4       1       2       1       2       0       0       0
38      	2       1       2       4       4       2       7       0       0       0
48      	4       1       3       24      24      4       1       0       0       0
49      	1       3       3       24      24      91      2       0       0       0
50      	1       3       3       24      24      91      4       0       0       0
51      	1       3       3       24      24      91      4       0       0       0
52      	4       11      17      24      24      4       1       0       0       0
52DF    	4       11      17      4       4       4       1       0       0       0
52FD    	4       7       17      4       4       4       1       0       0       0
60      	1       1       6       24      24      1       4       0       0       0
60NE    	1       1       6       4       4       1       4       0       0       0
65DF    	9       1       28      4       4       2       3       0       0       0
66FD    	4       14      3       4       4       4       1       0       0       0
71      	1       1       8       4       4       1       2       0       0       0
78      	1       1       52      4       4       1       2       0       0       0
79      	5       14      2       4       4       2       7       0       0       0
NL      	PBL     CU      MP      LW      SW      SFC     LAND    URB     SHCU    TOPO





                                 TABLE 2: 
          WRF ARW Tests, Providing Successful 10 Time Step Forecasts, 
                       and Bit-for-Bit Results for
               Serial vs. MPI Runs and Serial vs. OpenMP Runs
                             REAL*8

NL		PBL	CU	MP	LW	SW	SFC	LAND	URB	SHCU	TOPO
14	 	4	 6	 3	 3	 3	 4	 3	 0	 0	 0
17AD	 	2	 2	 4	 3	 3	 2	 2	 0	 0	 0
NL		PBL	CU	MP	LW	SW	SFC	LAND	URB	SHCU	TOPO






                                 TABLE 3: 
       WRF Idealized Supercell Tests, Providing Successful 10 Time Step Forecasts, 
                       and Bit-for-Bit Results for
               Serial vs. MPI Runs and Serial vs. OpenMP Runs

NL	PBL	CU	MP	LW	SW	SFC
02NE	 0	 0	 1	 0	 0	 1
03	 0	 0	 1	 0	 0	 1
03NE	 0	 0	 1	 0	 0	 1
04	 0	 0	 2	 0	 0	 1
NL	PBL	CU	MP	LW	SW	SFC






                                 TABLE 4: 
       WRF Idealized Supercell Tests, Providing Successful 10 Time Step Forecasts, 
                       and Bit-for-Bit Results for
               Serial vs. MPI Runs and Serial vs. OpenMP Runs
                             REAL*8

NL	PBL	CU	MP	LW	SW	SFC
02NE	 0	 0	 1	 0	 0	 1
03	 0	 0	 1	 0	 0	 1
03NE	 0	 0	 1	 0	 0	 1
04	 0	 0	 2	 0	 0	 1
NL	PBL	CU	MP	LW	SW	SFC






                                 TABLE 5: 
        WRF Idealized B-Wave Tests, Providing Successful 10 Time Step Forecasts, 
                       and Bit-for-Bit Results for
               Serial vs. MPI Runs and Serial vs. OpenMP Runs

NL	PBL	CU	MP	LW	SW	SFC
1NE	 0	 0	 1	 0	 0	 0
2	 0	 0	 1	 0	 0	 0
2NE	 0	 0	 1	 0	 0	 0
3	 0	 0	 2	 0	 0	 0
NL	PBL	CU	MP	LW	SW	SFC