Small scientific programs often combine starting state, inputs, outputs, and losses into one balance result.

Program

Play the program to choose the loss term and see the balance status update.

reservoir_balance.f90
program reservoir_balance_demo
    implicit none
    integer :: start_level
    integer :: inflow
    integer :: outflow
    integer :: loss
    integer :: final_level
    character(len=6) :: status

    start_level = 20
    inflow = 8
    outflow = 5
    loss = 
    final_level = start_level + inflow - outflow - loss
    if (final_level >= 20) then
        status = 'stable'
    else
        status = 'low'
    end if
    print '(A, 1X, I0)', trim(status), final_level
end program reservoir_balance_demo
program reservoir_balance_demo
    implicit none
    integer :: start_level
    integer :: inflow
    integer :: outflow
    integer :: loss
    integer :: final_level
    character(len=6) :: status

    start_level = 20
    inflow = 8
    outflow = 5
    loss = 
    final_level = start_level + inflow - outflow - loss
    if (final_level >= 20) then
        status = 'stable'
    else
        status = 'low'
    end if
    print '(A, 1X, I0)', trim(status), final_level
end program reservoir_balance_demo
program reservoir_balance_demo
    implicit none
    integer :: start_level
    integer :: inflow
    integer :: outflow
    integer :: loss
    integer :: final_level
    character(len=6) :: status

    start_level = 20
    inflow = 8
    outflow = 5
    loss = 
    final_level = start_level + inflow - outflow - loss
    if (final_level >= 20) then
        status = 'stable'
    else
        status = 'low'
    end if
    print '(A, 1X, I0)', trim(status), final_level
end program reservoir_balance_demo
balance equation `start_level + inflow - outflow - loss` combines the model terms.
status branch The final level drives a compact status label.
small program The example combines initialization, calculation, branch, and report.