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

Problems about crop irrigation when using CLM4.5BGC

Hi all, I am using CLM4.5BGC version to simulation crop with irrigation at the site level. After I have set up the  irrigate = .true., I find there is still no water is applied. I think the other setting-up is OK since I can get right GPP NPP LE and other variables except that there is no water is irrigated.PCT_PFT in surface data is set as 100% irrgated corn, PCT_PFT=(/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,  0,100,0,0,0,0,0,0/). The following is scripts which I used for my site: ./create_newcase -case sw_irri -res CLM_USRDAT -compset I1PTCLM45  -mach mymachinecd sw_irri ./xmlchange DATM_CLMNCEP_YR_START=2009,DATM_CLMNCEP_YR_END=2009./xmlchange ATM_DOMAIN_PATH=$my_domain_path,LND_DOMAIN_PATH=$my_domain_path./xmlchange ATM_DOMAIN_FILE=$my_domain_file,LND_DOMAIN_FILE=$my_domain_file./xmlchange CLM_USRDAT_NAME=$GRIDNAME./xmlchange DATM_PRESAERO=pt1_pt1./xmlchange RUN_STARTDATE=1900-01-01,STOP_N=100,STOP_OPTION=nyears./xmlchange NTASKS_LND=1,NTASKS_ICE=1,NTASKS_OCN=1,NTASKS_CPL=1,NTASKS_ROF=1./xmlchange CLM_BLDNML_OPTS="-irrig .true." -append./xmlchange CLM_CONFIG_OPTS="-phys clm4_5 -bgc cn -vsoilc_centbgc on -clm4me on -crop on"  cat user_nl_clm    irrigate = .true. fsurdat = "/scratch/carter/z/zhu467/cesm1_2_2/inputdata/lnd/clm2/surfdata/surfdata_1x1_sw_irri.nc"EOF cat user_nl_datmtaxmode = 'cycle','cycle' EOF ./cesm_setup  ./sw_irri.build./sw_irri.submit  Thanks!
 

sacks

Bill Sacks
CSEG and Liaisons
Staff member
Nothing looks obviously wrong with your setup.I would try to determine whether the problem is:(1) Area isn't going to the irrigated corn pft. (For example, the -irrig .true. isn't getting applied correctly, meaning that area would be put in unirrigated corn rather than irrigated corn). If you're using the cesm1.2.2 release version of CLM, I think the easiest way to do this is to write out a history file with separate data for each PFT, by setting hist_dov2xy = .false. in user_nl_clm. Then you can look at pfts1d_itype_veg and pfts1d_wtgcell in that file to confirm that the irrigated corn type is covering 100% of the grid cell in your run. If that's correct, it implies that the -crop and -irrig flags are being applied correctly.(2) There is no irrigation despite there being an irrigated pft. I assume you have been looking at the QIRRIG variable, and that this variable is always 0? There are a number of reasons why irrigation might not happen. For example, irrigtion will only happen when btran falls below 1. If you're using the cesm1.2.2 release version, then the irrigation calculation happens in CanopyFluxesMod.F90 in the biogeophys subdirectory (see code starting with "Determine if irrigation is needed (over irrigated soil columns)"). Since you're doing a single-point simulation, you could add a bunch of write/print statements in the code starting at that point to try to determine which conditionals are entered. First see if check_for_irrig gets set to true (the first block of code). Then if check_for_irrig is true, I would add some extra print statements in the next block of code ("measure soil water...") to see why the irrigation rate is staying 0. Feel free to post back if you're still stuck after doing that.
 

sacks

Bill Sacks
CSEG and Liaisons
Staff member
Nothing looks obviously wrong with your setup.I would try to determine whether the problem is:(1) Area isn't going to the irrigated corn pft. (For example, the -irrig .true. isn't getting applied correctly, meaning that area would be put in unirrigated corn rather than irrigated corn). If you're using the cesm1.2.2 release version of CLM, I think the easiest way to do this is to write out a history file with separate data for each PFT, by setting hist_dov2xy = .false. in user_nl_clm. Then you can look at pfts1d_itype_veg and pfts1d_wtgcell in that file to confirm that the irrigated corn type is covering 100% of the grid cell in your run. If that's correct, it implies that the -crop and -irrig flags are being applied correctly.(2) There is no irrigation despite there being an irrigated pft. I assume you have been looking at the QIRRIG variable, and that this variable is always 0? There are a number of reasons why irrigation might not happen. For example, irrigtion will only happen when btran falls below 1. If you're using the cesm1.2.2 release version, then the irrigation calculation happens in CanopyFluxesMod.F90 in the biogeophys subdirectory (see code starting with "Determine if irrigation is needed (over irrigated soil columns)"). Since you're doing a single-point simulation, you could add a bunch of write/print statements in the code starting at that point to try to determine which conditionals are entered. First see if check_for_irrig gets set to true (the first block of code). Then if check_for_irrig is true, I would add some extra print statements in the next block of code ("measure soil water...") to see why the irrigation rate is staying 0. Feel free to post back if you're still stuck after doing that.
 
Hi,I have output the variable btran and I find the cause of no irrigation applied is that btran is constantly 1. I can not believe this since it is impossible that crop is not in water stress constantly. In addition, I did not understand the code to determine when to begin to irrigate. ! see if it's the right time of day to start irrigating:         local_time = modulo(time + nint(grc%londeg(g)/degpsec), isecspday)         if (modulo(local_time - irrig_start_time, isecspday) < dtime) then            ! it's time to start irrigating Thanks 
 
