Ticket #1011 (closed assessed: fixed)

Opened 7 years ago

Last modified 7 years ago

Relative and Absolute biomass time series do not work well together

Reported by: villyc Owned by:
Priority: normal Milestone: Ecopath 6: release 6.2.1
Component: Ecosim Version:
Severity: NOT SET Keywords:


Here's a weird behavior using EwE6.2. Read in the (zip) lionfish model; Ecosim: prueba taller lionfish. Import the attached time series. You'll see that lionfish dies off (green line, high fishing), and other than that nothing much happens. That is wrong, there is a time series that introduces lionfish after five years. Now go to time series and disable the third time series, a relative biomass for lion fish. Run again. Now it's OK, the lionfish bounces back.

So, adding a relative B time series to a group that has a forced biomass causes the forced biomass to be ignored. That doesn't make sense.

Change History

comment:1 Changed 7 years ago by jeroens

Changing the order of the timeseries so that the forced biomass comes after the relative biomass: then it works.

comment:2 Changed 7 years ago by jeroens

I see in the code exactly what you describe. Both Relative and Absolute Biomass TS calculate PoolForceBB(k) in DoDatValCalculations; in case of an absolute biomass this value is set to DatVal(,) and in case of a relative biomass this value is set to 0.

Order thus matters: if both an absolute and relative TS are defined for the same poolcode, and the relative biomass TS is handled after the absolute biomass TS, any previously calculated value of PoolForceBB is set to 0 and the effect of the absolute biomass TS is negated. This happens both in EwE5 and EwE6.

I see a solution but I am not sure of its implications. If relative biomass time series are ONLY meant for display and should not in any way affect the biomass calculations, then I would suggest to remove the code that sets PoolForceBB to 0 for Relative Biomass time series. I have attached a patch file that illustrates this change for EwE6.

Let's figure out what is expected to happen

' ================================================
' EwE5 code
' ================================================
Public Sub DoDatValCalculations(NdatYear As Integer, _
                                NdatType As Integer, _
                                DatVal() As Single, _
                                ReadingCsvFile As Boolean)
    For i = 1 To NdatYear
        For j = 1 To NdatType
        If IsDatShown(j) = True Then
            Select Case DatType(j)
            Case 0, 1
                If DatVal(i, j) > 0 Then Iobs = Iobs + 1
                PoolForceBB(DatPool(j), i) = 0
            Case -1 'pool biomass forcing
                PoolForceBB(DatPool(j), i) = DatVal(i, j)
            Case 2 'time forcing data
                If DatPool(j) > ForcingShapes + 3 Then

Last edited 7 years ago by jeroens (previous) (diff)

comment:3 Changed 7 years ago by jeroens

  • Status changed from new to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.