Skip to content

SIP290 Update russell_4 inputs with actual Russell Ranch run files#340

Open
AritraDey-Dev wants to merge 6 commits into
PecanProject:masterfrom
AritraDey-Dev:update-russell_4-inputs
Open

SIP290 Update russell_4 inputs with actual Russell Ranch run files#340
AritraDey-Dev wants to merge 6 commits into
PecanProject:masterfrom
AritraDey-Dev:update-russell_4-inputs

Conversation

@AritraDey-Dev
Copy link
Copy Markdown
Member

@AritraDey-Dev AritraDey-Dev commented May 23, 2026

Summary

Per @dlebauer's comment in #290, this updates the tests/smoke/russell_4 test inputs with the actual SIPNET ensemble run files from the Russell Ranch (UC Davis Century Experiment) cal/val site.

Related issues

Checklist

  • Related issues are listed above. PRs without an approved, related issue may not get reviewed.
  • PR title has the issue number in it ("[#] <concise description of proposed change>")
  • Tests added/updated for new features (if applicable)
  • Documentation updated (if applicable)
  • docs/CHANGELOG.md updated with noteworthy changes
  • Code formatted with clang-format (run git clang-format if needed)

Note: See CONTRIBUTING.md for additional guidance. This repository uses automated formatting checks; if the pre-commit hook blocks your commit, run git clang-format to format staged changes.

Signed-off-by: Aritra Dey <adey01027@gmail.com>
Copilot AI review requested due to automatic review settings May 23, 2026 20:04
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the tests/smoke/russell_4 test inputs with real SIPNET ensemble run files from the Russell Ranch (UC Davis Century Experiment) cal/val site, in preparation for revamping the russell_4 smoke test per #290. The PR is presented as a data-only step toward enabling methane, waterDrainFrac, and the nitrogen cycle in that test.

Changes:

  • Replaces sipnet.param with a 79-parameter file using the legacy 6-column form, including many parameters that current SIPNET does not initialize.
  • Adds a new sipnet.param-spatial file containing just 1.
  • Replaces the previous irrigation-only events.in (2016–2017) with a multi-year (2000–2013) event list mixing plant, fert, irrig, and harv events, with same-day triplicate rows.

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 3 comments.

File Description
tests/smoke/russell_4/sipnet.param Switched to the legacy multi-column param format; many entries are unknown to the current model and will be ignored.
tests/smoke/russell_4/sipnet.param-spatial New single-line file not read by the current codebase.
tests/smoke/russell_4/events.in Replaced with the real Russell Ranch event series; contains duplicated same-day rows and is not exercised because EVENTS=0 in sipnet.in and the skip file is still in place.
Comments suppressed due to low confidence (3)

tests/smoke/russell_4/sipnet.param:79

  • Many of the parameters introduced here are not initialized in src/sipnet/sipnet.c (e.g. microbeInit, baseSoilRespCold, baseMicrobeResp, soilRespQ10Cold, microbeQ10, E0, T0, coldSoilThreshold, litterWHC, litWaterDrainRate, m_ballBerry, qualityLeaf, qualityWood, efficiency, maxIngestionRate, halfSatIngestion, totNitrogen, microbeNC, fineRootExudation, coarseRootExudation, microbePulseEff, and also litterWFracInit). With the current parser (src/common/modelParams.c:183-220) these will be silently ignored with a log message rather than being used to drive the model. The 6-column legacy format here is also accepted but extra columns are dropped (src/common/modelParams.c:128-134). If the intent is to lock down new functionality per #290, please confirm which of these are expected to be honored by SIPNET today vs. carried for documentation only.
