Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

the error of subgridWeightsMod.F9 running transient land cover using I2000

xiaoxiaokuishu

Ru Xu
Member
Hi, all

I set up a case using I2000 but with transient land cover (simulation time 1992-1996), firstly the surfdata and landcover.timseries are all from NCAR, it works well, but when I change it to the modified land cover data, i change surfdata and also landcover.timeseries and 99% confirm that the variable that should sum up to 100 is correct. I only modified the 1992-2000 of landcover timeseries data.
The surfdata i revise from is surfdata_0.9x1.25_16pfts_simyr2000_c170428.nc', the landcover.timeseries is landuse.timeseries_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr1850-2015_c170824.nc.

The below error appear. I attache the env_run, xx.log file for your reference. Any comment is very thankful!

941 total cohorts per clump = 73

check_weights ERROR: at c = 8642 total PFT weight is NaN active_only = F

check_weights ERROR: at l = 3750 total PFT weight is NaN active_only = F

check_weights ERROR: at g = 1212 total PFT weight is NaN active_only = F

If you are seeing this message at the beginning of a run with

use_init_interp = .true. and init_interp_method = "use_finidat_areas",

and you are seeing weights less than 1, then a likely cause is:

For the above-mentioned grid cell(s):

The matching input grid cell had some non-zero-weight subgrid type

that is not present in memory in the new run.
 

Attachments

  • cesm.log.51104449.zip
    26.1 KB · Views: 1

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The fact that your pft weights are summing up to NaN makes me think that you have NaNs or possibly missing values in your surface data somewhere. You could troubleshoot by printing out the weights of the pfts for the columns, landunits, gridcells that are identified in your error message by modifying the code in src/main/subgridWeightsMod.F90:

error_found = .false.

! Check patch-level weights
sumwtcol(bounds%begc : bounds%endc) = 0._r8
sumwtlunit(bounds%begl : bounds%endl) = 0._r8
sumwtgcell(bounds%begg : bounds%endg) = 0._r8

do p = bounds%begp,bounds%endp
c = patch%column(p)
l = patch%landunit(p)
g = patch%gridcell(p)

if ((active_only .and. patch%active(p)) .or. .not. active_only) then
sumwtcol(c) = sumwtcol(c) + patch%wtcol(p)
sumwtlunit(l) = sumwtlunit(l) + patch%wtlunit(p)
sumwtgcell(g) = sumwtgcell(g) + patch%wtgcell(p)
end if
end do

do c = bounds%begc,bounds%endc
if (.not. weights_okay(sumwtcol(c), active_only, col%active(c))) then
write(iulog,*) trim(subname),' ERROR: at c = ',c,'total PFT weight is ',sumwtcol(c), &
'active_only = ', active_only
error_found = .true.
end if
end do

do l = bounds%begl,bounds%endl
if (.not. weights_okay(sumwtlunit(l), active_only, lun%active(l))) then
write(iulog,*) trim(subname),' ERROR: at l = ',l,'total PFT weight is ',sumwtlunit(l), &
'active_only = ', active_only
error_found = .true.
end if
end do


etc............
 

xiaoxiaokuishu

Ru Xu
Member
The fact that your pft weights are summing up to NaN makes me think that you have NaNs or possibly missing values in your surface data somewhere. You could troubleshoot by printing out the weights of the pfts for the columns, landunits, gridcells that are identified in your error message by modifying the code in src/main/subgridWeightsMod.F90:

error_found = .false.

! Check patch-level weights
sumwtcol(bounds%begc : bounds%endc) = 0._r8
sumwtlunit(bounds%begl : bounds%endl) = 0._r8
sumwtgcell(bounds%begg : bounds%endg) = 0._r8

do p = bounds%begp,bounds%endp
c = patch%column(p)
l = patch%landunit(p)
g = patch%gridcell(p)

if ((active_only .and. patch%active(p)) .or. .not. active_only) then
sumwtcol(c) = sumwtcol(c) + patch%wtcol(p)
sumwtlunit(l) = sumwtlunit(l) + patch%wtlunit(p)
sumwtgcell(g) = sumwtgcell(g) + patch%wtgcell(p)
end if
end do

do c = bounds%begc,bounds%endc
if (.not. weights_okay(sumwtcol(c), active_only, col%active(c))) then
write(iulog,*) trim(subname),' ERROR: at c = ',c,'total PFT weight is ',sumwtcol(c), &
'active_only = ', active_only
error_found = .true.
end if
end do

do l = bounds%begl,bounds%endl
if (.not. weights_okay(sumwtlunit(l), active_only, lun%active(l))) then
write(iulog,*) trim(subname),' ERROR: at l = ',l,'total PFT weight is ',sumwtlunit(l), &
'active_only = ', active_only
error_found = .true.
end if
end do


etc............
Thanks so much! Yes, after i check the surfdata, i find there is 3 pixels with Nan value..... After i fixed it, the model works well!
 
Top