3 # #BSUB -x # exlusive use of node (not_shared)
4 # #BSUB -a mpich_gm # at NCAR: lightning
5 # #BSUB -R "span[ptile=2]" # how many tasks per node (1 or 2)
6 #BSUB -a poe # at NCAR: bluevista
7 #BSUB -R "span[ptile=4]" # how many tasks per node (up to 8)
8 #BSUB -n 4 # number of total tasks
9 #BSUB -o reg.out # output filename (%J to add job id)
10 #BSUB -e reg.err # error filename
11 #BSUB -J regtest # job name
12 #BSUB -q share # queue
13 #BSUB -W 12:00 # wallclock time
17 # QSUB -q ded_4 # submit to 4 proc
18 # QSUB -l mpp_p=4 # request 4 processors
19 # QSUB -lT 21600 # max. job time limit is 6 h
20 # QSUB -lF 250Mw # max. job file size limit is 250 Megawords
21 # QSUB -eo # merge error and output into one file
22 # QSUB -o reg.out # output file name
23 # QSUB # there are no further QSUB commands
25 # This is a script to test the bit-for-bit reproducibility of
26 # the WRF model, when comparing single processor serial runs to
27 # OpenMP and MPI parallel runs. There are several regression tests
28 # that are performed. Failed comparisons get reported, but don't
29 # stop the script. Failed builds or forecasts force an exit from
32 # Approximate time for completion of full test suite
33 # Compaq 733 MHz ev67 : 2.5 hours (empty)
34 # Intel 1.2 GHz (4-pe) : 3.0 hours (empty)
35 # IBM P4 : 2.0 hours (empty)
38 # Do we keep running even when there are BAD failures?
40 set KEEP_ON_RUNNING
= FALSE
41 set KEEP_ON_RUNNING
= TRUE
43 # These need to be changed for your particular set of runs. This is
44 # where email gets sent.
46 if ( ( `uname` == AIX
) && ( ( `hostname | cut -c 1-2` != bs
) && \
47 ( `hostname | cut -c 1-2` != bv
) && ( `hostname | cut -c 1-2` != be
) ) ) then
48 set FAIL_MAIL
= ( ${user}@noaa.gov
)
49 set GOOD_MAIL
= ( ${user}@noaa.gov
)
51 setenv MP_EAGER_LIMIT
65536
52 setenv MP_SHARED_MEMORY
yes
53 setenv MP_SINGLE_THREAD
yes
55 setenv MP_STDOUTMODE ordered
57 setenv OMP_NUM_THREADS
4
58 setenv XLSMPOPTS
"parthds=4:spins=0:yields=0:stack=128000000:schedule=static"
59 setenv AIXTHREAD_SCOPE S
60 setenv AIXTHREAD_MNRATIO
1:1
61 setenv SPINLOOPTIME
1000
62 setenv YIELDLOOPTIME
1000
64 set FAIL_MAIL
= ( ${user}@ucar.edu
)
65 set GOOD_MAIL
= ( ${user}@ucar.edu
)
68 unalias cd cp rm ls pushd popd mv
69 if ( ( `uname` == Linux
) ||
( `uname` == Darwin
) ) alias banner echo
71 # Get the command line input
76 set clrm
= 0 # compile local run mmmtmp, for using clsroom cluster and local disk
78 # If this is a batch job (NCAR's IBMs or FSL's Intel and Alpha), we need to muck with the "input"
81 if ( ( `uname` == AIX
) ||
( `hostname` == tempest
) ||
( `hostname | cut -c 1-2` == ln ) ) then
84 set argv
= ( -D today
)
86 set WRFREGFILE
= /mmm
/users
/gill
/wrf.
tar
87 if ( ( `uname` == AIX
) && ( ( `hostname | cut -c 1-2` != bs
) && \
88 ( `hostname | cut -c 1-2` != bv
) && ( `hostname | cut -c 1-2` != be
) ) ) then
89 set argv
= ( -f /nbns
/meso
/wx22tb
/regression_tests
/wrf.
tar )
91 set argv
= ( -f wrf.
tar )
95 # Where is the input data located - for a few known NCAR/MMM machines.
97 if ( ( `hostname` == master
) ||
(`hostname | cut -c 1-4` == node
) ) then
98 set WRFREGDATAEM
= /big
/users
/gill
/WRF-data-EM
99 set WRFREGDATANMM
= /big
/users
/gill
/WRF-data-NMM
100 else if ( `hostname` == jacaranda
) then
101 set WRFREGDATAEM
= /jacaranda
/users
/gill
/WRF-data-EM
102 set WRFREGDATANMM
= /jacaranda
/users
/gill
/WRF-data-NMM
103 else if ( `hostname` == stink
) then
104 set WRFREGDATAEM
= /stink
/gill
/Regression_Tests
/WRF_regression_data
/processed
105 set WRFREGDATANMM
= /stink
/gill
/Regression_Tests
/WRF_regression_data
/WRF-data-NMM
106 else if ( `hostname` == cape
) then
107 set WRFREGDATAEM
= /cape
/users
/michalak
/WRF-data-EM
108 set WRFREGDATANMM
= /cape
/users
/michalak
/WRF-data-NMM
109 else if ( (`hostname | cut -c 1-6` == joshua
) || \
110 ( `hostname` == maple
) ||
(`hostname | cut -c 1-7` == service
) ) then
111 set WRFREGDATAEM
= /users
/gill
/WRF-data-EM
112 set WRFREGDATANMM
= /users
/gill
/WRF-data-NMM
113 else if ( ( `hostname | cut -c 1-2` == bs
) ||
( `hostname` == tempest
) ||
( `hostname | cut -c 1-2` == ln ) || \
114 ( `hostname | cut -c 1-2` == bv
) ||
( `hostname | cut -c 1-2` == be
) ) then
115 set WRFREGDATAEM
= /mmm
/users
/gill
/WRF-data-EM
116 set WRFREGDATAEM
= /mmm
/users
/gill
/WRF_regression_data
/processed
117 set WRFREGDATANMM
= /glade
/proj
2/ral
/RJNTB
/dtc
//WRF-data-NMM
118 else if ( ( `uname` == AIX
) && ( ( `hostname | cut -c 1-2` != bs
) && \
119 ( `hostname | cut -c 1-2` != bv
) && ( `hostname | cut -c 1-2` != be
) ) ) then
120 set WRFREGDATAEM
= /nbns
/meso
/wx22tb
/regression_tests
/WRF-data-EM
121 set WRFREGDATANMM
= /nbns
/meso
/wx22tb
/regression_tests
/WRF-data-NMM
123 if ( ( -d /users
/gill
/WRF-data-EM
) && ( -d /users
/gill
/WRF-data-NMM
) ) then
124 set WRFREGDATAEM
= /users
/gill
/WRF-data-EM
125 set WRFREGDATANMM
= /users
/gill
/WRF-data-NMM
126 else if ( ( -d /mmm
/users
/gill
/WRF-data-EM
) && ( -d /mmm
/users
/gill
/WRF-data-NMM
) ) then
127 set WRFREGDATAEM
= /mmm
/users
/gill
/WRF-data-EM
128 set WRFREGDATANMM
= /glade
/proj
2/ral
/RJNTB
/dtc
//WRF-data-NMM
130 echo "stick the WRF em and nmm data somewhere, and then fill in the shell vars"
131 echo "inside this script, you NEED WRFREGDATAEM and WRFREGDATANMM set"
135 #DAVE###################################################
136 echo DAVE em data is located
at $WRFREGDATAEM
138 echo DAVE nmm data is located
at $WRFREGDATANMM
139 ls -ls $WRFREGDATANMM
142 #DAVE###################################################
144 if ( $#argv == 0 ) then
145 echo "Please enter either a date for cvs checkout. ex regtest.csh -D date"
146 echo " or a file name containing WRF. ex regtest.csh -f tarfile"
147 echo " or the -ftp flag for the script to pick code off anon ftp"
153 if ( "$a" == "-D" ) then
155 rsh -n maple.mmm.ucar.edu w
>& /dev
/null
157 echo "Cannot execute a remote shell on maple.mmm.ucar.edu, where the"
158 echo "WRF code resides."
159 echo "Please check that it is up and that you have permission to rsh"
160 echo "to this host. (Create a .rhosts file)."
161 ping -c 1 maple.mmm.ucar.edu
164 setenv CVSROOT maple.mmm.ucar.edu
:/data
3/mp
/wrfhelp
/WRF
166 set acquire_from
= "cvs"
167 set thedate
= $argv[2]
171 if ( "$a" == "-f" ) then
173 set thefile
= $argv[2]
174 # Check for absolute path, if not, make it absolute
175 echo $thefile |
grep '^/' > /dev
/null
176 if ( $status != 0 ) set thefile
= `pwd`/$thefile
177 set acquire_from
= "filearg"
181 if ( "$a" == "-ftp" ) then
182 set acquire_from
= "ftp"
183 echo "anon ftp temporarily disabled"
187 if ( "$a" == "-here" ) then
188 set acquire_from
= "here"
191 if ( "$a" == "-env" ) then
192 set acquire_from
= "environment"
193 set thefile
= $WRFREGFILE
197 # Start recording everything - for debug purposes.
202 # And to tell us how long we've spent on this whole regression test,
203 # we should remember when we started.
205 set start
= ( `date` )
207 #####################################################################
209 # Initial set up values
211 # Is this a single domain regression test or is this nested. Well, a nested one
212 # is a bit special. It can only run on machines that have the WRF RSL_LITE-but-no-MPI
218 if ( $NESTED == TRUE
) then
219 echo DOING a NESTED TEST
222 # Use the adaptive time step option
227 if ( $ADAPTIVE == TRUE
) then
228 set STEP_TO_OUTPUT_TIME
= .TRUE.
229 set USE_ADAPTIVE_TIME_STEP
= .TRUE.
231 set STEP_TO_OUTPUT_TIME
= .FALSE.
232 set USE_ADAPTIVE_TIME_STEP
= .FALSE.
235 # We can choose to do grid and obs nudging tests.
243 if ( $FDDA2 == TRUE
) then
247 # The default floating point precision is either 4 bytes or 8 bytes.
248 # We assume that it is 4 (or the default for the architecture) unless
249 # REAL8 is set to TRUE.
254 # Are we shooting for a bit-for-bit run (serial vs OpenMP, serial vs MPI), or not?
255 # If you want to do a performance-only run, the forecasts are still short, but you
256 # get to insure that the optimized code builds and runs.
258 set REG_TYPE
= OPTIMIZED
259 set REG_TYPE
= BIT4BIT
261 # For a Mac/Intel, we can run either g95 or PGI.
263 if ( `uname` == Darwin
) then
268 # We can choose to do a global test
270 if ( $NESTED != TRUE
) then
273 else if ( $NESTED == TRUE
) then
277 # Is this a WRF chem test?
278 # if CHEM = TRUE, then chemistry run
279 # if KPP = TRUE, then chemistry with KPP run (CHEM set to true)
281 if ( $NESTED != TRUE
) then
286 if ( $KPP == TRUE
) then
289 else if ( $NESTED == TRUE
) then
293 if ( $CHEM == TRUE
) then
295 else if ( $CHEM == FALSE
) then
298 if ( $KPP == TRUE
) then
300 setenv FLEX_LIB_DIR
/usr
/local
/lib
302 else if ( $KPP == FALSE
) then
308 # For the real data case, we can run either one of two data cases. If this is
309 # a chemistry run, we are forced to use that data.
313 if ( $CHEM == TRUE
) then
316 if ( $GLOBAL == TRUE
) then
320 # Yet another local variable to change the name of where the data is located.
322 set thedataem
= ${WRFREGDATAEM}/${dataset}
323 set thedatanmm
= $WRFREGDATANMM
325 # A separately installed version of the latest ESMF library (NOT the
326 # ESMF library included in the WRF tarfile) can be tested by setting
327 # "ESMF_LIB" to "TRUE" below. This test is not supported on all
333 # serial and OMP are not tested with ESMF so always start with env vars cleared
337 if ( $ESMF_LIB == TRUE
) then
338 if ( ( `uname` == AIX
) && ( ( `hostname | cut -c 1-2` == bv
) ||
( `hostname | cut -c 1-2` == be
) ) ) then
339 echo "A separately installed version of the latest ESMF library"
340 echo "(NOT the ESMF library included in the WRF tarfile) will"
341 echo "be used for MPI tests"
342 setenv OBJECT_MODE
64
343 # set ESMFLIBSAVE = /home/bluevista/hender/esmf/esmf_2_2_2r/lib/libO/AIX.default.64.mpi.default
344 # set ESMFINCSAVE = /home/bluevista/hender/esmf/esmf_2_2_2r/mod/modO/AIX.default.64.mpi.default
345 setenv ESMF_DIR
/mmm
/users
/michalak
/esmf
348 setenv ESMF_INSTALL_PREFIX
$ESMF_DIR/..
/esmf_install
349 setenv ESMFLIB
$ESMF_INSTALL_PREFIX/lib
/libg
/AIX.default
.64.mpi.default
350 setenv ESMFINC
$ESMF_INSTALL_PREFIX/mod
/modg
/AIX.default
.64.mpi.default
351 set ESMFLIBSAVE
= $ESMFLIB
352 set ESMFINCSAVE
= $ESMFINC
353 echo "Using ESMFLIB = ${ESMFLIBSAVE}"
354 echo "Using ESMFINC = ${ESMFINCSAVE}"
356 echo "Only the ESMF library included in the WRF tarfile is"
357 echo "tested on this machine"
360 if ( $NESTED == TRUE
) then
361 echo "The ESMF library does not work with nesting."
366 # A single WRF output "quilt" server can be tested by setting "QUILT" to
367 # "TRUE" below. At the moment, testing of I/O quilt servers is not supported
373 if ( $QUILT == TRUE
) then
374 echo "One WRF output quilt server will be used for some tests"
377 # Baseline data sets can be generated and archived or compared against.
378 # - To generate and archive, set GENERATE_BASELINE to a pathname that can
379 # be created by this script via "mkdir -p $GENERATE_BASELINE". This
380 # directory must not already exist.
381 # Set GENERATE_BASELINE = FALSE to avoid baseline generation.
382 # - To compare with a previously archived baseline, set COMPARE_BASELINE
383 # to an existing directory that contains an archived baseline.
384 # Set COMPARE_BASELINE = FALSE to avoid baseline comparison.
385 set GENERATE_BASELINE
= FALSE
386 set COMPARE_BASELINE
= FALSE
388 # Baseline generation and comparison are only done when BIT4BIT is set.
389 if ( $GENERATE_BASELINE != FALSE
) then
390 if ( $REG_TYPE != BIT4BIT
) then
391 echo "ERROR: Baseline generation can only be done during BIT4BIT tests."
394 if ( -d $GENERATE_BASELINE ) then
395 echo "ERROR: Baseline directory ${GENERATE_BASELINE} already exists."
398 # Archive serial output file to baseline
399 mkdir
-p $GENERATE_BASELINE ||
( echo "ERROR: cannot mkdir ${GENERATE_BASELINE}"; exit 3 )
402 if ( $COMPARE_BASELINE != FALSE
) then
403 if ( $REG_TYPE != BIT4BIT
) then
404 echo "Baseline comparison can only be done during BIT4BIT tests."
407 if ( ! -d $COMPARE_BASELINE ) then
408 echo "${0}: ERROR: Baseline directory ${COMPARE_BASELINE} does not exist"
413 # Set the input/output format type (currently 1, 2 or 5 OK).
414 # Binary NetCDF PHDF, IBM GriB, history only
418 set IO_FORM_NAME
= ( io_bin io_netcdf io_dummy io_phdf5 io_grib1
)
419 set IO_FORM_WHICH
=( IO IO IO IO O
)
421 # There is a breakdown of cores to test depending on the various
422 # options that the user is testing.
423 # nested: cannot test NMM
424 # rsl_lite: cannot test anything with y periodic bc
426 # esmf_lib: cannot test NMM
427 # grib output: cannot test NMM
429 if ( $NESTED == TRUE
) then
430 set CORES
= ( em_real em_b_wave em_quarter_ss
)
431 else if ( $NESTED != TRUE
) then
432 set CORES
= ( em_real em_b_wave em_quarter_ss nmm_real
)
433 set CORES
= ( nmm_real
)
434 if ( $CHEM == TRUE
) then
435 set CORES
= ( em_real em_real
)
437 if ( $GLOBAL == TRUE
) then
438 set CORES
= ( em_real
)
440 if ( $ADAPTIVE == TRUE
) then
441 set CORES
= ( em_real
)
443 if ( $ESMF_LIB == TRUE
) then
444 set CORES
= ( em_real em_b_wave em_quarter_ss
)
446 if ( $IO_FORM_NAME[$IO_FORM] == io_grib1
) then
447 set CORES
= ( em_real em_b_wave em_quarter_ss
)
449 if ( $FDDA == TRUE
) then
450 set CORES
= ( em_real
)
454 # The b_wave case has binary input (4-byte only), the nmm
455 # core has raw MPI calls, skip them if we are doing real*8 floats.
457 if ( $REAL8 == TRUE
) then
458 set CORES
= ( em_real em_quarter_ss
)
461 if ( ( $CHEM != TRUE
) && ( $FDDA != TRUE
) && ( $NESTED != TRUE
) && ( $REAL8 != TRUE
) && ( $GLOBAL != TRUE
) ) then
462 set PHYSOPTS
= ( 1 2 3 4 5 6 7 )
463 else if ( ( $CHEM != TRUE
) && ( $FDDA != TRUE
) && ( ( $NESTED == TRUE
) ||
( $REAL8 == TRUE
) ||
( $GLOBAL == TRUE
) ) ) then
464 set PHYSOPTS
= ( 1 2 3 4 5 6 )
465 else if ( ( $CHEM != TRUE
) && ( $FDDA == TRUE
) ) then
466 if ( $FDDA2 == TRUE
) then
467 set PHYSOPTS_FDDA
= BOTH
469 set PHYSOPTS_FDDA
= GRID
471 if ( $PHYSOPTS_FDDA == GRID
) then
474 set PHYSOPTS
= ( 1 2 3 )
476 else if ( $CHEM == TRUE
) then
477 set PHYSOPTS
= ( 1 2 3 4 5 6 )
481 ##LPC --- run just nmm test
483 set CORES
= (nmm_real
)
485 # This is selecting the ideal physics options - mostly selecting BC options.
486 # With no nesting, run all three ideal physics options.
488 if ( $NESTED == TRUE
) then
489 set Max_Ideal_Physics_Options
= 2
490 else if ( $NESTED != TRUE
) then
491 set Max_Ideal_Physics_Options
= 3
496 # How many domains to run (nest tests). Only em_real and ideals use this.
497 # The max is 3 due to the number of columns in the namelist that are
498 # currently filled in.
500 if ( $NESTED == TRUE
) then
501 if ( $dataset == jan00
) then
502 cat >! dom_real
<< EOF
504 time_step_fract_num = 0,
505 time_step_fract_den = 1,
513 dx = 30000, 10000, 3333.333333,
514 dy = 30000, 10000, 3333.333333,
517 i_parent_start = 0, 31, 11,
518 j_parent_start = 0, 17, 11,
519 parent_grid_ratio = 1, 3, 3,
520 parent_time_step_ratio = 1, 3, 3,
525 move_interval = 3 , 6 , 9
526 move_cd_x = 1 , 1 , 1
527 move_cd_y = 1 , 1 , 1
528 use_adaptive_time_step = $USE_ADAPTIVE_TIME_STEP
529 step_to_output_time = $STEP_TO_OUTPUT_TIME
531 else if ( $dataset == jun01
) then
532 cat >! dom_real
<< EOF
534 time_step_fract_num = 0,
535 time_step_fract_den = 1,
543 dx = 10000, 3333.333333, 1111.111111,
544 dy = 10000, 3333.333333, 1111.111111,
547 i_parent_start = 0, 30, 11,
548 j_parent_start = 0, 20, 11,
549 parent_grid_ratio = 1, 3, 3,
550 parent_time_step_ratio = 1, 3, 3,
555 move_interval = 1 , 2 , 3
556 move_cd_x = 1 , 1 , 1
557 move_cd_y = 1 , 1 , 1
558 use_adaptive_time_step = $USE_ADAPTIVE_TIME_STEP
559 step_to_output_time = $STEP_TO_OUTPUT_TIME
562 cat >! dom_ideal
<< EOF
565 else if ( $NESTED != TRUE
) then
566 if ( $dataset == jan00
) then
567 cat >! dom_real
<< EOF
569 time_step_fract_num = 0,
570 time_step_fract_den = 1,
578 dx = 30000, 10000, 3333,
579 dy = 30000, 10000, 3333,
582 i_parent_start = 0, 31, 30,
583 j_parent_start = 0, 17, 30,
584 parent_grid_ratio = 1, 3, 3,
585 parent_time_step_ratio = 1, 3, 3,
588 use_adaptive_time_step = $USE_ADAPTIVE_TIME_STEP
589 step_to_output_time = $STEP_TO_OUTPUT_TIME
591 else if ( $dataset == jun01
) then
592 cat >! dom_real
<< EOF
594 time_step_fract_num = 0,
595 time_step_fract_den = 1,
603 dx = 10000, 3333.333333, 1111.111111,
604 dy = 10000, 3333.333333, 1111.111111,
607 i_parent_start = 0, 30, 11,
608 j_parent_start = 0, 20, 11,
609 parent_grid_ratio = 1, 3, 3,
610 parent_time_step_ratio = 1, 3, 3,
613 use_adaptive_time_step = $USE_ADAPTIVE_TIME_STEP
614 step_to_output_time = $STEP_TO_OUTPUT_TIME
616 else if ( $dataset == global
) then
617 cat >! dom_real
<< EOF
619 time_step_fract_num = 00
620 time_step_fract_den = 112
628 num_metgrid_levels = 27
629 dx = 625373.288,20000, 4000,
630 dy = 625373.288,20000, 4000,
631 p_top_requested = 5000
634 i_parent_start = 0, 17, 17,
635 j_parent_start = 0, 33, 33,
636 parent_grid_ratio = 1, 5, 5,
637 parent_time_step_ratio = 1, 5, 5,
642 cat >! dom_ideal
<< EOF
647 # The em_real entire physics namelist. Change what you want.
649 cat >! phys_real_1
<< EOF
650 mp_physics = 3, 3, 3,
651 ra_lw_physics = 1, 1, 1,
652 ra_sw_physics = 1, 1, 1,
654 sf_sfclay_physics = 1, 1, 1,
655 sf_surface_physics = 1, 1, 1,
656 bl_pbl_physics = 1, 1, 1,
658 cu_physics = 1, 1, 0,
663 surface_input_source = 1,
673 cat >! dyn_real_SAFE
<< EOF
674 moist_adv_opt = 0, 0, 0,
675 scalar_adv_opt = 0, 0, 0,
676 chem_adv_opt = 0, 0, 0,
677 tke_adv_opt = 0, 0, 0,
680 cat >! dyn_real_1
<< EOF
681 moist_adv_opt = 1, 1, 1,
682 scalar_adv_opt = 0, 0, 0,
683 chem_adv_opt = 0, 0, 0,
684 tke_adv_opt = 0, 0, 0,
687 cat >! time_real_1
<< EOF
688 auxinput1_inname = "met_em.d<domain>.<date>"
691 cat >! nest_real_1
<< EOF
692 input_from_file = .true.,.false.,.false.
695 cat >! damp_real_1
<< EOF
697 zdamp = 5000., 5000., 5000.,
698 dampcoef = 0.01, 0.01, 0.01
701 cat >! phys_real_2
<< EOF
702 mp_physics = 4, 4, 4,
703 ra_lw_physics = 1, 1, 1,
704 ra_sw_physics = 1, 1, 1,
706 sf_sfclay_physics = 2, 2, 2,
707 sf_surface_physics = 2, 2, 2,
708 bl_pbl_physics = 2, 2, 2,
710 cu_physics = 2, 2, 0,
713 topo_shading = 0, 0, 0,
717 surface_input_source = 1,
727 cat >! dyn_real_2
<< EOF
728 moist_adv_opt = 1, 1, 1,
729 scalar_adv_opt = 0, 0, 0,
730 chem_adv_opt = 0, 0, 0,
731 tke_adv_opt = 0, 0, 0,
734 if ( $GLOBAL == TRUE
) then
735 cp dyn_real_SAFE dyn_real_2
738 cat >! time_real_2
<< EOF
739 auxinput1_inname = "met_em.d<domain>.<date>"
742 cat >! nest_real_2
<< EOF
743 input_from_file = .true.,.false.,.false.
746 cat >! damp_real_2
<< EOF
748 zdamp = 5000., 5000., 5000.,
749 dampcoef = 0.01, 0.01, 0.01
752 cat >! phys_real_3
<< EOF
753 mp_physics = 5, 5, 5,
754 ra_lw_physics = 1, 1, 1,
755 ra_sw_physics = 2, 2, 2,
757 sf_sfclay_physics = 2, 2, 2,
758 sf_surface_physics = 3, 3, 3,
759 bl_pbl_physics = 2, 2, 2,
761 cu_physics = 3, 3, 0,
769 surface_input_source = 1,
779 cat >! dyn_real_3
<< EOF
780 moist_adv_opt = 2, 2, 2,
781 scalar_adv_opt = 0, 0, 0,
782 chem_adv_opt = 0, 0, 0,
783 tke_adv_opt = 0, 0, 0,
786 cat >! time_real_3
<< EOF
787 auxinput1_inname = "met_em.d<domain>.<date>"
790 cat >! nest_real_3
<< EOF
791 input_from_file = .true.,.false.,.false.
794 cat >! damp_real_3
<< EOF
796 zdamp = 5000., 5000., 5000.,
797 dampcoef = 0.01, 0.01, 0.01
800 cat >! phys_real_4
<< EOF
801 mp_physics = 6, 6, 6,
802 ra_lw_physics = 1, 1, 1,
803 ra_sw_physics = 2, 2, 2,
805 sf_sfclay_physics = 2, 2, 2,
806 sf_surface_physics = 2, 2, 2,
807 bl_pbl_physics = 2, 2, 2,
809 cu_physics = 5, 5, 0,
814 sf_urban_physics = 1, 1, 1,
815 surface_input_source = 1,
825 cat >! dyn_real_4
<< EOF
826 moist_adv_opt = 2, 2, 2,
827 scalar_adv_opt = 0, 0, 0,
828 chem_adv_opt = 0, 0, 0,
829 tke_adv_opt = 0, 0, 0,
832 cat >! time_real_4
<< EOF
833 auxinput1_inname = "met_em.d<domain>.<date>"
836 cat >! nest_real_4
<< EOF
837 input_from_file = .true.,.false.,.false.
840 cat >! damp_real_4
<< EOF
842 zdamp = 5000., 5000., 5000.,
843 dampcoef = 0.01, 0.01, 0.01
846 cat >! phys_real_5
<< EOF
847 mp_physics = 10, 10, 10,
848 ra_lw_physics = 1, 1, 1,
849 ra_sw_physics = 1, 1, 1,
851 sf_sfclay_physics = 7, 7, 7,
852 sf_surface_physics = 1, 1, 1,
853 bl_pbl_physics = 7, 7, 7,
855 cu_physics = 99, 99, 0,
858 topo_shading = 0, 0, 0,
862 sf_urban_physics = 1, 1, 1,
863 surface_input_source = 1,
873 cam_abs_freq_s = 21600
878 cat >! dyn_real_5
<< EOF
879 moist_adv_opt = 2, 2, 2,
880 scalar_adv_opt = 0, 0, 0,
881 chem_adv_opt = 0, 0, 0,
882 tke_adv_opt = 0, 0, 0,
885 cat >! time_real_5
<< EOF
886 auxinput1_inname = "met_em.d<domain>.<date>"
889 cat >! nest_real_5
<< EOF
890 input_from_file = .true.,.false.,.false.
893 cat >! damp_real_5
<< EOF
895 zdamp = 5000., 5000., 5000.,
896 dampcoef = 0.05, 0.05, 0.05
899 cat >! phys_real_6
<< EOF
900 mp_physics = 7, 7, 7,
901 ra_lw_physics = 1, 1, 1,
902 ra_sw_physics = 2, 2, 2,
904 sf_sfclay_physics = 7, 7, 7,
905 sf_surface_physics = 1, 1, 1,
906 bl_pbl_physics = 7, 7, 7,
908 cu_physics = 1, 1, 0,
916 sf_urban_physics = 1, 1, 1,
917 surface_input_source = 1,
927 cam_abs_freq_s = 21600
932 cat >! dyn_real_6
<< EOF
933 moist_adv_opt = 0, 0, 0,
934 scalar_adv_opt = 0, 0, 0,
935 chem_adv_opt = 0, 0, 0,
936 tke_adv_opt = 0, 0, 0,
939 cat >! time_real_6
<< EOF
940 auxinput1_inname = "met_em.d<domain>.<date>"
943 cat >! nest_real_6
<< EOF
944 input_from_file = .true.,.false.,.false.
947 cat >! damp_real_6
<< EOF
949 zdamp = 5000., 5000., 5000.,
950 dampcoef = 0.05, 0.05, 0.05
953 cat >! phys_real_7
<< EOF
954 mp_physics = 8, 8, 8,
955 ra_lw_physics = 3, 3, 3,
956 ra_sw_physics = 3, 3, 3,
958 sf_sfclay_physics = 2, 2, 2,
959 sf_surface_physics = 2, 2, 2,
960 bl_pbl_physics = 2, 2, 2,
962 cu_physics = 99, 99, 0,
967 sf_urban_physics = 1, 1, 1,
968 surface_input_source = 1,
978 cam_abs_freq_s = 21600
983 cat >! dyn_real_7
<< EOF
984 moist_adv_opt = 0, 0, 0,
985 scalar_adv_opt = 0, 0, 0,
986 chem_adv_opt = 0, 0, 0,
987 tke_adv_opt = 0, 0, 0,
990 cat >! time_real_7
<< EOF
991 auxinput1_inname = "met_em.d<domain>.<date>"
994 cat >! nest_real_7
<< EOF
995 input_from_file = .true.,.false.,.false.
998 cat >! damp_real_7
<< EOF
1000 zdamp = 5000., 5000., 5000.,
1001 dampcoef = 0.05, 0.05, 0.05
1004 if ( $GLOBAL == TRUE
) then
1005 sed -e 's/ cam_abs_dim2 *= [0-9][0-9]/ cam_abs_dim2 = 41/g' phys_real_5
>! phys_foo
1006 mv phys_foo phys_real_7
1007 cp dyn_real_SAFE dyn_real_1
1008 cp dyn_real_SAFE dyn_real_2
1009 cp dyn_real_SAFE dyn_real_3
1010 cp dyn_real_SAFE dyn_real_4
1011 cp dyn_real_SAFE dyn_real_5
1012 cp dyn_real_SAFE dyn_real_6
1013 cp dyn_real_SAFE dyn_real_7
1016 cat >! fdda_real_1
<< EOF
1017 grid_fdda = 1, 1, 1,
1018 gfdda_inname = "wrffdda_d<domain>",
1019 gfdda_end_h = 24, 24, 24,
1020 gfdda_interval_m = 360, 360, 360,
1022 if_no_pbl_nudging_uv = 0, 0, 1,
1023 if_no_pbl_nudging_t = 0, 0, 1,
1024 if_no_pbl_nudging_q = 0, 0, 1,
1025 if_zfac_uv = 0, 0, 1,
1026 k_zfac_uv = 10, 10, 1,
1027 if_zfac_t = 0, 0, 1,
1028 k_zfac_t = 10, 10, 1,
1029 if_zfac_q = 0, 0, 1,
1030 k_zfac_q = 10, 10, 1,
1031 guv = 0.0003, 0.0003, 0.0003,
1032 gt = 0.0003, 0.0003, 0.0003,
1033 gq = 0.0003, 0.0003, 0.0003,
1039 cat >! fdda_real_time_1
<< EOF
1042 cat >! fdda_real_2
<< EOF
1043 obs_nudge_opt = 1,1,1,1,1
1045 obs_nudge_wind = 1,1,1,1,1
1046 obs_coef_wind = 6.E-4,6.E-4,6.E-4,6.E-4,6.E-4
1047 obs_nudge_temp = 1,1,1,1,1
1048 obs_coef_temp = 6.E-4,6.E-4,6.E-4,6.E-4,6.E-4
1049 obs_nudge_mois = 1,1,1,1,1
1050 obs_coef_mois = 6.E-4,6.E-4,6.E-4,6.E-4,6.E-4
1051 obs_rinxy = 240.,240.,180.,180,180
1058 obs_ipf_errob = .true.
1059 obs_ipf_nudob = .true.
1060 obs_ipf_in4dob = .true.
1063 cat >! fdda_real_time_2
<< EOF
1064 auxinput11_interval_s = 180
1065 auxinput11_end_h = 6
1068 cat >! fdda_real_3
<< EOF
1069 grid_fdda = 1, 1, 1,
1070 gfdda_inname = "wrffdda_d<domain>",
1071 gfdda_end_h = 24, 24, 24,
1072 gfdda_interval_m = 360, 360, 360,
1074 if_no_pbl_nudging_uv = 0, 0, 1,
1075 if_no_pbl_nudging_t = 0, 0, 1,
1076 if_no_pbl_nudging_q = 0, 0, 1,
1077 if_zfac_uv = 0, 0, 1,
1078 k_zfac_uv = 10, 10, 1,
1079 if_zfac_t = 0, 0, 1,
1080 k_zfac_t = 10, 10, 1,
1081 if_zfac_q = 0, 0, 1,
1082 k_zfac_q = 10, 10, 1,
1083 guv = 0.0003, 0.0003, 0.0003,
1084 gt = 0.0003, 0.0003, 0.0003,
1085 gq = 0.0003, 0.0003, 0.0003,
1089 obs_nudge_opt = 1,1,1,1,1
1091 obs_nudge_wind = 1,1,1,1,1
1092 obs_coef_wind = 6.E-4,6.E-4,6.E-4,6.E-4,6.E-4
1093 obs_nudge_temp = 1,1,1,1,1
1094 obs_coef_temp = 6.E-4,6.E-4,6.E-4,6.E-4,6.E-4
1095 obs_nudge_mois = 1,1,1,1,1
1096 obs_coef_mois = 6.E-4,6.E-4,6.E-4,6.E-4,6.E-4
1097 obs_rinxy = 240.,240.,180.,180,180
1104 obs_ipf_errob = .true.
1105 obs_ipf_nudob = .true.
1106 obs_ipf_in4dob = .true.
1109 cat >! fdda_real_time_3
<< EOF
1110 auxinput11_interval_s = 180
1111 auxinput11_end_h = 6
1114 # Tested options for ideal case em_b_wave. Modifying these
1115 # parameters is acceptable. Adding to these requires changes
1116 # to the ideal namelist build below.
1118 cat >! phys_b_wave_1a
<< EOF
1123 cat >! phys_b_wave_1b
<< EOF
1124 mp_physics = 1, 1, 1,
1126 cat >! phys_b_wave_1c
<< EOF
1127 non_hydrostatic = .true., .true., .true.,
1129 cat >! phys_b_wave_1d
<< EOF
1130 input_from_file = .true.,.false.,.false.
1133 cat >! phys_b_wave_2a
<< EOF
1138 cat >! phys_b_wave_2b
<< EOF
1139 mp_physics = 1, 1, 1,
1141 cat >! phys_b_wave_2c
<< EOF
1142 non_hydrostatic = .false., .false., .false.,
1144 cat >! phys_b_wave_2d
<< EOF
1145 input_from_file = .true.,.false.,.false.
1148 cat >! phys_b_wave_3a
<< EOF
1153 cat >! phys_b_wave_3b
<< EOF
1154 mp_physics = 2, 2, 2,
1156 cat >! phys_b_wave_3c
<< EOF
1157 non_hydrostatic = .false., .false., .false.,
1159 cat >! phys_b_wave_3d
<< EOF
1160 input_from_file = .true.,.false.,.false.
1163 # Tested options for ideal case em_quarter_ss. Modifying these
1164 # parameters is acceptable. Adding to these requires changes
1165 # to the ideal namelist build below.
1167 cat >! phys_quarter_ss_1a
<< EOF
1172 cat >! phys_quarter_ss_1b
<< EOF
1173 mp_physics = 1, 1, 1,
1175 cat >! phys_quarter_ss_1c
<< EOF
1176 moist_adv_opt = 1, 1, 1,
1177 scalar_adv_opt = 1, 1, 1,
1178 chem_adv_opt = 1, 1, 1,
1179 tke_adv_opt = 1, 1, 1,
1180 non_hydrostatic = .true., .true., .true.,
1182 cat >! phys_quarter_ss_1d
<< EOF
1183 input_from_file = .true.,.false.,.false.
1185 cat >! phys_quarter_ss_1e
<< EOF
1186 periodic_x = .false.,.false.,.false.,
1187 open_xs = .true., .false.,.false.,
1188 open_xe = .true., .false.,.false.,
1189 periodic_y = .false.,.false.,.false.,
1190 open_ys = .true., .false.,.false.,
1191 open_ye = .true., .false.,.false.,
1193 cat >! phys_quarter_ss_1f
<< EOF
1194 sf_sfclay_physics = 0, 0, 0,
1197 cat >! phys_quarter_ss_2a
<< EOF
1202 cat >! phys_quarter_ss_2b
<< EOF
1203 mp_physics = 1, 1, 1,
1205 cat >! phys_quarter_ss_2c
<< EOF
1206 moist_adv_opt = 2, 2, 2,
1207 scalar_adv_opt = 2, 2, 2,
1208 chem_adv_opt = 2, 2, 2,
1209 tke_adv_opt = 2, 2, 2,
1210 non_hydrostatic = .true., .true., .true.,
1212 cat >! phys_quarter_ss_2d
<< EOF
1213 input_from_file = .true.,.false.,.false.
1215 cat >! phys_quarter_ss_2e
<< EOF
1216 periodic_x = .false.,.false.,.false.,
1217 open_xs = .true., .false.,.false.,
1218 open_xe = .true., .false.,.false.,
1219 periodic_y = .false.,.false.,.false.,
1220 open_ys = .true., .false.,.false.,
1221 open_ye = .true., .false.,.false.,
1223 cat >! phys_quarter_ss_2f
<< EOF
1224 sf_sfclay_physics = 1, 1, 1,
1227 cat >! phys_quarter_ss_3a
<< EOF
1232 cat >! phys_quarter_ss_3b
<< EOF
1233 mp_physics = 2, 2, 2,
1235 cat >! phys_quarter_ss_3c
<< EOF
1236 moist_adv_opt = 1, 1, 1,
1237 scalar_adv_opt = 1, 1, 1,
1238 chem_adv_opt = 1, 1, 1,
1239 tke_adv_opt = 1, 1, 1,
1240 non_hydrostatic = .false., .false., .false.,
1242 cat >! phys_quarter_ss_3d
<< EOF
1243 input_from_file = .true.,.false.,.false.
1245 cat >! phys_quarter_ss_3e
<< EOF
1246 periodic_x = .true., .false.,.false.,
1247 open_xs = .false.,.false.,.false.,
1248 open_xe = .false.,.false.,.false.,
1249 periodic_y = .true., .false.,.false.,
1250 open_ys = .false.,.false.,.false.,
1251 open_ye = .false.,.false.,.false.,
1253 cat >! phys_quarter_ss_3f
<< EOF
1254 sf_sfclay_physics = 1, 1, 1,
1257 if ( $IO_FORM_WHICH[$IO_FORM] == IO
) then
1258 cat >! io_format
<< EOF
1259 io_form_history = $IO_FORM
1260 io_form_restart = $IO_FORM
1261 io_form_input = $IO_FORM
1262 io_form_boundary = $IO_FORM
1264 else if ( $IO_FORM_WHICH[$IO_FORM] == I
) then
1265 cat >! io_format
<< EOF
1268 io_form_input = $IO_FORM
1269 io_form_boundary = $IO_FORM
1271 else if ( $IO_FORM_WHICH[$IO_FORM] == O
) then
1272 cat >! io_format
<< EOF
1273 io_form_history = $IO_FORM
1276 io_form_boundary = 2
1281 if ( $dataset == jun01
) then
1282 set filetag_real
=2001-06-11_12:00:00
1283 else if ( $dataset == jan00
) then
1284 set filetag_real
=2000-01-24_12:00:00
1285 else if ( $dataset == chem
) then
1286 set filetag_real
= ( 2006-04-06_00:00:00 2006-04-06_12:00:00 )
1287 else if ( $dataset == global
) then
1288 set filetag_real
=2008-01-02_12:00:00
1291 set filetag_ideal
=0001-01-01_00:00:00
1292 #DAVE###################################################
1293 echo did phys
, set date to
$filetag_real
1296 #DAVE###################################################
1298 #####################################################################
1300 # Set up info for particular architectures
1302 set ARCH
= ( `uname` )
1304 set ZAP_SERIAL
= FALSE
1305 set ZAP_OPENMP
= FALSE
1306 set SERIALRUNCOMMAND
=
1308 set MPIRUNCOMMANDPOST
=
1311 if ( $ARCH[1] == AIX
) then
1313 set TMPDIR
= /ptmp
/$user
1314 # keep stuff out of $HOME and /ptmp/$USER
1315 # this allows multiple regressions tests to run simultaneously
1316 # extend this to other machines later
1317 if ( ( `hostname | cut -c 1-2` == bs
) && ( ! $?LOADL_JOB_NAME
) ) then
1318 echo "${0}: ERROR:: This batch script must be submitted via"
1319 echo "${0}: LoadLeveler on an AIX machine\!"
1321 else if ( `hostname | cut -c 1-2` == bs
) then
1322 set job_id
= `echo ${LOADL_JOB_NAME} | cut -f2 -d'.'`
1323 set DEF_DIR
= /ptmp
/$user/wrf_regression.
${job_id}
1324 set TMPDIR
= $DEF_DIR
1325 if ( -d $DEF_DIR ) then
1326 echo "${0}: ERROR:: Directory ${DEF_DIR} exists, please remove it"
1330 echo "See ${DEF_DIR}/wrftest.output and other files in ${DEF_DIR} for test results"
1332 set CUR_DIR
= ${LOADL_STEP_INITDIR}
1333 else if ( ( `hostname | cut -c 1-2` == bv
) ||
( `hostname | cut -c 1-2` == be
) ) then
1334 set job_id
= $LSB_JOBID
1335 set DEF_DIR
= /ptmp
/$user/wrf_regression.
${job_id}
1336 set TMPDIR
= $DEF_DIR
1337 if ( -d $DEF_DIR ) then
1338 echo "${0}: ERROR:: Directory ${DEF_DIR} exists, please remove it"
1342 echo "See ${DEF_DIR}/wrftest.output and other files in ${DEF_DIR} for test results"
1344 else if ( ( ( `hostname | cut -c 1-2` != be
) && ( `hostname | cut -c 1-2` != bv
) ) && ( ! $?LOADL_JOB_NAME
) ) then
1345 echo "${0}: ERROR:: This batch script must be submitted via"
1346 echo "${0}: LoadLeveler on an AIX machine\!"
1348 else if ( ( `hostname | cut -c 1-2` != be
) && ( `hostname | cut -c 1-2` != bv
) ) then
1349 set job_id
= `echo ${LOADL_JOB_NAME} | cut -f2 -d'.'`
1350 set DEF_DIR
= /ptmp
/$user/wrf_regression.
${job_id}
1351 set TMPDIR
= $DEF_DIR
1352 if ( -d $DEF_DIR ) then
1353 echo "${0}: ERROR:: Directory ${DEF_DIR} exists, please remove it"
1357 echo "See ${DEF_DIR}/wrftest.output and other files in ${DEF_DIR} for test results"
1359 set CUR_DIR
= ${LOADL_STEP_INITDIR}
1361 if ( ! -d $TMPDIR ) mkdir
$TMPDIR
1362 set MAIL
= /usr
/bin
/mailx
1363 set COMPOPTS
= ( 1 2 3 )
1364 set COMPOPTS_NO_NEST
= 0
1365 set COMPOPTS_NEST_STATIC
= 1
1366 set COMPOPTS_NEST_PRESCRIBED
= 2
1368 set OPENMP
= $Num_Procs
1369 setenv MP_PROCS
$Num_Procs
1371 if ( `hostname | cut -c 1-2` == bs
) then
1372 set MPIRUNCOMMAND
= poe
1373 else if ( `hostname | cut -c 1-2` == bv
) then
1374 set MPIRUNCOMMAND
= mpirun.lsf
1375 else if ( `hostname | cut -c 1-2` == be
) then
1376 set MPIRUNCOMMAND
= /contrib
/mpiruns
/be
/mpirun.lsf
1377 else if ( ( `hostname | cut -c 1-2` != bs
) && \
1378 ( `hostname | cut -c 1-2` != bv
) && ( `hostname | cut -c 1-2` != be
) ) then
1379 set MPIRUNCOMMAND
= poe
1381 if ( $CHEM == TRUE
) then
1382 set ZAP_OPENMP
= TRUE
1383 else if ( $CHEM == FALSE
) then
1384 set ZAP_OPENMP
= FALSE
1386 # check compiler version, JM
1387 lslpp
-i |
grep xlf |
grep ' xlfcmp ' |
head -1
1388 set xlfvers
=`lslpp -i | grep xlf | grep ' xlfcmp ' | head -1 | awk '{print $2}' | sed 's/\...*$//'`
1389 if ( ( $xlfvers > 9 ) && ( $NESTED == TRUE
) ) then
1390 # set ZAP_OPENMP = TRUE
1392 # end of compiler check, JM
1393 echo "Compiler version info: " >! version_info
1394 echo "FORTRAN: " `lslpp -l | grep xlfrte | head -1 | awk '{print $1 " " $2}'` >>! version_info
1395 echo " " >>! version_info
1396 echo "OS version info: " >>! version_info
1397 echo "AIX: " `lslpp -l | grep bos.mp | head -1 | awk '{print $1 " " $2}'` >>! version_info
1398 echo " " >>! version_info
1399 setenv MP_SHARED_MEMORY
yes
1400 else if ( $ARCH[1] == Darwin
) then
1401 if ( ( `hostname` == stink
) && ( -d /stink
/gill
/Regression_Tests
) ) then
1402 set DEF_DIR
= /stink
/gill
/Regression_Tests
/wrf_regression
1405 echo "We at least need a directory from which to do stuff"
1409 set MAIL
= /usr
/bin
/mailx
1410 if ( $LINUX_COMP == PGI
) then
1411 set COMPOPTS
= ( 1 2 3 )
1412 set ZAP_OPENMP
= FALSE
1413 else if ( $LINUX_COMP == G95
) then
1414 set COMPOPTS
= ( 13 0 14 )
1415 set ZAP_OPENMP
= TRUE
1417 set COMPOPTS_NO_NEST
= 0
1418 set COMPOPTS_NEST_STATIC
= 1
1419 set COMPOPTS_NEST_PRESCRIBED
= 2
1422 cat >! `pwd`/machfile
<< EOF
1428 set Mach
= `pwd`/machfile
1429 set SERIALRUNCOMMAND
=
1431 echo "Compiler version info: " >! version_info
1432 if ( $LINUX_COMP == PGI
) then
1433 set MPIRUNCOMMAND
= ( /usr
/local
/mpich2-1.0
.6p1-pgi
/bin
/mpirun
-np $Num_Procs )
1434 pgf90
-V |
head -2 |
tail -1 >>&! version_info
1435 else if ( $LINUX_COMP == G95
) then
1436 set MPIRUNCOMMAND
= ( /stink
/gill
/local
/bin
/mpirun
-np $Num_Procs )
1437 g95
-v |
& grep gcc
>>&! version_info
1439 echo " " >>! version_info
1440 echo "OS version info: " >>! version_info
1441 uname
-a >>&! version_info
1442 echo " " >>! version_info
1443 ps
-A |
grep mpd |
grep -v grep >& /dev
/null
1445 if ( $ok != 0 ) then
1446 echo starting an mpd process
1449 else if ( $ARCH[1] == OSF1
&& $clrm == 1 ) then
1450 set DEF_DIR
= /`hostname | cut -d. -f1`/$user
1451 set TMPDIR
= /mmmtmp
/$user
1452 set MAIL
= /usr
/bin
/mailx
1453 if ( ( $NESTED == TRUE
) && ( $RSL_LITE != TRUE
) ) then
1454 set COMPOPTS
= ( 2 4 6 )
1455 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE != TRUE
) ) then
1456 set COMPOPTS
= ( 1 3 6 )
1457 else if ( ( $NESTED == TRUE
) && ( $RSL_LITE == TRUE
) ) then
1458 set COMPOPTS
= ( 2 4 5 )
1459 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE == TRUE
) ) then
1460 set COMPOPTS
= ( 1 3 5 )
1464 set ZAP_OPENMP
= TRUE
1465 cat >! $TMPDIR/machfile
<< EOF
1471 set Mach
= $TMPDIR/machfile
1472 set MPIRUNCOMMAND
= ( mpirun
-np $Num_Procs -machinefile $Mach )
1473 echo "Compiler version info: " >! version_info
1474 f90
-version >>&! version_info
1475 echo " " >>! version_info
1476 echo "OS version info: " >>! version_info
1477 uname
-a >>&! version_info
1478 echo " " >>! version_info
1479 else if ( ( $ARCH[1] == Linux
) && ( `hostname` == bay-mmm
) ) then
1480 set DEF_DIR
= /data
3/mp
/${user}/`hostname`
1481 if ( ! -d $DEF_DIR ) mkdir
$DEF_DIR
1483 set MAIL
= /bin
/mail
1484 if ( $LINUX_COMP == PGI
) then
1485 if ( ( $NESTED == TRUE
) && ( $RSL_LITE != TRUE
) ) then
1486 set COMPOPTS
= ( 2 4 5 )
1487 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE != TRUE
) ) then
1488 set COMPOPTS
= ( 1 3 5 )
1489 else if ( ( $NESTED == TRUE
) && ( $RSL_LITE == TRUE
) ) then
1490 set COMPOPTS
= ( 2 4 6 )
1491 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE == TRUE
) ) then
1492 set COMPOPTS
= ( 1 3 6 )
1494 else if ( $LINUX_COMP == INTEL
) then
1495 if ( $NESTED == TRUE
) then
1496 set COMPOPTS
= ( 8 10 11 )
1497 else if ( $NESTED != TRUE
) then
1498 set COMPOPTS
= ( 7 9 11 )
1502 set OPENMP
= $Num_Procs
1503 cat >! machfile
<< EOF
1509 set Mach
= `pwd`/machfile
1510 if ( $CHEM == TRUE
) then
1511 set ZAP_OPENMP
= TRUE
1512 else if ( $CHEM == FALSE
) then
1513 set ZAP_OPENMP
= FALSE
1515 if ( $LINUX_COMP == INTEL
) then
1516 set ZAP_OPENMP
= TRUE
1518 set MPIRUNCOMMAND
= ( mpirun
-np $Num_Procs -machinefile $Mach )
1519 echo "Compiler version info: " >! version_info
1520 if ( $LINUX_COMP == PGI
) then
1521 pgf90
-V >>&! version_info
1522 else if ( $LINUX_COMP == INTEL
) then
1523 ifort
-v >>&! version_info
1525 echo " " >>! version_info
1526 echo "OS version info: " >>! version_info
1527 uname
-a >>&! version_info
1528 echo " " >>! version_info
1529 else if ( ( $ARCH[1] == Linux
) && ( `hostname | cut -c 1-2` == ln ) ) then
1530 set DEF_DIR
= /ptmp
/${user}/wrf_regtest
1531 if ( ! -d $DEF_DIR ) mkdir
$DEF_DIR
1533 set MAIL
= /bin
/mail
1534 if ( $LINUX_COMP == PGI
) then
1535 if ( ( $NESTED == TRUE
) && ( $RSL_LITE != TRUE
) ) then
1536 set COMPOPTS
= ( 4 2 3 )
1537 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE != TRUE
) ) then
1538 set COMPOPTS
= ( 1 2 3 )
1543 cat >! machfile
<< EOF
1549 set Mach
= `pwd`/machfile
1550 set ZAP_OPENMP
= TRUE
1551 set MPIRUNCOMMAND
= mpirun.lsf
1552 echo "Compiler version info: " >! version_info
1553 if ( $LINUX_COMP == PGI
) then
1554 pgf90
-V >>&! version_info
1555 else if ( $LINUX_COMP == INTEL
) then
1556 ifort
-v >>&! version_info
1558 echo " " >>! version_info
1559 echo "OS version info: " >>! version_info
1560 uname
-a >>&! version_info
1561 echo " " >>! version_info
1562 else if ( ( $ARCH[1] == Linux
) && ( `hostname` == loquat
) ) then
1564 set DEF_DIR
= /loquat
2/$user/wrf_regression.
${job_id}
1565 set TMPDIR
= $DEF_DIR
1566 if ( -d $DEF_DIR ) then
1567 echo "${0}: ERROR:: Directory ${DEF_DIR} exists, please remove it"
1571 echo "See directory ${DEF_DIR}/ for wrftest.output and other test results"
1573 set MAIL
= /bin
/mail
1574 if ( $LINUX_COMP == PGI
) then
1575 if ( ( $NESTED == TRUE
) && ( $RSL_LITE != TRUE
) ) then
1576 set COMPOPTS
= ( 2 4 5 )
1577 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE != TRUE
) ) then
1578 set COMPOPTS
= ( 1 3 5 )
1579 else if ( ( $NESTED == TRUE
) && ( $RSL_LITE == TRUE
) ) then
1580 set COMPOPTS
= ( 2 4 6 )
1581 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE == TRUE
) ) then
1582 set COMPOPTS
= ( 1 3 6 )
1584 else if ( $LINUX_COMP == INTEL
) then
1585 if ( $NESTED == TRUE
) then
1586 set COMPOPTS
= ( 8 10 11 )
1587 else if ( $NESTED != TRUE
) then
1588 set COMPOPTS
= ( 7 9 11 )
1592 set OPENMP
= $Num_Procs
1593 cat >! machfile
<< EOF
1599 set Mach
= `pwd`/machfile
1600 if ( $CHEM == TRUE
) then
1601 set ZAP_OPENMP
= TRUE
1602 else if ( $CHEM == FALSE
) then
1603 set ZAP_OPENMP
= FALSE
1605 if ( $LINUX_COMP == INTEL
) then
1606 set ZAP_OPENMP
= TRUE
1608 set MPIRUNCOMMAND
= ( mpirun
-np $Num_Procs -machinefile $Mach )
1609 echo "Compiler version info: " >! version_info
1610 if ( $LINUX_COMP == PGI
) then
1611 pgf90
-V >>&! version_info
1612 else if ( $LINUX_COMP == INTEL
) then
1613 ifort
-v >>&! version_info
1615 echo " " >>! version_info
1616 echo "OS version info: " >>! version_info
1617 uname
-a >>&! version_info
1618 echo " " >>! version_info
1619 else if ( `hostname` == tempest
) then
1620 set DEF_DIR
= /ptmp
/${user}/wrf_regtest.
${QSUB_REQID}
1621 if ( ! -d $DEF_DIR ) mkdir
$DEF_DIR
1623 set MAIL
= /usr
/sbin
/Mail
1624 set COMPOPTS
= ( 1 2 3 )
1626 set OPENMP
= $Num_Procs
1627 set Mach
= `pwd`/machfile
1628 set ZAP_OPENMP
= TRUE
1629 set MPIRUNCOMMAND
= ( mpirun
-np $Num_Procs )
1630 echo "Compiler version info: " >! version_info
1631 f90
-version >>&! version_info
1632 echo " " >>! version_info
1633 echo "OS version info: " >>! version_info
1634 uname
-a >>&! version_info
1635 echo " " >>! version_info
1636 else if ( ( $ARCH[1] == Linux
) && ( `hostname` == master
) ) then
1637 set DEF_DIR
= /big
6/gill
/DO_NOT_REMOVE_DIR
1639 set MAIL
= /bin
/mail
1640 if ( $LINUX_COMP == PGI
) then
1641 if ( $NESTED == TRUE
) then
1642 set COMPOPTS
= ( 2 4 5 )
1643 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE == TRUE
) ) then
1644 set COMPOPTS
= ( 1 3 6 )
1645 else if ( ( $NESTED != TRUE
) && ( $RSL_LITE != TRUE
) ) then
1646 set COMPOPTS
= ( 1 3 5 )
1648 else if ( $LINUX_COMP == INTEL
) then
1649 if ( $NESTED == TRUE
) then
1650 set COMPOPTS
= ( 8 10 11 )
1651 else if ( $NESTED != TRUE
) then
1652 set COMPOPTS
= ( 7 9 11 )
1657 cat >! machfile
<< EOF
1663 set Mach
= `pwd`/machfile
1664 if ( $CHEM == TRUE
) then
1665 set ZAP_OPENMP
= TRUE
1666 else if ( $CHEM == FALSE
) then
1667 set ZAP_OPENMP
= FALSE
1669 if ( $LINUX_COMP == INTEL
) then
1670 set ZAP_OPENMP
= TRUE
1672 set MPIRUNCOMMAND
= ( mpirun
-v -np $Num_Procs -machinefile $Mach -nolocal )
1673 set MPIRUNCOMMANDPOST
= "< /dev/null"
1674 echo "Compiler version info: " >! version_info
1675 if ( $LINUX_COMP == PGI
) then
1676 pgf90
-V >>&! version_info
1677 else if ( $LINUX_COMP == INTEL
) then
1678 ifort
-v >>&! version_info
1680 echo " " >>! version_info
1681 echo "OS version info: " >>! version_info
1682 uname
-a >>&! version_info
1683 echo " " >>! version_info
1685 echo "Unrecognized architecture for regression test" >! error_message
1686 echo `uname` >> error_message
1687 echo `hostname` >> error_message
1688 $MAIL -s "Unknown architecture $ARCH[1] " $FAIL_MAIL < error_message
1692 #####################################################################
1693 #DAVE###################################################
1694 echo did the arch specific stuff
1697 #DAVE###################################################
1699 if ( $FDDA == TRUE
) then
1700 if ( ( $PHYSOPTS_FDDA == GRID
) && ( $ZAP_OPENMP == FALSE
) ) then
1701 set ZAP_OPENMP
= FALSE
1702 else if ( $PHYSOPTS_FDDA == BOTH
) then
1703 set ZAP_OPENMP
= TRUE
1707 # First of all, in which particular directory do we start.
1711 # We want to keep the old regression stuff around
1713 if ( -d regression_test
) then
1714 if ( -d regression_test.old
) then
1715 /bin
/rm -fr regression_test.old
1717 /bin
/mv regression_test regression_test.old
1720 # Go to the regression test directory
1722 mkdir regression_test
1724 if ( $ok != 0 ) then
1725 echo "Gee, I cannot make a directory in $DEF_DIR" >! error_message
1726 echo `pwd` >> error_message
1727 echo `\ls -ls` >> error_message
1728 $MAIL -s "$DEF_DIR not writable $ARCH[1] " $FAIL_MAIL < error_message
1731 pushd regression_test
1734 if ( $acquire_from == "cvs" ) then
1736 # Checkout the most recent version of WRF from the NCAR cvs repository,
1737 # and pick up the required input data from the anonymous ftp site.
1739 cvs checkout
-D $thedate WRFV3
1740 find .
/WRFV3
-exec touch \
{\
} \
;
1741 ftp -n ftp.ucar.edu
< ftp_script_data
1744 else if ( $acquire_from == "filearg" ) then
1746 # A tar file of the WRF source was provided, so that is used, along with
1747 # the required input data files from the ftp site.
1753 ftp -n ftp.ucar.edu
< ftp_script_data
1755 else if ( $acquire_from == "environment" ) then
1757 # A tar file of WRF is assumed to be available.
1763 # And we can stick the input data where we want, the WRFV3 directory has been created.
1765 ( cd WRFV
3/test
/em_real
; ln -sf $thedataem/* .
)
1766 #( cd WRFV3/test/nmm_real ; ln -s $thedatanmm/wrf_real* . ; cp $thedatanmm/namelist.input.regtest . )
1767 ( cd WRFV
3/test
/nmm_real
; ln -s $thedatanmm/wrf_real
* .
; ln -s $thedatanmm/wrf_nest
* .
; ln -s $thedatanmm/geo_
* .
; \
1768 cp $thedatanmm/namelist.nest.regtest .
; ln -s $thedatanmm/met_nmm
* .
; \
1769 sed '/dyn_opt/d' $thedatanmm/namelist.input.regtest
>! .
/namelist.input.regtest
)
1771 ##LPC( cd WRFV3/test/nmm_real ; ln -s $thedatanmm/wrf_real* . ; \
1772 ##LPC sed '/dyn_opt/d' $thedatanmm/namelist.input.regtest >! ./namelist.input.regtest )
1773 #DAVE###################################################
1774 ( cd WRFV
3/test
/em_real
; ls -ls )
1775 ( cd WRFV
3/test
/nmm_real
; ls -ls )
1778 #DAVE###################################################
1780 # John-specific stuff for maple is the else; part of the "using service machines".
1785 if ( ! -d $TMPDIR ) then
1786 echo something wrong
1
1788 if ( ! -d $TMPDIR/RUN
) then
1790 /bin
/rm -fr $TMPDIR/RUN
/*
1792 if ( -d $TMPDIR/RUN
) then
1793 tar cf
- .
/WRFV
3/test .
/WRFV
3/main |
( cd $TMPDIR/RUN
; tar xvf
- )
1796 echo something wrong
2
1801 # Here we initialize our output message.
1803 if ( -e ${DEF_DIR}/wrftest.output
) rm ${DEF_DIR}/wrftest.output
1804 echo "Architecture $ARCH[1] machine: `hostname`" >>! ${DEF_DIR}/wrftest.output
1805 echo "WRFV3 source from: $acquire_from " >>! ${DEF_DIR}/wrftest.output
1806 echo "Number of OpenMP processes to use: $OPENMP" >>! ${DEF_DIR}/wrftest.output
1807 echo "Number of MPI processes to use: $Num_Procs" >>! ${DEF_DIR}/wrftest.output
1808 if ( $ARCH[1] == Darwin
) then
1809 set name
= `finger $user | grep "Name:" | awk '{print $4 " " $5}'`
1811 set name
= ( `grep ^${user}: /etc/passwd | cut -d: -f5` )
1813 echo "Test conducted by $name" >>! ${DEF_DIR}/wrftest.output
1814 echo " " >>! ${DEF_DIR}/wrftest.output
1815 echo "Test run from directory ${CUR_DIR}" >>! ${DEF_DIR}/wrftest.output
1816 echo " " >>! ${DEF_DIR}/wrftest.output
1817 if ( $?LOADL_JOB_NAME
) then
1818 echo "Loadlever job name = ${LOADL_JOB_NAME}" >>! ${DEF_DIR}/wrftest.output
1819 echo " " >>! ${DEF_DIR}/wrftest.output
1821 echo "Real data case for EM is from $dataset " >>! ${DEF_DIR}/wrftest.output
1822 echo " " >>! ${DEF_DIR}/wrftest.output
1823 echo "The em real and ideal forecasts will be nested: $NESTED " >>! ${DEF_DIR}/wrftest.output
1824 echo " " >>! ${DEF_DIR}/wrftest.output
1825 if ( $REG_TYPE == BIT4BIT
) then
1826 echo "This is a bit-wise (traditional) regression test. " >>! ${DEF_DIR}/wrftest.output
1827 echo " " >>! ${DEF_DIR}/wrftest.output
1828 else if ( $REG_TYPE == OPTIMIZED
) then
1829 echo "This is a fully optimized regression test. " >>! ${DEF_DIR}/wrftest.output
1830 echo "No inter-comparisons are made. " >>! ${DEF_DIR}/wrftest.output
1831 echo " " >>! ${DEF_DIR}/wrftest.output
1833 if ( $REAL8 == TRUE
) then
1834 echo "Floating point precision is 8-bytes" >>! ${DEF_DIR}/wrftest.output
1835 echo " " >>! ${DEF_DIR}/wrftest.output
1837 if ( ( $CHEM == TRUE
) && ( $KPP != TRUE
) ) then
1838 echo "WRF_CHEM tests run for em_real core only" >>! ${DEF_DIR}/wrftest.output
1839 echo " " >>! ${DEF_DIR}/wrftest.output
1840 else if ( ( $CHEM == TRUE
) && ( $KPP == TRUE
) ) then
1841 echo "WRF_CHEM KPP tests run for em_real core only" >>! ${DEF_DIR}/wrftest.output
1842 echo " " >>! ${DEF_DIR}/wrftest.output
1844 if ( $ADAPTIVE == TRUE
) then
1845 echo "Adaptive time step for em_real core only" >>! ${DEF_DIR}/wrftest.output
1846 echo " " >>! ${DEF_DIR}/wrftest.output
1848 if ( $GLOBAL == TRUE
) then
1849 echo "Global tests run for em_real core only" >>! ${DEF_DIR}/wrftest.output
1850 echo " " >>! ${DEF_DIR}/wrftest.output
1852 if ( $ESMF_LIB == TRUE
) then
1853 echo "A separately installed version of the latest ESMF library" >>! ${DEF_DIR}/wrftest.output
1854 echo "(NOT the ESMF library included in the WRF tarfile) will" >>! ${DEF_DIR}/wrftest.output
1855 echo "be used for MPI tests" >>! ${DEF_DIR}/wrftest.output
1856 echo " " >>! ${DEF_DIR}/wrftest.output
1858 if ( $QUILT == TRUE
) then
1859 echo "One WRF output quilt server will be used for some tests" >>! ${DEF_DIR}/wrftest.output
1860 echo " " >>! ${DEF_DIR}/wrftest.output
1862 if ( $FDDA == TRUE
) then
1863 if ( $PHYSOPTS_FDDA == GRID
) then
1864 echo "Running FDDA tests (grid nudging only)" >>! ${DEF_DIR}/wrftest.output
1865 echo " " >>! ${DEF_DIR}/wrftest.output
1866 else if ( $PHYSOPTS_FDDA == BOTH
) then
1867 echo "Running FDDA tests (grid=1, obs=2, grid+obs=3)" >>! ${DEF_DIR}/wrftest.output
1868 echo " " >>! ${DEF_DIR}/wrftest.output
1871 if ( $GENERATE_BASELINE != FALSE
) then
1872 echo "WRF output will be archived in baseline directory ${GENERATE_BASELINE} for some tests" >>! \
1873 ${DEF_DIR}/wrftest.output
1874 echo " " >>! ${DEF_DIR}/wrftest.output
1876 if ( $COMPARE_BASELINE != FALSE
) then
1877 echo "WRF output will be compared with files in baseline directory ${COMPARE_BASELINE} for some tests" >>! \
1878 ${DEF_DIR}/wrftest.output
1879 echo " " >>! ${DEF_DIR}/wrftest.output
1881 echo "The selected I/O option is $IO_FORM ($IO_FORM_NAME[$IO_FORM])" >>! ${DEF_DIR}/wrftest.output
1882 if ( $IO_FORM_WHICH[$IO_FORM] == IO
) then
1883 echo "This option is for both input and history files" >>! ${DEF_DIR}/wrftest.output
1884 echo " " >>! ${DEF_DIR}/wrftest.output
1885 else if ( $IO_FORM_WHICH[$IO_FORM] == I
) then
1886 echo "This option is for input files only" >>! ${DEF_DIR}/wrftest.output
1887 echo " " >>! ${DEF_DIR}/wrftest.output
1888 else if ( $IO_FORM_WHICH[$IO_FORM] == O
) then
1889 echo "This option is for history files only" >>! ${DEF_DIR}/wrftest.output
1890 echo " " >>! ${DEF_DIR}/wrftest.output
1893 cat ${CUR_DIR}/version_info
>>! ${DEF_DIR}/wrftest.output
1895 # There are three WRF em executables to be considered that can run in threaded and
1896 # distributed memory. The 2d hills and 2d squall lines cannot be parallelized with
1897 # MPI, and are therefore not considered in this shell. The nmm is only run with
1898 # distributed memory (1 vs 4 procs).
1900 set first_time_in
= TRUE
1901 foreach core
( $CORES )
1902 #DAVE###################################################
1903 echo doing core
$core
1906 #DAVE###################################################
1908 # Some sleight of hand is required for the chemistry tests because we need to
1909 # build it twice. But normally, we only build with different real vs ideal, or em vs nmm.
1910 # What to do, what to do? Well, we ask for em_real TWICE. The first time we build without chemistry
1911 # activated, the second time with it activated. The first time, we do a single
1912 # test, the second time through, we do the other 5 tests.
1914 if ( ( $CHEM == TRUE
) && ( ${#CORES} == 2 ) && ( $first_time_in == TRUE
) ) then
1916 set PHYSOPTS
= ( 1 )
1917 set first_time_in
= FALSE
1918 else if ( ( $CHEM == TRUE
) && ( $KPP != TRUE
) && ( ${#CORES} == 2 ) && ( $first_time_in != TRUE
) ) then
1920 set PHYSOPTS
= ( 2 3 4 5 6 )
1921 else if ( ( $CHEM == TRUE
) && ( $KPP == TRUE
) && ( ${#CORES} == 2 ) && ( $first_time_in != TRUE
) ) then
1923 set PHYSOPTS
= ( 2 3 )
1928 set ZAP_SERIAL_FOR_THIS_CORE
= FALSE
1929 set ZAP_OPENMP_FOR_THIS_CORE
= FALSE
1930 if ( `echo $core | cut -c 1-2` == em
) then
1931 setenv WRF_EM_CORE
1
1932 setenv WRF_NMM_CORE
0
1933 setenv WRF_COAMPS_CORE
0
1934 setenv WRF_EXP_CORE
0
1935 set ZAP_SERIAL_FOR_THIS_CORE
= FALSE
1936 set ZAP_OPENMP_FOR_THIS_CORE
= FALSE
1937 else if ( `echo $core | cut -c 1-3` == nmm
) then
1938 setenv WRF_EM_CORE
0
1939 setenv WRF_NMM_CORE
1
1940 setenv WRF_NMM_NEST
1
1941 setenv WRF_COAMPS_CORE
0
1942 setenv WRF_EXP_CORE
0
1943 set ZAP_SERIAL_FOR_THIS_CORE
= TRUE
1944 set ZAP_OPENMP_FOR_THIS_CORE
= TRUE
1947 # Here we are looping over all of the various compilation configurations,
1948 # such as serial only, OpenMP only, MPI only, etc. Each architecture
1949 # has its own list of these options. We build each of the executables for
1950 # this particular ${core}.
1952 foreach compopt
( $COMPOPTS )
1953 #DAVE###################################################
1954 echo doing compile option
$compopt
1957 #DAVE###################################################
1959 # We sometimes are interested in bypassing the OpenMP option.
1961 if ( $compopt == $COMPOPTS[2] ) then
1962 if ( $ZAP_OPENMP == TRUE ||
$ZAP_OPENMP_FOR_THIS_CORE == TRUE
) then
1967 # NMM only runs parallel
1968 if ( $compopt == $COMPOPTS[1] ) then
1969 if ( $ZAP_SERIAL == TRUE ||
$ZAP_SERIAL_FOR_THIS_CORE == TRUE
) then
1974 if ( `uname` == AIX
) goto BUILD_REGARDLESS
1976 # Did we already build this one?
1978 if ( $core == em_real
) then
1979 if ( ( $compopt == $COMPOPTS[1] ) && \
1980 ( -e main
/wrf_
${core}.exe.
$compopt ) && \
1981 ( -e main
/real_
${core}.exe
.1 ) && \
1982 ( -e ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
) ) then
1984 else if ( ( $compopt != $COMPOPTS[1] ) && \
1985 ( -e main
/wrf_
${core}.exe.
$compopt ) && \
1986 ( -e ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
) ) then
1990 if ( ( $compopt == $COMPOPTS[1] ) && \
1991 ( -e main
/wrf_
${core}.exe.
$compopt ) && \
1992 ( -e main
/ideal_
${core}.exe
.1 ) && \
1993 ( -e ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
) ) then
1995 else if ( ( $compopt != $COMPOPTS[1] ) && \
1996 ( -e main
/wrf_
${core}.exe.
$compopt ) && \
1997 ( -e ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
) ) then
2004 # The WRF configuration file works with a single integer
2005 # input, which is the compiler option. By convention, option $COMPOPTS[1] is
2006 # serial, $COMPOPTS[2] is OMP, and $COMPOPTS[3] is MPI.
2008 # Print info about use of separately installed ESMF library.
2009 set esmf_lib_str
= " - - - - - - - - - - - - - "
2010 if ( $ESMF_LIB == TRUE
) then
2011 # only test ESMF with MPI
2012 if ( $compopt == $COMPOPTS[3] ) then
2013 echo "A separately installed version of the latest ESMF library" >>! ${DEF_DIR}/wrftest.output
2014 echo "(NOT the ESMF library included in the WRF tarfile) is" >>! ${DEF_DIR}/wrftest.output
2015 echo "being used for this test of $core parallel $compopt..." >>! ${DEF_DIR}/wrftest.output
2016 set esmf_lib_str
= "using separate ESMF library"
2017 echo "Setting ESMFLIB = ${ESMFLIBSAVE}" >>! ${DEF_DIR}/wrftest.output
2018 echo "Setting ESMFINC = ${ESMFINCSAVE}" >>! ${DEF_DIR}/wrftest.output
2019 setenv ESMFLIB
$ESMFLIBSAVE
2020 setenv ESMFINC
$ESMFINCSAVE
2027 #DAVE###################################################
2028 echo start build mechanism
2031 #DAVE###################################################
2034 # Edit build command for either bit-wise comparison or full optimization.
2036 if ( $REG_TYPE == BIT4BIT
) then
2042 # Edit build command. If this is a nested run, then either static nest
2043 # (idealized) or prescribed move (em_real). If not nested, then shut off
2044 # the nesting build option.
2046 if ( $NESTED == TRUE
) then
2047 if ( $core == em_real
) then
2048 set compopts_nest
= $COMPOPTS_NEST_PRESCRIBED
2050 set compopts_nest
= $COMPOPTS_NEST_STATIC
2053 set compopts_nest
= $COMPOPTS_NO_NEST
2056 .
/configure
$DEBUG_FLAG << EOF
2060 cp configure.wrf configure.wrf.core
=${core}_build
=${compopt}
2062 # The configure.wrf file needs to be adjusted as to whether we are requesting real*4 or real*8
2063 # as the default floating precision.
2065 if ( $REAL8 == TRUE
) then
2066 sed -e '/^RWORDSIZE/s/\$(NATIVE_RWORDSIZE)/8/' configure.wrf
> ! foo
; /bin
/mv foo configure.wrf
2069 # Fix the OpenMP default for IBM regression testing - noopt required for bit-wise comparison.
2071 if ( ( $compopt == $COMPOPTS[2] ) && ( `uname` == AIX
) ) then
2072 sed -e '/^OMP/s/-qsmp=noauto/-qsmp=noauto:noopt/' configure.wrf
> ! foo
; /bin
/mv foo configure.wrf
2075 # Save the configure file.
2077 cp configure.wrf configure.wrf.core
=${core}_build
=${compopt}
2079 #DAVE###################################################
2080 echo configure built with optim mods removed
, ready to compile
2083 #DAVE###################################################
2085 # The WRF_SRC_ROOT_DIR hack is only used by the OSF1 build.
2086 # It works around the annoying fact that in OSF1 $(PWD) does
2087 # not change during execution of regtest.csh, despite the "cd"
2088 # and "pushd" commands.
2089 setenv WRF_SRC_ROOT_DIR
"${DEF_DIR}/regression_test/WRFV3"
2090 # Build this executable
2092 .
/compile
$core >&! compile_
${core}_build
=${compopt}.log
2093 #DAVE###################################################
2097 #DAVE###################################################
2099 # Did the compile work? Check the expected executable names and locations.
2102 if ( ! -x main
/wrf.exe
) set ok
= 1
2104 if ( ( $core == em_real
) && ( $compopt == $COMPOPTS[1] ) ) then
2105 if ( ! -e main
/real.exe
) set ok
= 1
2106 else if ( ( $core == nmm_real
) && ( $compopt == $COMPOPTS[3] ) ) then
2107 if ( ! -e main
/real_nmm.exe
) set ok
= 1
2108 else if ( $compopt == $COMPOPTS[1] ) then
2109 if ( ! -e main
/ideal.exe
) set ok
= 1
2112 if ( ! -x external
/io_netcdf
/diffwrf
) set ok
= 1
2113 # if ( ! -x external/io_int/diffwrf ) set ok = 1
2115 if ( $ok != 0 ) then
2116 echo "SUMMARY compilation for $core parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2117 $MAIL -s "REGRESSION FAILURE $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2120 echo "SUMMARY compilation for $core parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2121 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2122 mv main
/wrf.exe main
/wrf_
${core}.exe.
$compopt
2123 if ( ( $core == em_real
) && ( $compopt == $COMPOPTS[1] ) ) then
2124 mv main
/real.exe main
/real_
${core}.exe
.1
2125 else if ( ( $core == nmm_real
) && ( $compopt == $COMPOPTS[3] ) ) then
2126 mv main
/real_nmm.exe main
/real_
${core}.exe.
$COMPOPTS[3]
2127 else if ( $compopt == $COMPOPTS[1] ) then
2128 mv main
/ideal.exe main
/ideal_
${core}.exe
.1
2130 #DAVE###################################################
2135 #DAVE###################################################
2141 cp main
/*exe
* $TMPDIR/RUN
/WRFV
3/main
2147 pushd $TMPDIR/RUN
/WRFV3
2150 # We have all of the executables built, now we run'em. This is a loop
2151 # over all of the various physics options for this particular
2152 # ${core}. Inside the physics loop, we loop over the parallel options.
2153 # This allows us to use the same WRF input files for each of the parallel
2154 # choices for a single physics loop index.
2156 foreach phys_option
( $PHYSOPTS )
2157 #DAVE###################################################
2158 echo which phys option
$phys_option
2161 #DAVE###################################################
2163 # For each of the executables, we need to run several physics
2166 if ( $core == em_real
) then
2168 if ( $CHEM != TRUE
) then
2169 set filetag
=$filetag_real
2170 else if ( $CHEM == TRUE
) then
2171 if ( $phys_option <= 3 ) then
2172 set filetag
=$filetag_real[1]
2174 set filetag
=$filetag_real[2]
2178 foreach compopt
( $COMPOPTS )
2179 #DAVE###################################################
2180 echo real
if filetag is
$filetag
2181 echo compopt
= $compopt
2184 #DAVE###################################################
2186 # We sometimes are interested in bypassing the OpenMP option.
2188 if ( $compopt == $COMPOPTS[2] ) then
2189 if ( $ZAP_OPENMP == TRUE ||
$ZAP_OPENMP_FOR_THIS_CORE == TRUE
) then
2190 goto BYPASS_COMP_LOOP_REAL
2194 if ( $compopt == $COMPOPTS[1] ) then
2195 if ( $ZAP_SERIAL == TRUE ||
$ZAP_SERIAL_FOR_THIS_CORE == TRUE
) then
2196 goto BYPASS_COMP_LOOP_REAL
2203 # Create the correct namelist.input file for real data cases.
2206 if ( $CHEM != TRUE
) then
2207 cp ${CUR_DIR}/phys_real_
${phys_option} phys_opt
2208 if ( $NESTED != TRUE
) then
2209 cp ${CUR_DIR}/dyn_real_
${phys_option} dyn_opt
2211 cp ${CUR_DIR}/dyn_real_SAFE dyn_opt
2213 cp ${CUR_DIR}/time_real_
${phys_option} time_opt
2214 cp ${CUR_DIR}/dom_real dom_real
2215 cp ${CUR_DIR}/nest_real_
${phys_option} nest_input_opt
2216 cp ${CUR_DIR}/damp_real_
${phys_option} damp_real
2217 if ( -e fdda_opt
) rm fdda_opt
2218 cat " grid_fdda=0" > fdda_opt
2219 if ( -e fdda_time
) rm fdda_time
2221 if ( $FDDA == TRUE
) then
2222 cp ${CUR_DIR}/fdda_real_
${phys_option} fdda_opt
2223 cp ${CUR_DIR}/fdda_real_time_
${phys_option} fdda_time
2226 set time_step
= `awk ' /^ time_step /{ print $3 } ' namelist.input.$dataset | cut -d, -f1`
2228 # Wanna do more/less time steps on the real cases? Easy. Those last two numbers
2229 # in the eqns are all you need. Their product must be 60. So, instead of 3 and 20,
2230 # (3 coarse grid timesteps), you could use 20 and 3 (20 coarse grid time steps).
2232 if ( $NESTED == TRUE
) then
2233 @ run_seconds
= $time_step * 3
2234 @ history_interval
= $time_step / 20
2235 else if ( $NESTED != TRUE
) then
2236 @ run_seconds
= $time_step * 10
2237 @ history_interval
= $time_step / 6
2239 rm ed_in namelist.input.temp
2241 g/run_seconds/s/[0-9]/$run_seconds
2242 g/history_interval/s/[0-9][0-9][0-9]/$history_interval
2243 w namelist.input.temp
2246 ed namelist.input.
$dataset < ed_in
2248 cp ${CUR_DIR}/io_format io_format
2249 sed -e '/^ mp_physics/,/ensdim/d' -e '/^ &physics/r ./phys_opt' \
2250 -e '/^ moist_adv_opt/,/scalar_adv_opt/d' -e '/^ non_hydrostatic/r ./dyn_opt' \
2251 -e '/^ auxinput1_inname/d' -e '/^ debug_level/r ./time_opt' \
2252 -e '/^ input_from_file/d' -e '/^ interval_seconds/r ./nest_input_opt' \
2253 -e '/^ time_step /,/^ smooth_option/d' -e '/^ &domains/r ./dom_real' \
2254 -e '/^ damp_opt /,/^ dampcoef/d' -e '/^ base_temp/r ./damp_real' \
2255 -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
2256 -e 's/ frames_per_outfile *= [0-9][0-9]*/ frames_per_outfile = 200/g' \
2257 -e 's/ run_days *= [0-9][0-9]*/ run_days = 0/g' \
2258 -e 's/ run_hours *= [0-9][0-9]*/ run_hours = 0/g' \
2259 -e 's/ run_minutes *= [0-9][0-9]*/ run_minutes = 0/g' \
2260 -e '/^ &fdda/r fdda_opt' \
2261 -e '/^ debug_level/r fdda_time' \
2263 namelist.input.temp
>! namelist.input
2265 # The chem run has its own namelist, due to special input files (io_form not tested for chem)
2267 else if ( $CHEM == TRUE
) then
2268 if ( ( $KPP == TRUE
) && ( $phys_option >= 3 ) ) then
2269 sed -e '/dyn_opt/d' \
2270 -e 's/^ chem_opt *= [0-9]/ chem_opt = '${CHEM_OPT}'/' \
2271 namelist.input.chem_test_
${phys_option} >! namelist.input
2273 sed -e '/dyn_opt/d' \
2274 namelist.input.chem_test_
${phys_option} >! namelist.input
2277 if ( -e met_em.d01.
${filetag} ) then
2280 if ( ${phys_option} <= 3 ) then
2288 # WRF output quilt servers are only tested for MPI configuration.
2289 # Currently, only one WRF output quilt server is used.
2291 if ( $QUILT == TRUE
) then
2292 if ( $compopt == $COMPOPTS[3] ) then
2293 # For now, test only one group of one output quilt servers.
2294 sed -e 's/ nio_tasks_per_group *= *[0-9][0-9]*/ nio_tasks_per_group = 1/g' \
2295 -e 's/ nio_groups *= *[0-9][0-9]*/ nio_groups = 1/g' \
2296 namelist.input
>! namelist.input.temp
2297 mv -f namelist.input.temp namelist.input
2298 echo "Building namelist.input.$core.${phys_option}.$compopt with one I/O quilt server enabled."
2299 echo "NOTE one I/O quilt server enabled for $core physics $phys_option parallel $compopt..." >>! ${DEF_DIR}/wrftest.output
2303 /bin
/cp namelist.input
$TMPDIR/namelist.input.
$core.
${phys_option}.
$compopt
2304 #DAVE###################################################
2305 echo built namelist
$TMPDIR/namelist.input.
$core.
${phys_option}.
$compopt
2306 cat $TMPDIR/namelist.input.
$core.
${phys_option}.
$compopt
2307 echo need
history interval to be
30
2310 #DAVE###################################################
2311 #DAVE###################################################
2312 echo skipped link of data files
, we push them elsewhere
2316 #DAVE###################################################
2318 # If this is the serial code, generate the IC and BC. The real.exe program is not
2319 # parallelized, so the data is generated and saved for the rest of the parallel tests.
2320 # This data is necessarily updated for each of the physics tests.
2322 if ( $compopt == $COMPOPTS[1] ) then
2324 # Zap any old input data laying around.
2326 rm wrfinput_d01
>& /dev
/null
2327 rm wrfbdy_d01
>& /dev
/null
2329 if ( $NESTED == TRUE
) then
2330 setenv OMP_NUM_THREADS
1
2331 if ( `uname` == AIX
) then
2332 setenv XLSMPOPTS
"parthds=1"
2334 $SERIALRUNCOMMAND ..
/..
/main
/real_
${core}.exe.1 >! print.out.real_${core}_Phys=${phys_option}_Parallel=${compopt}
2335 else if ( $NESTED != TRUE
) then
2336 ..
/..
/main
/real_
${core}.exe.1 >! print.out.real_${core}_Phys=${phys_option}_Parallel=${compopt}
2338 #DAVE###################################################
2342 #DAVE###################################################
2344 grep "SUCCESS COMPLETE" print.out.real_
${core}_Phys=${phys_option}_Parallel=${compopt} >& /dev
/null
2345 set success
= $status
2347 # Did making the IC BC files work?
2349 if ( $GLOBAL == FALSE
) then
2350 if ( ( -e wrfinput_d01
) && ( -e wrfbdy_d01
) && ( $success == 0 ) ) then
2351 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2352 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2354 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2355 $MAIL -s "WRF FAIL making IC/BC $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2356 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 4 )
2357 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2359 else if ( $GLOBAL == TRUE
) then
2360 if ( ( -e wrfinput_d01
) && ( $success == 0 ) ) then
2361 echo "SUMMARY generate IC for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2362 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2364 echo "SUMMARY generate IC for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2365 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2366 $MAIL -s "WRF FAIL making IC $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2367 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 41 )
2370 #DAVE###################################################
2371 echo IC BC must be OK
2373 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2374 ncdump
-v Times wrfb
* |
tail -20
2378 #DAVE###################################################
2381 # Run the forecast for this core, physics package and parallel option
2383 rm $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$compopt >& /dev
/null
2385 # The chem run has its own set of namelists, due to special input files.
2387 if ( $CHEM == TRUE
) then
2389 # WRF output quilt servers are only tested for MPI configuration.
2390 # Currently, only one WRF output quilt server is used.
2392 if ( $QUILT == TRUE
) then
2393 if ( $compopt == $COMPOPTS[3] ) then
2394 # For now, test only one group of one output quilt servers.
2395 sed -e 's/ nio_tasks_per_group *= *[0-9][0-9]*/ nio_tasks_per_group = 1/g' \
2396 -e 's/ nio_groups *= *[0-9][0-9]*/ nio_groups = 1/g' \
2397 namelist.input
>! namelist.input.temp
2398 mv -f namelist.input.temp namelist.input
2399 echo "Building namelist.input.$core.${phys_option}.$compopt with one I/O quilt server enabled."
2400 echo "NOTE one I/O quilt server enabled for $core physics $phys_option parallel $compopt..." >>! ${DEF_DIR}/wrftest.output
2405 if ( $compopt == $COMPOPTS[1] ) then
2406 setenv OMP_NUM_THREADS
1
2407 if ( `uname` == AIX
) then
2408 setenv XLSMPOPTS
"parthds=1"
2410 if ( $NESTED == TRUE
) then
2411 $SERIALRUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Phys=${phys_option}_Parallel=${compopt}
2412 else if ( $NESTED != TRUE
) then
2413 ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Phys=${phys_option}_Parallel=${compopt}
2415 else if ( $compopt == $COMPOPTS[2] ) then
2416 setenv OMP_NUM_THREADS
$OPENMP
2417 if ( `uname` == AIX
) then
2418 setenv XLSMPOPTS
"parthds=${OPENMP}"
2420 if ( $NESTED == TRUE
) then
2421 $OMPRUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Phys=${phys_option}_Parallel=${compopt}
2422 else if ( $NESTED != TRUE
) then
2423 ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Phys=${phys_option}_Parallel=${compopt}
2425 else if ( $compopt == $COMPOPTS[3] ) then
2426 setenv OMP_NUM_THREADS
1
2427 if ( `uname` == AIX
) then
2428 setenv XLSMPOPTS
"parthds=1"
2430 $MPIRUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.
$compopt $MPIRUNCOMMANDPOST
2431 mv rsl.error
.0000 print.out.wrf_
${core}_Phys=${phys_option}_Parallel=${compopt}
2433 #DAVE###################################################
2434 echo ran wrf fcst compopt
= $compopt
2437 #DAVE###################################################
2439 grep "SUCCESS COMPLETE" print.out.wrf_
${core}_Phys=${phys_option}_Parallel=${compopt}
2440 set success
= $status
2442 # Did making the forecast work, by that, we mean "is there an output file created", and "are there 2 times periods".
2444 if ( ( -e wrfout_d01_
${filetag} ) && ( $success == 0 ) ) then
2445 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2446 ncdump
-h wrfout_d01_
${filetag} |
grep Time |
grep UNLIMITED |
grep currently |
grep -q 2
2449 if ( `uname` == AIX
) then
2450 ncdump wrfout_d01_
${filetag} |
grep NaN
>& /dev
/null
2451 set found_nans
= $status
2452 else if ( `uname` == OSF1
) then
2453 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
2454 # set found_nans = $status
2455 else if ( `uname` == Linux
) then
2456 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
2457 set found_nans
= $status
2459 if ( $found_nans == 0 ) then
2464 else if ( $IO_FORM_NAME[$IO_FORM] == io_grib1
) then
2465 # set joe_times = `../../external/io_grib1/wgrib -s -4yr wrfout_d01_${filetag} | grep -v ":anl:" | wc -l`
2466 # if ( $joe_times >= 100 ) then
2467 set joe_times
= `../../external/io_grib1/wgrib -s -4yr wrfout_d01_${filetag} | grep "UGRD:10 m" | wc -l`
2468 if ( $joe_times == 2 ) then
2474 if ( $ok == 0 ) then
2475 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2476 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2478 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2479 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2480 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2481 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 5 )
2484 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2485 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2486 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2487 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 6 )
2489 #DAVE###################################################
2490 echo success or failure of fcst
2491 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2492 ncdump
-v Times wrfout_d01_
${filetag} |
tail -20
2496 #DAVE###################################################
2498 # We have to save this output file for our biggy comparison after all of the
2499 # parallel options have been considered.
2501 mv wrfout_d01_
${filetag} $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.
$compopt
2503 # To save space, we move the executables after we are finished with them.
2505 if ( $phys_option == $PHYSOPTS[${#PHYSOPTS}] ) then
2506 mv ..
/..
/main
/wrf_
${core}.exe.
$compopt $TMPDIR/wrf_
${core}.exe.
$compopt
2511 BYPASS_COMP_LOOP_REAL
:
2515 else if ( $core == nmm_real
) then
2516 #DAVE###################################################
2517 echo doing nmm pre no-nest
2520 #DAVE###################################################
2522 set compopt
= $COMPOPTS[3] # ! parallel only
2523 set filetag
= 2005-01-23_00:00:00
2527 #DAVE###################################################
2529 echo $filetag $phys_option
2532 #DAVE###################################################
2534 # Build NMM namelist
2536 cp ${CUR_DIR}/io_format io_format
2537 sed -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
2538 namelist.input.regtest
>! namelist.input.temp
2540 # A fairly short forecast, 10 time steps
2542 sed -e 's/^ run_days *= *[0-9]*/ run_days = 0 /' \
2543 -e 's/^ run_seconds *= *[0-9]*/ run_seconds = 900 /' \
2544 -e 's/^ history_interval *= *[0-9][0-9]*/ history_interval = 15,15 /' \
2545 -e 's/^ frames_per_outfile *= [0-9]*/ frames_per_outfile = 200/g' \
2546 namelist.input.temp
>! namelist.input
2548 #DAVE###################################################
2549 echo did
cp of namelist no-nest
2550 ls -ls namelist.input
2554 #DAVE###################################################
2556 # Generate IC/BC for NMM run
2558 set RUNCOMMAND
= `echo $MPIRUNCOMMAND | sed "s/$Num_Procs/1/"`
2560 # Zap any old input data laying around.
2562 rm wrfinput_d01
>& /dev
/null
2563 rm wrfbdy_d01
>& /dev
/null
2565 $RUNCOMMAND ..
/..
/main
/real_
${core}.exe.$COMPOPTS[3] >! print.out.real_${core}_Phys=${phys_option}_Parallel
=$COMPOPTS[3]
2566 #DAVE###################################################
2567 echo finished real no-nest
2570 #DAVE###################################################
2572 mv rsl.out
.0000 print.out.real_
${core}_Phys=${phys_option}_Parallel=${compopt}
2573 grep "SUCCESS COMPLETE" print.out.real_
${core}_Phys=${phys_option}_Parallel=${compopt} >& /dev
/null
2574 set success
= $status
2576 # Did making the IC BC files work?
2578 if ( ( -e wrfinput_d01
) && ( -e wrfbdy_d01
) && ( $success == 0 ) ) then
2579 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2580 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2582 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2583 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2584 $MAIL -s "WRF FAIL making IC/BC $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2585 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 4 )
2587 #DAVE###################################################
2588 echo IC BC must be OK no-nest
2589 ls -lsL wrfinput
* wrfb
*
2590 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2591 ncdump
-v Times wrfb
* |
tail -20
2595 #DAVE###################################################
2597 # Run on 1 and then on Num_Procs processors
2599 foreach n
( 1 $Num_Procs )
2600 #DAVE###################################################
2601 echo running nmm on
$n procs no-nest
2604 #DAVE###################################################
2606 if ( ( $n != 1 ) && ( $QUILT != TRUE
) ) then
2607 @ nmm_proc
= $Num_Procs
2608 cat >! nproc_xy
<< EOF
2612 sed -e '/^ numtiles/r nproc_xy' namelist.input
>! file.foo
2613 mv file.foo namelist.input
2614 else if ( ( $n != 1 ) && ( $QUILT == TRUE
) ) then
2615 @ nmm_proc
= $Num_Procs - 1
2616 cat >! nproc_xy
<< EOF
2620 sed -e '/^ numtiles/r nproc_xy' namelist.input
>! file.foo
2621 mv file.foo namelist.input
2624 if ( `uname` == AIX
) then
2625 set RUNCOMMAND
= $MPIRUNCOMMAND
2627 set RUNCOMMAND
= `echo $MPIRUNCOMMAND | sed "s/$Num_Procs/$n/"`
2630 # WRF output quilt servers are only tested for MPI configuration.
2631 # Currently, only one WRF output quilt server is used.
2633 if ( ( $QUILT == TRUE
) && ( $n == $Num_Procs ) ) then
2634 if ( $compopt == $COMPOPTS[3] ) then
2635 # For now, test only one group of one output quilt servers.
2636 sed -e 's/ nio_tasks_per_group *= *[0-9]*/ nio_tasks_per_group = 1/g' \
2637 -e 's/ nio_groups *= *[0-9]*/ nio_groups = 1/g' \
2638 namelist.input
>! namelist.input.temp
2639 mv -f namelist.input.temp namelist.input
2640 echo "Building namelist.input.$core.${phys_option}.$compopt with one I/O quilt server enabled."
2641 echo "NOTE one I/O quilt server enabled for $core physics $phys_option parallel $compopt..." >>! ${DEF_DIR}/wrftest.output
2645 # NMM can fail on spurious fp exceptions that don't affect soln. Retry if necessary.
2648 while ( $tries < 2 )
2649 #DAVE###################################################
2650 echo try attempt
$tries allowed to be
less than
2
2653 #DAVE###################################################
2654 @ tries
= $tries + 1
2655 $RUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.
$compopt $MPIRUNCOMMANDPOST
2656 mv rsl.error
.0000 print.out.wrf_
${core}_Phys=${phys_option}_Parallel=${compopt}_${n}p
2657 grep "SUCCESS COMPLETE" print.out.wrf_
${core}_Phys=${phys_option}_Parallel=${compopt}_${n}p
2658 set success
= $status
2660 if ( ( -e wrfout_d01_
${filetag} ) && ( $success == 0 ) ) then
2661 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2662 ncdump
-h wrfout_d01_
${filetag} |
grep Time |
grep UNLIMITED |
grep currently |
grep -q 2
2665 if ( `uname` == AIX
) then
2666 ncdump wrfout_d01_
${filetag} |
grep NaN
>& /dev
/null
2667 set found_nans
= $status
2668 else if ( `uname` == OSF1
) then
2669 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
2670 # set found_nans = $status
2671 else if ( `uname` == Linux
) then
2672 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
2673 set found_nans
= $status
2675 if ( $found_nans == 0 ) then
2680 else if ( $IO_FORM_NAME[$IO_FORM] == io_grib1
) then
2681 ..
/..
/external
/io_grib
1/wgrib
-s -4yr wrfout_d01_
${filetag} |
grep "UGRD:10 m above gnd:3600 sec fcst"
2684 if ( $ok == 0 ) then
2685 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2686 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2687 set tries
=2 # success, bail from loop
2689 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2690 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2691 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2692 if ( if ( $KEEP_ON_RUNNING == FALSE
) && ( $tries == 2 ) )exit ( 5 )
2695 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2696 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2697 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2698 if ( ( $KEEP_ON_RUNNING == FALSE
) && ( $tries == 2 ) ) exit ( 6 )
2700 mv wrfout_d01_
${filetag} $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.${compopt}_${n}p
2701 #DAVE###################################################
2702 echo did nmm fcst no-nest
2703 ls -ls $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.${compopt}_${n}p
2706 #DAVE###################################################
2712 #DAVE###################################################
2713 echo doing nmm pre nesting
2716 #DAVE###################################################
2718 set compopt
= $COMPOPTS[3] # ! parallel only
2719 set filetag
= 2008-03-06_00:00:00
2723 #DAVE###################################################
2725 echo $filetag $phys_option
2728 #DAVE###################################################
2730 # Build NMM namelist
2732 cp ${CUR_DIR}/io_format io_format
2733 sed -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
2734 namelist.nest.regtest
>! namelist.input.temp
2736 # A fairly short forecast, 10 time steps
2738 sed -e 's/^ run_hours *= *[0-9]*/ run_hours = 0 /' \
2739 -e 's/^ run_seconds *= *[0-9]*/ run_seconds = 900 /' \
2740 -e 's/^ history_interval *= *[0-9][0-9]*/ history_interval = 15,15 /' \
2741 -e 's/^ frames_per_outfile *= [0-9]*/ frames_per_outfile = 200/g' \
2742 namelist.input.temp
>! namelist.input
2744 #DAVE###################################################
2745 echo did
cp of namelist nesting
2746 ls -ls namelist.input
2750 #DAVE###################################################
2752 # Generate IC/BC for NMM run
2754 set RUNCOMMAND
= `echo $MPIRUNCOMMAND | sed "s/$Num_Procs/1/"`
2756 # Zap any old input data laying around.
2758 rm wrfinput_d01
>& /dev
/null
2759 rm wrfbdy_d01
>& /dev
/null
2761 $RUNCOMMAND ..
/..
/main
/real_
${core}.exe.$COMPOPTS[3] >! print.out.real_${core}_Phys=${phys_option}_Parallel_Nest
=$COMPOPTS[3]
2762 #DAVE###################################################
2763 echo finished real nesting
2766 #DAVE###################################################
2768 mv rsl.out
.0000 print.out.real_
${core}_Phys=${phys_option}_Parallel=${compopt}
2769 grep "SUCCESS COMPLETE" print.out.real_
${core}_Phys=${phys_option}_Parallel=${compopt} >& /dev
/null
2770 set success
= $status
2772 # Did making the IC BC files work?
2774 if ( ( -e wrfinput_d01
) && ( -e wrfbdy_d01
) && ( $success == 0 ) ) then
2775 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel nest $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2776 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2778 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel nest $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2779 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2780 $MAIL -s "WRF FAIL making IC/BC $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2781 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 4 )
2783 #DAVE###################################################
2784 echo IC BC must be OK nesting
2785 ls -lsL wrfinput
* wrfb
*
2786 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2787 ncdump
-v Times wrfb
* |
tail -20
2791 #DAVE###################################################
2793 # Run on 1 and then on Num_Procs processors
2796 foreach n
( 1 $Num_Procs )
2797 #DAVE###################################################
2798 echo running nmm on
$n procs nesting
2801 #DAVE###################################################
2803 if ( ( $n != 1 ) && ( $QUILT != TRUE
) ) then
2804 @ nmm_proc
= $Num_Procs
2806 cat >! nproc_xy
<< EOF
2810 sed -e '/^ numtiles/r nproc_xy' namelist.input
>! file.foo
2811 mv file.foo namelist.input
2812 else if ( ( $n != 1 ) && ( $QUILT == TRUE
) ) then
2813 @ nmm_proc
= $Num_Procs - 1
2815 cat >! nproc_xy
<< EOF
2819 sed -e '/^ numtiles/r nproc_xy' namelist.input
>! file.foo
2820 mv file.foo namelist.input
2823 if ( `uname` == AIX
) then
2824 set RUNCOMMAND
= $MPIRUNCOMMAND
2826 set RUNCOMMAND
= `echo $MPIRUNCOMMAND | sed "s/$Num_Procs/$n/"`
2829 # WRF output quilt servers are only tested for MPI configuration.
2830 # Currently, only one WRF output quilt server is used.
2832 if ( ( $QUILT == TRUE
) && ( $n == $Num_Procs ) ) then
2833 if ( $compopt == $COMPOPTS[3] ) then
2834 # For now, test only one group of one output quilt servers.
2835 sed -e 's/ nio_tasks_per_group *= *[0-9]*/ nio_tasks_per_group = 1/g' \
2836 -e 's/ nio_groups *= *[0-9]*/ nio_groups = 1/g' \
2837 namelist.input
>! namelist.input.temp
2838 mv -f namelist.input.temp namelist.input
2839 echo "Building namelist.input.$core.${phys_option}.$compopt with one I/O quilt server enabled."
2840 echo "NOTE one I/O quilt server enabled for $core physics $phys_option parallel $compopt..." >>! ${DEF_DIR}/wrftest.output
2844 # NMM can fail on spurious fp exceptions that don't affect soln. Retry if necessary.
2847 while ( $tries < 2 )
2848 #DAVE###################################################
2849 echo try attempt
$tries allowed to be
less than
2
2852 #DAVE###################################################
2853 @ tries
= $tries + 1
2854 $RUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.
$compopt $MPIRUNCOMMANDPOST
2856 mv rsl.error
.0000 print.out.wrf_
${core}_Phys=${phys_option}_Parallel=${compopt}_${n}p
2857 grep "SUCCESS COMPLETE" print.out.wrf_
${core}_Phys=${phys_option}_Parallel=${compopt}_${n}p
2858 set success
= $status
2860 if ( ( -e wrfout_d01_
${filetag} ) && ( $success == 0 ) ) then
2861 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
2862 ncdump
-h wrfout_d01_
${filetag} |
grep Time |
grep UNLIMITED |
grep currently |
grep -q 2
2865 if ( `uname` == AIX
) then
2866 ncdump wrfout_d01_
${filetag} |
grep NaN
>& /dev
/null
2867 set found_nans
= $status
2868 else if ( `uname` == OSF1
) then
2869 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
2870 # set found_nans = $status
2871 else if ( `uname` == Linux
) then
2872 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
2873 set found_nans
= $status
2875 if ( $found_nans == 0 ) then
2880 else if ( $IO_FORM_NAME[$IO_FORM] == io_grib1
) then
2881 ..
/..
/external
/io_grib
1/wgrib
-s -4yr wrfout_d01_
${filetag} |
grep "UGRD:10 m above gnd:3600 sec fcst"
2884 if ( $ok == 0 ) then
2885 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
2886 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2887 set tries
=2 # success, bail from loop
2889 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2890 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2891 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2892 if ( if ( $KEEP_ON_RUNNING == FALSE
) && ( $tries == 2 ) )exit ( 5 )
2895 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
2896 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
2897 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
2898 if ( if ( $KEEP_ON_RUNNING == FALSE
) && ( $tries == 2 ) ) exit ( 6 )
2900 mv wrfout_d01_
${filetag} $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.${compopt}_${n}p
2901 /bin
/cp namelist.input
$TMPDIR/namelist.input.
$core.
${phys_option}.
$compopt
2902 #DAVE###################################################
2903 echo did nmm fcst with nesting
2904 ls -ls $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.${compopt}_${n}p
2907 #DAVE###################################################
2915 #DAVE###################################################
2916 echo doing ideal runs
2919 #DAVE###################################################
2920 # The ideal cases have different physics tests than the real cases. If this is
2921 # more that the total number of ideal physics experiments that we were led to
2922 # believe would exist, jump to the end of the physics loop.
2924 if ( $phys_option > $Max_Ideal_Physics_Options ) then
2925 goto BOTTOM_OF_PHYSICS_LOOP
2928 set filetag
=$filetag_ideal
2930 foreach compopt
( $COMPOPTS )
2931 #DAVE###################################################
2932 echo doing compopt
= $compopt
2933 echo filetag
= $filetag
2936 #DAVE###################################################
2939 # We sometimes are interested in bypassing the OpenMP option.
2941 if ( $compopt == $COMPOPTS[2] ) then
2942 if ( $ZAP_OPENMP == TRUE
) then
2943 goto BYPASS_COMP_LOOP_IDEAL
2949 if ( ! -e namelist.input.template
) cp namelist.input namelist.input.template
2951 # Create the correct namelist.input file.
2953 cp ${CUR_DIR}/dom_ideal dom_ideal
2954 if ( $core == em_quarter_ss
) then
2955 cp ${CUR_DIR}/phys_quarter_ss_
${phys_option}a phys_tke
2956 cp ${CUR_DIR}/phys_quarter_ss_
${phys_option}b phys_mp
2957 cp ${CUR_DIR}/phys_quarter_ss_
${phys_option}c phys_nh
2958 cp ${CUR_DIR}/phys_quarter_ss_
${phys_option}d phys_nest
2959 cp ${CUR_DIR}/phys_quarter_ss_
${phys_option}e phys_bc
2960 cp ${CUR_DIR}/phys_quarter_ss_
${phys_option}f phys_sfclay
2961 else if ( $core == em_b_wave
) then
2962 cp ${CUR_DIR}/phys_b_wave_
${phys_option}a phys_tke
2963 cp ${CUR_DIR}/phys_b_wave_
${phys_option}b phys_mp
2964 cp ${CUR_DIR}/phys_b_wave_
${phys_option}c phys_nh
2965 cp ${CUR_DIR}/phys_b_wave_
${phys_option}d phys_nest
2968 cp ${CUR_DIR}/io_format io_format
2969 if ( $NESTED == TRUE
) then
2970 if ( $core == em_quarter_ss
) then
2971 sed -e 's/ run_days *= *[0-9][0-9]*/ run_days = 00/g' \
2972 -e 's/ run_minutes *= *[0-9][0-9]*/ run_minutes = 1/g' \
2973 -e 's/ run_seconds *= *[0-9][0-9]*/ run_seconds = 0/g' \
2974 -e 's/ history_interval *= [0-9][0-9]*/ history_interval = 1/g' \
2975 -e 's/ frames_per_outfile *= [0-9][0-9]*/ frames_per_outfile = 100/g' \
2976 -e '/^ diff_opt/d' -e '/^ km_opt/d' -e '/^ damp_opt/d' -e '/^ rk_ord/r ./phys_tke' \
2977 -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
2978 -e '/^ mp_physics/d' -e '/^ &physics/r ./phys_mp' \
2979 -e '/^ sf_sfclay_physics/d' -e '/^ radt/r ./phys_sfclay' \
2980 -e '/^ moist_adv_opt/,/^ non_hydrostatic/d' -e '/^ v_sca_adv_order/r ./phys_nh' \
2981 -e '/^ periodic_x /,/^ open_ye/d' \
2982 -e '/^ &bdy_control/r ./phys_bc' \
2983 -e '/^ max_dom/d' -e '/^ time_step_fract_den/r ./dom_ideal' \
2984 .
/namelist.input.template
>! namelist.input
2985 else if ( $core == em_b_wave
) then
2986 sed -e 's/ run_days *= *[0-9][0-9]*/ run_days = 00/g' \
2987 -e 's/ run_minutes *= *[0-9][0-9]*/ run_minutes = 20/g' \
2988 -e 's/ history_interval *= [0-9][0-9]*/ history_interval = 20/g' \
2989 -e 's/ frames_per_outfile *= [0-9][0-9]*/ frames_per_outfile = 100/g' \
2990 -e '/^ diff_opt/d' -e '/^ km_opt/d' -e '/^ damp_opt/d' -e '/^ rk_ord/r ./phys_tke' \
2991 -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
2992 -e '/^ mp_physics/d' -e '/^ &physics/r ./phys_mp' \
2993 -e '/^ non_hydrostatic/d' -e '/^ v_sca_adv_order/r ./phys_nh' \
2994 -e '/^ max_dom/d' -e '/^ time_step_fract_den/r ./dom_ideal' \
2995 .
/namelist.input.template
>! namelist.input
2997 else if ( $NESTED != TRUE
) then
2998 if ( $core == em_quarter_ss
) then
2999 sed -e 's/ run_days *= *[0-9][0-9]*/ run_days = 00/g' \
3000 -e 's/ run_minutes *= *[0-9][0-9]*/ run_minutes = 2/g' \
3001 -e 's/ history_interval *= [0-9][0-9]*/ history_interval = 2/g' \
3002 -e 's/ frames_per_outfile *= [0-9][0-9]*/ frames_per_outfile = 100/g' \
3003 -e '/^ diff_opt/d' -e '/^ km_opt/d' -e '/^ damp_opt/d' -e '/^ rk_ord/r ./phys_tke' \
3004 -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
3005 -e '/^ mp_physics/d' -e '/^ &physics/r ./phys_mp' \
3006 -e '/^ sf_sfclay_physics/d' -e '/^ radt/r ./phys_sfclay' \
3007 -e '/^ moist_adv_opt/,/^ non_hydrostatic/d' -e '/^ v_sca_adv_order/r ./phys_nh' \
3008 -e '/^ periodic_x/d' -e '/^ open_xs/d' -e '/^ open_xe/d' \
3009 -e '/^ periodic_y/d' -e '/^ open_ys/d' -e '/^ open_ye/d' \
3010 -e '/^ &bdy_control/r ./phys_bc' \
3011 -e '/^ max_dom/d' -e '/^ time_step_fract_den/r ./dom_ideal' \
3012 .
/namelist.input.template
>! namelist.input
3013 else if ( $core == em_b_wave
) then
3014 sed -e 's/ run_days *= *[0-9][0-9]*/ run_days = 00/g' \
3015 -e 's/ run_minutes *= *[0-9][0-9]*/ run_minutes = 100/g' \
3016 -e 's/ history_interval *= [0-9][0-9]*/ history_interval = 100/g' \
3017 -e 's/ frames_per_outfile *= [0-9][0-9]*/ frames_per_outfile = 100/g' \
3018 -e '/^ diff_opt/d' -e '/^ km_opt/d' -e '/^ damp_opt/d' -e '/^ rk_ord/r ./phys_tke' \
3019 -e '/^ io_form_history /,/^ io_form_boundary/d' -e '/^ restart_interval/r ./io_format' \
3020 -e '/^ mp_physics/d' -e '/^ &physics/r ./phys_mp' \
3021 -e '/^ non_hydrostatic/d' -e '/^ v_sca_adv_order/r ./phys_nh' \
3022 -e '/^ max_dom/d' -e '/^ time_step_fract_den/r ./dom_ideal' \
3023 .
/namelist.input.template
>! namelist.input
3027 # WRF output quilt servers are only tested for MPI configuration.
3028 # Currently, only one WRF output quilt server is used.
3030 if ( $QUILT == TRUE
) then
3031 if ( $compopt == $COMPOPTS[3] ) then
3032 # For now, test only one group of one output quilt servers.
3033 sed -e 's/ nio_tasks_per_group *= *[0-9][0-9]*/ nio_tasks_per_group = 1/g' \
3034 -e 's/ nio_groups *= *[0-9][0-9]*/ nio_groups = 1/g' \
3035 namelist.input
>! namelist.input.temp
3036 mv -f namelist.input.temp namelist.input
3037 echo "Building namelist.input.$core.${phys_option}.$compopt with one I/O quilt server enabled."
3038 echo "NOTE one I/O quilt server enabled for $core physics $phys_option parallel $compopt..." >>! ${DEF_DIR}/wrftest.output
3042 /bin
/cp namelist.input
$TMPDIR/namelist.input.
$core.
${phys_option}.
$compopt
3043 #DAVE###################################################
3045 ls -ls namelist.input
3048 #DAVE###################################################
3050 # If this is the serial code, generate the IC and BC. The ideal.exe program is not
3051 # parallelized, so the data is generated and saved for the rest of the parallel tests.
3053 if ( $compopt == $COMPOPTS[1] ) then
3055 # Zap any old input data laying around.
3057 rm wrfinput_d01
>& /dev
/null
3058 rm wrfbdy_d01
>& /dev
/null
3060 ..
/..
/main
/ideal_
${core}.exe.1 >! print.out.ideal_${core}_Parallel=${compopt}
3061 #DAVE###################################################
3066 #DAVE###################################################
3068 grep "SUCCESS COMPLETE" print.out.ideal_
${core}_Parallel
=${compopt} >& /dev
/null
3069 set success
= $status
3071 # Did making the IC BC files work?
3073 if ( ( -e wrfinput_d01
) && ( $success == 0 ) ) then
3074 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
3075 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3077 echo "SUMMARY generate IC/BC for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
3078 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3079 $MAIL -s "WRF FAIL making IC/BC $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
3080 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 7 )
3084 # Run the forecast for this core and parallel option
3086 rm $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$compopt >& /dev
/null
3088 if ( $compopt == $COMPOPTS[1] ) then
3089 setenv OMP_NUM_THREADS
1
3090 if ( `uname` == AIX
) then
3091 setenv XLSMPOPTS
"parthds=1"
3093 if ( $NESTED == TRUE
) then
3094 $SERIALRUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Parallel=${compopt}
3095 else if ( $NESTED != TRUE
) then
3096 ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Parallel=${compopt}
3098 else if ( $compopt == $COMPOPTS[2] ) then
3099 setenv OMP_NUM_THREADS
$OPENMP
3100 if ( `uname` == AIX
) then
3101 setenv XLSMPOPTS
"parthds=${OPENMP}"
3103 if ( $NESTED == TRUE
) then
3104 $OMPRUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Parallel=${compopt}
3105 else if ( $NESTED != TRUE
) then
3106 ..
/..
/main
/wrf_
${core}.exe.$compopt >! print.out.wrf_${core}_Parallel=${compopt}
3108 else if ( $compopt == $COMPOPTS[3] ) then
3109 setenv OMP_NUM_THREADS
1
3110 if ( `uname` == AIX
) then
3111 setenv XLSMPOPTS
"parthds=1"
3113 $MPIRUNCOMMAND ..
/..
/main
/wrf_
${core}.exe.
$compopt $MPIRUNCOMMANDPOST
3114 mv rsl.error
.0000 print.out.wrf_
${core}_Parallel
=${compopt}
3116 #DAVE###################################################
3120 #DAVE###################################################
3122 grep "SUCCESS COMPLETE" print.out.wrf_
${core}_Parallel
=${compopt}
3123 set success
= $status
3125 # Did making the forecast work, by that, we mean "is there an output file created?"
3127 if ( ( -e wrfout_d01_
${filetag} ) && ( $success == 0 ) ) then
3128 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
3129 ncdump
-h wrfout_d01_
${filetag} |
grep Time |
grep UNLIMITED |
grep currently |
grep -q 2
3132 if ( `uname` == AIX
) then
3133 ncdump wrfout_d01_
${filetag} |
grep NaN
>& /dev
/null
3134 set found_nans
= $status
3135 else if ( `uname` == OSF1
) then
3136 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
3137 # set found_nans = $status
3138 else if ( `uname` == Linux
) then
3139 ncdump wrfout_d01_
${filetag} |
grep nan
>& /dev
/null
3140 set found_nans
= $status
3142 if ( $found_nans == 0 ) then
3147 else if ( $IO_FORM_NAME[$IO_FORM] == io_grib1
) then
3148 # set joe_times = `../../external/io_grib1/wgrib -s -4yr wrfout_d01_${filetag} | grep -v ":anl:" | wc -l`
3149 # if ( $joe_times >= 100 ) then
3150 set joe_times
= `../../external/io_grib1/wgrib -s -4yr wrfout_d01_${filetag} | grep "UGRD:10 m" | wc -l`
3151 if ( $joe_times == 2 ) then
3157 if ( $ok == 0 ) then
3158 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
3159 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3161 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
3162 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3163 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
3164 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 8 )
3167 echo "SUMMARY generate FCST for $core physics $phys_option parallel $compopt $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
3168 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3169 $MAIL -s "WRF FAIL FCST $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
3170 if ( $KEEP_ON_RUNNING == FALSE
) exit ( 9 )
3173 # We have to save this output file for our biggy comparison after all of the
3174 # parallel options have been considered.
3176 mv wrfout_d01_
${filetag} $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.
$compopt
3178 # To save space, we move the executables after we are finished with them.
3180 if ( $phys_option == $Max_Ideal_Physics_Options ) then
3181 mv ..
/..
/main
/wrf_
${core}.exe.
$compopt $TMPDIR/wrf_
${core}.exe.
$compopt
3183 #DAVE###################################################
3184 echo fcst was a success
3185 ls -ls $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$compopt
3186 if ( $IO_FORM_NAME[$IO_FORM] == io_netcdf
) then
3187 ncdump
-v Times
$TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$compopt |
tail -20
3191 #DAVE###################################################
3195 BYPASS_COMP_LOOP_IDEAL
:
3201 # OK, once more, we gotta check if this is a BIT4BIT run. If so then there
3202 # are a number of comparisons to do. If this is a an OPTIMIZED run, then the
3203 # comparisons will fail the bit-wise comparisons.
3205 if ( $REG_TYPE == BIT4BIT
) then
3207 if ( $core == nmm_real
) then
3209 pushd ${DEF_DIR}/regression_test
/WRFV
3/test
/$core
3210 set DIFFWRF
= ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
3212 if ( ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[3]_1p
) && \
3213 ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.$COMPOPTS[3]_${Num_Procs}p
) ) then
3214 set foo1
= ( ` \ls -ls $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.$COMPOPTS[3]_1p `)
3215 set foo2
= ( ` \ls -ls $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.$COMPOPTS[3]_${Num_Procs}p `)
3216 set size1
= $foo1[6]
3217 set size2
= $foo2[6]
3218 if ( $size1 == $size2 ) then
3219 set RIGHT_SIZE
= TRUE
3221 set RIGHT_SIZE
= FALSE
3224 set RIGHT_SIZE
= FALSE
3227 # 1p vs Num_Procs MPI
3229 rm fort
.88 fort
.98 >& /dev
/null
3230 if ( ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[3]_1p
) && \
3231 ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.$COMPOPTS[3]_${Num_Procs}p
) && \
3232 ( $RIGHT_SIZE == TRUE
) ) then
3233 $DIFFWRF $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[3]_1p \
3234 $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.$COMPOPTS[3]_${Num_Procs}p
>& /dev
/null
3236 touch fort
.88 fort
.98
3238 if ( ! -e fort
.88 ) then
3239 echo "SUMMARY 1 vs $Num_Procs MPI for $core physics $phys_option $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
3240 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3242 echo "SUMMARY 1 vs $Num_Procs MPI for $core physics $phys_option $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
3243 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3248 else if ( ${#COMPOPTS} != 1 ) then
3250 # If there is only a single parallel option, then we are just trying to
3251 # build the serial code. That implies no comparisons are needed.
3253 # All of the forecasts for this set of physics and core have been
3254 # generated. We now compare the WRF model output files to see
3255 # if they are S^2D^2.
3257 pushd ${DEF_DIR}/regression_test
/WRFV
3/test
/$core
3258 set DIFFWRF
= ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
3260 # Are we skipping the OpenMP runs?
3262 if ( $ZAP_OPENMP == TRUE
) then
3263 goto BYPASS_OPENMP_SUMMARY1
3266 # Are the files the same size? If not, then only the initial times
3267 # will be compared. That means, on a failure to run a forecast, the
3268 # diffwrf will give a pass. We need to root out this evil.
3270 if ( ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[1] ) && \
3271 ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[2] ) ) then
3272 set foo1
= ( ` \ls -ls $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.$COMPOPTS[1] `)
3273 set foo2
= ( ` \ls -ls $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.$COMPOPTS[2] `)
3274 set size1
= $foo1[6]
3275 set size2
= $foo2[6]
3276 if ( $size1 == $size2 ) then
3277 set RIGHT_SIZE_OMP
= TRUE
3279 set RIGHT_SIZE_OMP
= FALSE
3282 set RIGHT_SIZE_OMP
= FALSE
3285 BYPASS_OPENMP_SUMMARY1
:
3287 if ( ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[1] ) && \
3288 ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[3] ) ) then
3289 set foo1
= ( ` \ls -ls $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.$COMPOPTS[1] `)
3290 set foo3
= ( ` \ls -ls $TMPDIR/wrfout_d01_${filetag}.${core}.${phys_option}.$COMPOPTS[3] `)
3291 set size1
= $foo1[6]
3292 set size3
= $foo3[6]
3293 if ( $size1 == $size3 ) then
3294 set RIGHT_SIZE_MPI
= TRUE
3296 set RIGHT_SIZE_MPI
= FALSE
3299 set RIGHT_SIZE_MPI
= FALSE
3302 # Are we skipping the OpenMP runs?
3304 if ( $ZAP_OPENMP == TRUE
) then
3305 goto BYPASS_OPENMP_SUMMARY2
3310 rm fort
.88 fort
.98 >& /dev
/null
3311 if ( ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[1] ) && \
3312 ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[2] ) && \
3313 ( $RIGHT_SIZE_OMP == TRUE
) ) then
3314 $DIFFWRF $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[1] \
3315 $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[2] >& /dev
/null
3317 touch fort
.88 fort
.98
3319 if ( ! -e fort
.88 ) then
3320 echo "SUMMARY serial vs OMP for $core physics $phys_option $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
3321 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3323 echo "SUMMARY serial vs OMP for $core physics $phys_option $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
3324 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3327 BYPASS_OPENMP_SUMMARY2
:
3331 rm fort
.88 fort
.98 >& /dev
/null
3332 if ( ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[1] ) && \
3333 ( -e $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[3] ) && \
3334 ( $RIGHT_SIZE_MPI == TRUE
) ) then
3335 $DIFFWRF $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[1] \
3336 $TMPDIR/wrfout_d01_
${filetag}.${core}.${phys_option}.
$COMPOPTS[3] >& /dev
/null
3338 touch fort
.88 fort
.98
3340 if ( ! -e fort
.88 ) then
3341 echo "SUMMARY serial vs MPI for $core physics $phys_option $esmf_lib_str PASS" >>! ${DEF_DIR}/wrftest.output
3342 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3344 echo "SUMMARY serial vs MPI for $core physics $phys_option $esmf_lib_str FAIL" >>! ${DEF_DIR}/wrftest.output
3345 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3352 # Generate and archive baseline or compare against baseline
3354 if ( $core != nmm_real
) then
3355 if ( $GENERATE_BASELINE != FALSE
) then
3356 if ( ! -d $GENERATE_BASELINE ) then
3357 echo "ERROR: Baseline directory ${GENERATE_BASELINE} does not exist" >>! \
3358 ${DEF_DIR}/wrftest.output
3361 # Archive serial output file to baseline
3362 pushd ${DEF_DIR}/regression_test
/WRFV
3/test
/$core
3363 set basefilenm
= wrfout_d01_
${filetag}.${core}.${phys_option}
3364 set basefile
= ${GENERATE_BASELINE}/${basefilenm}
3365 set outfile
= $TMPDIR/${basefilenm}.
$COMPOPTS[1]
3366 if ( -e $outfile ) then
3367 cp $outfile $basefile || \
3368 ( echo "ERROR: cannot copy ${outfile} to ${basefile}" >>! \
3369 ${DEF_DIR}/wrftest.output
; exit 10 )
3371 echo "ERROR: Cannot archive baseline, file $outfile does not exist" >>! \
3372 ${DEF_DIR}/wrftest.output
3373 echo "SUMMARY baseline archived in ${GENERATE_BASELINE} for $core physics $phys_option FAIL" >>! \
3374 ${DEF_DIR}/wrftest.output
3375 echo "-------------------------------------------------------------" >> \
3376 ${DEF_DIR}/wrftest.output
3379 echo "SUMMARY baseline archived in ${GENERATE_BASELINE} for $core physics $phys_option PASS" >>! \
3380 ${DEF_DIR}/wrftest.output
3381 echo "-------------------------------------------------------------" >> \
3382 ${DEF_DIR}/wrftest.output
3386 if ( $COMPARE_BASELINE != FALSE
) then
3387 if ( ! -d $COMPARE_BASELINE ) then
3388 echo "${0}: ERROR:: Baseline directory ${COMPARE_BASELINE} does not exist" >>! \
3389 ${DEF_DIR}/wrftest.output
3392 # Compare against baseline output file
3393 set basefilenm
= wrfout_d01_
${filetag}.${core}.${phys_option}
3394 set basefile
= ${COMPARE_BASELINE}/${basefilenm}
3395 set DIFFWRF
= ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
3396 set testdir
= ${DEF_DIR}/regression_test
/WRFV
3/test
/$core
3398 foreach compopt
( $COMPOPTS )
3399 set cmpfile
= $TMPDIR/${basefilenm}.
$compopt
3400 rm fort
.88 fort
.98 >& /dev
/null
3401 if ( ( -e ${basefile} ) && ( -e ${cmpfile} ) ) then
3402 # Are the files the same size? If not, then only the initial times
3403 # will be compared. That means, on a failure to run a forecast, the
3404 # diffwrf will give a pass. We need to root out this evil.
3405 set foob
= ( ` \ls -ls ${basefile} `)
3406 set fooc
= ( ` \ls -ls ${cmpfile} `)
3407 set sizeb
= $foob[6]
3408 set sizec
= $fooc[6]
3409 if ( $sizeb == $sizec ) then
3410 $DIFFWRF ${basefile} ${cmpfile} >& /dev
/null
3411 if ( -e fort
.88 ) then
3412 echo "FAIL: Baseline comparison, file ${cmpfile} did not match ${basefile} according to diffwrf" >>! \
3413 ${DEF_DIR}/wrftest.output
3416 touch fort
.88 fort
.98
3417 echo "FAIL: Baseline comparison, files ${cmpfile} and ${basefile} have different sizes" >>! \
3418 ${DEF_DIR}/wrftest.output
3421 echo "FAIL: Baseline comparison, either ${cmpfile} or ${basefile} does not exist" >>! \
3422 ${DEF_DIR}/wrftest.output
3423 touch fort
.88 fort
.98
3425 if ( ! -e fort
.88 ) then
3426 echo "SUMMARY compare vs baseline ${COMPARE_BASELINE} for $core physics $phys_option compopt $compopt $esmf_lib_str PASS" >>! \
3427 ${DEF_DIR}/wrftest.output
3428 echo "-------------------------------------------------------------" >> \
3429 ${DEF_DIR}/wrftest.output
3431 echo "SUMMARY compare vs baseline ${COMPARE_BASELINE} for $core physics $phys_option compopt $compopt $esmf_lib_str FAIL" >>! \
3432 ${DEF_DIR}/wrftest.output
3433 echo "-------------------------------------------------------------" >> \
3434 ${DEF_DIR}/wrftest.output
3440 else if ( $core == nmm_real
) then
3441 if ( $GENERATE_BASELINE != FALSE
) then
3442 if ( ! -d $GENERATE_BASELINE ) then
3443 echo "ERROR: Baseline directory ${GENERATE_BASELINE} does not exist" >>! \
3444 ${DEF_DIR}/wrftest.output
3447 # Archive serial output file to baseline
3448 pushd ${DEF_DIR}/regression_test
/WRFV
3/test
/$core
3449 set basefilenm
= wrfout_d01_
${filetag}.${core}.${phys_option}
3450 set basefile
= ${GENERATE_BASELINE}/${basefilenm}
3451 set outfile
= $TMPDIR/${basefilenm}.
$COMPOPTS[3]_1p
3452 if ( -e $outfile ) then
3453 cp $outfile $basefile || \
3454 ( echo "ERROR: cannot copy ${outfile} to ${basefile}" >>! \
3455 ${DEF_DIR}/wrftest.output
; exit 10 )
3457 echo "ERROR: Cannot archive baseline, file $outfile does not exist" >>! \
3458 ${DEF_DIR}/wrftest.output
3459 echo "SUMMARY baseline archived in ${GENERATE_BASELINE} for $core physics $phys_option FAIL" >>! \
3460 ${DEF_DIR}/wrftest.output
3461 echo "-------------------------------------------------------------" >> \
3462 ${DEF_DIR}/wrftest.output
3465 echo "SUMMARY baseline archived in ${GENERATE_BASELINE} for $core physics $phys_option PASS" >>! \
3466 ${DEF_DIR}/wrftest.output
3467 echo "-------------------------------------------------------------" >> \
3468 ${DEF_DIR}/wrftest.output
3472 if ( $COMPARE_BASELINE != FALSE
) then
3473 if ( ! -d $COMPARE_BASELINE ) then
3474 echo "${0}: ERROR:: Baseline directory ${COMPARE_BASELINE} does not exist" >>! \
3475 ${DEF_DIR}/wrftest.output
3478 # Compare against baseline output file
3479 set basefilenm
= wrfout_d01_
${filetag}.${core}.${phys_option}
3480 set basefile
= ${COMPARE_BASELINE}/${basefilenm}
3481 set DIFFWRF
= ${DEF_DIR}/regression_test
/WRFV
3/external
/$IO_FORM_NAME[$IO_FORM]/diffwrf
3482 set testdir
= ${DEF_DIR}/regression_test
/WRFV
3/test
/$core
3484 set compopt
= $COMPOPTS[3]
3485 foreach proc
( 1p
4p
)
3486 set cmpfile
= $TMPDIR/${basefilenm}.${compopt}_${proc}
3487 rm fort
.88 fort
.98 >& /dev
/null
3488 if ( ( -e ${basefile} ) && ( -e ${cmpfile} ) ) then
3489 # Are the files the same size? If not, then only the initial times
3490 # will be compared. That means, on a failure to run a forecast, the
3491 # diffwrf will give a pass. We need to root out this evil.
3492 set foob
= ( ` \ls -ls ${basefile} `)
3493 set fooc
= ( ` \ls -ls ${cmpfile} `)
3494 set sizeb
= $foob[6]
3495 set sizec
= $fooc[6]
3496 if ( $sizeb == $sizec ) then
3497 $DIFFWRF ${basefile} ${cmpfile} >& /dev
/null
3498 if ( -e fort
.88 ) then
3499 echo "FAIL: Baseline comparison, file ${cmpfile} did not match ${basefile} according to diffwrf" >>! \
3500 ${DEF_DIR}/wrftest.output
3503 touch fort
.88 fort
.98
3504 echo "FAIL: Baseline comparison, files ${cmpfile} and ${basefile} have different sizes" >>! \
3505 ${DEF_DIR}/wrftest.output
3508 echo "FAIL: Baseline comparison, either ${cmpfile} or ${basefile} does not exist" >>! \
3509 ${DEF_DIR}/wrftest.output
3510 touch fort
.88 fort
.98
3512 if ( ! -e fort
.88 ) then
3513 echo "SUMMARY compare vs baseline ${COMPARE_BASELINE} for $core physics $phys_option compopt $compopt $esmf_lib_str PASS" >>! \
3514 ${DEF_DIR}/wrftest.output
3515 echo "-------------------------------------------------------------" >> \
3516 ${DEF_DIR}/wrftest.output
3518 echo "SUMMARY compare vs baseline ${COMPARE_BASELINE} for $core physics $phys_option compopt $compopt $esmf_lib_str FAIL" >>! \
3519 ${DEF_DIR}/wrftest.output
3520 echo "-------------------------------------------------------------" >> \
3521 ${DEF_DIR}/wrftest.output
3527 goto ALL_SHE_WROTE_FOR_NMM
3529 # End of generate and archive baseline or compare against baseline
3533 BOTTOM_OF_PHYSICS_LOOP
:
3537 ALL_SHE_WROTE_FOR_NMM
:
3539 echo "-------------------------------------------------------------" >> ${DEF_DIR}/wrftest.output
3548 # How long did this take.
3550 set end
= ( `date` )
3551 echo "Start WRF Regression: $start " >> ${DEF_DIR}/wrftest.output
3552 echo "End WRF Regression: $end " >> ${DEF_DIR}/wrftest.output
3554 # We have done all of the tests, and placed the PASS FAIL labels in the
3555 # output file. If there are any FAIL messages, we are in trouble.
3557 grep FAIL
${DEF_DIR}/wrftest.output
3560 # Send email of the status.
3562 if ( $ok == 0 ) then
3563 $MAIL -s "REGRESSION FAILURE $ARCH[1] " $FAIL_MAIL < ${DEF_DIR}/wrftest.output
3565 $MAIL -s "REGRESSION SUCCESS $ARCH[1] " $GOOD_MAIL < ${DEF_DIR}/wrftest.output
3568 # Clean left up detritus
3572 rm -rf damp_
*eal
>& /dev
/null
3573 rm -rf dom_
*eal
>& /dev
/null
3574 rm -rf phys_real_
* >& /dev
/null
3575 rm -rf nest_real_
* >& /dev
/null
3576 rm -rf phys_quarter_
* >& /dev
/null
3577 rm -rf phys_b_wave_
* >& /dev
/null
3578 rm -rf version_info
>& /dev
/null
3579 rm -rf machfile
>& /dev
/null
3580 rm -rf fdda_real
* >& /dev
/null
3581 rm -rf time_real_
* >& /dev
/null
3582 rm -rf dyn_real_
* >& /dev
/null
3583 rm -rf damp_
* >& /dev
/null
3584 rm -rf io_format
>& /dev
/null