microbeInit 0.5 0 0.02 1 0.001
fineRootFrac 0.2 0 0 1 0.001
coarseRootFrac 0.2 0 0 1 0.001
aMax 89.7681891177546 1 0 200 0.2
aMaxFrac 0.639991846983321 0 0.66 0.86 0.005
psnTMin -4.48871541936206 1 -8 8 0.5
psnTOpt 12.1751920301758 1 5 30 0.5
dVpdSlope 0.131494389623404 1 0.01 0.25 0.005
dVpdExp 1.55931336525828 0 1 3 0.2
halfSatPar 10.9259948204271 1 4 27 5
attenuation 0.619397682305425 0 0.38 0.62 0.04
baseVegResp 0.00168176926358025 1 0.0006 0.06 0.00002
baseFolRespFrac 0.0248308759456334 1 0.05 0.3 0.005
baseSoilResp 0.06 1 0.003 0.6 0.00005
baseSoilRespCold 0.015 0 0.006 0.15 0.00005
baseFineRootResp 0.0000651788182561805 0 0.003 0.6 0.001
baseCoarseRootResp 0.006 0 0.003 0.6 0.001
baseMicrobeResp 0.0004 0 0.0003 0.005 0.0001
vegRespQ10 1.58891680454835 1 1.4 2.6 0.05
fineRootQ10 4.4793265869841 0 1.4 5 0.05
coarseRootQ10 4.97119639357552 0 1.4 5 0.05
soilRespQ10 2.9 1 1.4 5 0.05
soilRespQ10Cold 2.9 0 1.4 3.5 0.05
microbeQ10 2.3 0 1.4 5 0.05
growthRespFrac 0.204928460905689 0 0.1 0.3 0.05
E0 309 0 0 618 20
T0 -46 0 -273 -25 5
coldSoilThreshold 1 0 -2 4 0.5
frozenSoilFolREff 0 0 0 1 0.2
frozenSoilThreshold 0 0 -5 5 0.5
soilRespMoistEffect 1 0 0 2 0.1
leafOnDay 144 0 91 181 15
gddLeafOn 166.704771853983 1 100 900 200
soilTempLeafOn 12 0 8 16 1
leafOffDay 285 1 243 319 15
leafGrowth 0 0 0 252 10
fracLeafFall 0 1 0 1 0.1
woodTurnoverRate 0.014 1 0.001 1 0.001
leafTurnoverRate 1.21382545796387 1 0.001 1 0.03
fineRootTurnoverRate 0.0768885627227875 0 0.001 1 0.001
coarseRootTurnoverRate 0.056 0 0.001 1 0.001
litterBreakdownRate 0.4 0 0.13 1.2 0.1
fracLitterRespired 0.5 0 0.4 0.6 0.1
fineRootAllocation 0.4 0 0 0.6 0.001
woodAllocation 0.2 0 0 0.6 0.001
leafAllocation 0.2 0 0 1 0.04
waterRemoveFrac 0.088 0 0.001 0.16 0.008
frozenSoilEff 1 1 0 1 0.2
wueConst 10.9 1 0.01 109 0.5
litterWHC 1 0 0.01 4 0.25
soilWHC 12 1 0.1 36 1
immedEvapFrac 0.1 0 0 0.2 0.025
leafPoolDepth 0.1 0 0 0.2 0.025
fastFlowFrac 0 0 0 0.2 0.025
snowMelt 0.15 0 0.05 0.25 0.02
litWaterDrainRate 0.1 0 0.01 1 0.1
rdConst 300 0 1 1500 75
rSoilConst1 8.2 0 0 16.4 2
rSoilConst2 4.3 0 0 8.6 1
m_ballBerry 3.89 0 0.5 15 0.5
leafCSpWt 37.2890706126354 0 13 500 0
cFracLeaf 0.492305106337912 0 0.4 0.5 0.01
qualityLeaf 0.7 0 0 1 0.001
qualityWood 0.3 0 0 1 0.001
efficiency 0.45 0 0.1 0.9 0.001
maxIngestionRate 0.04 0 0.01 0.5 0.01
halfSatIngestion 5000 0 0 10000 0.001
totNitrogen 0.02 0 0.005 0.3 0.001
microbeNC 0.2 0 0.1 0.5 0.001
fineRootExudation 0.01 0 0 1 0.001
coarseRootExudation 0.01 0 0 1 0.001
microbePulseEff 0.45 0 0 1 0.05

tests/smoke/russell_4/events.in:18

  • Lines 1–2 and 4–6 (and many subsequent groups) are exact duplicates: same year, day, event type, and parameters. The parser in src/sipnet/events.c:337-343 only rejects strictly decreasing (year, day), so duplicates are accepted and each will be applied independently (e.g. three identical plant events on 2000-day-84 will plant three times, three identical fert rows will apply fertilizer three times). If these triplicates come from three replicate plots in the source data, they should be averaged/aggregated into a single event per day before being used as a single-site SIPNET input; otherwise totals (planting biomass, fertilizer N, irrigation water) will be 2–3× higher than intended.
