Skip to content

Conversation

@Rick-Methot-NOAA
Copy link
Collaborator

Concisely describe what has been changed/addressed in the pull request.

This PR implements a change in the equilibrium calculations for SRR 7 (survivorship for low fecundity species).
The implementation includes a joiner function to prevent values lower than 0.01.

What tests have been done?

I added a 200 year forecast at FMSY. The SSB and R at end of the forecast closely matched the equilibrium SSB and R at MSY.

Where are the relevant files?

What tests/review still need to be done?

hoping for feedback from Carmen Fernandez Llana

Is there an input change for users to Stock Synthesis?

Additional information (optional).

Copy link
Contributor

@iantaylor-NOAA iantaylor-NOAA left a comment

Choose a reason for hiding this comment

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

@Rick-Methot-NOAA, thanks for working on this fix.
I ran the spiny dogfish 2011 test model with the new executable and see that the results are identical except for the reference points (screenshot at the bottom).

Looking at the history of the file https://github.com/nmfs-ost/ss3-test-models/blame/main/models/Spinydogfish_2011/ss_summary.sso and pulled out the following values:

  2 years ago 3.30.24.1 new fix
SSB_Btgt 10224.7 10224.7 10224.7
SPR_Btgt 0.768692 0.768692 0.77207
annF_Btgt 0.00605316 0.00605316 0.005951
Dead_Catch_Btgt 304.062 304.062 298.272
SSB_SPR 4.76E-13 -20992.5 255.618

For this stock, the SPR target leads to extinction so the SSB_SPR is a test of what happens in limit. The negative value in 3.30.24.1 is definitely not right and the small positive value (255 vs effectively 0 prior to 3.30.24.1) associated with the new 0.01 limit is fine.

The one thing I'm not clear on is why the other quantities have changed slight, e.g. SPR_Btgt increasing from 0.768 to 0.772. The change is pretty small, but it would be good to understand and document the reasons for it.

I haven't had time to go through the equations and code to fully understand the new vs old calculations, but may be able to make time for that this afternoon.

image

// do not recalculate here so force using values from benchmark
SS2out << "unfished values for SRR: SSB " << SSB0_4_SRR << " R " << R0_4_SRR << " SSBpR " << " SSBpR: " << SSB0_4_SRR / R0_4_SRR << endl;
SS2out << "SPRloop Iter Bycatch Fmult F_std SSBpR YpR_dead YpR_dead*Recr YpR_ret*Recr Revenue Cost Profit SSB Recruits SSB/Bzero Tot_Catch ";
SS2out << "SPRloop Iter Bycatch Fmult F_std SSBpR SPR YpR_dead YpR_dead*Recr YpR_ret*Recr Revenue Cost Profit SSB Recruits SSB/Bzero Tot_Catch ";
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't understand this change. Isn't SSBpR the same as SPR? But in the values on line 4924 it looks like the SSBpR column would just contain SSB?

Copy link
Collaborator Author

@Rick-Methot-NOAA Rick-Methot-NOAA Jan 16, 2026

Choose a reason for hiding this comment

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

The confusion on SPR is that Spawner Potential Ratio and Spawning Stock Biomass per Recruit are both abbreviated to SPR, but the former is the ratio of fished SSBpR to unfished SSBpR. So, better usage is SSBpR and %SPR. This is part of the change that happened with the big revamp of the spawner-recruitment calculations last year.

The change is only in the header. The columns of output already included SSBpR and SPR, which I should change to %SPR to align with NS1 technical guidance

Also, SS3 gets SSBpR by getting the SSB for a recruitment set equal to 1.0

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.

[Bug]: incorrect equil SSB when using SRR fxn = 7

3 participants