When attempting to run WRF using BEM (sf_urban_physics = 3) I get the following error (specifically from only rsl.out.0068, am running on 128 cores):
d01 2018-05-01_00:00:00 Input data is acceptable to use:
d01 2018-05-01_00:00:00 Input data processed for aux input 4 for domain 1
d01 2018-05-01_00:00:00 Yes, this special data is acceptable to use: SFCFDDA FILE: SURFACE ANALYSES FOR NUDGING
d01 2018-05-01_00:00:00 Input data is acceptable to use:
d01 2018-05-01_00:00:00 Input data processed for aux input 9 for domain 1
d01 2018-05-01_00:00:00 Input data is acceptable to use:
d01 2018-05-01_00:00:00 Input data processed for aux input 10 for domain 1
d01 2018-05-01_00:00:00 Input data is acceptable to use:
Tile Strategy is not specified. Assuming 1D-Y
WRF TILE 1 IS 237 IE 295 JS 157 JE 175
WRF NUMBER OF TILES = 1
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 2462
singular matrix in gaussjbem
-------------------------------------------
This leads to a subroutine called gaussjbem in phys/sf_module_bem.f90 which is used to invert matrices (see page 60/61 of this PDF for the algorithm: https://websites.pmc.ucsc.edu/~fnimmo/eart290c_17/NumericalRecipesinF77.pdf). The issue that is causing the error is that there is a singular (non-invertible) matrix showing up causing the following part of the algorithm to fail:
if(ipiv(k).eq.0)then
if(abs(a(j,k)).ge.big)then
big=abs(a(j,k))
irow=j
icol=k
endif
elseif(ipiv(k).gt.1)then
CALL wrf_error_fatal3("<stdin>",2462 &
'singular matrix in gaussjbem')
endif
I have no idea where these matrices are coming from or why one of them is singular and killing my run. My namelist and data used for this run is exactly the same as it is in my currently running BEP simulation (sf_urban_physics=2) with the exception of using BEM. I've attached the namelist used in case that helps. My hope is that I can get the bug solved and the run going this week so I can start doing analysis in January (running May-September, it takes ~5.5 days to complete a month), but I have no idea what needs to be done here. It would be nice if all it required was a minor adjustment to the namelist.
On an unrelated note, there's something weird going on with the interaction between history_interval and restart_interval. If I have the output written too often in comparison to the restart files the program will get stuck trying to create the restart file. For example, I currently have the restart file set to every 6 hours because setting it to 12 or 24 hours will make it fail (though not actually quit- the program runs but does nothing so rsl.out.0000 needs to be checked to see if this is occurring) when trying to write the restart file for domain 4. I can do restart files every 24 hours if the history interval of domain 4 is 3 hours (currently set to 2 hours), but longer times between restart files don't work. It's very strange.
d01 2018-05-01_00:00:00 Input data is acceptable to use:
d01 2018-05-01_00:00:00 Input data processed for aux input 4 for domain 1
d01 2018-05-01_00:00:00 Yes, this special data is acceptable to use: SFCFDDA FILE: SURFACE ANALYSES FOR NUDGING
d01 2018-05-01_00:00:00 Input data is acceptable to use:
d01 2018-05-01_00:00:00 Input data processed for aux input 9 for domain 1
d01 2018-05-01_00:00:00 Input data is acceptable to use:
d01 2018-05-01_00:00:00 Input data processed for aux input 10 for domain 1
d01 2018-05-01_00:00:00 Input data is acceptable to use:
Tile Strategy is not specified. Assuming 1D-Y
WRF TILE 1 IS 237 IE 295 JS 157 JE 175
WRF NUMBER OF TILES = 1
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 2462
singular matrix in gaussjbem
-------------------------------------------
This leads to a subroutine called gaussjbem in phys/sf_module_bem.f90 which is used to invert matrices (see page 60/61 of this PDF for the algorithm: https://websites.pmc.ucsc.edu/~fnimmo/eart290c_17/NumericalRecipesinF77.pdf). The issue that is causing the error is that there is a singular (non-invertible) matrix showing up causing the following part of the algorithm to fail:
if(ipiv(k).eq.0)then
if(abs(a(j,k)).ge.big)then
big=abs(a(j,k))
irow=j
icol=k
endif
elseif(ipiv(k).gt.1)then
CALL wrf_error_fatal3("<stdin>",2462 &
'singular matrix in gaussjbem')
endif
I have no idea where these matrices are coming from or why one of them is singular and killing my run. My namelist and data used for this run is exactly the same as it is in my currently running BEP simulation (sf_urban_physics=2) with the exception of using BEM. I've attached the namelist used in case that helps. My hope is that I can get the bug solved and the run going this week so I can start doing analysis in January (running May-September, it takes ~5.5 days to complete a month), but I have no idea what needs to be done here. It would be nice if all it required was a minor adjustment to the namelist.
On an unrelated note, there's something weird going on with the interaction between history_interval and restart_interval. If I have the output written too often in comparison to the restart files the program will get stuck trying to create the restart file. For example, I currently have the restart file set to every 6 hours because setting it to 12 or 24 hours will make it fail (though not actually quit- the program runs but does nothing so rsl.out.0000 needs to be checked to see if this is occurring) when trying to write the restart file for domain 4. I can do restart files every 24 hours if the history interval of domain 4 is 3 hours (currently set to 2 hours), but longer times between restart files don't work. It's very strange.