Skip to content

Conversation

juliasloan25
Copy link
Member

@juliasloan25 juliasloan25 commented Jul 30, 2025

Purpose

We've been using 2 different MODIS LAI artifacts: one global map for global runs, and one dataset for 4 fluxnet sites to use for site-level simulations. After #1279, we have the ability to read in spatial maps to Point/Column spaces, so we can use the global map for global and site-level runs.

This PR switches all site-level (fluxnet) runs to use the global map, and removes the site-specific LAI artifact.

Closes #1224

Content

  • rename find_modis_year_paths -> modis_lai_multiyear_paths
  • use modis_lai_multiyear_paths instead of modis_lai_single_year_path (if we have multiple years of data we may as well use it since this artifact isn't too large). Single year artifact still exists and is tested
  • modis_lai_multiyear_paths only includes an extra year of data if the end date is in December, instead of always including an extra year of data
  • in modis_lai_multiyear_paths, remove PeriodicCalendar extrapolation from LinearInterpolation. Since the data spans multiple years, we get uneven time intervals (e.g. between last date of one year and first date of the next year) so we can't use PeriodicCalendar with it
  • rename final_date -> end_date in src/Artifacts.toml for consistency
  • always pass longlat to domain for fluxnet simulations (this required some restructuring of drivers)

LAI values at the start of the simulation

site ID site-level LAI artifact (main) global LAI artifact (this PR)
US-MOz 0.320855 0.343325
US-Ha1 0.594469 0.532508
US-Var .0962558 1.0596
US-NR1 0.488428 0.40729

Note that the values from the global LAI artifact are identical whether we have use_lowres_clm true or false.

Changes in results

For most variables output from the 4 fluxnet sites, the R-squared value compared to data remained the same (variables are LHF, SHF, LWU, SWU, GPP, ET). RMSD values mostly decreased (suggesting better agreement with data) but RMSD changes range from 2.3% increase (Ha1 GPP) to 20% decrease (Ozark GPP). Overall it seems like this change slightly improves results, but does not have a strong effect.


  • I have read and checked the items on the review checklist.

@@ -8,7 +8,3 @@ h_canopy = h_stem + h_leaf
compartment_midpoints =
n_stem > 0 ? [h_stem / 2, h_stem + h_leaf / 2] : [h_leaf / 2]
compartment_surfaces = n_stem > 0 ? [zmax, h_stem, h_canopy] : [zmax, h_leaf]

land_domain =
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved this into the driver scripts so that we have access to lat and long when we construct it. This file will be removed soon in a different PR, so it doesn't matter that this is duplicating some code.

@juliasloan25 juliasloan25 force-pushed the js/global-lai branch 2 times, most recently from 3c178d6 to cdb2930 Compare July 31, 2025 00:44
Copy link
Member

@ph-kev ph-kev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if I am the best person for reviewing this, but everything looks reasonable to me.

Comment on lines +238 to +236
start_date = start_date + Second(t0),
end_date = start_date + Second(t0) + Second(tf),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find it strange that start_date isn't actually the start date.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I agree. I think we used to call it ref_date and it may be clearer if we go back to using that. But this is the convention we use throughout ClimaLand right now

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we maybe discuss this more? I think we should get rid of t0 and tf and only work with start and stop_date

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(at least in fluxnet runs; this is also what we do in global runs)

Copy link
Member

@imreddyTeja imreddyTeja left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of the results are slightly changed, which is probably expected.

Have you checked how much/if the LAI values differ for the fluxnet sites when using modis_lai_fluxnet_sites vs the global modes artifact?

The software changes look good to me

@juliasloan25
Copy link
Member Author

Some of the results are slightly changed, which is probably expected.

Have you checked how much/if the LAI values differ for the fluxnet sites when using modis_lai_fluxnet_sites vs the global modes artifact?

I added a table to the PR description showing the LAI values at the start of the simulation for each site, using the site-level artifact vs the global artifact. They look pretty similar to me. I didn't go through and check the values over time, but I think this is a good enough check to see that the values are reasonable.

@juliasloan25
Copy link
Member Author

I realized that the way I'm computing maxLAI doesn't recover the previous behavior. Since we evaluate the TVI at a point at the start date to get LAI_init, taking maximum(LAI_init) just returns the initial value at that point. I can't find a straightforward way to take a maximum of the TVI values over time, and since we use the global artifact now it also isn't very straightforward to take a maximum of the dataset values only at this point in space. We would have to find the index of the lat/lon in the dataset that are closest to our space, and take a maximum over all values at that point over time. This would defeat the purpose of using ClimaUtilities to handle the interpolation and file reading.

I would prefer to stop using maxLAI to set RAI and capacity - maybe we can just use the initial LAI instead? But I'd like to discuss this with Kat before making the change, so I'll wait to merge until next week

@juliasloan25 juliasloan25 force-pushed the js/global-lai branch 2 times, most recently from c02adda to 514f7a7 Compare August 5, 2025 00:28
@juliasloan25 juliasloan25 merged commit a366651 into main Aug 5, 2025
15 of 17 checks passed
@juliasloan25 juliasloan25 deleted the js/global-lai branch August 5, 2025 18:07
juliasloan25 referenced this pull request Aug 9, 2025
Bump minor version; Bump compat upper bnds

Use approx in soil test for compat with rootsolvers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

use global modis_lai artifact; select closest lat/lon for points
4 participants