From c58c6f69bc2dbd34f40803d19941cd1413e1c38d Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 25 Sep 2019 19:08:29 -0600 Subject: [PATCH 01/12] Multiple LBC files for ARW, run-time option TYPE: new feature KEYWORDS: LBC files SOURCE: Kevin Manning and Jim Bresch (MMM/NCAR), internal DESCRIPTION OF CHANGES: Modify the compile-time option that provides the capability for split LBC files, and make that capability a namelist-driven run-time option. For real-time users, the ability to start the WRF model prior to the GFS model (for example) completely finishing allows the WRF model to complete a regional simualtion earlier. However, this only works if the lateral boundary files from subsequent times are able to be ingested by the model. As a compile-time option, this split LBC capability has existed for years. Now that capability from the compile-time option is run-time selectable from the namelist. ISSUE: Fixes #656 "Multi-file lateral boundary conditions" LIST OF MODIFIED FILES: modified: Registry/Registry.EM_COMMON modified: run/README.namelist modified: share/mediation_integrate.F modified: share/module_check_a_mundo.F modified: test/em_real/examples.namelist TESTS CONDUCTED: 1. Did 24-h Jan 2000 test with SPLIT LBC and with traditional LBC. Bit for bit results from the model output. RELEASE NOTE: Run-time capability for multi_bdy_file is now available. This replaces the compile-time option. --- Registry/Registry.EM_COMMON | 1 + run/README.namelist | 1 + share/mediation_integrate.F | 34 +++++++++++++++++----------------- share/module_check_a_mundo.F | 12 ++++++++++++ test/em_real/examples.namelist | 12 ++++++++++++ 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index 55aacf2676..c31dcdf57c 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -2711,6 +2711,7 @@ rconfig integer spec_bdy_final_mu namelist,bdy_control 1 1 rconfig integer real_data_init_type namelist,bdy_control 1 1 irh "real_data_init_type" "REAL DATA INITIALIZATION OPTIONS: 1=SI, 2=MM5, 3=GENERIC" "PRE-PROCESSOR TYPES" rconfig logical have_bcs_moist namelist,bdy_control max_domains .false. rh "have_bcs_moist" "" "" rconfig logical have_bcs_scalar namelist,bdy_control max_domains .false. rh "have_bcs_scalar" "" "" +rconfig logical multi_bdy_files namelist,bdy_control 1 .false. rh "multi_bdy_files" "" "" rconfig integer background_proc_id namelist,grib2 1 255 rh "background_proc_id" "Background processing id for grib2" "" rconfig integer forecast_proc_id namelist,grib2 1 255 rh "forecast_proc_id" "Analysis and forecast processing id for grib2" "" diff --git a/run/README.namelist b/run/README.namelist index 7d637f6176..27bf97f25e 100644 --- a/run/README.namelist +++ b/run/README.namelist @@ -1562,6 +1562,7 @@ The following are for observation nudging: = .true. , ! use microphysics variables in bdy file have_bcs_scalar (max_dom) = .false., ! model run after ndown only: do not use scalar variables in bdy file = .true. , ! use scalar variables in bdy file + multi_bdy_files = .false., ! F=default; T=model will run with split and individually named LBC files euler_adv = .false., ! conservative Eulerian passive advection (NMM only) idtadt = 1, ! fundamental timesteps between calls to Euler advection, dynamics (NMM only) diff --git a/share/mediation_integrate.F b/share/mediation_integrate.F index 60f97347d1..139c39720e 100644 --- a/share/mediation_integrate.F +++ b/share/mediation_integrate.F @@ -2104,9 +2104,7 @@ SUBROUTINE med_latbound_in ( grid , config_flags ) Type (WRFU_Time ) :: startTime, stopTime, currentTime Type (WRFU_TimeInterval ) :: stepTime integer myproc,i,j,k -#ifdef _MULTI_BDY_FILES_ CHARACTER(LEN=80) :: timestr -#endif #include "wrf_io_flags.h" @@ -2142,14 +2140,16 @@ SUBROUTINE med_latbound_in ( grid , config_flags ) CALL WRFU_AlarmRingerOff( grid%alarms( BOUNDARY_ALARM ), rc=rc ) IF ( wrf_dm_on_monitor() ) CALL start_timing -#ifdef _MULTI_BDY_FILES_ ! Possibility to have a as part of the bdy_inname. - CALL domain_clock_get( grid, current_timestr=timestr ) - CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , timestr ) -#else -! typically a wouldn't be part of the bdy_inname, so just pass a dummy - CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , " " ) -#endif + IF ( config_flags%multi_bdy_files ) THEN + CALL domain_clock_get( grid, current_timestr=timestr ) + CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , timestr ) + + ! typically a wouldn't be part of the bdy_inname, so just pass a dummy + ELSE + CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , " " ) + + END IF CALL wrf_inquire_opened(grid%lbc_fid , TRIM(bdyname) , open_status , ierr ) IF ( open_status .EQ. WRF_FILE_OPENED_FOR_READ ) THEN @@ -2159,11 +2159,11 @@ SUBROUTINE med_latbound_in ( grid , config_flags ) ENDIF CALL wrf_dm_bcast_bytes ( lbc_opened , LWORDSIZE ) IF ( .NOT. lbc_opened ) THEN -#ifdef _MULTI_BDY_FILES_ - CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , timestr ) -#else - CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , " " ) -#endif + IF ( config_flags%multi_bdy_files ) THEN + CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , timestr ) + ELSE + CALL construct_filename2a ( bdyname , config_flags%bdy_inname , grid%id , 2 , " " ) + END IF WRITE(message,*)'Opening: ',TRIM(bdyname) CALL wrf_debug(100,TRIM(message)) CALL open_r_dataset ( grid%lbc_fid, TRIM(bdyname) , grid , config_flags , "DATASET=BOUNDARY", ierr ) @@ -2203,10 +2203,10 @@ SUBROUTINE med_latbound_in ( grid , config_flags ) CALL input_boundary ( grid%lbc_fid, grid , config_flags , ierr ) ENDDO #endif -#ifdef _MULTI_BDY_FILES_ ! Close the bdy file so that next time around, we'll open it again. - CALL close_dataset ( grid%lbc_fid , config_flags , "DATASET=BOUNDARY" ) -#endif + IF ( config_flags%multi_bdy_files ) THEN + CALL close_dataset ( grid%lbc_fid , config_flags , "DATASET=BOUNDARY" ) + END IF #if ( WRFPLUS == 1 ) IF ( config_flags%dyn_opt .NE. dyn_em_ad ) THEN CALL WRFU_AlarmSet( grid%alarms( BOUNDARY_ALARM ), RingTime=grid%next_bdy_time, rc=rc ) diff --git a/share/module_check_a_mundo.F b/share/module_check_a_mundo.F index e2208bef35..9c1e295b30 100644 --- a/share/module_check_a_mundo.F +++ b/share/module_check_a_mundo.F @@ -936,6 +936,18 @@ END FUNCTION bep_bem_nbui_max model_config_rec%num_traj = 0 END IF +!----------------------------------------------------------------------- +! Catch old method for using multi-file LBCs. Let folks know the +! new way to get the same functionality with run-time options. +!----------------------------------------------------------------------- +#if _MULTI_BDY_FILES_ + wrf_err_message = '--- ERROR: Do not use the compile-time -D_MULTI_BDY_FILES_ option for multi-file LBCs.' + CALL wrf_debug ( 0, TRIM(wrf_err_message) ) + wrf_err_message = '--- ERROR: Use the run-time namelist option multi_bdy_files in nml record bdy_control.' + CALL wrf_debug ( 0, TRIM( wrf_err_message ) ) + count_fatal_error = count_fatal_error + 1 +#endif + #elif( NMM_CORE == 1 ) !---------------------------------------------------------------------------- ! If NMM core and trajectories are on then halt. diff --git a/test/em_real/examples.namelist b/test/em_real/examples.namelist index 31415441f6..3124618f43 100755 --- a/test/em_real/examples.namelist +++ b/test/em_real/examples.namelist @@ -322,6 +322,7 @@ Switching off latent heating from a microphysics scheme (must also set cu_physic spec_zone is ALWAYS = 1 relax_zone is ALWAYS = spec_bdy_width - spec_zone +&bdy_control spec_bdy_width = 10, specified = .true., spec_exp = 0.33 @@ -331,6 +332,17 @@ For a tropical channel configuration, set the following: specified = .true., periodic_x = .true., +** Using split lateral boundary files + The run-time flag multi_bdy_files must be set to TRUE (default is false), and the + lateral boundary files must have a date associated. When using the split LBC option, + there is ALWAYS and ONLY a single time LBC time in each file. + + multi_bdy_files = .true. + +Also requires +&time_control + bdy_inname = "wrfbdy_d_" + ** using io quilting option to improve output efficiency for large domain runs (note that this is a separate namelist record): From 25fa24801b9e85721f091348e9323cbddec02e08 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 26 Sep 2019 18:07:51 -0600 Subject: [PATCH 02/12] Add multi_bdy_files functionality to ARW real Tired of all of the drudgery of splitting LBCs in the real prgram via two-time-level processing? Featuring the RONCO split-o-matic. modified: main/real_em.F modified: share/module_check_a_mundo.F --- main/real_em.F | 47 ++++++++++++++++++++++++++++++------ share/module_check_a_mundo.F | 32 ++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 8 deletions(-) diff --git a/main/real_em.F b/main/real_em.F index dea80fe4da..7ed248bf63 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -333,7 +333,8 @@ END SUBROUTINE start_domain CHARACTER (LEN=256) :: si_inpname CHARACTER (LEN=80) :: message - CHARACTER(LEN=19) :: start_date_char , end_date_char , current_date_char , next_date_char + CHARACTER(LEN=19) :: start_date_char , end_date_char , current_date_char , next_date_char , & + prev_date_char INTEGER :: time_loop_max , loop, rc INTEGER :: julyr , julday @@ -377,6 +378,7 @@ END SUBROUTINE start_domain ! Here we define the initial time to process, for later use by the code. current_date_char = start_date_char + prev_date_char = start_date_char start_date = start_date_char // '.0000' current_date = start_date @@ -576,7 +578,8 @@ END SUBROUTINE start_domain #endif CALL cpu_time ( t3 ) - CALL assemble_output ( grid , config_flags , loop , time_loop_max ) + CALL assemble_output ( grid , config_flags , loop , time_loop_max, current_date_char , prev_date_char ) + prev_date_char = current_date_char CALL cpu_time ( t4 ) WRITE ( wrf_err_message , FMT='(A,I10,A)' ) 'Timing for output ',NINT(t4-t3) ,' s.' CALL wrf_debug( 0, wrf_err_message ) @@ -668,7 +671,7 @@ SUBROUTINE compute_si_start_and_end ( & END DO loop_count END SUBROUTINE compute_si_start_and_end -SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) +SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , current_date_char , prev_date_char ) USE module_big_step_utilities_em USE module_domain @@ -693,6 +696,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) CHARACTER (LEN=256) :: inpname , bdyname CHARACTER(LEN= 4) :: loop_char CHARACTER (LEN=256) :: message + CHARACTER (LEN=19) , INTENT(IN) :: current_date_char, prev_date_char character *19 :: temp19 character *24 :: temp24 , temp24b @@ -703,6 +707,10 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: qn1bdy3dtemp1, qn1bdy3dtemp2, qn2bdy3dtemp1, qn2bdy3dtemp2 real::t1,t2 + INTEGER :: open_status + +#include "wrf_io_flags.h" + ! Various sizes that we need to be concerned about. ids = grid%sd31 @@ -957,10 +965,12 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) IF ( loop .eq. 2 ) THEN IF ( (grid%id .eq. 1) .and. ( .NOT. config_flags%polar ) ) THEN - CALL construct_filename1( bdyname , 'wrfbdy' , grid%id , 2 ) - CALL open_w_dataset ( id, TRIM(bdyname) , grid , config_flags , output_boundary , "DATASET=BOUNDARY", ierr ) - IF ( ierr .NE. 0 ) THEN - CALL wrf_error_fatal( 'real: error opening wrfbdy for writing' ) + IF ( .NOT. config_flags%multi_bdy_files ) THEN + CALL construct_filename2a( bdyname , TRIM(config_flags%bdy_inname) , grid%id , 2 , " " ) + CALL open_w_dataset ( id, TRIM(bdyname) , grid , config_flags , output_boundary , "DATASET=BOUNDARY", ierr ) + IF ( ierr .NE. 0 ) THEN + CALL wrf_error_fatal( 'real: error opening ' // TRIM(bdyname) // ' for writing' ) + END IF END IF END IF IF(grid_fdda .GE. 1)THEN @@ -971,6 +981,9 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) END IF END IF ELSE + + ! Advance the clock to the next time period. + IF ( .NOT. domain_clockisstoptime(grid) ) THEN CALL domain_clockadvance( grid ) CALL domain_clockprint ( 150, grid, & @@ -978,6 +991,24 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) END IF END IF + ! If the lateral boundary conditions are split into single times per file, then + ! open the file with a date string. Also, if is easier to CLOSE the file just + ! before we need it OPENed. + + IF ( config_flags%multi_bdy_files ) THEN + CALL construct_filename2a( bdyname , TRIM(config_flags%bdy_inname) , grid%id , 2 , prev_date_char ) + + CALL wrf_inquire_opened(id , TRIM(bdyname) , open_status , ierr ) + IF ( open_status .EQ. WRF_FILE_OPENED_FOR_WRITE ) THEN + CALL close_dataset ( id , config_flags , "DATASET=BOUNDARY" ) + END IF + + CALL open_w_dataset ( id, TRIM(bdyname) , grid , config_flags , output_boundary , "DATASET=BOUNDARY", ierr ) + IF ( ierr .NE. 0 ) THEN + CALL wrf_error_fatal( 'real: error opening ' // TRIM(bdyname) // ' for writing' ) + END IF + END IF + IF ( config_flags%polar ) THEN ! No need to couple fields, since no lateral BCs are required. @@ -1160,7 +1191,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max ) ! Output boundary file. IF(grid%id .EQ. 1)THEN - print *,'LBC valid between these times ',current_date, ' ',start_date + print *,'LBC valid between these times ',prev_date_char, ' and ',current_date_char CALL output_boundary ( id, grid , config_flags , ierr ) END IF diff --git a/share/module_check_a_mundo.F b/share/module_check_a_mundo.F index 9c1e295b30..726c6916b6 100644 --- a/share/module_check_a_mundo.F +++ b/share/module_check_a_mundo.F @@ -66,6 +66,7 @@ SUBROUTINE check_nml_consistency !END FASDAS ! INTEGER :: count_fatal_error + INTEGER :: len1, len2, len_loop ! These functions are located with in the Urban Physics files, but ! not within the confines of the modules. Since we are in the share @@ -948,6 +949,37 @@ END FUNCTION bep_bem_nbui_max count_fatal_error = count_fatal_error + 1 #endif +!---------------------------------------------------------------------------- +! If using multi_bdy_files option or not, make the lateral bdy file root name +! correct. For example, we want "wrfbdy_d01" for NON multi_bdy_files and we +! want "wrfbdy_d01_SOME_DATE" when using the multi_bdy_files option. +!---------------------------------------------------------------------------- + IF ( model_config_rec%multi_bdy_files ) THEN + IF ( INDEX ( TRIM(model_config_rec%bdy_inname) , "_" ) .GT. 0 ) THEN + ! No op, all OK + ELSE + wrf_err_message = '--- ERROR: Need bdy_inname = "wrfbdy_d_"' + CALL wrf_debug ( 0, TRIM(wrf_err_message) ) + count_fatal_error = count_fatal_error + 1 +! len1 = LEN_TRIM(model_config_rec%bdy_inname) +! len2 = "_" +! model_config_rec%bdy_inname(1:len1+len2) = TRIM(model_config_rec%bdy_inname) // "_" + END IF + ELSE IF ( .NOT. model_config_rec%multi_bdy_files ) THEN + IF ( INDEX ( TRIM(model_config_rec%bdy_inname) , "_" ) .EQ. 0 ) THEN + ! No op, all OK + ELSE + wrf_err_message = '--- ERROR: Remove bdy_inname = "wrfbdy_d_"' + CALL wrf_debug ( 0, TRIM(wrf_err_message) ) + count_fatal_error = count_fatal_error + 1 +! len1 = LEN_TRIM(model_config_rec%bdy_inname) +! len2 = "_" +! DO len_loop len1-len2+1 , len1 +! model_config_rec%bdy_inname(len_loop:len_loop) = " " +! END DO + END IF + END IF + #elif( NMM_CORE == 1 ) !---------------------------------------------------------------------------- ! If NMM core and trajectories are on then halt. From be2ddb81b5b98e8ea8cacc33ea1daabf59e3b4e0 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 26 Sep 2019 18:27:42 -0600 Subject: [PATCH 03/12] More info in the run/README.namelist for multi_bdy_files --- run/README.namelist | 3 +++ 1 file changed, 3 insertions(+) diff --git a/run/README.namelist b/run/README.namelist index 27bf97f25e..5de482f3b1 100644 --- a/run/README.namelist +++ b/run/README.namelist @@ -1563,6 +1563,9 @@ The following are for observation nudging: have_bcs_scalar (max_dom) = .false., ! model run after ndown only: do not use scalar variables in bdy file = .true. , ! use scalar variables in bdy file multi_bdy_files = .false., ! F=default; T=model will run with split and individually named LBC files + requires usage of bdy_inname = "wrfbdy_d_" + the real program can generate all LBC files in a single run + only a single time period is in each separate LBC file euler_adv = .false., ! conservative Eulerian passive advection (NMM only) idtadt = 1, ! fundamental timesteps between calls to Euler advection, dynamics (NMM only) From 9ca0b05ce4ef4ec0ee64274cfd2e54c67cb8e1ef Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Tue, 22 Oct 2019 11:21:45 -0600 Subject: [PATCH 04/12] NMM needs Registry mods for new var in bdy_control The lateral BC option to allow multiple files (one time period per file) needs to be in the NMM Registry also. This option is likely to not be used by NMM, but the WRF code does not compile without this variable being declared as part of the namelist config_flags. Optionally, an EM_ONLY ifdef could have been put around the code to protect it during an NMM build. modified: Registry/Registry.NMM --- Registry/Registry.NMM | 1 + 1 file changed, 1 insertion(+) diff --git a/Registry/Registry.NMM b/Registry/Registry.NMM index d9039e69aa..282ffcdbd4 100644 --- a/Registry/Registry.NMM +++ b/Registry/Registry.NMM @@ -1682,6 +1682,7 @@ rconfig logical open_ye namelist,bdy_control max_domains .f rconfig logical polar namelist,bdy_control max_domains .false. rh "polar" "" "" rconfig logical nested namelist,bdy_control max_domains .false. rh "nested" "" "" rconfig integer real_data_init_type namelist,bdy_control 1 1 irh "real_data_init_type" "REAL DATA INITIALIZATION OPTIONS: 1=SI, 2=MM5, 3=GENERIC" "PRE-PROCESSOR TYPES" +rconfig logical multi_bdy_files namelist,bdy_control 1 .false. rh "multi_bdy_files" "" "" rconfig integer background_proc_id namelist,grib2 1 255 rh "background_proc_id" "Background processing id for grib2" "" rconfig integer forecast_proc_id namelist,grib2 1 255 rh "forecast_proc_id" "Analysis and forecast processing id for grib2" "" From c533e9bbb4c4ba1dd1ca801fcff4bd88fb83683e Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Fri, 8 Nov 2019 11:58:58 -0700 Subject: [PATCH 05/12] Line up columns in NMM Registry --- Registry/Registry.NMM | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Registry/Registry.NMM b/Registry/Registry.NMM index 282ffcdbd4..cf4092540d 100644 --- a/Registry/Registry.NMM +++ b/Registry/Registry.NMM @@ -1682,7 +1682,7 @@ rconfig logical open_ye namelist,bdy_control max_domains .f rconfig logical polar namelist,bdy_control max_domains .false. rh "polar" "" "" rconfig logical nested namelist,bdy_control max_domains .false. rh "nested" "" "" rconfig integer real_data_init_type namelist,bdy_control 1 1 irh "real_data_init_type" "REAL DATA INITIALIZATION OPTIONS: 1=SI, 2=MM5, 3=GENERIC" "PRE-PROCESSOR TYPES" -rconfig logical multi_bdy_files namelist,bdy_control 1 .false. rh "multi_bdy_files" "" "" +rconfig logical multi_bdy_files namelist,bdy_control 1 .false. rh "multi_bdy_files" "" "" rconfig integer background_proc_id namelist,grib2 1 255 rh "background_proc_id" "Background processing id for grib2" "" rconfig integer forecast_proc_id namelist,grib2 1 255 rh "forecast_proc_id" "Analysis and forecast processing id for grib2" "" From 9ba0432f2b35892a9beae0fd9051080fbedf6ec2 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 9 Nov 2019 13:43:30 -0700 Subject: [PATCH 06/12] "if" -> "it" in a comment --- main/real_em.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/real_em.F b/main/real_em.F index 7ed248bf63..6e947720cc 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -992,7 +992,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren END IF ! If the lateral boundary conditions are split into single times per file, then - ! open the file with a date string. Also, if is easier to CLOSE the file just + ! open the file with a date string. Also, it is easier to CLOSE the file just ! before we need it OPENed. IF ( config_flags%multi_bdy_files ) THEN From b219b2887b69cc42ca19657c6c1f01d4c9d95404 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 9 Nov 2019 15:54:42 -0700 Subject: [PATCH 07/12] Clean up comments --- main/real_em.F | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/main/real_em.F b/main/real_em.F index 6e947720cc..17b85ce9bb 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -991,9 +991,10 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren END IF END IF - ! If the lateral boundary conditions are split into single times per file, then - ! open the file with a date string. Also, it is easier to CLOSE the file just - ! before we need it OPENed. + ! If the lateral boundary conditions are split, then open the file with a + ! date string. Only single time periods are allowed in a lateral BC file + ! when the files are split into multiple pieces. Also, it is easier to + ! CLOSE the file just before we need it OPENed. IF ( config_flags%multi_bdy_files ) THEN CALL construct_filename2a( bdyname , TRIM(config_flags%bdy_inname) , grid%id , 2 , prev_date_char ) From e817a62645dee9565e136da47cbb30456222acd1 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 9 Nov 2019 21:01:59 -0700 Subject: [PATCH 08/12] Comment changes for Jenkins trigger --- main/real_em.F | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/real_em.F b/main/real_em.F index 17b85ce9bb..e98509a7a7 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -969,7 +969,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren CALL construct_filename2a( bdyname , TRIM(config_flags%bdy_inname) , grid%id , 2 , " " ) CALL open_w_dataset ( id, TRIM(bdyname) , grid , config_flags , output_boundary , "DATASET=BOUNDARY", ierr ) IF ( ierr .NE. 0 ) THEN - CALL wrf_error_fatal( 'real: error opening ' // TRIM(bdyname) // ' for writing' ) + CALL wrf_error_fatal( 'REAL: error opening ' // TRIM(bdyname) // ' for writing' ) END IF END IF END IF @@ -977,7 +977,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren CALL construct_filename1( inpname , 'wrffdda' , grid%id , 2 ) CALL open_w_dataset ( id2, TRIM(inpname) , grid , config_flags , output_auxinput10 , "DATASET=AUXINPUT10", ierr ) IF ( ierr .NE. 0 ) THEN - CALL wrf_error_fatal( 'real: error opening wrffdda for writing' ) + CALL wrf_error_fatal( 'REAL: error opening wrffdda for writing' ) END IF END IF ELSE From a4db52d417333ae9c3089a05ab567a69dece950c Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Mon, 11 Nov 2019 08:56:30 -0700 Subject: [PATCH 09/12] Consistency in error reporting --- main/real_em.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/real_em.F b/main/real_em.F index e98509a7a7..bcf79a582c 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -1006,7 +1006,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren CALL open_w_dataset ( id, TRIM(bdyname) , grid , config_flags , output_boundary , "DATASET=BOUNDARY", ierr ) IF ( ierr .NE. 0 ) THEN - CALL wrf_error_fatal( 'real: error opening ' // TRIM(bdyname) // ' for writing' ) + CALL wrf_error_fatal( 'REAL: error opening ' // TRIM(bdyname) // ' for writing' ) END IF END IF From e4e41f12fcc4a160e84bba633cd23de62d4fc5fa Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Tue, 10 Dec 2019 21:55:02 -0700 Subject: [PATCH 10/12] line up columns --- Registry/Registry.NMM | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Registry/Registry.NMM b/Registry/Registry.NMM index cf4092540d..23f89a5711 100644 --- a/Registry/Registry.NMM +++ b/Registry/Registry.NMM @@ -1682,7 +1682,7 @@ rconfig logical open_ye namelist,bdy_control max_domains .f rconfig logical polar namelist,bdy_control max_domains .false. rh "polar" "" "" rconfig logical nested namelist,bdy_control max_domains .false. rh "nested" "" "" rconfig integer real_data_init_type namelist,bdy_control 1 1 irh "real_data_init_type" "REAL DATA INITIALIZATION OPTIONS: 1=SI, 2=MM5, 3=GENERIC" "PRE-PROCESSOR TYPES" -rconfig logical multi_bdy_files namelist,bdy_control 1 .false. rh "multi_bdy_files" "" "" +rconfig logical multi_bdy_files namelist,bdy_control 1 .false. rh "multi_bdy_files" "" "" rconfig integer background_proc_id namelist,grib2 1 255 rh "background_proc_id" "Background processing id for grib2" "" rconfig integer forecast_proc_id namelist,grib2 1 255 rh "forecast_proc_id" "Analysis and forecast processing id for grib2" "" From aab8971b04bf75fd91ce69903711688d2f5b325e Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 11 Dec 2019 14:40:44 -0700 Subject: [PATCH 11/12] Clearer description about file OPEN and CLOSE --- main/real_em.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/real_em.F b/main/real_em.F index bcf79a582c..fe1349b4fd 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -993,7 +993,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren ! If the lateral boundary conditions are split, then open the file with a ! date string. Only single time periods are allowed in a lateral BC file - ! when the files are split into multiple pieces. Also, it is easier to + ! when the files are split into multiple pieces. Also, we choose to ! CLOSE the file just before we need it OPENed. IF ( config_flags%multi_bdy_files ) THEN From b00a2cb1bfb9053c3b86f45e1b720e6e93ae3bf6 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 11 Dec 2019 16:40:07 -0700 Subject: [PATCH 12/12] real -> REAL for consistency --- main/real_em.F | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/real_em.F b/main/real_em.F index fe1349b4fd..68f7ab4561 100644 --- a/main/real_em.F +++ b/main/real_em.F @@ -815,7 +815,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren CALL construct_filename1( inpname , 'wrfinput' , grid%id , 2 ) CALL open_w_dataset ( id1, TRIM(inpname) , grid , config_flags , output_input , "DATASET=INPUT", ierr ) IF ( ierr .NE. 0 ) THEN - CALL wrf_error_fatal( 'real: error opening wrfinput for writing' ) + CALL wrf_error_fatal( 'REAL: error opening wrfinput for writing' ) END IF CALL output_input ( id1, grid , config_flags , ierr ) CALL close_dataset ( id1 , config_flags , "DATASET=INPUT" ) @@ -825,7 +825,7 @@ SUBROUTINE assemble_output ( grid , config_flags , loop , time_loop_max , curren CALL construct_filename1( inpname , 'wrflowinp' , grid%id , 2 ) CALL open_w_dataset ( id4, TRIM(inpname) , grid , config_flags , output_auxinput4 , "DATASET=AUXINPUT4", ierr ) IF ( ierr .NE. 0 ) THEN - CALL wrf_error_fatal( 'real: error opening wrflowinp for writing' ) + CALL wrf_error_fatal( 'REAL: error opening wrflowinp for writing' ) END IF CALL output_auxinput4 ( id4, grid , config_flags , ierr ) END IF