Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add simple SIF model to photosynthesis #706

Closed
wants to merge 3 commits into from
Closed

Conversation

AlexisRenchon
Copy link
Member

@AlexisRenchon AlexisRenchon commented Jul 24, 2024

Purpose

Add a simple SIF model to photosynthesis

To do:

  • Fix the parameterisation function (currently roughly written)
  • Call that parameterisation in photosynthesis.jl and add it to p
  • Add a simple plot of SIF in experiments
  • Add SIF to SoilCanopyModel diagnostics --> will do in diagnostic PR which refactors SoilCanopyModel compute diagnostics function!

@@ -158,6 +158,7 @@ function photosynthesis_ozark(;
ΔHΓstar = FT(37830),
ΔHJmax = FT(43540),
ΔHRd = FT(46390),
sif_parameters = SIFParameters{FT}(),
)
return FarquharParameters(
Copy link
Member

Choose a reason for hiding this comment

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

do we need to pass sif_parameters here? I thought in our methods in CreateParametersExt we have a default which makes the sif_params and uses them

Copy link
Member Author

Choose a reason for hiding this comment

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

We need it here because it calls the struct, not the function.

Note that we plan to refactor ClimaLandSimulations (with the help of Gabriele), to have it better designed in general, with PFT framework, global simulations... and ready for ClimaCalibrate

J = electron_transport(APAR, Jmax, θj, ϕ)
(; kf, kd_p1, kd_p2, min_kd, kn_p1, kn_p2, kp, kappa_p1, kappa_p2) =
sif_parameters
Tf = FT(273.15)
Copy link
Member

Choose a reason for hiding this comment

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

this is kind of annoying, but we should get T_freeze from the earth_param_set in Canopy.jl update_aux!, and pass as an argument... like we do with R

Copy link
Member Author

@AlexisRenchon AlexisRenchon Jul 30, 2024

Choose a reason for hiding this comment

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

Let's do that together!
I am not sure of how to do it correctly, do you mean have Tf as an argument of compute_SIF_at_a_point and get that argument inside Canopy.jl update_aux!?

Is this to reduce allocation? or make sure we use params instead of hard coding?

Copy link
Member

Choose a reason for hiding this comment

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

+1.

Copy link
Member

@kmdeck kmdeck left a comment

Choose a reason for hiding this comment

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

looks good. We also can add SIFParameters to docs/src/APIs

update_photosynthesis!(
Rd,
An,
Vcmax25,
SIF,
Copy link
Member

Choose a reason for hiding this comment

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

Can we make these two things independent? Why does update_photosynthesis! needs SIF?

Copy link
Member Author

Choose a reason for hiding this comment

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

we could, it just currently lives in the photosynthesis name space (stored in canopy.photosynthesis.SIF), we thought it was okay for now with a simple model...

Do you suggest making a new canopy output / model, stored in canopy.SIF, in a Vegetation/SIF.jl file? (similar to what we have, photosynthesis.jl, radiation.jl, stomatalconductance.jl, etc.)

If we do, it will be a bit more involved and a breaking change, but it will allow to have multiple SIF modules

Copy link
Member Author

Choose a reason for hiding this comment

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

maybe we could do that for a next PR?

Copy link
Member Author

Choose a reason for hiding this comment

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

Copy link
Member

Choose a reason for hiding this comment

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

Yes. I think it should be an independent module. If anything it is a radiative variable and it should live in radiation instead of photosynthesis.

Copy link
Member

Choose a reason for hiding this comment

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

Like SIF would be equivalent to APAR. We measure it with a radiometer.

J = electron_transport(APAR, Jmax, θj, ϕ)
(; kf, kd_p1, kd_p2, min_kd, kn_p1, kn_p2, kp, kappa_p1, kappa_p2) =
sif_parameters
Tf = FT(273.15)
Copy link
Member

Choose a reason for hiding this comment

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

+1.

src/standalone/Vegetation/photosynthesis.jl Show resolved Hide resolved
@AlexisRenchon AlexisRenchon deleted the kd/rb/ar/basic_SIF branch October 21, 2024 18:32
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.

3 participants