2000  84  plant  3.6 1.08 0.72 1.8
2000  84  plant  3.6 1.08 0.72 1.8
2000  84  plant  3.1 0.93 0.62 1.55
2000  102  fert   2.4 0 2.2
2000  102  fert   2.4 0 2.2
2000  102  fert   2.4 0 2.2
2000  117  plant  2.3 0.69 0.46 1.15
2000  117  plant  3.5 1.05 0.7 1.75
2000  117  plant  3.2 0.96 0.64 1.6
2000  125  fert   2.4 0 2.2
2000  125  fert   2.4 0 2.2
2000  125  fert   2.4 0 2.2
2000  133  fert   10.2 0 9.6
2000  133  fert   10.2 0 9.6
2000  133  fert   10.2 0 9.6
2000  143  fert   5.8 0 5.4
2000  143  fert   5.8 0 5.4
2000  143  fert   5.8 0 5.4

tests/smoke/russell_4/events.in:1

  • tests/smoke/russell_4/sipnet.out (referenced by tools/test_sipnet_view.py:13-18) and events.out still reflect the previous inputs (sipnet.out starts at 2016 while the new sipnet.clim/events.in start at 2000, and events.out is empty). Because skip keeps the smoke runner from regenerating them, these stored outputs are now inconsistent with the inputs in this PR. Either regenerate the expected outputs alongside this input update, or note clearly that outputs are deliberately not yet in sync.
2000  84  plant  3.6 1.08 0.72 1.8

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/smoke/russell_4/events.in Outdated
2017 296 irrig 2.8 1
2017 300 irrig 2.8 1
2017 304 irrig 2.8 1
2000 84 plant 3.6 1.08 0.72 1.8
Comment thread tests/smoke/russell_4/sipnet.param-spatial Outdated
Comment thread tests/smoke/russell_4/sipnet.param Outdated
soilInit 5243.35615994556 1 3300 19000 3000
litterWFracInit 0.5 0 0 1 0.1
soilWFracInit 0.00287118103041723 1 0 1 0.1
snowInit 1 0 0 0 1
2000 84 plant 3.6 1.08 0.72 1.8
2000 84 plant 3.6 1.08 0.72 1.8
2000 84 plant 3.1 0.93 0.62 1.55
2000 102 fert 2.4 0 2.2
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Lots of events are repeated. Please check upstream workflow.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes,these are the replicate plots, each plot's management row is being written as a separate event instead of aggregating to one per treatment per date. will fix the aggregation in the pipeline and regenerate.

@dlebauer
Copy link
Copy Markdown
Member

dlebauer commented May 26, 2026

@Alomir should all russell tests be updated? Or is there a reason that #290 focused on russell_4?

Comment thread tests/smoke/russell_4/events.in Outdated
Comment on lines +1 to +3
2000 84 plant 3.6 1.08 0.72 1.8
2000 84 plant 3.6 1.08 0.72 1.8
2000 84 plant 3.1 0.93 0.62 1.55
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

There should be a single plant event, not clear why row 3 has a different value.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

this was the 3 replicate plots written separately; now one plant event per date averaged across plots (day-84=3.4, mean of the old 3.6/3.6/3.1).

Comment thread tests/smoke/russell_4/sipnet.param Outdated
@@ -1,41 +1,41 @@
plantWoodInit 2189.40929649864
plantWoodInit 30000
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

plantwoodinit should be 0 for an annual cropland; biomass should be added w/ planting event

For context, 30kg/m2 of standing biomass is for a very dense forest (90th quantile according to ForC database); almond orchards are , not an annual cropland.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Set to 0, pushed. Flagged separately that the annual_crop PFT posterior is producing the 30000 (and it's outside its own min/max), but left that upstream fix to you since it's shared infra.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@Alomir do we still use (need to use) param-spatial files in tests?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

We do not. Nor do we want the six-column version of the regular param file (which I fixed).

While we are here, this version of the param file was missing leafOnReallocFrac, though I added it for my testing. It should get added somewhere in the pipeline so it is calibrated.

Also also - this will only really help russell_4 if we turn on LITTER_POOL and ANAEROBIC, and calibrate the relevant params for those modes too. We could do this for russell_1, which I think doesn't turn those on?

@Alomir
Copy link
Copy Markdown
Collaborator

Alomir commented May 26, 2026

@Alomir should all russell tests be updated? Or is there a reason that #290 focused on russell_4?

Ticket #290's intent was to re-enable the russell_4 unit test, which had been forced off after we removed microbes, and use it to test new functionality.

@dlebauer dlebauer changed the title Update russell_4 inputs with actual Russell Ranch run files SIP290 Update russell_4 inputs with actual Russell Ranch run files May 27, 2026
@AritraDey-Dev AritraDey-Dev requested a review from dlebauer May 28, 2026 19:12
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.

Revamp russell_4 unit test

4 participants