mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Switched order of filters and scores for TallyObjects.
This commit is contained in:
parent
afe12114c3
commit
26e735ea0a
2 changed files with 49 additions and 50 deletions
|
|
@ -95,7 +95,7 @@ contains
|
|||
! scores array for tally
|
||||
score_bins = t % n_score_bins
|
||||
t % n_total_bins = filter_bins
|
||||
allocate(t % scores(filter_bins, score_bins))
|
||||
allocate(t % scores(score_bins, filter_bins))
|
||||
|
||||
! All the remaining logic is for non-surface-current tallies so we can
|
||||
! safely skip it
|
||||
|
|
@ -189,7 +189,7 @@ contains
|
|||
|
||||
! Allocate scores for tally
|
||||
t % n_total_bins = filter_bins
|
||||
allocate(t % scores(filter_bins, score_bins))
|
||||
allocate(t % scores(score_bins, filter_bins))
|
||||
|
||||
end do
|
||||
|
||||
|
|
@ -450,7 +450,7 @@ contains
|
|||
end select
|
||||
|
||||
! Add score to tally
|
||||
call add_to_score(t % scores(score_index, j), score)
|
||||
call add_to_score(t % scores(j, score_index), score)
|
||||
|
||||
end do
|
||||
|
||||
|
|
@ -511,7 +511,7 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
|
||||
! Add score to tally
|
||||
call add_to_score(t % scores(score_index, j), score)
|
||||
call add_to_score(t % scores(j, score_index), score)
|
||||
end do
|
||||
|
||||
! reset outgoing energy bin and score index
|
||||
|
|
@ -598,7 +598,7 @@ contains
|
|||
end select
|
||||
|
||||
! Add score to tally
|
||||
call add_to_score(t % scores(score_index, j), score)
|
||||
call add_to_score(t % scores(j, score_index), score)
|
||||
|
||||
end do
|
||||
|
||||
|
|
@ -838,7 +838,7 @@ contains
|
|||
end select
|
||||
|
||||
! Add score to tally
|
||||
call add_to_score(t % scores(score_index, i), score)
|
||||
call add_to_score(t % scores(i, score_index), score)
|
||||
end do SCORE_LOOP
|
||||
end if
|
||||
|
||||
|
|
@ -1057,7 +1057,7 @@ contains
|
|||
bins(SURF_FILTER_SURFACE) = OUT_TOP
|
||||
bins(1:3) = ijk0 + 1
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
end do
|
||||
else
|
||||
|
|
@ -1067,7 +1067,7 @@ contains
|
|||
bins(SURF_FILTER_SURFACE) = IN_TOP
|
||||
bins(1:3) = ijk0 + 1
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
|
|
@ -1081,7 +1081,7 @@ contains
|
|||
bins(SURF_FILTER_SURFACE) = OUT_FRONT
|
||||
bins(1:3) = ijk0 + 1
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
end do
|
||||
else
|
||||
|
|
@ -1091,7 +1091,7 @@ contains
|
|||
bins(SURF_FILTER_SURFACE) = IN_FRONT
|
||||
bins(1:3) = ijk0 + 1
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
|
|
@ -1105,7 +1105,7 @@ contains
|
|||
bins(SURF_FILTER_SURFACE) = OUT_RIGHT
|
||||
bins(1:3) = ijk0 + 1
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
end do
|
||||
else
|
||||
|
|
@ -1115,7 +1115,7 @@ contains
|
|||
bins(SURF_FILTER_SURFACE) = IN_RIGHT
|
||||
bins(1:3) = ijk0 + 1
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
|
|
@ -1231,7 +1231,7 @@ contains
|
|||
end if
|
||||
|
||||
! Add to surface current tally
|
||||
call add_to_score(t % scores(score_index, 1), p % wgt)
|
||||
call add_to_score(t % scores(1, score_index), p % wgt)
|
||||
end if
|
||||
|
||||
! Calculate new coordinates
|
||||
|
|
@ -1353,11 +1353,11 @@ contains
|
|||
do i = 1, n_tallies
|
||||
t => tallies(i)
|
||||
|
||||
n = t % n_total_bins
|
||||
m = t % n_score_bins
|
||||
n_bins = n*m
|
||||
n = t % n_total_bins
|
||||
n_bins = m*n
|
||||
|
||||
allocate(tally_temp(n,m))
|
||||
allocate(tally_temp(m,n))
|
||||
|
||||
tally_temp = t % scores(:,:) % value
|
||||
|
||||
|
|
@ -1437,11 +1437,11 @@ contains
|
|||
do i = 1, n_tallies
|
||||
t => tallies(i)
|
||||
|
||||
n = t % n_total_bins
|
||||
m = t % n_score_bins
|
||||
n_bins = n*m*2
|
||||
n = t % n_total_bins
|
||||
n_bins = m*n*2
|
||||
|
||||
allocate(tally_temp(2,n,m))
|
||||
allocate(tally_temp(2,m,n))
|
||||
|
||||
tally_temp(1,:,:) = t % scores(:,:) % sum
|
||||
tally_temp(2,:,:) = t % scores(:,:) % sum_sq
|
||||
|
|
@ -1639,8 +1639,8 @@ contains
|
|||
do k = 1, t % n_score_bins
|
||||
write(UNIT=UNIT_TALLY, FMT='(1X,2A,1X,A,"+/- ",A)') &
|
||||
repeat(" ", indent), score_name(abs(t % score_bins(k) % scalar)), &
|
||||
to_str(t % scores(score_index,k) % sum), &
|
||||
trim(to_str(t % scores(score_index,k) % sum_sq))
|
||||
to_str(t % scores(k,score_index) % sum), &
|
||||
trim(to_str(t % scores(k,score_index) % sum_sq))
|
||||
end do
|
||||
indent = indent - 2
|
||||
|
||||
|
|
@ -1716,15 +1716,15 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Outgoing Current to Left", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
bins(SURF_FILTER_SURFACE) = OUT_RIGHT
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Incoming Current from Left", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
! Right Surface
|
||||
bins(1:3) = (/ i, j, k /) + 1
|
||||
|
|
@ -1732,15 +1732,15 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Incoming Current from Right", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
bins(SURF_FILTER_SURFACE) = OUT_RIGHT
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Outgoing Current to Right", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
! Back Surface
|
||||
bins(1:3) = (/ i, j-1, k /) + 1
|
||||
|
|
@ -1748,15 +1748,15 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Outgoing Current to Back", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
bins(SURF_FILTER_SURFACE) = OUT_FRONT
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Incoming Current from Back", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
! Front Surface
|
||||
bins(1:3) = (/ i, j, k /) + 1
|
||||
|
|
@ -1764,15 +1764,15 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Incoming Current from Front", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
bins(SURF_FILTER_SURFACE) = OUT_FRONT
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Outgoing Current to Front", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
! Bottom Surface
|
||||
bins(1:3) = (/ i, j, k-1 /) + 1
|
||||
|
|
@ -1780,15 +1780,15 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Outgoing Current to Bottom", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
bins(SURF_FILTER_SURFACE) = OUT_TOP
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Incoming Current from Bottom", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
! Top Surface
|
||||
bins(1:3) = (/ i, j, k /) + 1
|
||||
|
|
@ -1796,15 +1796,15 @@ contains
|
|||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Incoming Current from Top", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
|
||||
bins(SURF_FILTER_SURFACE) = OUT_TOP
|
||||
score_index = sum((bins - 1) * t % stride) + 1
|
||||
write(UNIT=UNIT_TALLY, FMT='(5X,A,T35,A,"+/- ",A)') &
|
||||
"Outgoing Current to Top", &
|
||||
to_str(t % scores(score_index,1) % sum), &
|
||||
trim(to_str(t % scores(score_index,1) % sum_sq))
|
||||
to_str(t % scores(1,score_index) % sum), &
|
||||
trim(to_str(t % scores(1,score_index) % sum_sq))
|
||||
end do
|
||||
|
||||
end do
|
||||
|
|
|
|||
|
|
@ -99,11 +99,10 @@ module tally_header
|
|||
type(TallyFilter), pointer :: score_bins(:) => null()
|
||||
integer :: n_score_bins = 0
|
||||
|
||||
! Scores for each bin -- the most natural way to have scores would be to
|
||||
! have a dimension for each different type of bin, but older Fortran
|
||||
! standards are limited to 7 dimensions or less, so instead we map a
|
||||
! combination of the filter bins into one integer and have that as the
|
||||
! index into a one-dimensional array
|
||||
! Scores for each bin -- the first dimenion of the array is for scores
|
||||
! (e.g. flux, total reaction rate, fission reaction rate, etc.) and the
|
||||
! second dimension of the array is for the combination of filters
|
||||
! (e.g. specific cell, specific energy group, etc.)
|
||||
|
||||
type(TallyScore), allocatable :: scores(:,:)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue