Skip to content

Commit 2b28ec1

Browse files
authored
Merge pull request #50 from pshriwise/universe_levels
Plotting by universe level
2 parents fa699db + 853e778 commit 2b28ec1

4 files changed

Lines changed: 47 additions & 4 deletions

File tree

openmc_plotter/docks.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,14 @@ def _createOptionsBox(self):
145145
self.colorbyBox.currentTextChanged[str].connect(
146146
self.main_window.editColorBy)
147147

148+
# Universe level (applies to cell coloring only)
149+
self.universeLevelBox = QComboBox(self)
150+
self.universeLevelBox.addItem('all')
151+
for i in range(self.model.max_universe_levels):
152+
self.universeLevelBox.addItem(str(i))
153+
self.universeLevelBox.currentTextChanged[str].connect(
154+
self.main_window.editUniverseLevel)
155+
148156
# Alpha
149157
self.domainAlphaBox = QDoubleSpinBox(self)
150158
self.domainAlphaBox.setValue(self.model.activeView.domainAlpha)
@@ -180,6 +188,7 @@ def _createOptionsBox(self):
180188
self.opLayout.addRow('Height:', self.heightBox)
181189
self.opLayout.addRow('Basis:', self.basisBox)
182190
self.opLayout.addRow('Color By:', self.colorbyBox)
191+
self.opLayout.addRow('Universe Level:', self.universeLevelBox)
183192
self.opLayout.addRow('Plot alpha:', self.domainAlphaBox)
184193
self.opLayout.addRow('Visible:', self.visibilityBox)
185194
self.opLayout.addRow('Outlines:', self.outlinesBox)
@@ -229,6 +238,7 @@ def updateDock(self):
229238
self.updateWidth()
230239
self.updateHeight()
231240
self.updateColorBy()
241+
self.updateUniverseLevel()
232242
self.updatePlotAlpha()
233243
self.updatePlotVisibility()
234244
self.updateOutlines()
@@ -250,6 +260,13 @@ def updateHeight(self):
250260

251261
def updateColorBy(self):
252262
self.colorbyBox.setCurrentText(self.model.activeView.colorby)
263+
if self.model.activeView.colorby != 'cell':
264+
self.universeLevelBox.setEnabled(False)
265+
else:
266+
self.universeLevelBox.setEnabled(True)
267+
268+
def updateUniverseLevel(self):
269+
self.universeLevelBox.setCurrentIndex(self.model.activeView.level + 1)
253270

254271
def updatePlotAlpha(self):
255272
self.domainAlphaBox.setValue(self.model.activeView.domainAlpha)

openmc_plotter/main_window.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from .overlays import ShortcutsOverlay
2727
from .tools import ExportDataDialog
2828

29+
_COORD_LEVELS = 0
2930

3031
def _openmcReload():
3132
# reset OpenMC memory, instances
@@ -35,7 +36,6 @@ def _openmcReload():
3536
openmc.lib.settings.output_summary = False
3637
openmc.lib.init(["-c"])
3738

38-
3939
class MainWindow(QMainWindow):
4040
def __init__(self, font=QtGui.QFontMetrics(QtGui.QFont()), screen_size=QtCore.QSize()):
4141
super().__init__()
@@ -627,6 +627,16 @@ def editColorBy(self, domain_kind, apply=False):
627627
if apply:
628628
self.applyChanges()
629629

630+
def editUniverseLevel(self, level, apply=False):
631+
if level == 'all':
632+
self.model.activeView.level = -1
633+
else:
634+
self.model.activeView.level = int(level)
635+
self.dock.updateUniverseLevel()
636+
self.colorDialog.updateUniverseLevel()
637+
if apply:
638+
self.applyChanges()
639+
630640
def toggleOverlaps(self, state, apply=False):
631641
self.model.activeView.color_overlaps = bool(state)
632642
self.colorDialog.updateOverlap()

openmc_plotter/plotgui.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,13 @@ def createGeneralTab(self):
776776
self.colorbyBox.addItem("cell")
777777
self.colorbyBox.addItem("temperature")
778778
self.colorbyBox.addItem("density")
779+
self.colorbyBox.currentTextChanged[str].connect(main_window.editColorBy)
780+
781+
self.universeLevelBox = QComboBox(self)
782+
self.universeLevelBox.addItem('all')
783+
for i in range(self.model.max_universe_levels):
784+
self.universeLevelBox.addItem(str(i))
785+
self.universeLevelBox.currentTextChanged[str].connect(main_window.editUniverseLevel)
779786

780787
# Overlap plotting
781788
self.overlapCheck = QCheckBox('', self)
@@ -788,8 +795,6 @@ def createGeneralTab(self):
788795
self.overlapColorButton.setFixedHeight(self.font_metric.height() * 1.5)
789796
self.overlapColorButton.clicked.connect(main_window.editOverlapColor)
790797

791-
self.colorbyBox.currentTextChanged[str].connect(main_window.editColorBy)
792-
793798
self.colorResetButton = QPushButton("&Reset Colors")
794799
self.colorResetButton.setCursor(QtCore.Qt.PointingHandCursor)
795800
self.colorResetButton.clicked.connect(main_window.resetColors)
@@ -813,6 +818,7 @@ def createGeneralTab(self):
813818
formLayout.addRow('OVerlap Color:', self.overlapColorButton)
814819
formLayout.addRow(HorizontalLine())
815820
formLayout.addRow('Color Plot By:', self.colorbyBox)
821+
formLayout.addRow('Universe Level:', self.universeLevelBox)
816822
formLayout.addRow(self.colorResetButton, None)
817823

818824
generalLayout = QHBoxLayout()
@@ -973,6 +979,7 @@ def updateDialogValues(self):
973979
self.updateSeed()
974980
self.updateBackgroundColor()
975981
self.updateColorBy()
982+
self.updateUniverseLevel()
976983
self.updateDomainTabs()
977984
self.updateOverlap()
978985
self.updateOverlapColor()
@@ -1049,6 +1056,14 @@ def updateColorBy(self):
10491056
colorby = self.model.activeView.colorby
10501057
self.colorbyBox.setCurrentText(colorby)
10511058
self.overlapCheck.setEnabled(colorby in ("cell", "material"))
1059+
self.universeLevelBox.setEnabled(colorby == 'cell')
1060+
1061+
def updateUniverseLevel(self):
1062+
level = self.model.activeView.level
1063+
if level == -1:
1064+
self.universeLevelBox.setCurrentText('all')
1065+
else:
1066+
self.universeLevelBox.setCurrentText(str(level))
10521067

10531068
def updateDomainTabs(self):
10541069
self.cellTable.setModel(self.main_window.cellsModel)

openmc_plotter/plotmodel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ def __init__(self):
9696
# Retrieve OpenMC Cells/Materials
9797
self.modelCells = openmc.lib.cells
9898
self.modelMaterials = openmc.lib.materials
99+
self.max_universe_levels = openmc.lib._coord_levels()
99100

100101
# Cell/Material ID by coordinates
101102
self.ids = None
@@ -791,7 +792,7 @@ def urc(self):
791792
else:
792793
x = self.origin[0] + self.width / 2.0
793794
y = self.origin[1]
794-
z = self.origin[2] + height / 2.0
795+
z = self.origin[2] + self.height / 2.0
795796
return x, y, z
796797

797798
def adopt_plotbase(self, view):

0 commit comments

Comments
 (0)