A fixed boundary condition sets the edge values before an aggregate is calculated.

Program

Play the program to choose the boundary value and recompute the field mean.

boundary_value
fixed_boundary_mean.f90
Replay: real traced execution (multi-file project)
program fixed_boundary_mean_demo
    implicit none
    real :: field(5)
    real :: boundary_value
    real :: total
    real :: mean_value
    integer :: i

    field = [0.0, 2.0, 4.0, 6.0, 0.0]
    boundary_value = 0.0
    field(1) = boundary_value
    field(5) = boundary_value
    total = 0.0
    do i = 1, 5
        total = total + field(i)
    end do
    mean_value = total / 5.0
    print '(F0.1, 1X, F0.1)', boundary_value, mean_value
end program fixed_boundary_mean_demo
program fixed_boundary_mean_demo
    implicit none
    real :: field(5)
    real :: boundary_value
    real :: total
    real :: mean_value
    integer :: i

    field = [0.0, 2.0, 4.0, 6.0, 0.0]
    boundary_value = -5.0
    field(1) = boundary_value
    field(5) = boundary_value
    total = 0.0
    do i = 1, 5
        total = total + field(i)
    end do
    mean_value = total / 5.0
    print '(F0.1, 1X, F0.1)', boundary_value, mean_value
end program fixed_boundary_mean_demo
program fixed_boundary_mean_demo
    implicit none
    real :: field(5)
    real :: boundary_value
    real :: total
    real :: mean_value
    integer :: i

    field = [0.0, 2.0, 4.0, 6.0, 0.0]
    boundary_value = 10.0
    field(1) = boundary_value
    field(5) = boundary_value
    total = 0.0
    do i = 1, 5
        total = total + field(i)
    end do
    mean_value = total / 5.0
    print '(F0.1, 1X, F0.1)', boundary_value, mean_value
end program fixed_boundary_mean_demo
  1. field ← [0.0, 2.0, 4.0, 6.0, 0.0]

    9field = [0.0, 2.0, 4.0, 6.0, 0.0]10boundary_value = 0.0
    values this step[0.0, 2.0, 4.0, 6.0, 0.0]field
  2. boundary_value ← 0.0

    9field = [0.0, 2.0, 4.0, 6.0, 0.0]10boundary_value = 0.011field(1) = boundary_value
    values this step0.0boundary_value
  3. field(1) ← 0.0

    10boundary_value = 0.011field(1) = boundary_value12field(5) = boundary_value
    values this step0.0field(1)
  4. field(5) ← 0.0

    11field(1) = boundary_value12field(5) = boundary_value13total = 0.0
    values this step0.0field(5)
  5. total ← 0.0

    12field(5) = boundary_value13total = 0.014do i = 1, 5
    values this step0.0total
  6. i ← 1

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step1i
  7. total ← 0.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step0.0total0.0field(1)
  8. i ← 2

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step2i
  9. total ← 2.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step2.0total2.0field(2)
  10. i ← 3

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step3i
  11. total ← 6.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step6.0total4.0field(3)
  12. i ← 4

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step4i
  13. total ← 12.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step12.0total6.0field(4)
  14. i ← 5

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step5i
  15. total ← 12.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step12.0total0.0field(5)
  16. mean_value ← 2.4

    16end do17mean_value = total / 5.018print '(F0.1, 1X, F0.1)', boundary_value, mean_value
    values this step2.4mean_value12.0total
  17. print '(F0.1, 1X, F0.1)', boundary_value, mean_value

    17    mean_value = total / 5.018    print '(F0.1, 1X, F0.1)', boundary_value, mean_value19end program fixed_boundary_mean_demo
    output0.0 2.4
    values this step0.0boundary_value2.4mean_value
  1. field ← [0.0, 2.0, 4.0, 6.0, 0.0]

    9field = [0.0, 2.0, 4.0, 6.0, 0.0]10boundary_value = -5.0
    values this step[0.0, 2.0, 4.0, 6.0, 0.0]field
  2. boundary_value ← -5.0

    9field = [0.0, 2.0, 4.0, 6.0, 0.0]10boundary_value = -5.011field(1) = boundary_value
    values this step-5.0boundary_value
  3. field(1) ← -5.0

    10boundary_value = -5.011field(1) = boundary_value12field(5) = boundary_value
    values this step-5.0field(1)
  4. field(5) ← -5.0

    11field(1) = boundary_value12field(5) = boundary_value13total = 0.0
    values this step-5.0field(5)
  5. total ← 0.0

    12field(5) = boundary_value13total = 0.014do i = 1, 5
    values this step0.0total
  6. i ← 1

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step1i
  7. total ← -5.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step-5.0total-5.0field(1)
  8. i ← 2

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step2i
  9. total ← -3.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step-3.0total2.0field(2)
  10. i ← 3

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step3i
  11. total ← 1.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step1.0total4.0field(3)
  12. i ← 4

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step4i
  13. total ← 7.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step7.0total6.0field(4)
  14. i ← 5

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step5i
  15. total ← 2.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step2.0total-5.0field(5)
  16. mean_value ← 0.4

    16end do17mean_value = total / 5.018print '(F0.1, 1X, F0.1)', boundary_value, mean_value
    values this step0.4mean_value2.0total
  17. print '(F0.1, 1X, F0.1)', boundary_value, mean_value

    17    mean_value = total / 5.018    print '(F0.1, 1X, F0.1)', boundary_value, mean_value19end program fixed_boundary_mean_demo
    output-5.0 0.4
    values this step-5.0boundary_value0.4mean_value
  1. field ← [0.0, 2.0, 4.0, 6.0, 0.0]

    9field = [0.0, 2.0, 4.0, 6.0, 0.0]10boundary_value = 10.0
    values this step[0.0, 2.0, 4.0, 6.0, 0.0]field
  2. boundary_value ← 10.0

    9field = [0.0, 2.0, 4.0, 6.0, 0.0]10boundary_value = 10.011field(1) = boundary_value
    values this step10.0boundary_value
  3. field(1) ← 10.0

    10boundary_value = 10.011field(1) = boundary_value12field(5) = boundary_value
    values this step10.0field(1)
  4. field(5) ← 10.0

    11field(1) = boundary_value12field(5) = boundary_value13total = 0.0
    values this step10.0field(5)
  5. total ← 0.0

    12field(5) = boundary_value13total = 0.014do i = 1, 5
    values this step0.0total
  6. i ← 1

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step1i
  7. total ← 10.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step10.0total10.0field(1)
  8. i ← 2

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step2i
  9. total ← 12.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step12.0total2.0field(2)
  10. i ← 3

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step3i
  11. total ← 16.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step16.0total4.0field(3)
  12. i ← 4

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step4i
  13. total ← 22.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step22.0total6.0field(4)
  14. i ← 5

    13total = 0.014do i = 1, 515    total = total + field(i)
    values this step5i
  15. total ← 32.0

    14do i = 1, 515    total = total + field(i)16end do
    values this step32.0total10.0field(5)
  16. mean_value ← 6.4

    16end do17mean_value = total / 5.018print '(F0.1, 1X, F0.1)', boundary_value, mean_value
    values this step6.4mean_value32.0total
  17. print '(F0.1, 1X, F0.1)', boundary_value, mean_value

    17    mean_value = total / 5.018    print '(F0.1, 1X, F0.1)', boundary_value, mean_value19end program fixed_boundary_mean_demo
    output10.0 6.4
    values this step10.0boundary_value6.4mean_value
fixed boundary The first and last field entries are assigned before the aggregate.
interior data Interior values stay unchanged while boundary values vary.
aggregate effect The mean includes both fixed boundary values and interior values.