From da95a4403a544c4f8a38a5d96839ace7432ee99f Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 26 Sep 2015 13:28:31 -0400 Subject: [PATCH 01/21] Fixes for nu_scatter tallies --- src/ace_header.F90 | 6 ++-- src/tally.F90 | 80 +++++++++++++++++++++++++++++++++++++++------- 2 files changed, 71 insertions(+), 15 deletions(-) diff --git a/src/ace_header.F90 b/src/ace_header.F90 index 209b752bf8..467887c193 100644 --- a/src/ace_header.F90 +++ b/src/ace_header.F90 @@ -1,8 +1,8 @@ module ace_header - use constants, only: MAX_FILE_LEN, ZERO - use endf_header, only: Tab1 - use list_header, only: ListInt + use constants, only: MAX_FILE_LEN, ZERO + use endf_header, only: Tab1 + use list_header, only: ListInt implicit none diff --git a/src/tally.F90 b/src/tally.F90 index 33e452a4c7..6eb68a15af 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -5,6 +5,7 @@ module tally use error, only: fatal_error use geometry_header use global + use interpolation use math, only: t_percentile, calc_pn, calc_rn use mesh, only: get_mesh_bin, bin_to_mesh_indices, & get_mesh_indices, mesh_indices_to_bin, & @@ -61,6 +62,7 @@ contains real(8) :: uvw(3) ! particle direction type(Material), pointer :: mat type(Reaction), pointer :: rxn + real(8) :: multiplicity i = 0 SCORE_LOOP: do q = 1, t % n_user_score_bins @@ -170,10 +172,28 @@ contains ! Only analog estimators are available. ! Skip any event where the particle didn't scatter if (p % event /= EVENT_SCATTER) cycle SCORE_LOOP - ! For scattering production, we need to use the post-collision - ! weight as the estimate for the number of neutrons exiting a - ! reaction with neutrons in the exit channel - score = p % wgt + ! For scattering production, we need to use the pre-collision + ! weight times the multiplicity as the estimate for the number of + ! neutrons exiting a reaction with neutrons in the exit channel + + do m = 1, nuclides(i_nuclide) % n_reaction + ! Check if this is the desired MT + if (p % event_MT == nuclides(i_nuclide) % reactions(m) % MT) then + ! Found the reaction, set our pointer and move on with life + rxn => nuclides(i_nuclide) % reactions(m) + exit + end if + end do + + ! Get multiplicity + if (rxn % multiplicity_with_E) then + multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + else + multiplicity = real(rxn % multiplicity,8) + end if + + ! Apply multiplicity to the last weight + score = p % last_wgt * multiplicity case (SCORE_NU_SCATTER_PN) @@ -183,10 +203,28 @@ contains i = i + t % moment_order(i) cycle SCORE_LOOP end if - ! For scattering production, we need to use the post-collision - ! weight as the estimate for the number of neutrons exiting a - ! reaction with neutrons in the exit channel - score = p % wgt + ! For scattering production, we need to use the pre-collision + ! weight times the multiplicity as the estimate for the number of + ! neutrons exiting a reaction with neutrons in the exit channel + + do m = 1, nuclides(i_nuclide) % n_reaction + ! Check if this is the desired MT + if (p % event_MT == nuclides(i_nuclide) % reactions(m) % MT) then + ! Found the reaction, set our pointer and move on with life + rxn => nuclides(i_nuclide) % reactions(m) + exit + end if + end do + + ! Get multiplicity + if (rxn % multiplicity_with_E) then + multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + else + multiplicity = real(rxn % multiplicity,8) + end if + + ! Apply multiplicity to the last weight + score = p % last_wgt * multiplicity case (SCORE_NU_SCATTER_YN) @@ -196,10 +234,28 @@ contains i = i + (t % moment_order(i) + 1)**2 - 1 cycle SCORE_LOOP end if - ! For scattering production, we need to use the post-collision - ! weight as the estimate for the number of neutrons exiting a - ! reaction with neutrons in the exit channel - score = p % wgt + ! For scattering production, we need to use the pre-collision + ! weight times the multiplicity as the estimate for the number of + ! neutrons exiting a reaction with neutrons in the exit channel + + do m = 1, nuclides(i_nuclide) % n_reaction + ! Check if this is the desired MT + if (p % event_MT == nuclides(i_nuclide) % reactions(m) % MT) then + ! Found the reaction, set our pointer and move on with life + rxn => nuclides(i_nuclide) % reactions(m) + exit + end if + end do + + ! Get multiplicity + if (rxn % multiplicity_with_E) then + multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + else + multiplicity = real(rxn % multiplicity,8) + end if + + ! Apply multiplicity to the last weight + score = p % last_wgt * multiplicity case (SCORE_TRANSPORT) From 5658cb0e665aa5b8070c1d2d208977abf9083c63 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 26 Sep 2015 14:06:45 -0400 Subject: [PATCH 02/21] All tested and results updates --- src/tally.F90 | 96 +++-- tests/test_cmfd_feed/results_true.dat | 500 ++++++++++++------------ tests/test_cmfd_nofeed/results_true.dat | 216 +++++----- tests/test_many_scores/results_true.dat | 56 +-- 4 files changed, 440 insertions(+), 428 deletions(-) diff --git a/src/tally.F90 b/src/tally.F90 index 6eb68a15af..2b805b27df 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -175,21 +175,25 @@ contains ! For scattering production, we need to use the pre-collision ! weight times the multiplicity as the estimate for the number of ! neutrons exiting a reaction with neutrons in the exit channel - - do m = 1, nuclides(i_nuclide) % n_reaction - ! Check if this is the desired MT - if (p % event_MT == nuclides(i_nuclide) % reactions(m) % MT) then - ! Found the reaction, set our pointer and move on with life - rxn => nuclides(i_nuclide) % reactions(m) - exit - end if - end do - - ! Get multiplicity - if (rxn % multiplicity_with_E) then - multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & + (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then + multiplicity = ONE else - multiplicity = real(rxn % multiplicity,8) + do m = 1, nuclides(p % event_nuclide) % n_reaction + ! Check if this is the desired MT + if (p % event_MT == nuclides(p % event_nuclide) % reactions(m) % MT) then + ! Found the reaction, set our pointer and move on with life + rxn => nuclides(p % event_nuclide) % reactions(m) + exit + end if + end do + + ! Get multiplicity + if (rxn % multiplicity_with_E) then + multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + else + multiplicity = real(rxn % multiplicity,8) + end if end if ! Apply multiplicity to the last weight @@ -206,21 +210,25 @@ contains ! For scattering production, we need to use the pre-collision ! weight times the multiplicity as the estimate for the number of ! neutrons exiting a reaction with neutrons in the exit channel - - do m = 1, nuclides(i_nuclide) % n_reaction - ! Check if this is the desired MT - if (p % event_MT == nuclides(i_nuclide) % reactions(m) % MT) then - ! Found the reaction, set our pointer and move on with life - rxn => nuclides(i_nuclide) % reactions(m) - exit - end if - end do - - ! Get multiplicity - if (rxn % multiplicity_with_E) then - multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & + (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then + multiplicity = ONE else - multiplicity = real(rxn % multiplicity,8) + do m = 1, nuclides(p % event_nuclide) % n_reaction + ! Check if this is the desired MT + if (p % event_MT == nuclides(p % event_nuclide) % reactions(m) % MT) then + ! Found the reaction, set our pointer and move on with life + rxn => nuclides(p % event_nuclide) % reactions(m) + exit + end if + end do + + ! Get multiplicity + if (rxn % multiplicity_with_E) then + multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + else + multiplicity = real(rxn % multiplicity,8) + end if end if ! Apply multiplicity to the last weight @@ -237,21 +245,25 @@ contains ! For scattering production, we need to use the pre-collision ! weight times the multiplicity as the estimate for the number of ! neutrons exiting a reaction with neutrons in the exit channel - - do m = 1, nuclides(i_nuclide) % n_reaction - ! Check if this is the desired MT - if (p % event_MT == nuclides(i_nuclide) % reactions(m) % MT) then - ! Found the reaction, set our pointer and move on with life - rxn => nuclides(i_nuclide) % reactions(m) - exit - end if - end do - - ! Get multiplicity - if (rxn % multiplicity_with_E) then - multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & + (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then + multiplicity = ONE else - multiplicity = real(rxn % multiplicity,8) + do m = 1, nuclides(p % event_nuclide) % n_reaction + ! Check if this is the desired MT + if (p % event_MT == nuclides(p % event_nuclide) % reactions(m) % MT) then + ! Found the reaction, set our pointer and move on with life + rxn => nuclides(p % event_nuclide) % reactions(m) + exit + end if + end do + + ! Get multiplicity + if (rxn % multiplicity_with_E) then + multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + else + multiplicity = real(rxn % multiplicity,8) + end if end if ! Apply multiplicity to the last weight diff --git a/tests/test_cmfd_feed/results_true.dat b/tests/test_cmfd_feed/results_true.dat index 26380d403f..9c109db6ab 100644 --- a/tests/test_cmfd_feed/results_true.dat +++ b/tests/test_cmfd_feed/results_true.dat @@ -1,128 +1,128 @@ k-combined: -1.172666E+00 8.502438E-03 +1.168349E+00 1.145333E-02 tally 1: -1.170812E+01 -1.376785E+01 -2.179886E+01 -4.765478E+01 -2.945614E+01 -8.709999E+01 -3.527293E+01 -1.245879E+02 -3.829349E+01 -1.470691E+02 -3.709040E+01 -1.379455E+02 -3.380335E+01 -1.145311E+02 -2.801351E+01 -7.871047E+01 -2.029625E+01 -4.131602E+01 -1.084302E+01 -1.180329E+01 +1.167844E+01 +1.366808E+01 +2.141846E+01 +4.598143E+01 +2.928738E+01 +8.615095E+01 +3.513015E+01 +1.241914E+02 +3.715164E+01 +1.384553E+02 +3.639309E+01 +1.327919E+02 +3.370872E+01 +1.138391E+02 +2.875251E+01 +8.292323E+01 +2.117740E+01 +4.512961E+01 +1.130554E+01 +1.289872E+01 tally 2: -2.270565E+01 -2.599927E+01 -1.590852E+01 -1.276260E+01 -2.252857E+00 -2.614120E-01 -4.313167E+01 -9.326539E+01 -3.044479E+01 -4.648169E+01 -4.023051E+00 -8.172006E-01 -5.859113E+01 -1.725665E+02 -4.171599E+01 -8.755981E+01 -5.512216E+00 -1.531207E+00 -6.892516E+01 -2.383198E+02 -4.904413E+01 -1.207096E+02 -6.542718E+00 -2.155749E+00 -7.421495E+01 -2.764539E+02 -5.288881E+01 -1.405388E+02 -6.811354E+00 -2.358827E+00 -7.278191E+01 -2.661597E+02 -5.169924E+01 -1.343999E+02 -6.516967E+00 -2.148745E+00 -6.655238E+01 -2.222812E+02 -4.729758E+01 -1.123214E+02 -6.102046E+00 -1.890147E+00 -5.708495E+01 -1.636585E+02 -4.068603E+01 -8.317681E+01 -5.394757E+00 -1.465413E+00 -4.136562E+01 -8.598520E+01 -2.958591E+01 -4.402226E+01 -3.765802E+00 -7.200302E-01 -2.275517E+01 -2.614738E+01 -1.589295E+01 -1.276624E+01 -2.232715E+00 -2.558645E-01 +2.339531E+01 +2.755922E+01 +1.646762E+01 +1.365289E+01 +2.146174E+00 +2.369613E-01 +4.309769E+01 +9.312913E+01 +3.054873E+01 +4.681242E+01 +4.076365E+00 +8.462370E-01 +5.840647E+01 +1.715260E+02 +4.161366E+01 +8.713062E+01 +5.382541E+00 +1.473814E+00 +6.927641E+01 +2.411359E+02 +4.943841E+01 +1.228850E+02 +6.282202E+00 +1.990021E+00 +7.308593E+01 +2.678848E+02 +5.202069E+01 +1.357621E+02 +6.826145E+00 +2.353974E+00 +7.117026E+01 +2.543546E+02 +5.068896E+01 +1.290261E+02 +6.342979E+00 +2.033850E+00 +6.615720E+01 +2.193712E+02 +4.725156E+01 +1.119514E+02 +6.024815E+00 +1.833752E+00 +5.738164E+01 +1.651944E+02 +4.081217E+01 +8.360122E+01 +5.326191E+00 +1.435896E+00 +4.208669E+01 +8.911740E+01 +2.994944E+01 +4.517409E+01 +3.905846E+00 +7.855247E-01 +2.273578E+01 +2.615080E+01 +1.603853E+01 +1.303560E+01 +2.160924E+00 +2.473278E-01 tally 3: -1.529144E+01 -1.179942E+01 -1.023883E+00 -5.386625E-02 -2.936854E+01 -4.326483E+01 -1.881629E+00 -1.788063E-01 -4.015056E+01 -8.114284E+01 -2.594958E+00 -3.407980E-01 -4.720593E+01 -1.118311E+02 -3.161769E+00 -5.053887E-01 -5.095790E+01 -1.304930E+02 -3.308202E+00 -5.528151E-01 -4.979520E+01 -1.246892E+02 -3.163884E+00 -5.062497E-01 -4.554330E+01 -1.041770E+02 -3.019145E+00 -4.618487E-01 -3.921119E+01 -7.727273E+01 -2.472070E+00 -3.099171E-01 -2.843166E+01 -4.067093E+01 -1.823607E+00 -1.688171E-01 -1.530477E+01 -1.184246E+01 -1.047996E+00 -5.549017E-02 +1.584939E+01 +1.265206E+01 +1.096930E+00 +6.173135E-02 +2.940258E+01 +4.337818E+01 +1.932931E+00 +1.884749E-01 +4.008186E+01 +8.086427E+01 +2.512704E+00 +3.189987E-01 +4.759648E+01 +1.139252E+02 +3.041630E+00 +4.683237E-01 +5.006181E+01 +1.257467E+02 +3.137042E+00 +4.981005E-01 +4.883211E+01 +1.197646E+02 +3.130686E+00 +4.987337E-01 +4.550029E+01 +1.038199E+02 +2.853740E+00 +4.127265E-01 +3.937822E+01 +7.785807E+01 +2.488983E+00 +3.156421E-01 +2.884912E+01 +4.192640E+01 +1.855316E+00 +1.745109E-01 +1.543635E+01 +1.208459E+01 +1.025635E+00 +5.351565E-02 tally 4: 0.000000E+00 0.000000E+00 @@ -160,8 +160,8 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -3.111592E+00 -4.883699E-01 +3.119914E+00 +4.908283E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -208,10 +208,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -5.536088E+00 -1.540676E+00 -2.727975E+00 -3.757452E-01 +5.567786E+00 +1.556825E+00 +2.766088E+00 +3.864023E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -256,10 +256,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -7.518115E+00 -2.840502E+00 -5.271874E+00 -1.398895E+00 +7.491891E+00 +2.819491E+00 +5.235154E+00 +1.377898E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -304,10 +304,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -8.764240E+00 -3.855378E+00 -7.176540E+00 -2.591613E+00 +8.810357E+00 +3.898704E+00 +7.233068E+00 +2.630659E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -352,10 +352,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -9.381092E+00 -4.414024E+00 -8.597689E+00 -3.710217E+00 +9.374583E+00 +4.414420E+00 +8.565683E+00 +3.687428E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -400,10 +400,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -9.158655E+00 -4.215178E+00 -9.188880E+00 -4.244766E+00 +9.001252E+00 +4.073267E+00 +8.974821E+00 +4.050120E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -448,10 +448,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -8.362511E+00 -3.509173E+00 -9.159213E+00 -4.209143E+00 +8.236452E+00 +3.401934E+00 +9.042286E+00 +4.102906E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -496,10 +496,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -7.029505E+00 -2.479106E+00 -8.613258E+00 -3.719199E+00 +7.028546E+00 +2.482380E+00 +8.577643E+00 +3.691947E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -544,10 +544,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -5.119892E+00 -1.320586E+00 -7.401001E+00 -2.749355E+00 +5.159585E+00 +1.342512E+00 +7.389236E+00 +2.745028E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -592,10 +592,10 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -2.765680E+00 -3.903229E-01 -5.461998E+00 -1.501206E+00 +2.762685E+00 +3.914181E-01 +5.471849E+00 +1.509910E+00 0.000000E+00 0.000000E+00 0.000000E+00 @@ -642,8 +642,8 @@ tally 4: 0.000000E+00 0.000000E+00 0.000000E+00 -3.044921E+00 -4.656739E-01 +3.038522E+00 +4.643520E-01 0.000000E+00 0.000000E+00 0.000000E+00 @@ -662,114 +662,114 @@ k cmfd 0.000000E+00 0.000000E+00 0.000000E+00 -1.177990E+00 -1.160010E+00 -1.155990E+00 -1.160167E+00 -1.162166E+00 -1.161566E+00 -1.164454E+00 -1.166269E+00 -1.168529E+00 -1.168622E+00 -1.170296E+00 -1.168644E+00 -1.172975E+00 -1.176543E+00 -1.173389E+00 -1.178422E+00 +1.180802E+00 +1.162698E+00 +1.162794E+00 +1.159752E+00 +1.152596E+00 +1.151652E+00 +1.148131E+00 +1.151875E+00 +1.151434E+00 +1.158833E+00 +1.160751E+00 +1.155305E+00 +1.155356E+00 +1.158866E+00 +1.161574E+00 +1.154691E+00 cmfd entropy 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.214145E+00 -3.225292E+00 -3.229509E+00 -3.228530E+00 -3.224203E+00 -3.225547E+00 -3.224720E+00 -3.224546E+00 -3.224527E+00 -3.223579E+00 -3.224380E+00 -3.223483E+00 -3.222819E+00 -3.223067E+00 -3.224007E+00 -3.220616E+00 +3.214195E+00 +3.225164E+00 +3.227316E+00 +3.225663E+00 +3.226390E+00 +3.225832E+00 +3.226707E+00 +3.227866E+00 +3.229948E+00 +3.229269E+00 +3.230044E+00 +3.231568E+00 +3.234694E+00 +3.234771E+00 +3.234915E+00 +3.235876E+00 cmfd balance 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.801684E-03 -2.802571E-03 -1.828029E-03 -2.220542E-03 -1.709900E-03 -2.008246E-03 -2.578373E-03 -2.000076E-03 -1.645365E-03 -1.462882E-03 -1.208273E-03 -1.146126E-03 -1.214196E-03 -1.082376E-03 -8.967163E-04 -1.154433E-03 +4.742525E-03 +2.646417E-03 +1.981783E-03 +1.856593E-03 +1.797685E-03 +2.122587E-03 +1.200823E-03 +2.177249E-03 +1.442840E-03 +1.477754E-03 +1.236325E-03 +1.048988E-03 +8.395164E-04 +7.380254E-04 +7.742837E-04 +8.235911E-04 cmfd dominance ratio 0.000E+00 0.000E+00 0.000E+00 0.000E+00 - 5.472E-01 - 5.521E-01 - 5.445E-01 - 5.527E-01 + 5.467E-01 + 5.518E-01 + 5.535E-01 + 5.500E-01 + 5.481E-01 + 5.478E-01 + 5.467E-01 + 5.465E-01 + 5.493E-01 5.488E-01 - 5.078E-01 - 5.474E-01 - 5.475E-01 - 5.473E-01 - 5.469E-01 - 5.461E-01 - 5.455E-01 - 5.454E-01 - 5.459E-01 - 5.460E-01 - 5.432E-01 + 5.491E-01 + 5.503E-01 + 5.529E-01 + 5.531E-01 + 5.534E-01 + 5.552E-01 cmfd openmc source comparison 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -9.186654E-03 -6.033650E-03 -3.920380E-03 -4.218939E-03 -4.591972E-03 -4.042772E-03 -4.100500E-03 -3.664495E-03 -3.266803E-03 -3.164213E-03 -3.310474E-03 -3.165822E-03 -3.849586E-03 -2.718170E-03 -2.431480E-03 -3.322902E-03 +9.168094E-03 +5.978693E-03 +4.369223E-03 +4.546309E-03 +4.222522E-03 +4.221686E-03 +4.604208E-03 +3.950286E-03 +2.939283E-03 +3.667020E-03 +2.592899E-03 +2.272158E-03 +1.229170E-03 +1.114150E-03 +1.060490E-03 +1.714222E-03 cmfd source -4.296288E-02 -7.964357E-02 -1.107722E-01 -1.359821E-01 -1.425321E-01 -1.356719E-01 -1.285829E-01 -1.040603E-01 -7.630230E-02 -4.348975E-02 +4.724285E-02 +8.305825E-02 +1.081058E-01 +1.314542E-01 +1.357299E-01 +1.359417E-01 +1.240918E-01 +1.087580E-01 +8.111239E-02 +4.450518E-02 diff --git a/tests/test_cmfd_nofeed/results_true.dat b/tests/test_cmfd_nofeed/results_true.dat index e70287bf77..308dd7d827 100644 --- a/tests/test_cmfd_nofeed/results_true.dat +++ b/tests/test_cmfd_nofeed/results_true.dat @@ -83,44 +83,44 @@ tally 2: 2.336090E+00 2.851840E-01 tally 3: -1.523800E+01 -1.170551E+01 +1.524100E+01 +1.171023E+01 1.071050E+00 5.839198E-02 -2.862100E+01 -4.111143E+01 +2.862800E+01 +4.113148E+01 1.892774E+00 1.812712E-01 -3.804200E+01 -7.314552E+01 +3.804600E+01 +7.316097E+01 2.423654E+00 2.968521E-01 -4.433500E+01 -9.878201E+01 +4.434600E+01 +9.882906E+01 2.823929E+00 4.033633E-01 -4.954300E+01 -1.229796E+02 +4.955300E+01 +1.230293E+02 3.226029E+00 5.265680E-01 -4.999000E+01 -1.256279E+02 +4.999400E+01 +1.256474E+02 3.232464E+00 5.286388E-01 -4.723500E+01 -1.120638E+02 +4.724300E+01 +1.121029E+02 3.015553E+00 4.606928E-01 -4.050800E+01 -8.237529E+01 +4.051300E+01 +8.239672E+01 2.592073E+00 3.412174E-01 -2.911800E+01 -4.263022E+01 +2.912700E+01 +4.265700E+01 1.875109E+00 1.785438E-01 -1.592800E+01 -1.279461E+01 +1.593500E+01 +1.280638E+01 1.038638E+00 5.538157E-02 tally 4: @@ -662,114 +662,114 @@ k cmfd 0.000000E+00 0.000000E+00 0.000000E+00 -1.177990E+00 -1.160491E+00 -1.145875E+00 -1.148719E+00 -1.140676E+00 -1.141509E+00 -1.143597E+00 -1.141954E+00 -1.150311E+00 -1.155088E+00 -1.155464E+00 -1.152786E+00 -1.156950E+00 -1.159040E+00 -1.160571E+00 -1.161251E+00 +1.180802E+00 +1.163440E+00 +1.148572E+00 +1.151423E+00 +1.143374E+00 +1.144091E+00 +1.146212E+00 +1.144900E+00 +1.153511E+00 +1.158766E+00 +1.159179E+00 +1.156627E+00 +1.160647E+00 +1.162860E+00 +1.164312E+00 +1.164928E+00 cmfd entropy 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -3.214145E+00 -3.222082E+00 -3.225870E+00 -3.230292E+00 -3.228784E+00 -3.228863E+00 -3.228331E+00 -3.230222E+00 -3.231212E+00 -3.230979E+00 -3.229831E+00 -3.229258E+00 -3.228559E+00 -3.227915E+00 -3.227427E+00 -3.229561E+00 +3.214195E+00 +3.222259E+00 +3.225989E+00 +3.230436E+00 +3.228875E+00 +3.229003E+00 +3.228502E+00 +3.230397E+00 +3.231417E+00 +3.231192E+00 +3.229995E+00 +3.229396E+00 +3.228730E+00 +3.228091E+00 +3.227600E+00 +3.229723E+00 cmfd balance 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -4.801684E-03 -3.228380E-03 -2.568997E-03 -2.195796E-03 -2.248884E-03 -3.405416E-03 -2.332198E-03 -2.576061E-03 -2.326651E-03 -2.324425E-03 -2.205364E-03 -2.112702E-03 -1.864656E-03 -1.804877E-03 -1.557106E-03 -1.312058E-03 +4.742525E-03 +3.110598E-03 +2.490108E-03 +2.114137E-03 +2.190200E-03 +3.281877E-03 +2.219193E-03 +2.458372E-03 +2.200863E-03 +2.181858E-03 +2.064212E-03 +1.961178E-03 +1.713250E-03 +1.665361E-03 +1.436016E-03 +1.193462E-03 cmfd dominance ratio 0.000E+00 0.000E+00 0.000E+00 0.000E+00 - 5.472E-01 - 5.510E-01 - 5.519E-01 - 5.535E-01 - 5.535E-01 + 5.467E-01 5.505E-01 - 5.488E-01 - 5.505E-01 - 5.510E-01 - 5.513E-01 - 5.510E-01 + 5.514E-01 + 5.531E-01 + 5.529E-01 + 5.501E-01 + 5.484E-01 + 5.500E-01 + 5.506E-01 5.508E-01 - 5.487E-01 - 5.489E-01 - 5.481E-01 - 5.499E-01 + 5.504E-01 + 5.500E-01 + 5.480E-01 + 5.482E-01 + 5.475E-01 + 5.493E-01 cmfd openmc source comparison 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -9.186654E-03 -5.964812E-03 -4.465905E-03 -4.119425E-03 -4.973577E-03 -4.092492E-03 -4.063342E-03 -2.804589E-03 -3.632667E-03 -5.005042E-03 -3.428575E-03 -3.007070E-03 -3.091465E-03 -3.030625E-03 -2.751739E-03 -1.762364E-03 +9.168094E-03 +5.976241E-03 +4.426550E-03 +4.107499E-03 +4.957716E-03 +4.026213E-03 +3.986000E-03 +2.702714E-03 +3.619345E-03 +4.909616E-03 +3.355042E-03 +2.945724E-03 +3.010811E-03 +2.965662E-03 +2.673073E-03 +1.669634E-03 cmfd source -4.538792E-02 -8.103354E-02 -1.045198E-01 -1.221411E-01 -1.398214E-01 -1.401011E-01 -1.305055E-01 -1.120110E-01 -8.032924E-02 -4.414939E-02 +4.539734E-02 +8.104913E-02 +1.045143E-01 +1.221516E-01 +1.398002E-01 +1.400323E-01 +1.304628E-01 +1.120006E-01 +8.038230E-02 +4.420934E-02 diff --git a/tests/test_many_scores/results_true.dat b/tests/test_many_scores/results_true.dat index ab1c43254f..bb151ae0e8 100644 --- a/tests/test_many_scores/results_true.dat +++ b/tests/test_many_scores/results_true.dat @@ -7,16 +7,8 @@ tally 1: 3.427342E+01 8.628000E+00 2.481430E+01 -8.628000E+00 -2.481430E+01 -5.102293E-01 -8.710841E-02 -8.628000E+00 -2.481430E+01 -9.329009E-01 -2.902534E-01 -5.102293E-01 -8.710841E-02 +8.632000E+00 +2.483728E+01 5.102293E-01 8.710841E-02 8.628000E+00 @@ -25,6 +17,14 @@ tally 1: 2.902534E-01 5.102293E-01 8.710841E-02 +5.087118E-01 +8.657086E-02 +8.632000E+00 +2.483728E+01 +9.328366E-01 +2.902108E-01 +5.087118E-01 +8.657086E-02 9.212024E+00 2.829472E+01 8.628000E+00 @@ -89,23 +89,23 @@ tally 1: 1.459209E-04 4.629047E-02 7.823267E-04 -8.628000E+00 -2.481430E+01 --4.712248E-02 -1.140942E-03 --6.431930E-02 -4.290580E-03 --9.251642E-02 -8.134201E-03 -1.020119E-04 -1.154184E-04 --2.994164E-02 -3.079076E-04 -2.128844E-02 -2.046549E-04 -1.637972E-02 -1.459209E-04 -4.629047E-02 -7.823267E-04 +8.632000E+00 +2.483728E+01 +-4.651997E-02 +1.133839E-03 +-6.416955E-02 +4.279418E-03 +-9.280565E-02 +8.095106E-03 +-2.078094E-04 +1.151292E-04 +-3.005568E-02 +3.104764E-04 +2.199519E-02 +2.179172E-04 +1.660645E-02 +1.451345E-04 +4.607553E-02 +7.673412E-04 1.014000E+01 3.427342E+01 From a3b87ad37224dbf11de6e3e1a75c67121b09fe3e Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 26 Sep 2015 14:16:04 -0400 Subject: [PATCH 03/21] Fixed source code standard issues that travis called me out on --- src/tally.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tally.F90 b/src/tally.F90 index 2b805b27df..0b13dbeba4 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -176,7 +176,7 @@ contains ! weight times the multiplicity as the estimate for the number of ! neutrons exiting a reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & - (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then + (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then multiplicity = ONE else do m = 1, nuclides(p % event_nuclide) % n_reaction @@ -211,7 +211,7 @@ contains ! weight times the multiplicity as the estimate for the number of ! neutrons exiting a reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & - (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then + (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then multiplicity = ONE else do m = 1, nuclides(p % event_nuclide) % n_reaction @@ -246,7 +246,7 @@ contains ! weight times the multiplicity as the estimate for the number of ! neutrons exiting a reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & - (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then + (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then multiplicity = ONE else do m = 1, nuclides(p % event_nuclide) % n_reaction From 378d4fc0904ff15aba206e7c7ffb7462a744fe55 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 26 Sep 2015 14:36:23 -0400 Subject: [PATCH 04/21] Some remaining updats to make from merge... --- openmc/filter.py | 3 ++- openmc/tallies.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/openmc/filter.py b/openmc/filter.py index 6dd4bdaff6..b99fb121b4 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -9,7 +9,8 @@ from openmc.checkvalue import check_type, check_iterable_type, \ check_greater_than, _isinstance _FILTER_TYPES = ['universe', 'material', 'cell', 'cellborn', 'surface', - 'mesh', 'energy', 'energyout', 'distribcell'] + 'mesh', 'energy', 'energyout', 'mu', 'polar', 'azimuthal', + 'distribcell'] class Filter(object): """A filter used to constrain a tally to a specific criterion, e.g. only tally diff --git a/openmc/tallies.py b/openmc/tallies.py index 20a6af3f29..2d2b248b38 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1278,6 +1278,23 @@ class Tally(object): filter_bins = np.tile(filter_bins, tile_factor) df[filter.type + ' [MeV]'] = filter_bins + # mu, polar, and azimuthal + elif filter.type in ['mu', 'polar', 'azimuthal']: + bins = filter.bins + num_bins = filter.num_bins + + # Create strings for + template = '{0:1.2f} - {1:1.2f}' + filter_bins = [] + for i in range(num_bins): + filter_bins.append(template.format(bins[i], bins[i+1])) + + # Tile the mu bins into a DataFrame column + filter_bins = np.repeat(filter_bins, filter.stride) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + df[filter.type] = filter_bins + # universe, material, surface, cell, and cellborn filters else: filter_bins = np.repeat(filter.bins, filter.stride) From e30c609b81a062ed60fa93281e16200daad79d29 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sat, 26 Sep 2015 14:42:19 -0400 Subject: [PATCH 05/21] Undoing commit i made to incorrect branch --- openmc/filter.py | 3 +-- openmc/tallies.py | 17 ----------------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index b99fb121b4..6dd4bdaff6 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -9,8 +9,7 @@ from openmc.checkvalue import check_type, check_iterable_type, \ check_greater_than, _isinstance _FILTER_TYPES = ['universe', 'material', 'cell', 'cellborn', 'surface', - 'mesh', 'energy', 'energyout', 'mu', 'polar', 'azimuthal', - 'distribcell'] + 'mesh', 'energy', 'energyout', 'distribcell'] class Filter(object): """A filter used to constrain a tally to a specific criterion, e.g. only tally diff --git a/openmc/tallies.py b/openmc/tallies.py index 2d2b248b38..20a6af3f29 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1278,23 +1278,6 @@ class Tally(object): filter_bins = np.tile(filter_bins, tile_factor) df[filter.type + ' [MeV]'] = filter_bins - # mu, polar, and azimuthal - elif filter.type in ['mu', 'polar', 'azimuthal']: - bins = filter.bins - num_bins = filter.num_bins - - # Create strings for - template = '{0:1.2f} - {1:1.2f}' - filter_bins = [] - for i in range(num_bins): - filter_bins.append(template.format(bins[i], bins[i+1])) - - # Tile the mu bins into a DataFrame column - filter_bins = np.repeat(filter_bins, filter.stride) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - df[filter.type] = filter_bins - # universe, material, surface, cell, and cellborn filters else: filter_bins = np.repeat(filter.bins, filter.stride) From bb155e2128ca74d5ef3d3818257f4f3fe4a4ba87 Mon Sep 17 00:00:00 2001 From: Kelly Rowland Date: Sat, 26 Sep 2015 22:02:07 -0700 Subject: [PATCH 06/21] fix Shannon Entropy PDF link --- docs/source/methods/eigenvalue.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/methods/eigenvalue.rst b/docs/source/methods/eigenvalue.rst index fe99ba22ec..41bf865492 100644 --- a/docs/source/methods/eigenvalue.rst +++ b/docs/source/methods/eigenvalue.rst @@ -142,7 +142,7 @@ than unity. By ensuring that the expected number of fission sites in each mesh cell is constant, the collision density across all cells, and hence the variance of tallies, is more uniform than it would be otherwise. -.. _Shannon entropy: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-06-3737_entropy.pdf +.. _Shannon entropy: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-ur-06-3737.pdf .. [Lieberoth] J. Lieberoth, "A Monte Carlo Technique to Solve the Static Eigenvalue Problem of the Boltzmann Transport Equation," *Nukleonik*, **11**, From 643f9aaccb74fe0adb73f136c9f3d816e049452c Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Sun, 27 Sep 2015 12:54:11 -0400 Subject: [PATCH 07/21] Took advantage of p % wgt already incorporating the multiplicity if the multiplicity is provided as a function of E by just using p % wgt for nu_scatter tallies instead of p % last_wgt * multiplicity --- src/tally.F90 | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/tally.F90 b/src/tally.F90 index 0b13dbeba4..7034b6d83c 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -62,7 +62,6 @@ contains real(8) :: uvw(3) ! particle direction type(Material), pointer :: mat type(Reaction), pointer :: rxn - real(8) :: multiplicity i = 0 SCORE_LOOP: do q = 1, t % n_user_score_bins @@ -177,7 +176,9 @@ contains ! neutrons exiting a reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then - multiplicity = ONE + ! Don't waste time on very common reactions we know have multiplicities + ! of one. + score = p % last_wgt else do m = 1, nuclides(p % event_nuclide) % n_reaction ! Check if this is the desired MT @@ -188,17 +189,17 @@ contains end if end do - ! Get multiplicity + ! Get multiplicity and apply to score if (rxn % multiplicity_with_E) then - multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + ! Then the multiplicity was already incorporated in to p % wgt + ! per the scattering routine, + score = p % wgt else - multiplicity = real(rxn % multiplicity,8) + ! Grab the multiplicity from the rxn + score = p % last_wgt * real(rxn % multiplicity,8) end if end if - ! Apply multiplicity to the last weight - score = p % last_wgt * multiplicity - case (SCORE_NU_SCATTER_PN) ! Only analog estimators are available. @@ -212,7 +213,9 @@ contains ! neutrons exiting a reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then - multiplicity = ONE + ! Don't waste time on very common reactions we know have multiplicities + ! of one. + score = p % last_wgt else do m = 1, nuclides(p % event_nuclide) % n_reaction ! Check if this is the desired MT @@ -223,17 +226,17 @@ contains end if end do - ! Get multiplicity + ! Get multiplicity and apply to score if (rxn % multiplicity_with_E) then - multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + ! Then the multiplicity was already incorporated in to p % wgt + ! per the scattering routine, + score = p % wgt else - multiplicity = real(rxn % multiplicity,8) + ! Grab the multiplicity from the rxn + score = p % last_wgt * real(rxn % multiplicity,8) end if end if - ! Apply multiplicity to the last weight - score = p % last_wgt * multiplicity - case (SCORE_NU_SCATTER_YN) ! Only analog estimators are available. @@ -247,7 +250,9 @@ contains ! neutrons exiting a reaction with neutrons in the exit channel if (p % event_MT == ELASTIC .or. p % event_MT == N_LEVEL .or. & (p % event_MT >= N_N1 .and. p % event_MT <= N_NC)) then - multiplicity = ONE + ! Don't waste time on very common reactions we know have multiplicities + ! of one. + score = p % last_wgt else do m = 1, nuclides(p % event_nuclide) % n_reaction ! Check if this is the desired MT @@ -258,17 +263,17 @@ contains end if end do - ! Get multiplicity + ! Get multiplicity and apply to score if (rxn % multiplicity_with_E) then - multiplicity = interpolate_tab1(rxn % multiplicity_E, p % last_E) + ! Then the multiplicity was already incorporated in to p % wgt + ! per the scattering routine, + score = p % wgt else - multiplicity = real(rxn % multiplicity,8) + ! Grab the multiplicity from the rxn + score = p % last_wgt * real(rxn % multiplicity,8) end if end if - ! Apply multiplicity to the last weight - score = p % last_wgt * multiplicity - case (SCORE_TRANSPORT) ! Only analog estimators are available. From d719129a5618c21dd04bd059fcf1859c03556ab8 Mon Sep 17 00:00:00 2001 From: Adam Nelson Date: Mon, 28 Sep 2015 04:59:29 -0400 Subject: [PATCH 08/21] Removed explicit casting of multiplicity to real in tally.f90, removed tally module dependence on interpolation, and updated nuscatter tests to better capture nu-scattering --- src/tally.F90 | 7 +- tests/test_score_nuscatter/results_true.dat | 14 ++-- tests/test_score_nuscatter/settings.xml | 2 +- tests/test_score_nuscatter_n/results_true.dat | 62 ++++++++-------- tests/test_score_nuscatter_n/settings.xml | 2 +- .../test_score_nuscatter_pn/results_true.dat | 42 +++++------ tests/test_score_nuscatter_pn/settings.xml | 2 +- .../test_score_nuscatter_yn/results_true.dat | 70 +++++++++---------- tests/test_score_nuscatter_yn/settings.xml | 2 +- 9 files changed, 101 insertions(+), 102 deletions(-) diff --git a/src/tally.F90 b/src/tally.F90 index 7034b6d83c..d8ecf4db51 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -5,7 +5,6 @@ module tally use error, only: fatal_error use geometry_header use global - use interpolation use math, only: t_percentile, calc_pn, calc_rn use mesh, only: get_mesh_bin, bin_to_mesh_indices, & get_mesh_indices, mesh_indices_to_bin, & @@ -196,7 +195,7 @@ contains score = p % wgt else ! Grab the multiplicity from the rxn - score = p % last_wgt * real(rxn % multiplicity,8) + score = p % last_wgt * rxn % multiplicity end if end if @@ -233,7 +232,7 @@ contains score = p % wgt else ! Grab the multiplicity from the rxn - score = p % last_wgt * real(rxn % multiplicity,8) + score = p % last_wgt * rxn % multiplicity end if end if @@ -270,7 +269,7 @@ contains score = p % wgt else ! Grab the multiplicity from the rxn - score = p % last_wgt * real(rxn % multiplicity,8) + score = p % last_wgt * rxn % multiplicity end if end if diff --git a/tests/test_score_nuscatter/results_true.dat b/tests/test_score_nuscatter/results_true.dat index df695d8a87..66e0c0a031 100644 --- a/tests/test_score_nuscatter/results_true.dat +++ b/tests/test_score_nuscatter/results_true.dat @@ -1,11 +1,11 @@ k-combined: -1.005983E+00 2.248579E-02 +9.870214E-01 2.095925E-02 tally 1: 0.000000E+00 0.000000E+00 -1.169000E+01 -2.915330E+01 -3.200000E+00 -2.342600E+00 -4.064000E+01 -3.595168E+02 +3.353000E+01 +1.133379E+02 +8.150000E+00 +6.793700E+00 +1.098500E+02 +1.221333E+03 diff --git a/tests/test_score_nuscatter/settings.xml b/tests/test_score_nuscatter/settings.xml index 517637a59f..ce632aae31 100644 --- a/tests/test_score_nuscatter/settings.xml +++ b/tests/test_score_nuscatter/settings.xml @@ -3,7 +3,7 @@ 10 - 5 + 0 100 diff --git a/tests/test_score_nuscatter_n/results_true.dat b/tests/test_score_nuscatter_n/results_true.dat index b46a1e184d..5dbc7f8abf 100644 --- a/tests/test_score_nuscatter_n/results_true.dat +++ b/tests/test_score_nuscatter_n/results_true.dat @@ -1,33 +1,33 @@ k-combined: -1.005983E+00 2.248579E-02 +9.870214E-01 2.095925E-02 tally 1: -1.169000E+01 -2.915330E+01 -1.247253E+00 -3.767436E-01 -5.330812E-01 -1.385083E-01 -2.987823E-01 -5.699361E-02 -2.645512E-01 -2.905381E-02 -3.200000E+00 -2.342600E+00 -3.809941E-01 -2.965326E-02 -4.319242E-01 -3.738822E-02 -9.261909E-02 -6.711328E-03 --6.052442E-02 -7.087230E-03 -4.064000E+01 -3.595168E+02 -2.096700E+01 -9.516606E+01 -7.560566E+00 -1.248694E+01 -2.093348E-01 -4.278510E-02 --1.449929E+00 -4.356371E-01 +3.353000E+01 +1.133379E+02 +3.491100E+00 +1.265776E+00 +1.948509E+00 +4.761101E-01 +9.177045E-01 +1.251750E-01 +5.654249E-01 +5.567043E-02 +8.150000E+00 +6.793700E+00 +1.223263E+00 +1.678053E-01 +7.833173E-01 +8.407682E-02 +1.350170E-01 +7.393546E-03 +2.164837E-01 +1.367122E-02 +1.098500E+02 +1.221333E+03 +5.598624E+01 +3.183267E+02 +2.048716E+01 +4.301097E+01 +1.399456E+00 +4.458904E-01 +-2.183180E+00 +6.628474E-01 diff --git a/tests/test_score_nuscatter_n/settings.xml b/tests/test_score_nuscatter_n/settings.xml index 517637a59f..ce632aae31 100644 --- a/tests/test_score_nuscatter_n/settings.xml +++ b/tests/test_score_nuscatter_n/settings.xml @@ -3,7 +3,7 @@ 10 - 5 + 0 100 diff --git a/tests/test_score_nuscatter_pn/results_true.dat b/tests/test_score_nuscatter_pn/results_true.dat index 3c34895d90..41bc17f8b8 100644 --- a/tests/test_score_nuscatter_pn/results_true.dat +++ b/tests/test_score_nuscatter_pn/results_true.dat @@ -1,24 +1,24 @@ k-combined: -1.005983E+00 2.248579E-02 +9.870214E-01 2.095925E-02 tally 1: -1.169000E+01 -2.915330E+01 -1.247253E+00 -3.767436E-01 -5.330812E-01 -1.385083E-01 -2.987823E-01 -5.699361E-02 -2.645512E-01 -2.905381E-02 +3.353000E+01 +1.133379E+02 +3.491100E+00 +1.265776E+00 +1.948509E+00 +4.761101E-01 +9.177045E-01 +1.251750E-01 +5.654249E-01 +5.567043E-02 tally 2: -1.169000E+01 -2.915330E+01 -1.247253E+00 -3.767436E-01 -5.330812E-01 -1.385083E-01 -2.987823E-01 -5.699361E-02 -2.645512E-01 -2.905381E-02 +3.353000E+01 +1.133379E+02 +3.491100E+00 +1.265776E+00 +1.948509E+00 +4.761101E-01 +9.177045E-01 +1.251750E-01 +5.654249E-01 +5.567043E-02 diff --git a/tests/test_score_nuscatter_pn/settings.xml b/tests/test_score_nuscatter_pn/settings.xml index 517637a59f..ce632aae31 100644 --- a/tests/test_score_nuscatter_pn/settings.xml +++ b/tests/test_score_nuscatter_pn/settings.xml @@ -3,7 +3,7 @@ 10 - 5 + 0 100 diff --git a/tests/test_score_nuscatter_yn/results_true.dat b/tests/test_score_nuscatter_yn/results_true.dat index 1e8e143ef4..cdf051ee75 100644 --- a/tests/test_score_nuscatter_yn/results_true.dat +++ b/tests/test_score_nuscatter_yn/results_true.dat @@ -1,38 +1,38 @@ k-combined: -1.005983E+00 2.248579E-02 +9.870214E-01 2.095925E-02 tally 1: -1.169000E+01 -2.915330E+01 +3.353000E+01 +1.133379E+02 tally 2: -1.169000E+01 -2.915330E+01 --2.198379E-01 -2.828670E-02 --1.317276E-01 -9.568596E-03 -8.309792E-02 -1.155410E-02 --2.288506E-02 -3.710542E-03 --2.720674E-02 -1.789163E-03 --1.323964E-02 -1.819112E-04 -8.941597E-02 -4.265616E-03 -1.516805E-01 -1.332526E-02 --1.832782E-02 -6.611171E-03 -1.311371E-02 -2.840648E-03 -3.728365E-02 -2.866806E-03 --5.100587E-02 -2.957146E-03 -3.388028E-02 -2.481570E-03 --7.766921E-02 -3.129377E-03 -1.666131E-02 -3.828290E-03 +3.353000E+01 +1.133379E+02 +4.293226E-01 +6.259462E-02 +-2.011041E-02 +5.388144E-02 +3.900136E-01 +5.873137E-02 +6.150213E-02 +9.043796E-03 +5.518583E-02 +1.739087E-02 +-2.047987E-01 +1.993679E-02 +6.710345E-02 +1.652573E-02 +-3.619254E-02 +1.598186E-02 +3.551558E-02 +9.077346E-03 +1.044669E-01 +2.082961E-03 +-3.782063E-02 +1.681459E-02 +1.752386E-01 +1.411429E-02 +-3.289649E-02 +9.534958E-03 +5.252770E-02 +7.518445E-03 +2.688056E-02 +3.397824E-03 diff --git a/tests/test_score_nuscatter_yn/settings.xml b/tests/test_score_nuscatter_yn/settings.xml index 517637a59f..ce632aae31 100644 --- a/tests/test_score_nuscatter_yn/settings.xml +++ b/tests/test_score_nuscatter_yn/settings.xml @@ -3,7 +3,7 @@ 10 - 5 + 0 100 From 63dfe0b632e56503f02e40ce7ded30daf83a6f6b Mon Sep 17 00:00:00 2001 From: Colin Josey Date: Thu, 1 Oct 2015 12:20:25 -0400 Subject: [PATCH 09/21] Moved logarithm index out of loop --- src/cross_section.F90 | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/cross_section.F90 b/src/cross_section.F90 index b937b03a15..4d8fb2f0fb 100644 --- a/src/cross_section.F90 +++ b/src/cross_section.F90 @@ -33,6 +33,7 @@ contains integer :: i_nuclide ! index into nuclides array integer :: i_sab ! index into sab_tables array integer :: j ! index in mat % i_sab_nuclides + integer :: u ! index into logarithmic mapping array real(8) :: atom_density ! atom density of a nuclide logical :: check_sab ! should we check for S(a,b) table? type(Material), pointer :: mat ! current material @@ -50,9 +51,13 @@ contains mat => materials(p % material) - ! Find energy index on global or material unionized grid - if (grid_method == GRID_MAT_UNION) & - call find_energy_index(p % E, p % material) + ! Find energy index on energy grid + u = 0 + if (grid_method == GRID_MAT_UNION) then + call find_energy_index(p % E, p % material) + else if (grid_method == GRID_LOGARITHM) then + u = int(log(p % E/1.0e-11_8)/log_spacing) + end if ! Determine if this material has S(a,b) tables check_sab = (mat % n_sab > 0) @@ -94,9 +99,9 @@ contains ! Calculate microscopic cross section for this nuclide if (p % E /= micro_xs(i_nuclide) % last_E) then - call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i) + call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i, u) else if (i_sab /= micro_xs(i_nuclide) % last_index_sab) then - call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i) + call calculate_nuclide_xs(i_nuclide, i_sab, p % E, p % material, i, u) end if ! ======================================================================== @@ -137,16 +142,16 @@ contains ! given index in the nuclides array at the energy of the given particle !=============================================================================== - subroutine calculate_nuclide_xs(i_nuclide, i_sab, E, i_mat, i_nuc_mat) + subroutine calculate_nuclide_xs(i_nuclide, i_sab, E, i_mat, i_nuc_mat, u) integer, intent(in) :: i_nuclide ! index into nuclides array integer, intent(in) :: i_sab ! index into sab_tables array integer, intent(in) :: i_mat ! index into materials array integer, intent(in) :: i_nuc_mat ! index into nuclides array for a material + integer, intent(in) :: u ! index into logarithmic mapping array integer :: i_grid ! index on nuclide energy grid integer :: i_low ! lower logarithmic mapping index integer :: i_high ! upper logarithmic mapping index - integer :: u ! index into logarithmic mapping array real(8), intent(in) :: E ! energy real(8) :: f ! interp factor on nuclide energy grid type(Nuclide), pointer :: nuc @@ -173,7 +178,6 @@ contains else ! Determine bounding indices based on which equal log-spaced interval ! the energy is in - u = int(log(E/1.0e-11_8)/log_spacing) i_low = nuc % grid_index(u) i_high = nuc % grid_index(u + 1) + 1 From 68b654b4031abbe4cf45fe290c5c718e94693ed4 Mon Sep 17 00:00:00 2001 From: Colin Josey Date: Thu, 1 Oct 2015 13:27:11 -0400 Subject: [PATCH 10/21] Removed L/R checking in binary search --- src/search.F90 | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/src/search.F90 b/src/search.F90 index dab7fa67ca..db099946ee 100644 --- a/src/search.F90 +++ b/src/search.F90 @@ -39,16 +39,6 @@ contains n_iteration = 0 do while (R - L > 1) - - ! Check boundaries - if (val > array(L) .and. val < array(L+1)) then - array_index = L - return - elseif (val > array(R-1) .and. val < array(R)) then - array_index = R - 1 - return - end if - ! Find values at midpoint array_index = L + (R - L)/2 testval = array(array_index) @@ -91,16 +81,6 @@ contains n_iteration = 0 do while (R - L > 1) - - ! Check boundaries - if (val > array(L) .and. val < array(L+1)) then - array_index = L - return - elseif (val > array(R-1) .and. val < array(R)) then - array_index = R - 1 - return - end if - ! Find values at midpoint array_index = L + (R - L)/2 testval = array(array_index) @@ -143,16 +123,6 @@ contains n_iteration = 0 do while (R - L > 1) - - ! Check boundaries - if (val > array(L) .and. val < array(L+1)) then - array_index = L - return - elseif (val > array(R-1) .and. val < array(R)) then - array_index = R - 1 - return - end if - ! Find values at midpoint array_index = L + (R - L)/2 testval = array(array_index) From 42ca8df692ba005dc7fee6030f9fae14fea1ac4c Mon Sep 17 00:00:00 2001 From: Colin Josey Date: Thu, 1 Oct 2015 14:01:52 -0400 Subject: [PATCH 11/21] Removed redundancy in binary search --- src/search.F90 | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/search.F90 b/src/search.F90 index db099946ee..ea11498663 100644 --- a/src/search.F90 +++ b/src/search.F90 @@ -41,10 +41,9 @@ contains do while (R - L > 1) ! Find values at midpoint array_index = L + (R - L)/2 - testval = array(array_index) - if (val >= testval) then + if (val >= array(array_index)) then L = array_index - elseif (val < testval) then + else R = array_index end if @@ -83,10 +82,9 @@ contains do while (R - L > 1) ! Find values at midpoint array_index = L + (R - L)/2 - testval = array(array_index) - if (val >= testval) then + if (val >= array(array_index)) then L = array_index - elseif (val < testval) then + else R = array_index end if @@ -125,10 +123,9 @@ contains do while (R - L > 1) ! Find values at midpoint array_index = L + (R - L)/2 - testval = array(array_index) - if (val >= testval) then + if (val >= array(array_index)) then L = array_index - elseif (val < testval) then + else R = array_index end if From 7ab36529c0294146919793acead7d2ab0da84c53 Mon Sep 17 00:00:00 2001 From: Colin Josey Date: Thu, 1 Oct 2015 14:02:37 -0400 Subject: [PATCH 12/21] Removed spurious variable --- src/search.F90 | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/search.F90 b/src/search.F90 index ea11498663..d38dfb986e 100644 --- a/src/search.F90 +++ b/src/search.F90 @@ -28,7 +28,6 @@ contains integer :: L integer :: R integer :: n_iteration - real(8) :: testval L = 1 R = n @@ -69,7 +68,6 @@ contains integer :: L integer :: R integer :: n_iteration - real(8) :: testval L = 1 R = n @@ -110,7 +108,6 @@ contains integer :: L integer :: R integer :: n_iteration - real(8) :: testval L = 1 R = n From 78d14133dbd7cb24c42b99256d36a67c4cd0b15e Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 2 Oct 2015 01:25:41 -0400 Subject: [PATCH 13/21] Updated OpenCG compatiblity module to reflect move to PEP8 use of underscores in place of camelCase --- openmc/material.py | 9 +- openmc/mesh.py | 8 +- openmc/opencg_compatible.py | 182 ++++++++++++++++++------------------ openmc/surface.py | 7 +- openmc/tallies.py | 7 +- openmc/universe.py | 21 +++-- 6 files changed, 128 insertions(+), 106 deletions(-) diff --git a/openmc/material.py b/openmc/material.py index e495357b54..4f60abc676 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -132,9 +132,12 @@ class Material(object): @name.setter def name(self, name): - check_type('name for Material ID="{0}"'.format(self._id), - name, basestring) - self._name = name + if name is not None: + check_type('name for Material ID="{0}"'.format(self._id), + name, basestring) + self._name = name + else: + self._name = None def set_density(self, units, density=NO_DENSITY): """Set the density of the material diff --git a/openmc/mesh.py b/openmc/mesh.py index 2fe873d2bc..af13d984df 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -148,8 +148,12 @@ class Mesh(object): @name.setter def name(self, name): - check_type('name for mesh ID="{0}"'.format(self._id), name, basestring) - self._name = name + if name is not None: + check_type('name for mesh ID="{0}"'.format(self._id), + name, basestring) + self._name = name + else: + self._name = None @type.setter def type(self, meshtype): diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 65e980c003..682ef0ecac 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -83,14 +83,14 @@ def get_opencg_material(openmc_material): raise ValueError(msg) global OPENCG_MATERIALS - material_id = openmc_material._id + material_id = openmc_material.id # If this Material was already created, use it if material_id in OPENCG_MATERIALS: return OPENCG_MATERIALS[material_id] # Create an OpenCG Material to represent this OpenMC Material - name = openmc_material._name + name = openmc_material.name opencg_material = opencg.Material(material_id=material_id, name=name) # Add the OpenMC Material to the global collection of all OpenMC Materials @@ -123,14 +123,14 @@ def get_openmc_material(opencg_material): raise ValueError(msg) global OPENMC_MATERIALS - material_id = opencg_material._id + material_id = opencg_material.id # If this Material was already created, use it if material_id in OPENMC_MATERIALS: return OPENMC_MATERIALS[material_id] # Create an OpenMC Material to represent this OpenCG Material - name = opencg_material._name + name = opencg_material.name openmc_material = openmc.Material(material_id=material_id, name=name) # Add the OpenMC Material to the global collection of all OpenMC Materials @@ -168,8 +168,8 @@ def is_opencg_surface_compatible(opencg_surface): 'since "{0}" is not a Surface'.format(opencg_surface) raise ValueError(msg) - if opencg_surface._type in ['x-squareprism', - 'y-squareprism', 'z-squareprism']: + if opencg_surface.type in ['x-squareprism', + 'y-squareprism', 'z-squareprism']: return False else: return True @@ -196,59 +196,59 @@ def get_opencg_surface(openmc_surface): raise ValueError(msg) global OPENCG_SURFACES - surface_id = openmc_surface._id + surface_id = openmc_surface.id # If this Material was already created, use it if surface_id in OPENCG_SURFACES: return OPENCG_SURFACES[surface_id] # Create an OpenCG Surface to represent this OpenMC Surface - name = openmc_surface._name + name = openmc_surface.name # Correct for OpenMC's syntax for Surfaces dividing Cells - boundary = openmc_surface._boundary_type + boundary = openmc_surface.boundary_type if boundary == 'transmission': boundary = 'interface' opencg_surface = None - if openmc_surface._type == 'plane': - A = openmc_surface._coeffs['A'] - B = openmc_surface._coeffs['B'] - C = openmc_surface._coeffs['C'] - D = openmc_surface._coeffs['D'] + if openmc_surface.type == 'plane': + A = openmc_surface.coeffs['A'] + B = openmc_surface.coeffs['B'] + C = openmc_surface.coeffs['C'] + D = openmc_surface.coeffs['D'] opencg_surface = opencg.Plane(surface_id, name, boundary, A, B, C, D) - elif openmc_surface._type == 'x-plane': - x0 = openmc_surface._coeffs['x0'] + elif openmc_surface.type == 'x-plane': + x0 = openmc_surface.coeffs['x0'] opencg_surface = opencg.XPlane(surface_id, name, boundary, x0) - elif openmc_surface._type == 'y-plane': - y0 = openmc_surface._coeffs['y0'] + elif openmc_surface.type == 'y-plane': + y0 = openmc_surface.coeffs['y0'] opencg_surface = opencg.YPlane(surface_id, name, boundary, y0) - elif openmc_surface._type == 'z-plane': - z0 = openmc_surface._coeffs['z0'] + elif openmc_surface.type == 'z-plane': + z0 = openmc_surface.coeffs['z0'] opencg_surface = opencg.ZPlane(surface_id, name, boundary, z0) - elif openmc_surface._type == 'x-cylinder': - y0 = openmc_surface._coeffs['y0'] - z0 = openmc_surface._coeffs['z0'] - R = openmc_surface._coeffs['R'] + elif openmc_surface.type == 'x-cylinder': + y0 = openmc_surface.coeffs['y0'] + z0 = openmc_surface.coeffs['z0'] + R = openmc_surface.coeffs['R'] opencg_surface = opencg.XCylinder(surface_id, name, boundary, y0, z0, R) - elif openmc_surface._type == 'y-cylinder': - x0 = openmc_surface._coeffs['x0'] - z0 = openmc_surface._coeffs['z0'] - R = openmc_surface._coeffs['R'] + elif openmc_surface.type == 'y-cylinder': + x0 = openmc_surface.coeffs['x0'] + z0 = openmc_surface.coeffs['z0'] + R = openmc_surface.coeffs['R'] opencg_surface = opencg.YCylinder(surface_id, name, boundary, x0, z0, R) - elif openmc_surface._type == 'z-cylinder': - x0 = openmc_surface._coeffs['x0'] - y0 = openmc_surface._coeffs['y0'] - R = openmc_surface._coeffs['R'] + elif openmc_surface.type == 'z-cylinder': + x0 = openmc_surface.coeffs['x0'] + y0 = openmc_surface.coeffs['y0'] + R = openmc_surface.coeffs['R'] opencg_surface = opencg.ZCylinder(surface_id, name, boundary, x0, y0, R) @@ -282,52 +282,52 @@ def get_openmc_surface(opencg_surface): raise ValueError(msg) global openmc_surface - surface_id = opencg_surface._id + surface_id = opencg_surface.id # If this Surface was already created, use it if surface_id in OPENMC_SURFACES: return OPENMC_SURFACES[surface_id] # Create an OpenMC Surface to represent this OpenCG Surface - name = opencg_surface._name + name = opencg_surface.name # Correct for OpenMC's syntax for Surfaces dividing Cells - boundary = opencg_surface._boundary_type + boundary = opencg_surface.boundary_type if boundary == 'interface': boundary = 'transmission' - if opencg_surface._type == 'plane': + if opencg_surface.type == 'plane': A = opencg_surface._coeffs['A'] B = opencg_surface._coeffs['B'] C = opencg_surface._coeffs['C'] D = opencg_surface._coeffs['D'] openmc_surface = openmc.Plane(surface_id, boundary, A, B, C, D, name) - elif opencg_surface._type == 'x-plane': + elif opencg_surface.type == 'x-plane': x0 = opencg_surface._coeffs['x0'] openmc_surface = openmc.XPlane(surface_id, boundary, x0, name) - elif opencg_surface._type == 'y-plane': + elif opencg_surface.type == 'y-plane': y0 = opencg_surface._coeffs['y0'] openmc_surface = openmc.YPlane(surface_id, boundary, y0, name) - elif opencg_surface._type == 'z-plane': + elif opencg_surface.type == 'z-plane': z0 = opencg_surface._coeffs['z0'] openmc_surface = openmc.ZPlane(surface_id, boundary, z0, name) - elif opencg_surface._type == 'x-cylinder': + elif opencg_surface.type == 'x-cylinder': y0 = opencg_surface._coeffs['y0'] z0 = opencg_surface._coeffs['z0'] R = opencg_surface._coeffs['R'] openmc_surface = openmc.XCylinder(surface_id, boundary, y0, z0, R, name) - elif opencg_surface._type == 'y-cylinder': + elif opencg_surface.type == 'y-cylinder': x0 = opencg_surface._coeffs['x0'] z0 = opencg_surface._coeffs['z0'] R = opencg_surface._coeffs['R'] openmc_surface = openmc.YCylinder(surface_id, boundary, x0, z0, R, name) - elif opencg_surface._type == 'z-cylinder': + elif opencg_surface.type == 'z-cylinder': x0 = opencg_surface._coeffs['x0'] y0 = opencg_surface._coeffs['y0'] R = opencg_surface._coeffs['R'] @@ -336,7 +336,7 @@ def get_openmc_surface(opencg_surface): else: msg = 'Unable to create an OpenMC Surface from an OpenCG ' \ 'Surface of type "{0}" since it is not a compatible ' \ - 'Surface type in OpenMC'.format(opencg_surface._type) + 'Surface type in OpenMC'.format(opencg_surface.type) raise ValueError(msg) # Add the OpenMC Surface to the global collection of all OpenMC Surfaces @@ -373,17 +373,17 @@ def get_compatible_opencg_surfaces(opencg_surface): raise ValueError(msg) global OPENMC_SURFACES - surface_id = opencg_surface._id + surface_id = opencg_surface.id # If this Surface was already created, use it if surface_id in OPENMC_SURFACES: return OPENMC_SURFACES[surface_id] # Create an OpenMC Surface to represent this OpenCG Surface - name = opencg_surface._name - boundary = opencg_surface._boundary_type + name = opencg_surface.name + boundary = opencg_surface.boundary_type - if opencg_surface._type == 'x-squareprism': + if opencg_surface.type == 'x-squareprism': y0 = opencg_surface._coeffs['y0'] z0 = opencg_surface._coeffs['z0'] R = opencg_surface._coeffs['R'] @@ -395,7 +395,7 @@ def get_compatible_opencg_surfaces(opencg_surface): top = opencg.ZPlane(name=name, boundary=boundary, z0=z0+R) surfaces = [left, right, bottom, top] - elif opencg_surface._type == 'y-squareprism': + elif opencg_surface.type == 'y-squareprism': x0 = opencg_surface._coeffs['x0'] z0 = opencg_surface._coeffs['z0'] R = opencg_surface._coeffs['R'] @@ -407,7 +407,7 @@ def get_compatible_opencg_surfaces(opencg_surface): top = opencg.ZPlane(name=name, boundary=boundary, z0=z0+R) surfaces = [left, right, bottom, top] - elif opencg_surface._type == 'z-squareprism': + elif opencg_surface.type == 'z-squareprism': x0 = opencg_surface._coeffs['x0'] y0 = opencg_surface._coeffs['y0'] R = opencg_surface._coeffs['R'] @@ -422,7 +422,7 @@ def get_compatible_opencg_surfaces(opencg_surface): else: msg = 'Unable to create a compatible OpenMC Surface an OpenCG ' \ 'Surface of type "{0}" since it already a compatible ' \ - 'Surface type in OpenMC'.format(opencg_surface._type) + 'Surface type in OpenMC'.format(opencg_surface.type) raise ValueError(msg) # Add the OpenMC Surface(s) to the global collection of all OpenMC Surfaces @@ -455,32 +455,32 @@ def get_opencg_cell(openmc_cell): raise ValueError(msg) global OPENCG_CELLS - cell_id = openmc_cell._id + cell_id = openmc_cell.id # If this Cell was already created, use it if cell_id in OPENCG_CELLS: return OPENCG_CELLS[cell_id] # Create an OpenCG Cell to represent this OpenMC Cell - name = openmc_cell._name + name = openmc_cell.name opencg_cell = opencg.Cell(cell_id, name) - fill = openmc_cell._fill + fill = openmc_cell.fill - if (openmc_cell._type == 'normal'): + if (openmc_cell.type == 'normal'): opencg_cell.setFill(get_opencg_material(fill)) - elif (openmc_cell._type == 'fill'): + elif (openmc_cell.type == 'fill'): opencg_cell.setFill(get_opencg_universe(fill)) else: opencg_cell.setFill(get_opencg_lattice(fill)) - if openmc_cell._rotation is not None: - opencg_cell.setRotation(openmc_cell._rotation) + if openmc_cell.rotation is not None: + opencg_cell.setRotation(openmc_cell.rotation) - if openmc_cell._translation is not None: - opencg_cell.setTranslation(openmc_cell._translation) + if openmc_cell.translation is not None: + opencg_cell.setTranslation(openmc_cell.translation) - surfaces = openmc_cell._surfaces + surfaces = openmc_cell.surfaces for surface_id in surfaces: surface = surfaces[surface_id][0] @@ -536,8 +536,8 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace): compatible_cells = [] # SquarePrism Surfaces - if opencg_surface._type in ['x-squareprism', 'y-squareprism', - 'z-squareprism']: + if opencg_surface.type in ['x-squareprism', 'y-squareprism', + 'z-squareprism']: # Get the compatible Surfaces (XPlanes and YPlanes) compatible_surfaces = get_compatible_opencg_surfaces(opencg_surface) @@ -690,31 +690,31 @@ def get_openmc_cell(opencg_cell): raise ValueError(msg) global OPENMC_CELLS - cell_id = opencg_cell._id + cell_id = opencg_cell.id # If this Cell was already created, use it if cell_id in OPENMC_CELLS: return OPENMC_CELLS[cell_id] # Create an OpenCG Cell to represent this OpenMC Cell - name = opencg_cell._name + name = opencg_cell.name openmc_cell = openmc.Cell(cell_id, name) - fill = opencg_cell._fill + fill = opencg_cell.fill - if (opencg_cell._type == 'universe'): + if (opencg_cell.type == 'universe'): openmc_cell.fill = get_openmc_universe(fill) - elif (opencg_cell._type == 'lattice'): + elif (opencg_cell.type == 'lattice'): openmc_cell.fill = get_openmc_lattice(fill) else: openmc_cell.fill = get_openmc_material(fill) - if opencg_cell._rotation: - rotation = np.asarray(opencg_cell._rotation, dtype=np.int) + if opencg_cell.rotation: + rotation = np.asarray(opencg_cell.rotation, dtype=np.int) openmc_cell.rotation = rotation - if opencg_cell._translation: - translation = np.asarray(opencg_cell._translation, dtype=np.float64) + if opencg_cell.translation: + translation = np.asarray(opencg_cell.translation, dtype=np.float64) openmc_cell.setTranslation(translation) surfaces = opencg_cell._surfaces @@ -754,18 +754,18 @@ def get_opencg_universe(openmc_universe): raise ValueError(msg) global OPENCG_UNIVERSES - universe_id = openmc_universe._id + universe_id = openmc_universe.id # If this Universe was already created, use it if universe_id in OPENCG_UNIVERSES: return OPENCG_UNIVERSES[universe_id] # Create an OpenCG Universe to represent this OpenMC Universe - name = openmc_universe._name + name = openmc_universe.name opencg_universe = opencg.Universe(universe_id, name) # Convert all OpenMC Cells in this Universe to OpenCG Cells - openmc_cells = openmc_universe._cells + openmc_cells = openmc_universe.cells for cell_id, openmc_cell in openmc_cells.items(): opencg_cell = get_opencg_cell(openmc_cell) @@ -801,7 +801,7 @@ def get_openmc_universe(opencg_universe): raise ValueError(msg) global OPENMC_UNIVERSES - universe_id = opencg_universe._id + universe_id = opencg_universe.id # If this Universe was already created, use it if universe_id in OPENMC_UNIVERSES: @@ -811,7 +811,7 @@ def get_openmc_universe(opencg_universe): make_opencg_cells_compatible(opencg_universe) # Create an OpenMC Universe to represent this OpenCSg Universe - name = opencg_universe._name + name = opencg_universe.name openmc_universe = openmc.Universe(universe_id, name) # Convert all OpenCG Cells in this Universe to OpenMC Cells @@ -851,7 +851,7 @@ def get_opencg_lattice(openmc_lattice): raise ValueError(msg) global OPENCG_LATTICES - lattice_id = openmc_lattice._id + lattice_id = openmc_lattice.id # If this Lattice was already created, use it if lattice_id in OPENCG_LATTICES: @@ -888,7 +888,7 @@ def get_opencg_lattice(openmc_lattice): for z in range(dimension[2]): for y in range(dimension[1]): for x in range(dimension[0]): - universe_id = universes[x][dimension[1]-y-1][z]._id + universe_id = universes[x][dimension[1]-y-1][z].id universe_array[z][y][x] = unique_universes[universe_id] opencg_lattice = opencg.Lattice(lattice_id, name) @@ -931,23 +931,23 @@ def get_openmc_lattice(opencg_lattice): raise ValueError(msg) global OPENMC_LATTICES - lattice_id = opencg_lattice._id + lattice_id = opencg_lattice.id # If this Lattice was already created, use it if lattice_id in OPENMC_LATTICES: return OPENMC_LATTICES[lattice_id] - dimension = opencg_lattice._dimension - width = opencg_lattice._width - offset = opencg_lattice._offset - universes = opencg_lattice._universes + dimension = opencg_lattice.dimension + width = opencg_lattice.width + offset = opencg_lattice.offset + universes = opencg_lattice.universes # Initialize an empty array for the OpenMC nested Universes in this Lattice universe_array = np.ndarray(tuple(np.array(dimension)), dtype=openmc.Universe) # Create OpenMC Universes for each unique nested Universe in this Lattice - unique_universes = opencg_lattice.getUniqueUniverses() + unique_universes = opencg_lattice.get_unique_universes() for universe_id, universe in unique_universes.items(): unique_universes[universe_id] = get_openmc_universe(universe) @@ -956,7 +956,7 @@ def get_openmc_lattice(opencg_lattice): for z in range(dimension[2]): for y in range(dimension[1]): for x in range(dimension[0]): - universe_id = universes[z][y][x]._id + universe_id = universes[z][y][x].id universe_array[x][y][z] = unique_universes[universe_id] # Reverse y-dimension in array to match ordering in OpenCG @@ -1011,7 +1011,7 @@ def get_opencg_geometry(openmc_geometry): OPENMC_LATTICES.clear() OPENCG_LATTICES.clear() - openmc_root_universe = openmc_geometry._root_universe + openmc_root_universe = openmc_geometry.root_universe opencg_root_universe = get_opencg_universe(openmc_root_universe) opencg_geometry = opencg.Geometry() @@ -1043,11 +1043,11 @@ def get_openmc_geometry(opencg_geometry): # Deep copy the goemetry since it may be modified to make all Surfaces # compatible with OpenMC's specifications - opencg_geometry.assignAutoIds() + opencg_geometry.assign_auto_ids() opencg_geometry = copy.deepcopy(opencg_geometry) # Update Cell bounding boxes in Geometry - opencg_geometry.updateBoundingBoxes() + opencg_geometry.update_bounding_boxes() # Clear dictionaries and auto-generated ID OPENMC_SURFACES.clear() @@ -1060,14 +1060,14 @@ def get_openmc_geometry(opencg_geometry): OPENCG_LATTICES.clear() # Make the entire geometry "compatible" before assigning auto IDs - universes = opencg_geometry.getAllUniverses() + universes = opencg_geometry.get_all_universes() for universe_id, universe in universes.items(): if not isinstance(universe, opencg.Lattice): make_opencg_cells_compatible(universe) - opencg_geometry.assignAutoIds() + opencg_geometry.assign_auto_ids() - opencg_root_universe = opencg_geometry._root_universe + opencg_root_universe = opencg_geometry.root_universe openmc_root_universe = get_openmc_universe(opencg_root_universe) openmc_geometry = openmc.Geometry() diff --git a/openmc/surface.py b/openmc/surface.py index 653754d303..164bbd09bf 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -101,8 +101,11 @@ class Surface(object): @name.setter def name(self, name): - check_type('surface name', name, basestring) - self._name = name + if name is not None: + check_type('surface name', name, basestring) + self._name = name + else: + self._name = None @boundary_type.setter def boundary_type(self, boundary_type): diff --git a/openmc/tallies.py b/openmc/tallies.py index 20a6af3f29..a1206f012a 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -373,8 +373,11 @@ class Tally(object): @name.setter def name(self, name): - check_type('tally name', name, basestring) - self._name = name + if name is not None: + check_type('tally name', name, basestring) + self._name = name + else: + self._name = None def add_filter(self, filter): """Add a filter to the tally diff --git a/openmc/universe.py b/openmc/universe.py index bab10f5df7..9516192802 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -117,8 +117,11 @@ class Cell(object): @name.setter def name(self, name): - cv.check_type('cell name', name, basestring) - self._name = name + if name is not None: + cv.check_type('cell name', name, basestring) + self._name = name + else: + self._name = None @fill.setter def fill(self, fill): @@ -438,8 +441,11 @@ class Universe(object): @name.setter def name(self, name): - cv.check_type('universe name', name, basestring) - self._name = name + if name is not None: + cv.check_type('universe name', name, basestring) + self._name = name + else: + self._name = None def add_cell(self, cell): """Add a cell to the universe. @@ -677,8 +683,11 @@ class Lattice(object): @name.setter def name(self, name): - cv.check_type('lattice name', name, basestring) - self._name = name + if name is not None: + cv.check_type('lattice name', name, basestring) + self._name = name + else: + self._name = None @outer.setter def outer(self, outer): From a491dde24853022514631ced51c1db053679319b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 2 Oct 2015 17:01:52 -0400 Subject: [PATCH 14/21] Updated OpenCG compatibility module to use OpenCG property getters for surfaces, cells and coeffs --- openmc/opencg_compatible.py | 58 ++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 682ef0ecac..b41a621b40 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -297,40 +297,40 @@ def get_openmc_surface(opencg_surface): boundary = 'transmission' if opencg_surface.type == 'plane': - A = opencg_surface._coeffs['A'] - B = opencg_surface._coeffs['B'] - C = opencg_surface._coeffs['C'] - D = opencg_surface._coeffs['D'] + A = opencg_surface.coeffs['A'] + B = opencg_surface.coeffs['B'] + C = opencg_surface.coeffs['C'] + D = opencg_surface.coeffs['D'] openmc_surface = openmc.Plane(surface_id, boundary, A, B, C, D, name) elif opencg_surface.type == 'x-plane': - x0 = opencg_surface._coeffs['x0'] + x0 = opencg_surface.coeffs['x0'] openmc_surface = openmc.XPlane(surface_id, boundary, x0, name) elif opencg_surface.type == 'y-plane': - y0 = opencg_surface._coeffs['y0'] + y0 = opencg_surface.coeffs['y0'] openmc_surface = openmc.YPlane(surface_id, boundary, y0, name) elif opencg_surface.type == 'z-plane': - z0 = opencg_surface._coeffs['z0'] + z0 = opencg_surface.coeffs['z0'] openmc_surface = openmc.ZPlane(surface_id, boundary, z0, name) elif opencg_surface.type == 'x-cylinder': - y0 = opencg_surface._coeffs['y0'] - z0 = opencg_surface._coeffs['z0'] - R = opencg_surface._coeffs['R'] + y0 = opencg_surface.coeffs['y0'] + z0 = opencg_surface.coeffs['z0'] + R = opencg_surface.coeffs['R'] openmc_surface = openmc.XCylinder(surface_id, boundary, y0, z0, R, name) elif opencg_surface.type == 'y-cylinder': - x0 = opencg_surface._coeffs['x0'] - z0 = opencg_surface._coeffs['z0'] - R = opencg_surface._coeffs['R'] + x0 = opencg_surface.coeffs['x0'] + z0 = opencg_surface.coeffs['z0'] + R = opencg_surface.coeffs['R'] openmc_surface = openmc.YCylinder(surface_id, boundary, x0, z0, R, name) elif opencg_surface.type == 'z-cylinder': - x0 = opencg_surface._coeffs['x0'] - y0 = opencg_surface._coeffs['y0'] - R = opencg_surface._coeffs['R'] + x0 = opencg_surface.coeffs['x0'] + y0 = opencg_surface.coeffs['y0'] + R = opencg_surface.coeffs['R'] openmc_surface = openmc.ZCylinder(surface_id, boundary, x0, y0, R, name) else: @@ -384,9 +384,9 @@ def get_compatible_opencg_surfaces(opencg_surface): boundary = opencg_surface.boundary_type if opencg_surface.type == 'x-squareprism': - y0 = opencg_surface._coeffs['y0'] - z0 = opencg_surface._coeffs['z0'] - R = opencg_surface._coeffs['R'] + y0 = opencg_surface.coeffs['y0'] + z0 = opencg_surface.coeffs['z0'] + R = opencg_surface.coeffs['R'] # Create a list of the four planes we need left = opencg.YPlane(name=name, boundary=boundary, y0=y0-R) @@ -396,9 +396,9 @@ def get_compatible_opencg_surfaces(opencg_surface): surfaces = [left, right, bottom, top] elif opencg_surface.type == 'y-squareprism': - x0 = opencg_surface._coeffs['x0'] - z0 = opencg_surface._coeffs['z0'] - R = opencg_surface._coeffs['R'] + x0 = opencg_surface.coeffs['x0'] + z0 = opencg_surface.coeffs['z0'] + R = opencg_surface.coeffs['R'] # Create a list of the four planes we need left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R) @@ -408,9 +408,9 @@ def get_compatible_opencg_surfaces(opencg_surface): surfaces = [left, right, bottom, top] elif opencg_surface.type == 'z-squareprism': - x0 = opencg_surface._coeffs['x0'] - y0 = opencg_surface._coeffs['y0'] - R = opencg_surface._coeffs['R'] + x0 = opencg_surface.coeffs['x0'] + y0 = opencg_surface.coeffs['y0'] + R = opencg_surface.coeffs['R'] # Create a list of the four planes we need left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R) @@ -631,12 +631,12 @@ def make_opencg_cells_compatible(opencg_universe): raise ValueError(msg) # Check all OpenCG Cells in this Universe for compatibility with OpenMC - opencg_cells = opencg_universe._cells + opencg_cells = opencg_universe.cells for cell_id, opencg_cell in opencg_cells.items(): # Check each of the OpenCG Surfaces for OpenMC compatibility - surfaces = opencg_cell._surfaces + surfaces = opencg_cell.surfaces for surface_id in surfaces: surface = surfaces[surface_id][0] @@ -717,7 +717,7 @@ def get_openmc_cell(opencg_cell): translation = np.asarray(opencg_cell.translation, dtype=np.float64) openmc_cell.setTranslation(translation) - surfaces = opencg_cell._surfaces + surfaces = opencg_cell.surfaces for surface_id in surfaces: surface = surfaces[surface_id][0] @@ -815,7 +815,7 @@ def get_openmc_universe(opencg_universe): openmc_universe = openmc.Universe(universe_id, name) # Convert all OpenCG Cells in this Universe to OpenMC Cells - opencg_cells = opencg_universe._cells + opencg_cells = opencg_universe.cells for cell_id, opencg_cell in opencg_cells.items(): openmc_cell = get_openmc_cell(opencg_cell) From 147f2a162e7369f5559740f397a48a225e2cdf2a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 2 Oct 2015 17:43:33 -0400 Subject: [PATCH 15/21] Updates to OpenCG compatibility module to reflect move to PEP8 compliance --- openmc/opencg_compatible.py | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index b41a621b40..000801ca2a 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -467,25 +467,25 @@ def get_opencg_cell(openmc_cell): fill = openmc_cell.fill - if (openmc_cell.type == 'normal'): - opencg_cell.setFill(get_opencg_material(fill)) - elif (openmc_cell.type == 'fill'): - opencg_cell.setFill(get_opencg_universe(fill)) + if (openmc_cell.fill_type == 'material'): + opencg_cell.fill = get_opencg_material(fill) + elif (openmc_cell.fill_type == 'universe'): + opencg_cell.fill = get_opencg_universe(fill) else: - opencg_cell.setFill(get_opencg_lattice(fill)) + opencg_cell.fill = get_opencg_lattice(fill) if openmc_cell.rotation is not None: - opencg_cell.setRotation(openmc_cell.rotation) + opencg_cell.rotation = openmc_cell.rotation if openmc_cell.translation is not None: - opencg_cell.setTranslation(openmc_cell.translation) + opencg_cell.translation = openmc_cell.translation surfaces = openmc_cell.surfaces for surface_id in surfaces: surface = surfaces[surface_id][0] halfspace = surfaces[surface_id][1] - opencg_cell.addSurface(get_opencg_surface(surface), halfspace) + opencg_cell.add_surface(get_opencg_surface(surface), halfspace) # Add the OpenMC Cell to the global collection of all OpenMC Cells OPENMC_CELLS[cell_id] = openmc_cell @@ -546,10 +546,10 @@ def get_compatible_opencg_cells(opencg_cell, opencg_surface, halfspace): # If Cell is inside SquarePrism, add "inside" of Surface halfspaces if halfspace == -1: - opencg_cell.addSurface(compatible_surfaces[0], +1) - opencg_cell.addSurface(compatible_surfaces[1], -1) - opencg_cell.addSurface(compatible_surfaces[2], +1) - opencg_cell.addSurface(compatible_surfaces[3], -1) + opencg_cell.add_surface(compatible_surfaces[0], +1) + opencg_cell.add_surface(compatible_surfaces[1], -1) + opencg_cell.add_surface(compatible_surfaces[2], +1) + opencg_cell.add_surface(compatible_surfaces[3], -1) compatible_cells.append(opencg_cell) # If Cell is outside SquarePrism, add "outside" of Surface halfspaces @@ -659,7 +659,7 @@ def make_opencg_cells_compatible(opencg_universe): opencg_universe.removeCell(opencg_cell) # Add the compatible OpenCG Cells to the Universe - opencg_universe.addCells(cells) + opencg_universe.add_cells(cells) # Make recursive call to look at the updated state of the # OpenCG Universe and return @@ -715,7 +715,7 @@ def get_openmc_cell(opencg_cell): if opencg_cell.translation: translation = np.asarray(opencg_cell.translation, dtype=np.float64) - openmc_cell.setTranslation(translation) + openmc_cell.translation = translation surfaces = opencg_cell.surfaces @@ -769,7 +769,7 @@ def get_opencg_universe(openmc_universe): for cell_id, openmc_cell in openmc_cells.items(): opencg_cell = get_opencg_cell(openmc_cell) - opencg_universe.addCell(opencg_cell) + opencg_universe.add_cell(opencg_cell) # Add the OpenMC Universe to the global collection of all OpenMC Universes OPENMC_UNIVERSES[universe_id] = openmc_universe @@ -892,14 +892,14 @@ def get_opencg_lattice(openmc_lattice): universe_array[z][y][x] = unique_universes[universe_id] opencg_lattice = opencg.Lattice(lattice_id, name) - opencg_lattice.setDimension(dimension) - opencg_lattice.setWidth(pitch) - opencg_lattice.setUniverses(universe_array) + opencg_lattice.dimension = dimension + opencg_lattice.width = pitch + opencg_lattice.universes = universe_array offset = np.array(lower_left, dtype=np.float64) - \ ((np.array(pitch, dtype=np.float64) * np.array(dimension, dtype=np.float64))) / -2.0 - opencg_lattice.setOffset(offset) + opencg_lattice.offset = offset # Add the OpenMC Lattice to the global collection of all OpenMC Lattices OPENMC_LATTICES[lattice_id] = openmc_lattice @@ -1015,8 +1015,8 @@ def get_opencg_geometry(openmc_geometry): opencg_root_universe = get_opencg_universe(openmc_root_universe) opencg_geometry = opencg.Geometry() - opencg_geometry.setRootUniverse(opencg_root_universe) - opencg_geometry.initializeCellOffsets() + opencg_geometry.root_universe = opencg_root_universe + opencg_geometry.initialize_cell_offsets() return opencg_geometry From 27548d6232b988eb0780000c5a2562a3707ca8c6 Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Fri, 2 Oct 2015 22:25:07 -0400 Subject: [PATCH 16/21] Allow mpif90 in run_tests.py --- tests/run_tests.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/run_tests.py b/tests/run_tests.py index d3b79aa3b1..70ea4c3dc9 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -126,7 +126,12 @@ class Test(object): # Check for MPI if self.mpi: - self.fc = os.path.join(MPI_DIR, 'bin', 'mpifort') + if os.path.exists(os.path.join(MPI_DIR, 'bin', 'mpifort')): + self.fc = os.path.join(MPI_DIR, 'bin', 'mpifort') + elif os.path.exists(os.path.join(MPI_DIR, 'bin', 'mpif90')): + self.fc = os.path.join(MPI_DIR, 'bin', 'mpif90') + else: + raise RuntimeError('Cannot find an MPI Fortran compiler') else: self.fc = FC From 221f026470c1c5d67ed0694d57b6ea9261200051 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 14:30:16 -0400 Subject: [PATCH 17/21] Now using property decorators for surface coeffs in OpenCG compatibility module --- docs/source/pythonapi/examples/geometry.xml | 38 ++++++++ .../pythonapi/examples/materials-xy.png | Bin 0 -> 1271 bytes docs/source/pythonapi/examples/materials.xml | 20 +++++ docs/source/pythonapi/examples/plots.xml | 8 ++ docs/source/pythonapi/examples/settings.xml | 21 +++++ docs/source/pythonapi/examples/tallies.xml | 23 +++++ .../tracks/128_angles_0.1_cm_spacing.data | Bin 0 -> 108911 bytes openmc/opencg_compatible.py | 82 +++++++++--------- 8 files changed, 151 insertions(+), 41 deletions(-) create mode 100644 docs/source/pythonapi/examples/geometry.xml create mode 100644 docs/source/pythonapi/examples/materials-xy.png create mode 100644 docs/source/pythonapi/examples/materials.xml create mode 100644 docs/source/pythonapi/examples/plots.xml create mode 100644 docs/source/pythonapi/examples/settings.xml create mode 100644 docs/source/pythonapi/examples/tallies.xml create mode 100644 docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data diff --git a/docs/source/pythonapi/examples/geometry.xml b/docs/source/pythonapi/examples/geometry.xml new file mode 100644 index 0000000000..8e9f1ef3d1 --- /dev/null +++ b/docs/source/pythonapi/examples/geometry.xml @@ -0,0 +1,38 @@ + + + + + + + + 1.26 1.26 + 17 17 + -10.71 -10.71 + +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 + + + + + + + + + + diff --git a/docs/source/pythonapi/examples/materials-xy.png b/docs/source/pythonapi/examples/materials-xy.png new file mode 100644 index 0000000000000000000000000000000000000000..534f7e5ff7251fbc6984a811cb22d37ea2df8c4e GIT binary patch literal 1271 zcmZ{kZB&wH7{_ljJ7-pN={b=rqgImUR4U5_0<%G2Qy`;BX__zP>(rBUL`@$h)2v)( zSr(d2%W9rv%#}qY&6l*Y$jq?WFlFTn3L2<@JkLE^pY~xNuIqRI&$<5p>(hM|aoNm; z_Fviq02T(Y=)qQ+Kh_*uYo8MRR&T}JSpOh@0Hi19TO#eO+9oZSxdqfeTQ*`9E23G! zK>%bD0Lab%WX>H1;2;rz(Y*kW$^pQoR>-#dS!Wk;19=Px;Q>d-k=#>3^43xR{MnCz zQQtG^;HaGo%PKxgW$j9{^5dHYwmwRv0$}?(fbP$WQ;mzs$!g*k1=&SocU~+gF18PG z-{d98uMjc0k-pkSeq}S0d&)K`()QLC%GXraZRU9H=SeFb6s|b@pkiR+G^_rHw?jut z6dudrtySi?t^H_2_@{)Ng59fQG6;jtxVF{XCLOvKrc*nUmt4Z|l$=?HpyMd2e!23XuuQ0( zxY4o}2C<#at8N@SA1D*uV=VIaC?2a$8({d?VU-=e*}`@cnTolIpLHdW2+1+<^_%xq zlpG(QI7dzbCNr$wlbM-X_g*q;$lAUf5!dz)GHD0wa9k)=?;^}Qd|}$hxo)aqysF21 zedQBz*@uG0+UwO_@{M8XtfE)H-^9lGG%Cu!rdcD)DGCT-@1ZHRCh|L&K52_hjFirM ziVuHNyWTMrd3=TD-g}``RM?Q$V|kjeqvq8kL5#h2+3j4D6IoTFLiwFMNHJYjHv3h; z<*{a6wo;LSX%b!i?m_nHa2F3)%1(^hAC*u&DAxt2w5#X5=ZqN>go)i{SY7p*@TF-I zm=G{y@)n=qz#fZ|H*h>Ja9Tcr-93lZsSA_Li@h#k(e28wo?PkP%@@zRBb|)s7PPBN zpzN~73k&Tu^b4ez#)Q?v`dE{hZ&-(^*DczTTGu+nynR3@M)LQ=~(jF`>b-&;BButEeKO>CGmk zol(*lA9#=E)Pb~D$_o@o&5$BmQPn#+j27l%p|X_KCPHV zhS8Q~cj1y=Bvw^bG%7z-3kd@j+->B93i*kQG}$0wW%%3F#a-6l?kZsL1u>C=eWd6E z`>X)#iR(6ct|NL9H}KYNAQ3l^Hg5JL`jCjk^;$3VKZYMuV&eB_{J-J5hO^cS20#FV KO|RdwSM(2?bdD_m literal 0 HcmV?d00001 diff --git a/docs/source/pythonapi/examples/materials.xml b/docs/source/pythonapi/examples/materials.xml new file mode 100644 index 0000000000..42c2e50292 --- /dev/null +++ b/docs/source/pythonapi/examples/materials.xml @@ -0,0 +1,20 @@ + + + 71c + + + + + + + + + + + + + + + + + diff --git a/docs/source/pythonapi/examples/plots.xml b/docs/source/pythonapi/examples/plots.xml new file mode 100644 index 0000000000..512070a33f --- /dev/null +++ b/docs/source/pythonapi/examples/plots.xml @@ -0,0 +1,8 @@ + + + + 0 0 0 + 21.5 21.5 + 250 250 + + diff --git a/docs/source/pythonapi/examples/settings.xml b/docs/source/pythonapi/examples/settings.xml new file mode 100644 index 0000000000..26a23e9421 --- /dev/null +++ b/docs/source/pythonapi/examples/settings.xml @@ -0,0 +1,21 @@ + + + + 2500 + 20 + 5 + + + + -10.71 -10.71 -10 10.71 10.71 10.0 + + + + false + true + + + true + 200 + + diff --git a/docs/source/pythonapi/examples/tallies.xml b/docs/source/pythonapi/examples/tallies.xml new file mode 100644 index 0000000000..61873a91d7 --- /dev/null +++ b/docs/source/pythonapi/examples/tallies.xml @@ -0,0 +1,23 @@ + + + + 17 17 + -10.71 -10.71 + 1.26 1.26 + + + + + fission nu-fission + + + + U-235 U-238 + scatter-y2 + + + + absorption scatter + + + diff --git a/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data b/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data new file mode 100644 index 0000000000000000000000000000000000000000..bbe6462a6c3b6855689590a0aaa161a18abec43c GIT binary patch literal 108911 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 lbx6l9p literal 0 HcmV?d00001 diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 000801ca2a..a6f90818f9 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -213,42 +213,42 @@ def get_opencg_surface(openmc_surface): opencg_surface = None if openmc_surface.type == 'plane': - A = openmc_surface.coeffs['A'] - B = openmc_surface.coeffs['B'] - C = openmc_surface.coeffs['C'] - D = openmc_surface.coeffs['D'] + A = openmc_surface.a + B = openmc_surface.b + C = openmc_surface.c + D = openmc_surface.d opencg_surface = opencg.Plane(surface_id, name, boundary, A, B, C, D) elif openmc_surface.type == 'x-plane': - x0 = openmc_surface.coeffs['x0'] + x0 = openmc_surface.y0 opencg_surface = opencg.XPlane(surface_id, name, boundary, x0) elif openmc_surface.type == 'y-plane': - y0 = openmc_surface.coeffs['y0'] + y0 = openmc_surface.y0 opencg_surface = opencg.YPlane(surface_id, name, boundary, y0) elif openmc_surface.type == 'z-plane': - z0 = openmc_surface.coeffs['z0'] + z0 = openmc_surface.z0 opencg_surface = opencg.ZPlane(surface_id, name, boundary, z0) elif openmc_surface.type == 'x-cylinder': - y0 = openmc_surface.coeffs['y0'] - z0 = openmc_surface.coeffs['z0'] - R = openmc_surface.coeffs['R'] + y0 = openmc_surface.y0 + z0 = openmc_surface.z0 + R = openmc_surface.r opencg_surface = opencg.XCylinder(surface_id, name, boundary, y0, z0, R) elif openmc_surface.type == 'y-cylinder': - x0 = openmc_surface.coeffs['x0'] - z0 = openmc_surface.coeffs['z0'] - R = openmc_surface.coeffs['R'] + x0 = openmc_surface.x0 + z0 = openmc_surface.z0 + R = openmc_surface.r opencg_surface = opencg.YCylinder(surface_id, name, boundary, x0, z0, R) elif openmc_surface.type == 'z-cylinder': - x0 = openmc_surface.coeffs['x0'] - y0 = openmc_surface.coeffs['y0'] - R = openmc_surface.coeffs['R'] + x0 = openmc_surface.x0 + y0 = openmc_surface.y0 + R = openmc_surface.r opencg_surface = opencg.ZCylinder(surface_id, name, boundary, x0, y0, R) @@ -297,40 +297,40 @@ def get_openmc_surface(opencg_surface): boundary = 'transmission' if opencg_surface.type == 'plane': - A = opencg_surface.coeffs['A'] - B = opencg_surface.coeffs['B'] - C = opencg_surface.coeffs['C'] - D = opencg_surface.coeffs['D'] + A = opencg_surface.a + B = opencg_surface.b + C = opencg_surface.c + D = opencg_surface.d openmc_surface = openmc.Plane(surface_id, boundary, A, B, C, D, name) elif opencg_surface.type == 'x-plane': - x0 = opencg_surface.coeffs['x0'] + x0 = opencg_surface.x0 openmc_surface = openmc.XPlane(surface_id, boundary, x0, name) elif opencg_surface.type == 'y-plane': - y0 = opencg_surface.coeffs['y0'] + y0 = opencg_surface.y0 openmc_surface = openmc.YPlane(surface_id, boundary, y0, name) elif opencg_surface.type == 'z-plane': - z0 = opencg_surface.coeffs['z0'] + z0 = opencg_surface.z0 openmc_surface = openmc.ZPlane(surface_id, boundary, z0, name) elif opencg_surface.type == 'x-cylinder': - y0 = opencg_surface.coeffs['y0'] - z0 = opencg_surface.coeffs['z0'] - R = opencg_surface.coeffs['R'] + y0 = opencg_surface.y0 + z0 = opencg_surface.z0 + R = opencg_surface.r openmc_surface = openmc.XCylinder(surface_id, boundary, y0, z0, R, name) elif opencg_surface.type == 'y-cylinder': - x0 = opencg_surface.coeffs['x0'] - z0 = opencg_surface.coeffs['z0'] - R = opencg_surface.coeffs['R'] + x0 = opencg_surface.x0 + z0 = opencg_surface.z0 + R = opencg_surface.r openmc_surface = openmc.YCylinder(surface_id, boundary, x0, z0, R, name) elif opencg_surface.type == 'z-cylinder': - x0 = opencg_surface.coeffs['x0'] - y0 = opencg_surface.coeffs['y0'] - R = opencg_surface.coeffs['R'] + x0 = opencg_surface.x0 + y0 = opencg_surface.y0 + R = opencg_surface.r openmc_surface = openmc.ZCylinder(surface_id, boundary, x0, y0, R, name) else: @@ -384,9 +384,9 @@ def get_compatible_opencg_surfaces(opencg_surface): boundary = opencg_surface.boundary_type if opencg_surface.type == 'x-squareprism': - y0 = opencg_surface.coeffs['y0'] - z0 = opencg_surface.coeffs['z0'] - R = opencg_surface.coeffs['R'] + y0 = opencg_surface.y0 + z0 = opencg_surface.z0 + R = opencg_surface.r # Create a list of the four planes we need left = opencg.YPlane(name=name, boundary=boundary, y0=y0-R) @@ -396,9 +396,9 @@ def get_compatible_opencg_surfaces(opencg_surface): surfaces = [left, right, bottom, top] elif opencg_surface.type == 'y-squareprism': - x0 = opencg_surface.coeffs['x0'] - z0 = opencg_surface.coeffs['z0'] - R = opencg_surface.coeffs['R'] + x0 = opencg_surface.x0 + z0 = opencg_surface.z0 + R = opencg_surface.r # Create a list of the four planes we need left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R) @@ -408,9 +408,9 @@ def get_compatible_opencg_surfaces(opencg_surface): surfaces = [left, right, bottom, top] elif opencg_surface.type == 'z-squareprism': - x0 = opencg_surface.coeffs['x0'] - y0 = opencg_surface.coeffs['y0'] - R = opencg_surface.coeffs['R'] + x0 = opencg_surface.x0['x0'] + y0 = opencg_surface.y0['y0'] + R = opencg_surface.r['R'] # Create a list of the four planes we need left = opencg.XPlane(name=name, boundary=boundary, x0=x0-R) From 02d6b99d782d2e125bed15235ffe0870ef9cf9b8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 14:30:53 -0400 Subject: [PATCH 18/21] Removed accidental commit of Python API generated xml files --- docs/source/pythonapi/examples/geometry.xml | 38 ------------------ .../pythonapi/examples/materials-xy.png | Bin 1271 -> 0 bytes docs/source/pythonapi/examples/materials.xml | 20 --------- docs/source/pythonapi/examples/plots.xml | 8 ---- docs/source/pythonapi/examples/settings.xml | 21 ---------- docs/source/pythonapi/examples/tallies.xml | 23 ----------- .../tracks/128_angles_0.1_cm_spacing.data | Bin 108911 -> 0 bytes 7 files changed, 110 deletions(-) delete mode 100644 docs/source/pythonapi/examples/geometry.xml delete mode 100644 docs/source/pythonapi/examples/materials-xy.png delete mode 100644 docs/source/pythonapi/examples/materials.xml delete mode 100644 docs/source/pythonapi/examples/plots.xml delete mode 100644 docs/source/pythonapi/examples/settings.xml delete mode 100644 docs/source/pythonapi/examples/tallies.xml delete mode 100644 docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data diff --git a/docs/source/pythonapi/examples/geometry.xml b/docs/source/pythonapi/examples/geometry.xml deleted file mode 100644 index 8e9f1ef3d1..0000000000 --- a/docs/source/pythonapi/examples/geometry.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - 1.26 1.26 - 17 17 - -10.71 -10.71 - -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 - - - - - - - - - - diff --git a/docs/source/pythonapi/examples/materials-xy.png b/docs/source/pythonapi/examples/materials-xy.png deleted file mode 100644 index 534f7e5ff7251fbc6984a811cb22d37ea2df8c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 zcmZ{kZB&wH7{_ljJ7-pN={b=rqgImUR4U5_0<%G2Qy`;BX__zP>(rBUL`@$h)2v)( zSr(d2%W9rv%#}qY&6l*Y$jq?WFlFTn3L2<@JkLE^pY~xNuIqRI&$<5p>(hM|aoNm; z_Fviq02T(Y=)qQ+Kh_*uYo8MRR&T}JSpOh@0Hi19TO#eO+9oZSxdqfeTQ*`9E23G! zK>%bD0Lab%WX>H1;2;rz(Y*kW$^pQoR>-#dS!Wk;19=Px;Q>d-k=#>3^43xR{MnCz zQQtG^;HaGo%PKxgW$j9{^5dHYwmwRv0$}?(fbP$WQ;mzs$!g*k1=&SocU~+gF18PG z-{d98uMjc0k-pkSeq}S0d&)K`()QLC%GXraZRU9H=SeFb6s|b@pkiR+G^_rHw?jut z6dudrtySi?t^H_2_@{)Ng59fQG6;jtxVF{XCLOvKrc*nUmt4Z|l$=?HpyMd2e!23XuuQ0( zxY4o}2C<#at8N@SA1D*uV=VIaC?2a$8({d?VU-=e*}`@cnTolIpLHdW2+1+<^_%xq zlpG(QI7dzbCNr$wlbM-X_g*q;$lAUf5!dz)GHD0wa9k)=?;^}Qd|}$hxo)aqysF21 zedQBz*@uG0+UwO_@{M8XtfE)H-^9lGG%Cu!rdcD)DGCT-@1ZHRCh|L&K52_hjFirM ziVuHNyWTMrd3=TD-g}``RM?Q$V|kjeqvq8kL5#h2+3j4D6IoTFLiwFMNHJYjHv3h; z<*{a6wo;LSX%b!i?m_nHa2F3)%1(^hAC*u&DAxt2w5#X5=ZqN>go)i{SY7p*@TF-I zm=G{y@)n=qz#fZ|H*h>Ja9Tcr-93lZsSA_Li@h#k(e28wo?PkP%@@zRBb|)s7PPBN zpzN~73k&Tu^b4ez#)Q?v`dE{hZ&-(^*DczTTGu+nynR3@M)LQ=~(jF`>b-&;BButEeKO>CGmk zol(*lA9#=E)Pb~D$_o@o&5$BmQPn#+j27l%p|X_KCPHV zhS8Q~cj1y=Bvw^bG%7z-3kd@j+->B93i*kQG}$0wW%%3F#a-6l?kZsL1u>C=eWd6E z`>X)#iR(6ct|NL9H}KYNAQ3l^Hg5JL`jCjk^;$3VKZYMuV&eB_{J-J5hO^cS20#FV KO|RdwSM(2?bdD_m diff --git a/docs/source/pythonapi/examples/materials.xml b/docs/source/pythonapi/examples/materials.xml deleted file mode 100644 index 42c2e50292..0000000000 --- a/docs/source/pythonapi/examples/materials.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 71c - - - - - - - - - - - - - - - - - diff --git a/docs/source/pythonapi/examples/plots.xml b/docs/source/pythonapi/examples/plots.xml deleted file mode 100644 index 512070a33f..0000000000 --- a/docs/source/pythonapi/examples/plots.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - 0 0 0 - 21.5 21.5 - 250 250 - - diff --git a/docs/source/pythonapi/examples/settings.xml b/docs/source/pythonapi/examples/settings.xml deleted file mode 100644 index 26a23e9421..0000000000 --- a/docs/source/pythonapi/examples/settings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 2500 - 20 - 5 - - - - -10.71 -10.71 -10 10.71 10.71 10.0 - - - - false - true - - - true - 200 - - diff --git a/docs/source/pythonapi/examples/tallies.xml b/docs/source/pythonapi/examples/tallies.xml deleted file mode 100644 index 61873a91d7..0000000000 --- a/docs/source/pythonapi/examples/tallies.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - 17 17 - -10.71 -10.71 - 1.26 1.26 - - - - - fission nu-fission - - - - U-235 U-238 - scatter-y2 - - - - absorption scatter - - - diff --git a/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data b/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data deleted file mode 100644 index bbe6462a6c3b6855689590a0aaa161a18abec43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108911 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 lbx6l9p From d193a1eb0b44c5430ea709a9133e69e3d6fa40c1 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 14:33:28 -0400 Subject: [PATCH 19/21] Removed Cel.fill property in place of Cell.fill_type --- openmc/universe.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openmc/universe.py b/openmc/universe.py index 9516192802..ef89780e1f 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -85,8 +85,15 @@ class Cell(object): return self._fill @property - def type(self): - return self._fill + def fill_type(self): + if isinstance(self.fill, openmc.Material): + return 'material' + elif isinstance(self.fill, openmc.Universe): + return 'universe' + elif isinstance(self.fill, openmc.Lattice): + return 'lattice' + else: + return None @property def surfaces(self): From e7cba5b22c39834869290e1c88da8c0e085485be Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 14:54:46 -0400 Subject: [PATCH 20/21] Fixed minor issues with OpenCG surface coefficient properties in compatibility module --- openmc/opencg_compatible.py | 2 +- openmc/surface.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index a6f90818f9..1cdf8e8756 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -220,7 +220,7 @@ def get_opencg_surface(openmc_surface): opencg_surface = opencg.Plane(surface_id, name, boundary, A, B, C, D) elif openmc_surface.type == 'x-plane': - x0 = openmc_surface.y0 + x0 = openmc_surface.x0 opencg_surface = opencg.XPlane(surface_id, name, boundary, x0) elif openmc_surface.type == 'y-plane': diff --git a/openmc/surface.py b/openmc/surface.py index 164bbd09bf..063787ce34 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -275,7 +275,7 @@ class XPlane(Plane): @property def x0(self): - return self.coeff['x0'] + return self.coeffs['x0'] @x0.setter def x0(self, x0): From e02a9114897532abd2e247f740719caac4a94cfa Mon Sep 17 00:00:00 2001 From: Sterling Harper Date: Sat, 3 Oct 2015 16:01:37 -0400 Subject: [PATCH 21/21] Fix PyAPI summary S(alpha,beta) bug Material needs to be instantiated before trying to add sab to it --- openmc/summary.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/openmc/summary.py b/openmc/summary.py index 2ae7464846..f3952f9b41 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -72,6 +72,9 @@ class Summary(object): nuc_densities = self._f['materials'][key]['nuclide_densities'][...] nuclides = self._f['materials'][key]['nuclides'].value + # Create the Material + material = openmc.Material(material_id=material_id, name=name) + # Read the names of the S(a,b) tables for this Material and add them if 'sab_names' in self._f['materials'][key]: sab_tables = self._f['materials'][key]['sab_names'].value @@ -79,10 +82,8 @@ class Summary(object): name, xs = sab_table.decode().split('.') material.add_s_alpha_beta(name, xs) - # Create the Material - material = openmc.Material(material_id=material_id, name=name) - - # Set the Material's density to g/cm3 - this is what is used in OpenMC + # Set the Material's density to g/cm3 - this is what is used in + # OpenMC material.set_density(density=density, units='g/cm3') # Add all nuclides to the Material