From c5645f587ccd53a8d35d28606dff89634d1e8b3c Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 24 Jul 2025 18:34:53 -0600 Subject: [PATCH] Add abm and popden ncl scripts to /tools/contrib for future reference --- tools/contrib/abm_raw.ncl | 41 ++++++++++++++++++++++++++++++++++++ tools/contrib/popden.ncl | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 tools/contrib/abm_raw.ncl create mode 100644 tools/contrib/popden.ncl diff --git a/tools/contrib/abm_raw.ncl b/tools/contrib/abm_raw.ncl new file mode 100644 index 0000000000..42b3bbbd08 --- /dev/null +++ b/tools/contrib/abm_raw.ncl @@ -0,0 +1,41 @@ +; Script written by Fang Li and emailed to slevis on 2025/07/24 +; Script for generating the abm (peak crop-fire month) raw dataset +; /glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c250715.nc +; starting from preexisting raw dataset +; /glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c240821.nc + +f1=addfile("/glade/campaign/cesm/cesmdata/inputdata/lnd/clm2/rawdata/mksrf_abm_0.5x0.5_simyr2000.c240821.nc","r") +abm1=f1->abm +lon1=f1->lon +lat1=f1->lat + +fils=systemfunc("ls /glade/work/fangli/obs/GFED5/crop05/BA*.nc") +fs=addfiles(fils,"r") +ListSetType(fs,"join") +baf=fs[:]->baf +bafm=dim_avg_n(baf,0) + +f=addfile("fpc_crop05.nc","r") ; MCD12C1 12+14 +fpc_crop=f->fpc_crop + +fw=addfile("fpc_water05.nc","r") +fpc_water=fw->fpc_water + +abm=abm1 +do ilat=0, 359 + do ilon=0, 719 + if(fpc_crop(ilat,ilon).gt.0.005 .and. fpc_water(ilat,ilon).lt.0.5)then + if(sum(bafm(:,ilat,ilon)).gt.0.0)then + abm(ilat,ilon)=maxind(bafm(:,ilat,ilon))+1 + else + abm(ilat,ilon)=13 + end if + else + abm(ilat,ilon)=14 + end if +end do +end do + + fout1=addfile("abm05-raw.nc","c") + fout1->abm=abm + diff --git a/tools/contrib/popden.ncl b/tools/contrib/popden.ncl new file mode 100644 index 0000000000..b9503be020 --- /dev/null +++ b/tools/contrib/popden.ncl @@ -0,0 +1,44 @@ +; Script written by Fang Li and emailed to slevis on 2025/07/24 +; Script for generating the hdm (aka popdens or population density) stream file +; /glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/firedata/clmforc.Li_2025_CMIP7_hdm_0.5x0.5_simyr1850-2100_c250717.nc +; starting from preexisting file +; /glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc +; and raw data in /glade/work/fangli/hd/TRENDY/pop-dens_input4MIPs_population_CMIP_PIK-CMIP-1-0-0_gr_1850-2025.nc +; Is the latter the same as /glade/campaign/cesm/cesmdata/input4MIPs_raw/input4MIPs/CMIP7/CMIP/PIK/PIK-CMIP-1-0-0 ? + +f=addfile("/glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/firedata/clmforc.Li_2018_SSP3_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc","r") +hdm=f->hdm + +f1=addfile("/glade/work/fangli/hd/TRENDY/pop-dens_input4MIPs_population_CMIP_PIK-CMIP-1-0-0_gr_1850-2025.nc","r") +hdmn=f1->pop_dens + +f2=addfile("/glade/work/fangli/hd/TRENDY/ctl05.clm2.h0.1850-01.nc","r") +landfrac=f2->landfrac +landmask=f2->landmask +landf1=landfrac*landmask +landf=landf1 +landf(:,0:359)=landf1(:,360:719) +landf(:,360:719)=landf1(:,0:359) + +do ilat=0,359 + do ilon=0,719 + if(ismissing(landf(ilat,ilon)))then + hdm(0:175,ilat,ilon)=(/hdmn(:,ilat,ilon)/) + else + hdm(0:175,ilat,ilon)=(/hdmn(:,ilat,ilon)/landf(ilat,ilon)/) + end if + end do +end do + +fout=addfile("clmforc.Li_2025_CMIP7_hdm_0.5x0.5_simyr1850-2100_c250717.nc","c") + vNam=getfilevarnames(f) + do i=0,dimsizes(vNam)-1 + if(vNam(dimsizes(vNam)-1-i).ne."hdm")then + x=f->$vNam(dimsizes(vNam)-1-i)$ + fout->$vNam(dimsizes(vNam)-1-i)$=x + delete(x) + else + fout->hdm=hdm + end if + end do +