Hi,I have output the variable btran and I find the cause of no irrigation applied is that btran is constantly 1. I can not believe this since it is impossible that crop is not in water stress constantly. In addition, I did not understand the code to determine when to begin to irrigate. ! see if it's the right time of day to start irrigating:         local_time = modulo(time + nint(grc%londeg(g)/degpsec), isecspday)         if (modulo(local_time - irrig_start_time, isecspday) < dtime) then            ! it's time to start irrigating Thanks 
 

sacks

Bill Sacks
CSEG and Liaisons
Staff member
Okay, I'm glad you found the cause for no irrigation. I guess you'll have to dig further to determine why btran is always staying at 1 at your site; it would be hard for me to help you with that.In response to your question about the irrigation code: This code is first converting the model time (in GMT) to local time. Then it's checking if the local time is within one time step of the irrigation start time (6 AM local time). If so, it's time to check if irrigation is needed.
 

sacks

Bill Sacks
CSEG and Liaisons
Staff member
Okay, I'm glad you found the cause for no irrigation. I guess you'll have to dig further to determine why btran is always staying at 1 at your site; it would be hard for me to help you with that.In response to your question about the irrigation code: This code is first converting the model time (in GMT) to local time. Then it's checking if the local time is within one time step of the irrigation start time (6 AM local time). If so, it's time to check if irrigation is needed.
 
Hi Bill, After I tested for different sites, I think the only reason might be that region is not water limited so its photosynthesis is not confined by water and no water is irrigated. Thanks for your help!
 
Hi Bill, After I tested for different sites, I think the only reason might be that region is not water limited so its photosynthesis is not confined by water and no water is irrigated. Thanks for your help!
 
Hi Bill, I find in the code the btran( soil water stress) is calculated like this:             if (.not. (perchroot .or. perchroot_alt) ) then                rootr(p,j) = rootfr(p,j)*rresis(p,j)            else               rootr(p,j) = rootfr_unf(p,j)*rresis(p,j)            end if            btran(p)    = btran(p) + rootr(p,j) But in my opinion, this variable should be an average of all 15 soil layer rather than a sum of the total soil layer like the code. How to understand this ? Thanks!
 
Hi Bill, I find in the code the btran( soil water stress) is calculated like this:             if (.not. (perchroot .or. perchroot_alt) ) then                rootr(p,j) = rootfr(p,j)*rresis(p,j)            else               rootr(p,j) = rootfr_unf(p,j)*rresis(p,j)            end if            btran(p)    = btran(p) + rootr(p,j) But in my opinion, this variable should be an average of all 15 soil layer rather than a sum of the total soil layer like the code. How to understand this ? Thanks!
 

sacks

Bill Sacks
CSEG and Liaisons
Staff member
 My foggy recollection is that the answer to your question is buried in the calculation of rootfr, which effectively results in an average rather than a sum. So, if I'm remembering this right, it means that, if there are 15 layers, with roots evenly distributed in each layer, then rootfr will be 1/15 in each layer, so rootr will be a weighted average (rather than a sum) over the layers.But I haven't looked at this code in a while, so you could confirm that for yourself.
 

sacks

Bill Sacks
CSEG and Liaisons
Staff member
 My foggy recollection is that the answer to your question is buried in the calculation of rootfr, which effectively results in an average rather than a sum. So, if I'm remembering this right, it means that, if there are 15 layers, with roots evenly distributed in each layer, then rootfr will be 1/15 in each layer, so rootr will be a weighted average (rather than a sum) over the layers.But I haven't looked at this code in a while, so you could confirm that for yourself.
 
Hi,Im new in using CLM. I have a similar problem that you had. I was wondering if you could help me out with it. Im running a user defined compset for pre industrial time for phys CLM4.5 BGC CN, phys CAM5, prescribed CICE and ocean at data mode.I have only made the following changes:./xmlchange CLM_BLDNML_OPTS="-irrig .true." -append./xmlchange CLM_CONFIG_OPTS="-crop on" cat user_nl_clm    irrigate = .true. I am also not getting any water as output in my QIRRIG (water added through irrigation) history field. Please let me know how you rectified your run to get this output.
Also if you could help me in  finding the input data file or field that provides water or saturation water level of soil that can be manually provided.  
 
Hi,Im new in using CLM. I have a similar problem that you had. I was wondering if you could help me out with it. Im running a user defined compset for pre industrial time for phys CLM4.5 BGC CN, phys CAM5, prescribed CICE and ocean at data mode.I have only made the following changes:./xmlchange CLM_BLDNML_OPTS="-irrig .true." -append./xmlchange CLM_CONFIG_OPTS="-crop on" cat user_nl_clm    irrigate = .true. I am also not getting any water as output in my QIRRIG (water added through irrigation) history field. Please let me know how you rectified your run to get this output.
Also if you could help me in  finding the input data file or field that provides water or saturation water level of soil that can be manually provided.  
 
I set hist_dov2xy = .false. in user_nl_clm.I set MONTHLY_LAI and PCT_PFT in surface date correctly. pfts1d_wtgcell in outout file showing irrigated corn type is covering.  I find ELAI and BTRAN =0 in irrigate cron Cloumn but the vaule in vegetated Column is appropriate. May I get some suggestion for no irrigation. please!
 
I set hist_dov2xy = .false. in user_nl_clm.I set MONTHLY_LAI and PCT_PFT in surface date correctly. pfts1d_wtgcell in outout file showing irrigated corn type is covering.  I find ELAI and BTRAN =0 in irrigate cron Cloumn but the vaule in vegetated Column is appropriate. May I get some suggestion for no irrigation. please!
 
In my case, the cause of no irrigation applied is that btran is constantly 0.How you change the value of btran? Please give me some suggestion. Thanks a lot.
 
Top