mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 13:45:36 -04:00
Use collections.Sequence, numbers.Real, and numbers.Integral for checking for
appropriate types. This eliminates the checkvalue module.
This commit is contained in:
parent
286b0eabe6
commit
5aaf9974e9
14 changed files with 340 additions and 341 deletions
|
|
@ -1,13 +0,0 @@
|
|||
import numpy as np
|
||||
|
||||
|
||||
def is_integer(val):
|
||||
return isinstance(val, (int, np.int32, np.int64))
|
||||
|
||||
|
||||
def is_float(val):
|
||||
return isinstance(val, (float, np.float32, np.float64))
|
||||
|
||||
|
||||
def is_string(val):
|
||||
return isinstance(val, (str, np.str))
|
||||
113
openmc/cmfd.py
113
openmc/cmfd.py
|
|
@ -10,13 +10,18 @@ References
|
|||
|
||||
"""
|
||||
|
||||
from collections import Sequence
|
||||
from numbers import Real, Integral
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
|
||||
from openmc.checkvalue import *
|
||||
from openmc.clean_xml import *
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
|
||||
class CMFDMesh(object):
|
||||
"""A structured Cartesian mesh used for Coarse Mesh Finite Difference (CMFD)
|
||||
|
|
@ -24,26 +29,26 @@ class CMFDMesh(object):
|
|||
|
||||
Attributes
|
||||
----------
|
||||
lower_left : tuple or list or ndarray
|
||||
lower_left : Sequence of float
|
||||
The lower-left corner of the structured mesh. If only two coordinates are
|
||||
given, it is assumed that the mesh is an x-y mesh.
|
||||
upper_right : tuple or list or ndarray
|
||||
upper_right : Sequence of float
|
||||
The upper-right corner of the structrued mesh. If only two coordinates
|
||||
are given, it is assumed that the mesh is an x-y mesh.
|
||||
dimension : tuple or list or ndarray
|
||||
dimension : Sequence of int
|
||||
The number of mesh cells in each direction.
|
||||
width : tuple or list or ndarray
|
||||
width : Sequence of float
|
||||
The width of mesh cells in each direction.
|
||||
energy : tuple or list or ndarray
|
||||
energy : Sequence of float
|
||||
Energy bins in MeV, listed in ascending order (e.g. [0.0, 0.625e-7,
|
||||
20.0]) for CMFD tallies and acceleration. If no energy bins are listed,
|
||||
OpenMC automatically assumes a one energy group calculation over the
|
||||
entire energy range.
|
||||
albedo : tuple or list or ndarray
|
||||
albedo : Sequence of float
|
||||
Surface ratio of incoming to outgoing partial currents on global
|
||||
boundary conditions. They are listed in the following order: -x +x -y +y
|
||||
-z +z.
|
||||
map : tuple or list or ndarray
|
||||
map : Sequence of int
|
||||
An optional acceleration map can be specified to overlay on the coarse
|
||||
mesh spatial grid. If this option is used, a ``1`` is used for a
|
||||
non-accelerated region and a ``2`` is used for an accelerated region.
|
||||
|
|
@ -103,9 +108,9 @@ class CMFDMesh(object):
|
|||
|
||||
@lower_left.setter
|
||||
def lower_left(self, lower_left):
|
||||
if not isinstance(lower_left, (tuple, list, np.ndarray)):
|
||||
if not isinstance(lower_left, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh with lower_left {0} which is ' \
|
||||
'not a Python list, tuple or NumPy array'.format(lower_left)
|
||||
'not a sequence'.format(lower_left)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(lower_left) != 2 and len(lower_left) != 3:
|
||||
|
|
@ -114,9 +119,9 @@ class CMFDMesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for coord in lower_left:
|
||||
if not is_integer(coord) and not is_float(coord):
|
||||
if not isinstance(coord, Real):
|
||||
msg = 'Unable to set CMFD Mesh with lower_left {0} which is ' \
|
||||
'not an integer or a floating point value'.format(coord)
|
||||
'not a real number'.format(coord)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._lower_left = lower_left
|
||||
|
|
@ -124,9 +129,9 @@ class CMFDMesh(object):
|
|||
@upper_right.setter
|
||||
def upper_right(self, upper_right):
|
||||
|
||||
if not isinstance(upper_right, (tuple, list, np.ndarray)):
|
||||
if not isinstance(upper_right, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh with upper_right {0} which is ' \
|
||||
'not a Python list, tuple or NumPy array'.format(upper_right)
|
||||
'not a sequence'.format(upper_right)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(upper_right) != 2 and len(upper_right) != 3:
|
||||
|
|
@ -135,18 +140,18 @@ class CMFDMesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for coord in upper_right:
|
||||
if not is_integer(coord) and not is_float(coord):
|
||||
if not isinstance(coord, Real):
|
||||
msg = 'Unable to set CMFD Mesh with upper_right {0} which ' \
|
||||
'is not an integer or floating point value'.format(coord)
|
||||
'is not a real number'.format(coord)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._upper_right = upper_right
|
||||
|
||||
@dimension.setter
|
||||
def dimension(self, dimension):
|
||||
if not isinstance(dimension, (tuple, list, np.ndarray)):
|
||||
if not isinstance(dimension, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh with dimension {0} which is ' \
|
||||
'not a Python list, tuple or NumPy array'.format(dimension)
|
||||
'not a sequence'.format(dimension)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(dimension) != 2 and len(dimension) != 3:
|
||||
|
|
@ -155,7 +160,7 @@ class CMFDMesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in dimension:
|
||||
if not is_integer(dim):
|
||||
if not isinstance(dim, Integral):
|
||||
msg = 'Unable to set CMFD Mesh with dimension {0} which ' \
|
||||
'is a non-integer'.format(dim)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -165,9 +170,9 @@ class CMFDMesh(object):
|
|||
@width.setter
|
||||
def width(self, width):
|
||||
if width is not None:
|
||||
if not isinstance(width, (tuple, list, np.ndarray)):
|
||||
if not isinstance(width, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh with width {0} which ' \
|
||||
'is not a Python list, tuple or NumPy array'.format(width)
|
||||
'is not a sequence'.format(width)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(width) != 2 and len(width) != 3:
|
||||
|
|
@ -176,24 +181,24 @@ class CMFDMesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in width:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set CMFD Mesh with width {0} which is ' \
|
||||
'not an integer or floating point value'.format(width)
|
||||
'not a real number'.format(width)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._width = width
|
||||
|
||||
@energy.setter
|
||||
def energy(self, energy):
|
||||
if not isinstance(energy, (tuple, list, np.ndarray)):
|
||||
if not isinstance(energy, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh energy to {0} which is not ' \
|
||||
'a Python tuple/list or NumPy array'.format(energy)
|
||||
'a sequence'.format(energy)
|
||||
raise ValueError(msg)
|
||||
|
||||
for e in energy:
|
||||
if not is_integer(e) and not is_float(e):
|
||||
if not isinstance(e, Real):
|
||||
msg = 'Unable to set CMFD Mesh energy to {0} which is not ' \
|
||||
'an integer or floating point value'.format(e)
|
||||
'a real number'.format(e)
|
||||
raise ValueError(msg)
|
||||
elif e < 0:
|
||||
msg = 'Unable to set CMFD Mesh energy to {0} which is ' \
|
||||
|
|
@ -204,9 +209,9 @@ class CMFDMesh(object):
|
|||
|
||||
@albedo.setter
|
||||
def albedo(self, albedo):
|
||||
if not isinstance(albedo, (tuple, list, np.ndarray)):
|
||||
if not isinstance(albedo, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh albedo to {0} which is not ' \
|
||||
'a Python tuple/list or NumPy array'.format(albedo)
|
||||
'a sequence'.format(albedo)
|
||||
raise ValueError(msg)
|
||||
|
||||
if not len(albedo) == 6:
|
||||
|
|
@ -215,9 +220,9 @@ class CMFDMesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for a in albedo:
|
||||
if not is_integer(a) and not is_float(a):
|
||||
if not isinstance(a, Real):
|
||||
msg = 'Unable to set CMFD Mesh albedo to {0} which is not ' \
|
||||
'an integer or floating point value'.format(a)
|
||||
'a real number'.format(a)
|
||||
raise ValueError(msg)
|
||||
elif a < 0 or a > 1:
|
||||
msg = 'Unable to set CMFD Mesh albedo to {0} which is ' \
|
||||
|
|
@ -229,9 +234,9 @@ class CMFDMesh(object):
|
|||
@map.setter
|
||||
def map(self, map):
|
||||
|
||||
if not isinstance(map, (tuple, list, np.ndarray)):
|
||||
if not isinstance(map, Sequence):
|
||||
msg = 'Unable to set CMFD Mesh map to {0} which is not ' \
|
||||
'a Python tuple/list or NumPy array'.format(map)
|
||||
'a sequence'.format(map)
|
||||
raise ValueError(msg)
|
||||
|
||||
for m in map:
|
||||
|
|
@ -301,7 +306,7 @@ class CMFDFile(object):
|
|||
feedback : bool
|
||||
Indicate or not the CMFD diffusion result is used to adjust the weight
|
||||
of fission source neutrons on the next OpenMC batch. Defaults to False.
|
||||
gauss_seidel_tolerance : tuple or list or ndarray of float
|
||||
gauss_seidel_tolerance : Sequence of float
|
||||
Two parameters specifying the absolute inner tolerance and the relative
|
||||
inner tolerance for Gauss-Seidel iterations when performing CMFD.
|
||||
ktol : float
|
||||
|
|
@ -417,7 +422,7 @@ class CMFDFile(object):
|
|||
|
||||
@begin.setter
|
||||
def begin(self, begin):
|
||||
if not is_integer(begin):
|
||||
if not isinstance(begin, Integral):
|
||||
msg = 'Unable to set CMFD begin batch to a non-integer ' \
|
||||
'value {0}'.format(begin)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -440,7 +445,7 @@ class CMFDFile(object):
|
|||
|
||||
@display.setter
|
||||
def display(self, display):
|
||||
if not is_string(display):
|
||||
if not isinstance(basestring):
|
||||
msg = 'Unable to set CMFD display to a non-string ' \
|
||||
'value'.format(display)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -472,10 +477,9 @@ class CMFDFile(object):
|
|||
|
||||
@gauss_seidel_tolerance.setter
|
||||
def gauss_seidel_tolerance(self, gauss_seidel_tolerance):
|
||||
if not isinstance(gauss_seidel_tolerance, (float, list, np.ndarray)):
|
||||
if not isinstance(gauss_seidel_tolerance, Sequence):
|
||||
msg = 'Unable to set Gauss-Seidel tolerance to {0} which is ' \
|
||||
'not a Python tuple/list or NumPy array'.format(
|
||||
gauss_seidel_tolerance)
|
||||
'not a sequence'.format(gauss_seidel_tolerance)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(gauss_seidel_tolerance) != 2:
|
||||
|
|
@ -484,18 +488,18 @@ class CMFDFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for t in gauss_seidel_tolerance:
|
||||
if not is_integer(t) and not is_float(t):
|
||||
if not isinstance(t, Real):
|
||||
msg = 'Unable to set Gauss-Seidel tolerance with {0} which ' \
|
||||
'is not an integer or floating point value'.format(t)
|
||||
'is not a real number'.format(t)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._gauss_seidel_tolerance = gauss_seidel_tolerance
|
||||
|
||||
@ktol.setter
|
||||
def ktol(self, ktol):
|
||||
if not is_integer(ktol) and not is_float(ktol):
|
||||
if not isinstance(ktol, Real):
|
||||
msg = 'Unable to set the eigenvalue tolerance to {0} which is ' \
|
||||
'not an integer or floating point value'.format(ktol)
|
||||
'not a real number'.format(ktol)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._ktol = ktol
|
||||
|
|
@ -511,9 +515,9 @@ class CMFDFile(object):
|
|||
|
||||
@norm.setter
|
||||
def norm(self, norm):
|
||||
if not is_integer(norm) and not is_float(norm):
|
||||
if not isinstance(norm, Real):
|
||||
msg = 'Unable to set the CMFD norm to {0} which is not ' \
|
||||
'an integer or floating point value'.format(norm)
|
||||
'a real number'.format(norm)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._norm = norm
|
||||
|
|
@ -538,41 +542,40 @@ class CMFDFile(object):
|
|||
|
||||
@shift.setter
|
||||
def shift(self, shift):
|
||||
if not is_integer(shift) and not is_float(shift):
|
||||
if not isinstance(shift, Real):
|
||||
msg = 'Unable to set the Wielandt shift to {0} which is ' \
|
||||
'not an integer or floating point value'.format(shift)
|
||||
'not a real number'.format(shift)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._shift = shift
|
||||
|
||||
@spectral.setter
|
||||
def spectral(self, spectral):
|
||||
if not is_integer(spectral) and not is_float(spectral):
|
||||
if not isinstance(spectral, Real):
|
||||
msg = 'Unable to set the spectral radius to {0} which is ' \
|
||||
'not an integer or floating point value'.format(spectral)
|
||||
'not a real number'.format(spectral)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._spectral = spectral
|
||||
|
||||
@stol.setter
|
||||
def stol(self, stol):
|
||||
if not is_integer(stol) and not is_float(stol):
|
||||
if not isinstance(stol, Real):
|
||||
msg = 'Unable to set the fission source tolerance to {0} which ' \
|
||||
'is not an integer or floating point value'.format(stol)
|
||||
'is not a real number'.format(stol)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._stol = stol
|
||||
|
||||
@tally_reset.setter
|
||||
def tally_reset(self, tally_reset):
|
||||
if not isinstance(tally_reset, (tuple, list, np.ndarray)):
|
||||
if not isinstance(tally_reset, Sequence):
|
||||
msg = 'Unable to set tally reset batches to {0} which is ' \
|
||||
'not a Python tuple/list or NumPy array'.format(
|
||||
tally_reset)
|
||||
'not a sequence'.format(tally_reset)
|
||||
raise ValueError(msg)
|
||||
|
||||
for t in tally_reset:
|
||||
if not is_integer(t):
|
||||
if not isinstance(t, Integral):
|
||||
msg = 'Unable to set tally reset batch to {0} which ' \
|
||||
'is not an integer'.format(t)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
from openmc.checkvalue import *
|
||||
import sys
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
|
||||
class Element(object):
|
||||
|
|
@ -59,7 +61,7 @@ class Element(object):
|
|||
|
||||
@xs.setter
|
||||
def xs(self, xs):
|
||||
if not is_string(xs):
|
||||
if not isinstance(xs, basestring):
|
||||
msg = 'Unable to set cross-section identifier xs for Element ' \
|
||||
'with a non-string value {0}'.format(xs)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -68,7 +70,7 @@ class Element(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Element with a non-string ' \
|
||||
'value {0}'.format(name)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
from __future__ import print_function
|
||||
import subprocess
|
||||
from numbers import Integral
|
||||
import os
|
||||
|
||||
from openmc.checkvalue import *
|
||||
import sys
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
|
||||
class Executor(object):
|
||||
|
|
@ -39,7 +41,7 @@ class Executor(object):
|
|||
|
||||
@working_directory.setter
|
||||
def working_directory(self, working_directory):
|
||||
if not is_string(working_directory):
|
||||
if not isinstance(working_directory, basestring):
|
||||
msg = 'Unable to set Executor\'s working directory to {0} ' \
|
||||
'since it is not a string'.format(working_directory)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -83,22 +85,22 @@ class Executor(object):
|
|||
post_args = ' '
|
||||
pre_args = ''
|
||||
|
||||
if is_integer(particles) and particles > 0:
|
||||
if isinstance(particles, Integral) and particles > 0:
|
||||
post_args += '-n {0} '.format(particles)
|
||||
|
||||
if is_integer(threads) and threads > 0:
|
||||
if isinstance(threads, Integral) and threads > 0:
|
||||
post_args += '-s {0} '.format(threads)
|
||||
|
||||
if geometry_debug:
|
||||
post_args += '-g '
|
||||
|
||||
if is_string(restart_file):
|
||||
if isinstance(restart_file, basestring):
|
||||
post_args += '-r {0} '.format(restart_file)
|
||||
|
||||
if tracks:
|
||||
post_args += '-t'
|
||||
|
||||
if is_integer(mpi_procs) and mpi_procs > 1:
|
||||
if isinstance(mpi_procs, Integral) and mpi_procs > 1:
|
||||
pre_args += 'mpirun -n {0} '.format(mpi_procs)
|
||||
|
||||
command = pre_args + 'openmc ' + post_args
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
from collections import Sequence
|
||||
import copy
|
||||
from numbers import Real, Integral
|
||||
|
||||
from openmc import Mesh
|
||||
from openmc.checkvalue import *
|
||||
from openmc.constants import *
|
||||
|
||||
|
||||
|
|
@ -15,7 +16,7 @@ class Filter(object):
|
|||
The type of the tally filter. Acceptable values are "universe",
|
||||
"material", "cell", "cellborn", "surface", "mesh", "energy",
|
||||
"energyout", and "distribcell".
|
||||
bins : int or list of int or list of float or ndarray
|
||||
bins : int or Sequence of int or Sequence of float
|
||||
The bins for the filter. This takes on different meaning for different
|
||||
filters.
|
||||
|
||||
|
|
@ -23,7 +24,7 @@ class Filter(object):
|
|||
----------
|
||||
type : str
|
||||
The type of the tally filter.
|
||||
bins : int or list of int or list of float or ndarray
|
||||
bins : int or Sequence of int or Sequence of float
|
||||
The bins for the filter
|
||||
|
||||
"""
|
||||
|
|
@ -122,7 +123,7 @@ class Filter(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
# If the bin edge is a single value, it is a Cell, Material, etc. ID
|
||||
if not isinstance(bins, (tuple, list, np.ndarray)):
|
||||
if not isinstance(bins, Sequence):
|
||||
bins = [bins]
|
||||
|
||||
# If the bins are in a collection, convert it to a list
|
||||
|
|
@ -132,7 +133,7 @@ class Filter(object):
|
|||
if self._type in ['cell', 'cellborn', 'surface', 'material',
|
||||
'universe', 'distribcell']:
|
||||
for edge in bins:
|
||||
if not is_integer(edge):
|
||||
if not isinstance(edge, Integral):
|
||||
msg = 'Unable to add bin "{0}" to a {1} Filter since ' \
|
||||
'it is a non-integer'.format(edge, self._type)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -143,7 +144,7 @@ class Filter(object):
|
|||
|
||||
elif self._type in ['energy', 'energyout']:
|
||||
for edge in bins:
|
||||
if not is_integer(edge) and not is_float(edge):
|
||||
if not isinstance(edge, Real):
|
||||
msg = 'Unable to add bin edge "{0}" to a {1} Filter ' \
|
||||
'since it is a non-integer or floating point ' \
|
||||
'value'.format(edge, self._type)
|
||||
|
|
@ -167,7 +168,7 @@ class Filter(object):
|
|||
msg = 'Unable to add bins "{0}" to a mesh Filter since ' \
|
||||
'only a single mesh can be used per tally'.format(bins)
|
||||
raise ValueError(msg)
|
||||
elif not is_integer(bins[0]):
|
||||
elif not isinstance(bins[0], Integral):
|
||||
msg = 'Unable to add bin "{0}" to mesh Filter since it ' \
|
||||
'is a non-integer'.format(bins[0])
|
||||
raise ValueError(msg)
|
||||
|
|
@ -182,7 +183,7 @@ class Filter(object):
|
|||
# FIXME
|
||||
@num_bins.setter
|
||||
def num_bins(self, num_bins):
|
||||
if not is_integer(num_bins) or num_bins < 0:
|
||||
if not isinstance(num_bins, Integral) or num_bins < 0:
|
||||
msg = 'Unable to set the number of bins "{0}" for a {1} Filter ' \
|
||||
'since it is not a positive ' \
|
||||
'integer'.format(num_bins, self._type)
|
||||
|
|
@ -203,7 +204,7 @@ class Filter(object):
|
|||
|
||||
@offset.setter
|
||||
def offset(self, offset):
|
||||
if not is_integer(offset):
|
||||
if not isinstance(offset, Integral):
|
||||
msg = 'Unable to set offset "{0}" for a {1} Filter since it is a ' \
|
||||
'non-integer value'.format(offset, self._type)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -212,7 +213,7 @@ class Filter(object):
|
|||
|
||||
@stride.setter
|
||||
def stride(self, stride):
|
||||
if not is_integer(stride):
|
||||
if not isinstance(stride, Integral):
|
||||
msg = 'Unable to set stride "{0}" for a {1} Filter since it is a ' \
|
||||
'non-integer value'.format(stride, self._type)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
from collections import MappingView
|
||||
from collections import Sequence
|
||||
from copy import deepcopy
|
||||
from numbers import Real, Integral
|
||||
import warnings
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
import openmc
|
||||
from openmc.checkvalue import *
|
||||
from openmc.clean_xml import *
|
||||
|
||||
|
||||
|
|
@ -117,7 +120,7 @@ class Material(object):
|
|||
AUTO_MATERIAL_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(material_id):
|
||||
elif not isinstance(material_id, Integral):
|
||||
msg = 'Unable to set a non-integer Material ' \
|
||||
'ID {0}'.format(material_id)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -138,7 +141,7 @@ class Material(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Material ID={0} with a non-string ' \
|
||||
'value {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -183,7 +186,7 @@ class Material(object):
|
|||
warnings.warn('This feature is not yet implemented in a release '
|
||||
'version of openmc')
|
||||
|
||||
if not is_string(filename) and filename is not None:
|
||||
if not isinstance(filename, basestring) and filename is not None:
|
||||
msg = 'Unable to add OTF material file to Material ID={0} with a ' \
|
||||
'non-string name {1}'.format(self._id, filename)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -315,12 +318,12 @@ class Material(object):
|
|||
|
||||
"""
|
||||
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to add an S(a,b) table to Material ID={0} with a ' \
|
||||
'non-string table name {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
||||
if not is_string(xs):
|
||||
if not isinstance(xs, basestring):
|
||||
msg = 'Unable to add an S(a,b) table to Material ID={0} with a ' \
|
||||
'non-string cross-section identifier {1}'.format(self._id, xs)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -523,7 +526,7 @@ class MaterialsFile(object):
|
|||
|
||||
@default_xs.setter
|
||||
def default_xs(self, xs):
|
||||
if not is_string(xs):
|
||||
if not isinstance(xs, basestring):
|
||||
msg = 'Unable to set default xs to a non-string value'.format(xs)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -556,9 +559,9 @@ class MaterialsFile(object):
|
|||
|
||||
"""
|
||||
|
||||
if not isinstance(materials, (tuple, list, MappingView)):
|
||||
if not isinstance(materials, Sequence):
|
||||
msg = 'Unable to create OpenMC materials.xml file from {0} which ' \
|
||||
'is not a Python tuple/list'.format(materials)
|
||||
'is not a sequence'.format(materials)
|
||||
raise ValueError(msg)
|
||||
|
||||
for material in materials:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
from collections import Sequence
|
||||
import copy
|
||||
from numbers import Real, Integral
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
from openmc.checkvalue import *
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
# "Static" variable for auto-generated and Mesh IDs
|
||||
AUTO_MESH_ID = 10000
|
||||
|
|
@ -31,15 +34,15 @@ class Mesh(object):
|
|||
Name of the mesh
|
||||
type : str
|
||||
Type of the mesh
|
||||
dimension : tuple or list or ndarray
|
||||
dimension : Sequnce of int
|
||||
The number of mesh cells in each direction.
|
||||
lower_left : tuple or list or ndarray
|
||||
lower_left : Seuqnce of float
|
||||
The lower-left corner of the structured mesh. If only two coordinate are
|
||||
given, it is assumed that the mesh is an x-y mesh.
|
||||
upper_right : tuple or list or ndarray
|
||||
upper_right : Sequence of float
|
||||
The upper-right corner of the structrued mesh. If only two coordinate
|
||||
are given, it is assumed that the mesh is an x-y mesh.
|
||||
width : tuple or list or ndarray
|
||||
width : Sequence of float
|
||||
The width of mesh cells in each direction.
|
||||
|
||||
"""
|
||||
|
|
@ -137,7 +140,7 @@ class Mesh(object):
|
|||
AUTO_MESH_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(mesh_id):
|
||||
elif not isinstance(mesh_id, Integral):
|
||||
msg = 'Unable to set a non-integer Mesh ID {0}'.format(mesh_id)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -151,7 +154,7 @@ class Mesh(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Mesh ID={0} with a non-string ' \
|
||||
'value {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -160,7 +163,7 @@ class Mesh(object):
|
|||
|
||||
@type.setter
|
||||
def type(self, type):
|
||||
if not is_string(type):
|
||||
if not isinstance(type, basestring):
|
||||
msg = 'Unable to set Mesh ID={0} for type {1} which is not ' \
|
||||
'a string'.format(self._id, type)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -174,10 +177,9 @@ class Mesh(object):
|
|||
|
||||
@dimension.setter
|
||||
def dimension(self, dimension):
|
||||
if not isinstance(dimension, (tuple, list, np.ndarray)):
|
||||
if not isinstance(dimension, Sequence):
|
||||
msg = 'Unable to set Mesh ID={0} with dimension {1} which is ' \
|
||||
'not a Python list, tuple or NumPy ' \
|
||||
'array'.format(self._id, dimension)
|
||||
'not a sequence'.format(self._id, dimension)
|
||||
raise ValueError(msg)
|
||||
elif len(dimension) != 2 and len(dimension) != 3:
|
||||
msg = 'Unable to set Mesh ID={0} with dimension {1} since it ' \
|
||||
|
|
@ -185,7 +187,7 @@ class Mesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in dimension:
|
||||
if not is_integer(dim):
|
||||
if not isinstance(dim, Integral):
|
||||
msg = 'Unable to set Mesh ID={0} with dimension {1} which ' \
|
||||
'is a non-integer'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -194,10 +196,9 @@ class Mesh(object):
|
|||
|
||||
@lower_left.setter
|
||||
def lower_left(self, lower_left):
|
||||
if not isinstance(lower_left, (tuple, list, np.ndarray)):
|
||||
if not isinstance(lower_left, Sequence):
|
||||
msg = 'Unable to set Mesh ID={0} with lower_left {1} which is ' \
|
||||
'not a Python list, tuple or NumPy ' \
|
||||
'array'.format(self._id, lower_left)
|
||||
'not a sequence'.format(self._id, lower_left)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(lower_left) != 2 and len(lower_left) != 3:
|
||||
|
|
@ -206,7 +207,7 @@ class Mesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for coord in lower_left:
|
||||
if not is_integer(coord) and not is_float(coord):
|
||||
if not isinstance(coord, Real):
|
||||
msg = 'Unable to set Mesh ID={0} with lower_left {1} which ' \
|
||||
'is neither neither an integer nor a floating point ' \
|
||||
'value'.format(self._id, coord)
|
||||
|
|
@ -216,10 +217,9 @@ class Mesh(object):
|
|||
|
||||
@upper_right.setter
|
||||
def upper_right(self, upper_right):
|
||||
if not isinstance(upper_right, (tuple, list, np.ndarray)):
|
||||
if not isinstance(upper_right, Sequence):
|
||||
msg = 'Unable to set Mesh ID={0} with upper_right {1} which ' \
|
||||
'is not a Python list, tuple or NumPy ' \
|
||||
'array'.format(self._id, upper_right)
|
||||
'is not a sequence'.format(self._id, upper_right)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(upper_right) != 2 and len(upper_right) != 3:
|
||||
|
|
@ -228,7 +228,7 @@ class Mesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for coord in upper_right:
|
||||
if not is_integer(coord) and not is_float(coord):
|
||||
if not isinstance(coord, Real):
|
||||
msg = 'Unable to set Mesh ID={0} with upper_right {1} which ' \
|
||||
'is neither an integer nor a floating point ' \
|
||||
'value'.format(self._id, coord)
|
||||
|
|
@ -239,10 +239,9 @@ class Mesh(object):
|
|||
@width.setter
|
||||
def width(self, width):
|
||||
if width is not None:
|
||||
if not isinstance(width, (tuple, list, np.ndarray)):
|
||||
if not isinstance(width, Sequence):
|
||||
msg = 'Unable to set Mesh ID={0} with width {1} which ' \
|
||||
'is not a Python list, tuple or NumPy ' \
|
||||
'array'.format(self._id, width)
|
||||
'is not a sequence'.format(self._id, width)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(width) != 2 and len(width) != 3:
|
||||
|
|
@ -251,7 +250,7 @@ class Mesh(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in width:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set Mesh ID={0} with width {1} which is ' \
|
||||
'neither an integer nor a floating point ' \
|
||||
'value'.format(self._id, width)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
from openmc.checkvalue import *
|
||||
from numbers import Integral
|
||||
import sys
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
|
||||
class Nuclide(object):
|
||||
|
|
@ -68,7 +71,7 @@ class Nuclide(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Nuclide with a non-string ' \
|
||||
'value {0}'.format(name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -77,7 +80,7 @@ class Nuclide(object):
|
|||
|
||||
@xs.setter
|
||||
def xs(self, xs):
|
||||
if not is_string(xs):
|
||||
if not isinstance(xs, basestring):
|
||||
msg = 'Unable to set cross-section identifier xs for Nuclide ' \
|
||||
'with a non-string value {0}'.format(xs)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -86,7 +89,7 @@ class Nuclide(object):
|
|||
|
||||
@zaid.setter
|
||||
def zaid(self, zaid):
|
||||
if not is_integer(zaid):
|
||||
if not isinstance(zaid, Integral):
|
||||
msg = 'Unable to set zaid for Nuclide ' \
|
||||
'with a non-integer {0}'.format(zaid)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
from collections import Sequence
|
||||
from numbers import Real, Integral
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
|
||||
from openmc.checkvalue import *
|
||||
from openmc.clean_xml import *
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
# A static variable for auto-generated Plot IDs
|
||||
AUTO_PLOT_ID = 10000
|
||||
|
|
@ -35,9 +39,9 @@ class Plot(object):
|
|||
Unique identifier
|
||||
name : str
|
||||
Name of the plot
|
||||
width : tuple or list or ndarray
|
||||
width : Sequence of float
|
||||
Width of the plot in each basis direction
|
||||
pixels : tuple or list or ndarray
|
||||
pixels : Sequence of int
|
||||
Number of pixels to use in each basis direction
|
||||
origin : tuple or list of ndarray
|
||||
Origin (center) of the plot
|
||||
|
|
@ -51,9 +55,9 @@ class Plot(object):
|
|||
The basis directions for the plot
|
||||
background : tuple or list of ndarray
|
||||
Color of the background defined by RGB
|
||||
mask_components : tuple or list or ndarray
|
||||
mask_components : Sequence of int
|
||||
Unique id numbers of the cells or materials to plot
|
||||
mask_background : tuple or list or ndarray
|
||||
mask_background : Sequence of int
|
||||
Color to apply to all cells/materials not listed in mask_components
|
||||
defined by RGB
|
||||
col_spec : dict
|
||||
|
|
@ -138,7 +142,7 @@ class Plot(object):
|
|||
AUTO_PLOT_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(plot_id):
|
||||
elif not isinstance(plot_id, Integral):
|
||||
msg = 'Unable to set a non-integer Plot ID {0}'.format(plot_id)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -153,7 +157,7 @@ class Plot(object):
|
|||
@name.setter
|
||||
def name(self, name):
|
||||
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Plot ID={0} with a non-string ' \
|
||||
'value {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -163,9 +167,9 @@ class Plot(object):
|
|||
|
||||
@width.setter
|
||||
def width(self, width):
|
||||
if not isinstance(width, (tuple, list, np.ndarray)):
|
||||
if not isinstance(width, Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with width {1} which is not ' \
|
||||
'a Python tuple/list or NumPy array'.format(self._id, width)
|
||||
'a sequence'.format(self._id, width)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(width) != 2 and len(width) != 3:
|
||||
|
|
@ -174,7 +178,7 @@ class Plot(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in width:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to create Plot ID={0} with width {1} since ' \
|
||||
'each element must be a floating point value or ' \
|
||||
'integer'.format(self._id, width)
|
||||
|
|
@ -184,9 +188,9 @@ class Plot(object):
|
|||
|
||||
@origin.setter
|
||||
def origin(self, origin):
|
||||
if not isinstance(origin, (tuple, list, np.ndarray)):
|
||||
if not isinstance(origin, Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with origin {1} which is not ' \
|
||||
'a Python tuple/list or NumPy array'.format(self._id, origin)
|
||||
'a sequnce'.format(self._id, origin)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(origin) != 3:
|
||||
|
|
@ -195,7 +199,7 @@ class Plot(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in origin:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to create Plot ID={0} with origin {1} since ' \
|
||||
'each element must be a floating point value or ' \
|
||||
'integer'.format(self._id, origin)
|
||||
|
|
@ -205,9 +209,9 @@ class Plot(object):
|
|||
|
||||
@pixels.setter
|
||||
def pixels(self, pixels):
|
||||
if not isinstance(pixels, (tuple, list, np.ndarray)):
|
||||
if not isinstance(pixels, Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with pixels {1} which is not ' \
|
||||
'a Python tuple/list or NumPy array'.format(self._id, pixels)
|
||||
'not a sequence'.format(self._id, pixels)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(pixels) != 2 and len(pixels) != 3:
|
||||
|
|
@ -216,7 +220,7 @@ class Plot(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in pixels:
|
||||
if not is_integer(dim):
|
||||
if not isinstance(dim, Integral):
|
||||
msg = 'Unable to create Plot ID={0} with pixel value {1} ' \
|
||||
'which is not an integer'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -230,7 +234,7 @@ class Plot(object):
|
|||
|
||||
@filename.setter
|
||||
def filename(self, filename):
|
||||
if not is_string(filename):
|
||||
if not isinstance(filename, basestring):
|
||||
msg = 'Unable to create Plot ID={0} with filename {1} which is ' \
|
||||
'not a string'.format(self._id, filename)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -239,7 +243,7 @@ class Plot(object):
|
|||
|
||||
@color.setter
|
||||
def color(self, color):
|
||||
if not is_string(color):
|
||||
if not isinstance(color, basestring):
|
||||
msg = 'Unable to create Plot ID={0} with color {1} which is not ' \
|
||||
'a string'.format(self._id, color)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -253,7 +257,7 @@ class Plot(object):
|
|||
|
||||
@type.setter
|
||||
def type(self, type):
|
||||
if not is_string(type):
|
||||
if not isinstance(type, basestring):
|
||||
msg = 'Unable to create Plot ID={0} with type {1} which is not ' \
|
||||
'a string'.format(self._id, type)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -267,7 +271,7 @@ class Plot(object):
|
|||
|
||||
@basis.setter
|
||||
def basis(self, basis):
|
||||
if not is_string(basis):
|
||||
if not isinstance(basis, basestring):
|
||||
msg = 'Unable to create Plot ID={0} with basis {1} which is not ' \
|
||||
'a string'.format(self._id, basis)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -281,10 +285,9 @@ class Plot(object):
|
|||
|
||||
@background.setter
|
||||
def background(self, background):
|
||||
if not isinstance(background, (tuple, list, np.ndarray)):
|
||||
if not isinstance(background, Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with background {1} ' \
|
||||
'which is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, background)
|
||||
'which is not a sequence'.format(self._id, background)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(background) != 3:
|
||||
|
|
@ -294,7 +297,7 @@ class Plot(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for rgb in background:
|
||||
if not is_integer(rgb):
|
||||
if not isinstance(rgb, Integral):
|
||||
msg = 'Unable to create Plot ID={0} with background RGB ' \
|
||||
'value {1} which is not an integer'.format(self._id, rgb)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -315,7 +318,7 @@ class Plot(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for key in col_spec:
|
||||
if not is_integer(key):
|
||||
if not isinstance(key, Integral):
|
||||
msg = 'Unable to create Plot ID={0} with col_spec ID {1} ' \
|
||||
'which is not an integer'.format(self._id, key)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -325,10 +328,9 @@ class Plot(object):
|
|||
'which is less than 0'.format(self._id, key)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif not isinstance(col_spec[key], (tuple, list, np.ndarray)):
|
||||
msg = 'Unable to create Plot ID={0} with col_spec RGB ' \
|
||||
'values {1} which is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, col_spec[key])
|
||||
elif not isinstance(col_spec[key], Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with col_spec RGB values' \
|
||||
' {1} which is not a sequence'.format(self._id, col_spec[key])
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(col_spec[key]) != 3:
|
||||
|
|
@ -341,14 +343,13 @@ class Plot(object):
|
|||
|
||||
@mask_componenets.setter
|
||||
def mask_components(self, mask_components):
|
||||
if not isinstance(mask_components, (list, tuple, np.ndarray)):
|
||||
if not isinstance(mask_components, Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with mask components {1} ' \
|
||||
'which is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, mask_components)
|
||||
'which is not a sequence'.format(self._id, mask_components)
|
||||
raise ValueError(msg)
|
||||
|
||||
for component in mask_components:
|
||||
if not is_integer(component):
|
||||
if not isinstance(component, Integral):
|
||||
msg = 'Unable to create Plot ID={0} with mask component {1} ' \
|
||||
'which is not an integer'.format(self._id, component)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -362,10 +363,9 @@ class Plot(object):
|
|||
|
||||
@mask_background.setter
|
||||
def mask_background(self, mask_background):
|
||||
if not isinstance(mask_background, (list, tuple, np.ndarray)):
|
||||
if not isinstance(mask_background, Sequence):
|
||||
msg = 'Unable to create Plot ID={0} with mask background {1} ' \
|
||||
'which is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, mask_background)
|
||||
'which is not a sequence'.format(self._id, mask_background)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(mask_background) != 3 and len(mask_background) != 0:
|
||||
|
|
@ -376,7 +376,7 @@ class Plot(object):
|
|||
|
||||
for rgb in mask_background:
|
||||
|
||||
if not is_integer(rgb):
|
||||
if not isinstance(rgb, Integral):
|
||||
msg = 'Unable to create Plot ID={0} with mask background RGB ' \
|
||||
'value {1} which is not an integer'.format(self._id, rgb)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,18 @@
|
|||
import collections
|
||||
from collections import Sequence
|
||||
from numbers import Real, Integral
|
||||
import warnings
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
|
||||
from openmc.checkvalue import *
|
||||
from openmc.clean_xml import *
|
||||
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
|
||||
class SettingsFile(object):
|
||||
"""Settings file used for an OpenMC simulation. Corresponds directly to the
|
||||
settings.xml input file.
|
||||
|
|
@ -38,11 +43,11 @@ class SettingsFile(object):
|
|||
Path to write output to
|
||||
verbosity : int
|
||||
Verbosity during simulation between 1 and 10
|
||||
statepoint_batches : tuple or list or ndarray
|
||||
statepoint_batches : Sequence of int
|
||||
List of batches at which to write statepoint files
|
||||
statepoint_interval : int
|
||||
Number of batches after which a new statepoint file should be written
|
||||
sourcepoint_batches : tuple or list or ndarray
|
||||
sourcepoint_batches : Sequence of int
|
||||
List of batches at which to write source files
|
||||
sourcepoint_interval : int
|
||||
Number of batches after which a new source file should be written
|
||||
|
|
@ -395,7 +400,7 @@ class SettingsFile(object):
|
|||
|
||||
@batches.setter
|
||||
def batches(self, batches):
|
||||
if not is_integer(batches):
|
||||
if not isinstance(batches, Integral):
|
||||
msg = 'Unable to set batches to a non-integer ' \
|
||||
'value {0}'.format(batches)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -409,7 +414,7 @@ class SettingsFile(object):
|
|||
|
||||
@generations_per_batch.setter
|
||||
def generations_per_batch(self, generations_per_batch):
|
||||
if not is_integer(generations_per_batch):
|
||||
if not isinstance(generations_per_batch, Integral):
|
||||
msg = 'Unable to set generations per batch to a non-integer ' \
|
||||
'value {0}'.format(generations_per_batch)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -423,7 +428,7 @@ class SettingsFile(object):
|
|||
|
||||
@inactive.setter
|
||||
def inactive(self, inactive):
|
||||
if not is_integer(inactive):
|
||||
if not isinstance(inactive, Integral):
|
||||
msg = 'Unable to set inactive batches to a non-integer ' \
|
||||
'value {0}'.format(inactive)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -437,7 +442,7 @@ class SettingsFile(object):
|
|||
|
||||
@particles.setter
|
||||
def particles(self, particles):
|
||||
if not is_integer(particles):
|
||||
if not isinstance(particles, Integral):
|
||||
msg = 'Unable to set particles to a non-integer ' \
|
||||
'value {0}'.format(particles)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -471,7 +476,7 @@ class SettingsFile(object):
|
|||
'does not have a "threshold" key'.format(keff_trigger)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif not is_float(keff_trigger['threshold']):
|
||||
elif not isinstance(keff_trigger['threshold'], Real):
|
||||
msg = 'Unable to set a trigger on keff with ' \
|
||||
'threshold {0}'.format(keff_trigger['threshold'])
|
||||
raise ValueError(msg)
|
||||
|
|
@ -480,7 +485,7 @@ class SettingsFile(object):
|
|||
|
||||
@source_file.setter
|
||||
def source_file(self, source_file):
|
||||
if not is_string(source_file):
|
||||
if not isinstance(source_file, basestring):
|
||||
msg = 'Unable to set source file to a non-string ' \
|
||||
'value {0}'.format(source_file)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -499,7 +504,7 @@ class SettingsFile(object):
|
|||
distribution samples locations from a "box" distribution but only
|
||||
locations in fissionable materials are accepted. A "point" spatial
|
||||
distribution has coordinates specified by a triplet.
|
||||
params : tuple or list or ndarray
|
||||
params : Sequence of float
|
||||
For a "box" or "fission" spatial distribution, ``params`` should be
|
||||
given as six real numbers, the first three of which specify the
|
||||
lower-left corner of a parallelepiped and the last three of which
|
||||
|
|
@ -512,7 +517,7 @@ class SettingsFile(object):
|
|||
|
||||
"""
|
||||
|
||||
if not is_string(stype):
|
||||
if not isinstance(stype, basestring):
|
||||
msg = 'Unable to set source space type to a non-string ' \
|
||||
'value {0}'.format(stype)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -522,9 +527,9 @@ class SettingsFile(object):
|
|||
'box or point'.format(stype)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif not isinstance(params, (tuple, list, np.ndarray)):
|
||||
elif not isinstance(params, Sequence):
|
||||
msg = 'Unable to set source space parameters to {0} since it is ' \
|
||||
'not a Python tuple, list or NumPy array'.format(params)
|
||||
'not a sequence'.format(params)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif stype in ['box', 'fission'] and len(params) != 6:
|
||||
|
|
@ -539,9 +544,9 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for param in params:
|
||||
if not is_integer(param) and not is_float(param):
|
||||
if not isinstance(param, Real):
|
||||
msg = 'Unable to set source space parameters to {0} since it ' \
|
||||
'is not an integer or floating point value'.format(param)
|
||||
'is not a real number'.format(param)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._source_space_type = stype
|
||||
|
|
@ -558,7 +563,7 @@ class SettingsFile(object):
|
|||
site is isotropic if the "isotropic" option is given. The angle of
|
||||
the particle emitted from a source site is the direction specified
|
||||
in ``params`` if the "monodirectional" option is given.
|
||||
params : tuple or list or ndarray
|
||||
params : Sequence of float
|
||||
For an "isotropic" angular distribution, ``params`` should not
|
||||
be specified.
|
||||
|
||||
|
|
@ -568,7 +573,7 @@ class SettingsFile(object):
|
|||
|
||||
"""
|
||||
|
||||
if not is_string(stype):
|
||||
if not isinstance(stype, basestring):
|
||||
msg = 'Unable to set source angle type to a non-string ' \
|
||||
'value {0}'.format(stype)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -578,9 +583,9 @@ class SettingsFile(object):
|
|||
'isotropic or monodirectional'.format(stype)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif not isinstance(params, (tuple, list, np.ndarray)):
|
||||
elif not isinstance(params, Sequence):
|
||||
msg = 'Unable to set source angle parameters to {0} since it is ' \
|
||||
'not a Python list/tuple or NumPy array'.format(params)
|
||||
'not a sequence'.format(params)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif stype == 'isotropic' and params is not None:
|
||||
|
|
@ -595,9 +600,9 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for param in params:
|
||||
if not is_integer(param) and not is_float(param):
|
||||
if not isinstance(param, Real):
|
||||
msg = 'Unable to set source angle parameters to {0} since it ' \
|
||||
'is not an integer or floating point value'.format(param)
|
||||
'is not a real number'.format(param)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._source_angle_type = stype
|
||||
|
|
@ -615,7 +620,7 @@ class SettingsFile(object):
|
|||
whose energy is sampled from a Watt fission spectrum. The "maxwell"
|
||||
option produce source sites whose energy is sampled from a Maxwell
|
||||
fission spectrum.
|
||||
params : tuple or list or ndarray
|
||||
params : Sequence of float
|
||||
For a "monoenergetic" energy distribution, ``params`` should be
|
||||
given as the energy in MeV of the source sites.
|
||||
|
||||
|
|
@ -629,7 +634,7 @@ class SettingsFile(object):
|
|||
|
||||
"""
|
||||
|
||||
if not is_string(stype):
|
||||
if not isinstance(stype, basestring):
|
||||
msg = 'Unable to set source energy type to a non-string ' \
|
||||
'value {0}'.format(stype)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -639,9 +644,9 @@ class SettingsFile(object):
|
|||
'monoenergetic, watt or maxwell'.format(stype)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif not isinstance(params, (tuple, list, np.ndarray)):
|
||||
elif not isinstance(params, Sequence):
|
||||
msg = 'Unable to set source energy params to {0} since it ' \
|
||||
'is not a Python list/tuple or NumPy array'.format(params)
|
||||
'is not a sequence'.format(params)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif stype == 'monoenergetic' and not len(params) != 1:
|
||||
|
|
@ -662,10 +667,9 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for param in params:
|
||||
if not is_integer(param) and not is_float(param):
|
||||
if not isinstance(param, Real):
|
||||
msg = 'Unable to set source energy params to {0} ' \
|
||||
'since it is not an integer or floating point ' \
|
||||
'value'.format(param)
|
||||
'since it is not a real number'.format(param)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._source_energy_type = stype
|
||||
|
|
@ -694,7 +698,7 @@ class SettingsFile(object):
|
|||
|
||||
@output_path.setter
|
||||
def output_path(self, output_path):
|
||||
if not is_string(output_path):
|
||||
if not isinstance(output_path, basestring):
|
||||
msg = 'Unable to set output path to non-string ' \
|
||||
'value {0}'.format(output_path)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -703,7 +707,7 @@ class SettingsFile(object):
|
|||
|
||||
@verbosity.setter
|
||||
def verbosity(self, verbosity):
|
||||
if not is_integer(verbosity):
|
||||
if not isinstance(verbosity, Integral):
|
||||
msg = 'Unable to set verbosity to non-integer ' \
|
||||
'value {0}'.format(verbosity)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -717,13 +721,13 @@ class SettingsFile(object):
|
|||
|
||||
@statepoint_batches.setter
|
||||
def statepoint_batches(self, batches):
|
||||
if not isinstance(batches, (tuple, list, np.ndarray)):
|
||||
msg = 'Unable to set statepoint batches to {0} which is not a ' \
|
||||
'Python tuple/list or NumPy array'.format(batches)
|
||||
if not isinstance(batches, Sequence):
|
||||
msg = 'Unable to set statepoint batches to {0} which is not ' \
|
||||
'a sequnce'.format(batches)
|
||||
raise ValueError(msg)
|
||||
|
||||
for batch in batches:
|
||||
if not is_integer(batch):
|
||||
if not isinstance(batch, Integral):
|
||||
msg = 'Unable to set statepoint batches with non-integer ' \
|
||||
'value {0}'.format(batch)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -737,7 +741,7 @@ class SettingsFile(object):
|
|||
|
||||
@statepoint_interval.setter
|
||||
def statepoint_interval(self, interval):
|
||||
if not is_integer(interval):
|
||||
if not isinstance(interval, Integral):
|
||||
msg = 'Unable to set statepoint interval to non-integer ' \
|
||||
'value {0}'.format(interval)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -746,13 +750,13 @@ class SettingsFile(object):
|
|||
|
||||
@sourcepoint_batches.setter
|
||||
def sourcepoint_batches(self, batches):
|
||||
if not isinstance(batches, (tuple, list, np.ndarray)):
|
||||
if not isinstance(batches, Sequence):
|
||||
msg = 'Unable to set sourcepoint batches to {0} which is ' \
|
||||
'not a Python tuple/list or NumPy array'.format(batches)
|
||||
'not a sequence'.format(batches)
|
||||
raise ValueError(msg)
|
||||
|
||||
for batch in batches:
|
||||
if not is_integer(batch):
|
||||
if not isinstance(batch, Integral):
|
||||
msg = 'Unable to set sourcepoint batches with non-integer ' \
|
||||
'value {0}'.format(batch)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -766,7 +770,7 @@ class SettingsFile(object):
|
|||
|
||||
@sourcepoint_interval.setter
|
||||
def sourcepoint_interval(self, interval):
|
||||
if not is_integer(interval):
|
||||
if not isinstance(interval, Integral):
|
||||
msg = 'Unable to set sourcepoint interval to non-integer ' \
|
||||
'value {0}'.format(interval)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -811,7 +815,7 @@ class SettingsFile(object):
|
|||
|
||||
@cross_sections.setter
|
||||
def cross_sections(self, cross_sections):
|
||||
if not is_string(cross_sections):
|
||||
if not isinstance(cross_sections, basestring):
|
||||
msg = 'Unable to set cross sections to non-string ' \
|
||||
'value {0}'.format(cross_sections)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -847,7 +851,7 @@ class SettingsFile(object):
|
|||
|
||||
@seed.setter
|
||||
def seed(self, seed):
|
||||
if not is_integer(seed):
|
||||
if not isinstance(seed, Integral):
|
||||
msg = 'Unable to set seed to non-integer value {0}'.format(seed)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -868,7 +872,7 @@ class SettingsFile(object):
|
|||
|
||||
@weight.setter
|
||||
def weight(self, weight):
|
||||
if not is_float(weight):
|
||||
if not isinstance(weight, Real):
|
||||
msg = 'Unable to set weight cutoff to non-floating point ' \
|
||||
'value {0}'.format(weight)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -882,7 +886,7 @@ class SettingsFile(object):
|
|||
|
||||
@weight_avg.setter
|
||||
def weight_avg(self, weight_avg):
|
||||
if not is_float(weight_avg):
|
||||
if not isinstance(weight_avg, Real):
|
||||
msg = 'Unable to set weight avg. to non-floating point ' \
|
||||
'value {0}'.format(weight_avg)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -895,9 +899,9 @@ class SettingsFile(object):
|
|||
|
||||
@entropy_dimension.setter
|
||||
def entropy_dimension(self, dimension):
|
||||
if not isinstance(dimension, (tuple, list)):
|
||||
if not isinstance(dimension, Sequence):
|
||||
msg = 'Unable to set entropy mesh dimension to {0} which is ' \
|
||||
'not a Python tuple or list'.format(dimension)
|
||||
'not a sequence'.format(dimension)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(dimension) != 3:
|
||||
|
|
@ -906,7 +910,7 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in dimension:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set entropy mesh dimension to a ' \
|
||||
'non-integer or floating point value {0}'.format(dim)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -915,9 +919,9 @@ class SettingsFile(object):
|
|||
|
||||
@entropy_lower_left.setter
|
||||
def entropy_lower_left(self, lower_left):
|
||||
if not isinstance(lower_left, (tuple, list)):
|
||||
if not isinstance(lower_left, Sequence):
|
||||
msg = 'Unable to set entropy mesh lower left corner to {0} which ' \
|
||||
'is not a Python tuple or list'.format(lower_left)
|
||||
'is not a sequence'.format(lower_left)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(lower_left) != 3:
|
||||
|
|
@ -926,7 +930,7 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for coord in lower_left:
|
||||
if not is_integer(coord) and not is_float(coord):
|
||||
if not isinstance(coord, Real):
|
||||
msg = 'Unable to set entropy mesh lower left corner to a ' \
|
||||
'non-integer or floating point value {0}'.format(coord)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -935,9 +939,9 @@ class SettingsFile(object):
|
|||
|
||||
@entropy_upper_right.setter
|
||||
def entropy_upper_right(self, upper_right):
|
||||
if not isinstance(upper_right, (tuple, list)):
|
||||
if not isinstance(upper_right, Sequence):
|
||||
msg = 'Unable to set entropy mesh upper right corner to {0} ' \
|
||||
'which is not a Python tuple or list'.format(upper_right)
|
||||
'which is not a sequence'.format(upper_right)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(upper_right) < 3 or len(upper_right) > 3:
|
||||
|
|
@ -946,7 +950,7 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for coord in upper_right:
|
||||
if not is_integer(coord) and not is_float(coord):
|
||||
if not isinstance(coord, Real):
|
||||
msg = 'Unable to set entropy mesh upper right corner to a ' \
|
||||
'non-integer or floating point value {0}'.format(coord)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -964,7 +968,7 @@ class SettingsFile(object):
|
|||
|
||||
@trigger_max_batches.setter
|
||||
def trigger_max_batches(self, trigger_max_batches):
|
||||
if not is_integer(trigger_max_batches):
|
||||
if not isinstance(trigger_max_batches, Integral):
|
||||
msg = 'Unable to set trigger max batches to a non-integer ' \
|
||||
'value {0}'.format(trigger_max_batches)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -978,7 +982,7 @@ class SettingsFile(object):
|
|||
|
||||
@trigger_batch_interval.setter
|
||||
def trigger_batch_interval(self, trigger_batch_interval):
|
||||
if not is_integer(trigger_batch_interval):
|
||||
if not isinstance(trigger_batch_interval, Integral):
|
||||
msg = 'Unable to set trigger batch interval to a non-integer ' \
|
||||
'value {0}'.format(trigger_batch_interval)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -1001,7 +1005,7 @@ class SettingsFile(object):
|
|||
|
||||
@threads.setter
|
||||
def threads(self, threads):
|
||||
if not is_integer(threads):
|
||||
if not isinstance(threads, Integral):
|
||||
msg = 'Unable to set the threads to a non-integer ' \
|
||||
'value {0}'.format(threads)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -1073,9 +1077,9 @@ class SettingsFile(object):
|
|||
|
||||
@ufs_dimension.setter
|
||||
def ufs_dimension(self, dimension):
|
||||
if not isinstance(dimension, (tuple, list)):
|
||||
if not isinstance(dimension, Sequence):
|
||||
msg = 'Unable to set UFS mesh dimension to {0} which is ' \
|
||||
'not a Python tuple or list'.format(dimension)
|
||||
'not a sequence'.format(dimension)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(dimension) != 3:
|
||||
|
|
@ -1084,7 +1088,7 @@ class SettingsFile(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in dimension:
|
||||
if not is_integer(dim):
|
||||
if not isinstance(dim, Integral):
|
||||
msg = 'Unable to set entropy mesh dimension to a ' \
|
||||
'non-integer {0}'.format(dim)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -1097,9 +1101,9 @@ class SettingsFile(object):
|
|||
|
||||
@ufs_lower_left.setter
|
||||
def ufs_lower_left(self, lower_left):
|
||||
if not isinstance(lower_left, (tuple, list, np.ndarray)):
|
||||
if not isinstance(lower_left, Sequence):
|
||||
msg = 'Unable to set UFS mesh lower left corner to {0} which is ' \
|
||||
'not a Python tuple or list'.format(lower_left)
|
||||
'not a sequence'.format(lower_left)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(lower_left) != 3:
|
||||
|
|
@ -1111,9 +1115,9 @@ class SettingsFile(object):
|
|||
|
||||
@ufs_upper_right.setter
|
||||
def ufs_upper_right(self, upper_right):
|
||||
if not isinstance(upper_right, (tuple, list)):
|
||||
if not isinstance(upper_right, Sequence):
|
||||
msg = 'Unable to set UFs mesh upper right corner to {0} which is ' \
|
||||
'not a Python tuple or list'.format(upper_right)
|
||||
'not a sequence'.format(upper_right)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(upper_right) != 3:
|
||||
|
|
@ -1129,9 +1133,9 @@ class SettingsFile(object):
|
|||
warnings.warn('This feature is not yet implemented in a release '
|
||||
'version of openmc')
|
||||
|
||||
if not isinstance(dimension, (tuple, list)):
|
||||
if not isinstance(dimension, Sequence):
|
||||
msg = 'Unable to set DD mesh upper right corner to {0} which is ' \
|
||||
'not a Python tuple or list'.format(dimension)
|
||||
'not a sequence'.format(dimension)
|
||||
raise ValueError(msg)
|
||||
|
||||
if len(dimension) != 3:
|
||||
|
|
@ -1147,9 +1151,9 @@ class SettingsFile(object):
|
|||
warnings.warn('This feature is not yet implemented in a release '
|
||||
'version of openmc')
|
||||
|
||||
if not isinstance(lower_left, (tuple, list, np.ndarray)):
|
||||
if not isinstance(lower_left, Sequence):
|
||||
msg = 'Unable to set DD mesh lower left corner to {0} which is ' \
|
||||
'not a Python tuple or list'.format(lower_left)
|
||||
'not a sequence'.format(lower_left)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(lower_left) < 3 or len(lower_left) > 3:
|
||||
|
|
@ -1184,9 +1188,9 @@ class SettingsFile(object):
|
|||
warnings.warn('This feature is not yet implemented in a release '
|
||||
'version of openmc')
|
||||
|
||||
if not isinstance(nodemap, (tuple, list)):
|
||||
if not isinstance(nodemap, Sequence):
|
||||
msg = 'Unable to set DD nodemap {0} which is ' \
|
||||
'not a Python tuple or list'.format(nodemap)
|
||||
'not a sequence'.format(nodemap)
|
||||
raise ValueError(msg)
|
||||
|
||||
nodemap = np.array(nodemap).flatten()
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
from abc import ABCMeta
|
||||
from numbers import Real, Integral
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
from openmc.checkvalue import *
|
||||
from openmc.constants import BC_TYPES
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
# A static variable for auto-generated Surface IDs
|
||||
AUTO_SURFACE_ID = 10000
|
||||
|
|
@ -91,7 +94,7 @@ class Surface(object):
|
|||
AUTO_SURFACE_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(surface_id):
|
||||
elif not isinstance(surface_id, Integral):
|
||||
msg = 'Unable to set a non-integer Surface ' \
|
||||
'ID {0}'.format(surface_id)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -106,7 +109,7 @@ class Surface(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Surface ID={0} with a non-string ' \
|
||||
'value {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -116,7 +119,7 @@ class Surface(object):
|
|||
|
||||
@boundary_type.setter
|
||||
def boundary_type(self, boundary_type):
|
||||
if not is_string(boundary_type):
|
||||
if not isinstance(boundary_type, basestring):
|
||||
msg = 'Unable to set boundary type for Surface ID={0} with a ' \
|
||||
'non-string value {1}'.format(self._id, boundary_type)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -235,7 +238,7 @@ class Plane(Surface):
|
|||
|
||||
@a.setter
|
||||
def a(self, A):
|
||||
if not is_integer(A) and not is_float(A):
|
||||
if not isinstance(A, Real):
|
||||
msg = 'Unable to set A coefficient for Plane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, A)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -244,7 +247,7 @@ class Plane(Surface):
|
|||
|
||||
@b.setter
|
||||
def b(self, B):
|
||||
if not is_integer(B) and not is_float(B):
|
||||
if not isinstance(B, Real):
|
||||
msg = 'Unable to set B coefficient for Plane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, B)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -253,7 +256,7 @@ class Plane(Surface):
|
|||
|
||||
@c.setter
|
||||
def c(self, C):
|
||||
if not is_integer(C) and not is_float(C):
|
||||
if not isinstance(C, Real):
|
||||
msg = 'Unable to set C coefficient for Plane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, C)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -262,7 +265,7 @@ class Plane(Surface):
|
|||
|
||||
@d.setter
|
||||
def d(self, D):
|
||||
if not is_integer(D) and not is_float(D):
|
||||
if not isinstance(D, Real):
|
||||
msg = 'Unable to set D coefficient for Plane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, D)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -312,7 +315,7 @@ class XPlane(Plane):
|
|||
|
||||
@x0.setter
|
||||
def x0(self, x0):
|
||||
if not is_integer(x0) and not is_float(x0):
|
||||
if not isinstance(x0, Real):
|
||||
msg = 'Unable to set x0 coefficient for XPlane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, x0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -362,7 +365,7 @@ class YPlane(Plane):
|
|||
|
||||
@y0.setter
|
||||
def y0(self, y0):
|
||||
if not is_integer(y0) and not is_float(y0):
|
||||
if not isinstance(y0, Real):
|
||||
msg = 'Unable to set y0 coefficient for XPlane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, y0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -412,7 +415,7 @@ class ZPlane(Plane):
|
|||
|
||||
@z0.setter
|
||||
def z0(self, z0):
|
||||
if not is_integer(z0) and not is_float(z0):
|
||||
if not isinstance(z0, Real):
|
||||
msg = 'Unable to set z0 coefficient for ZPlane ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, z0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -463,7 +466,7 @@ class Cylinder(Surface):
|
|||
|
||||
@r.setter
|
||||
def r(self, R):
|
||||
if not is_integer(R) and not is_float(R):
|
||||
if not isinstance(R, Real):
|
||||
msg = 'Unable to set R coefficient for Cylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, R)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -527,7 +530,7 @@ class XCylinder(Cylinder):
|
|||
|
||||
@y0.setter
|
||||
def y0(self, y0):
|
||||
if not is_integer(y0) and not is_float(y0):
|
||||
if not isinstance(y0, Real):
|
||||
msg = 'Unable to set y0 coefficient for XCylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, y0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -536,7 +539,7 @@ class XCylinder(Cylinder):
|
|||
|
||||
@z0.setter
|
||||
def z0(self, z0):
|
||||
if not is_integer(z0) and not is_float(z0):
|
||||
if not isinstance(z0, Real):
|
||||
msg = 'Unable to set z0 coefficient for XCylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, z0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -600,7 +603,7 @@ class YCylinder(Cylinder):
|
|||
|
||||
@x0.setter
|
||||
def x0(self, x0):
|
||||
if not is_integer(x0) and not is_float(x0):
|
||||
if not isinstance(x0, Real):
|
||||
msg = 'Unable to set x0 coefficient for YCylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, x0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -609,7 +612,7 @@ class YCylinder(Cylinder):
|
|||
|
||||
@z0.setter
|
||||
def z0(self, z0):
|
||||
if not is_integer(z0) and not is_float(z0):
|
||||
if not isinstance(z0, Real):
|
||||
msg = 'Unable to set z0 coefficient for YCylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, z0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -673,7 +676,7 @@ class ZCylinder(Cylinder):
|
|||
|
||||
@x0.setter
|
||||
def x0(self, x0):
|
||||
if not is_integer(x0) and not is_float(x0):
|
||||
if not isinstance(x0, Real):
|
||||
msg = 'Unable to set x0 coefficient for ZCylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, x0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -682,7 +685,7 @@ class ZCylinder(Cylinder):
|
|||
|
||||
@y0.setter
|
||||
def y0(self, y0):
|
||||
if not is_integer(y0) and not is_float(y0):
|
||||
if not isinstance(y0, Real):
|
||||
msg = 'Unable to set y0 coefficient for ZCylinder ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, y0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -764,7 +767,7 @@ class Sphere(Surface):
|
|||
|
||||
@x0.setter
|
||||
def x0(self, x0):
|
||||
if not is_integer(x0) and not is_float(x0):
|
||||
if not isinstance(x0, Real):
|
||||
msg = 'Unable to set x0 coefficient for Sphere ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, x0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -773,7 +776,7 @@ class Sphere(Surface):
|
|||
|
||||
@y0.setter
|
||||
def y0(self, y0):
|
||||
if not is_integer(y0) and not is_float(y0):
|
||||
if not isinstance(y0, Real):
|
||||
msg = 'Unable to set y0 coefficient for Sphere ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, y0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -782,7 +785,7 @@ class Sphere(Surface):
|
|||
|
||||
@z0.setter
|
||||
def z0(self, z0):
|
||||
if not is_integer(z0) and not is_float(z0):
|
||||
if not isinstance(z0, Real):
|
||||
msg = 'Unable to set z0 coefficient for Sphere ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, z0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -791,7 +794,7 @@ class Sphere(Surface):
|
|||
|
||||
@r.setter
|
||||
def r(self, R):
|
||||
if not is_integer(R) and not is_float(R):
|
||||
if not isinstance(R, Real):
|
||||
msg = 'Unable to set R coefficient for Sphere ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, R)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -874,7 +877,7 @@ class Cone(Surface):
|
|||
|
||||
@x0.setter
|
||||
def x0(self, x0):
|
||||
if not is_integer(x0) and not is_float(x0):
|
||||
if not isinstance(x0, Real):
|
||||
msg = 'Unable to set x0 coefficient for Cone ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, x0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -883,7 +886,7 @@ class Cone(Surface):
|
|||
|
||||
@y0.setter
|
||||
def y0(self, y0):
|
||||
if not is_integer(y0) and not is_float(y0):
|
||||
if not isinstance(y0, Real):
|
||||
msg = 'Unable to set y0 coefficient for Cone ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, y0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -892,7 +895,7 @@ class Cone(Surface):
|
|||
|
||||
@z0.setter
|
||||
def z0(self, z0):
|
||||
if not is_integer(z0) and not is_float(z0):
|
||||
if not isinstance(z0, Real):
|
||||
msg = 'Unable to set z0 coefficient for Cone ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, z0)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -901,7 +904,7 @@ class Cone(Surface):
|
|||
|
||||
@r2.setter
|
||||
def r2(self, R2):
|
||||
if not is_integer(R2) and not is_float(R2):
|
||||
if not isinstance(R2, Real):
|
||||
msg = 'Unable to set R^2 coefficient for Cone ID={0} to a ' \
|
||||
'non-integer value {1}'.format(self._id, R2)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,17 +1,22 @@
|
|||
from collections import Sequence
|
||||
import copy
|
||||
import os
|
||||
import pickle
|
||||
import itertools
|
||||
from numbers import Integral
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
|
||||
from openmc import Mesh, Filter, Trigger, Nuclide
|
||||
from openmc.summary import Summary
|
||||
from openmc.clean_xml import *
|
||||
from openmc.checkvalue import *
|
||||
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
# "Static" variable for auto-generated Tally IDs
|
||||
AUTO_TALLY_ID = 10000
|
||||
|
||||
|
|
@ -303,7 +308,7 @@ class Tally(object):
|
|||
AUTO_TALLY_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(tally_id):
|
||||
elif not isinstance(tally_id, Integral):
|
||||
msg = 'Unable to set a non-integer Tally ID {0}'.format(tally_id)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -317,7 +322,7 @@ class Tally(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Tally ID={0} with a non-string ' \
|
||||
'value "{1}"'.format(self.id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -366,7 +371,7 @@ class Tally(object):
|
|||
|
||||
"""
|
||||
|
||||
if not is_string(score):
|
||||
if not isinstance(score, basestring):
|
||||
msg = 'Unable to add score "{0}" to Tally ID={1} since it is ' \
|
||||
'not a string'.format(score, self.id)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -383,7 +388,7 @@ class Tally(object):
|
|||
|
||||
@num_realizations.setter
|
||||
def num_realizations(self, num_realizations):
|
||||
if not is_integer(num_realizations):
|
||||
if not isinstance(num_realizations, Integral):
|
||||
msg = 'Unable to set the number of realizations to "{0}" for ' \
|
||||
'Tally ID={1} since it is not an ' \
|
||||
'integer'.format(num_realizations)
|
||||
|
|
@ -408,19 +413,17 @@ class Tally(object):
|
|||
|
||||
@sum.setter
|
||||
def sum(self, sum):
|
||||
if not isinstance(sum, (tuple, list, np.ndarray)):
|
||||
if not isinstance(sum, Sequence):
|
||||
msg = 'Unable to set the sum to "{0}" for Tally ID={1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(sum, self.id)
|
||||
'it is not a sequence'.format(sum, self.id)
|
||||
raise ValueError(msg)
|
||||
self._sum = sum
|
||||
|
||||
@sum_sq.setter
|
||||
def sum_sq(self, sum_sq):
|
||||
if not isinstance(sum_sq, (tuple, list, np.ndarray)):
|
||||
if not isinstance(sum_sq, Sequence):
|
||||
msg = 'Unable to set the sum to "{0}" for Tally ID={1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(sum_sq, self.id)
|
||||
'it is not a sequence'.format(sum_sq, self.id)
|
||||
raise ValueError(msg)
|
||||
self._sum_sq = sum_sq
|
||||
|
||||
|
|
@ -1321,13 +1324,13 @@ class Tally(object):
|
|||
'Tally.export_results(...)'.format(self.id)
|
||||
raise KeyError(msg)
|
||||
|
||||
if not is_string(filename):
|
||||
if not isinstance(filename, basestring):
|
||||
msg = 'Unable to export the results for Tally ID={0} to ' \
|
||||
'filename="{1}" since it is not a ' \
|
||||
'string'.format(self.id, filename)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif not is_string(directory):
|
||||
elif not isinstance(directory, basestring):
|
||||
msg = 'Unable to export the results for Tally ID={0} to ' \
|
||||
'directory="{1}" since it is not a ' \
|
||||
'string'.format(self.id, directory)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
from numbers import Real
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
from openmc.checkvalue import *
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
|
||||
class Trigger(object):
|
||||
|
|
@ -76,7 +79,7 @@ class Trigger(object):
|
|||
|
||||
@threshold.setter
|
||||
def threshold(self, threshold):
|
||||
if not is_float(threshold):
|
||||
if not isinstance(threshold, Real):
|
||||
msg = 'Unable to set a tally trigger threshold with ' \
|
||||
'threshold "{0}"'.format(threshold)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -93,7 +96,7 @@ class Trigger(object):
|
|||
|
||||
"""
|
||||
|
||||
if not is_string(score):
|
||||
if not isinstance(score, basestring):
|
||||
msg = 'Unable to add score "{0}" to tally trigger since ' \
|
||||
'it is not a string'.format(score)
|
||||
raise ValueError(msg)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
import abc
|
||||
from collections import OrderedDict
|
||||
from collections import OrderedDict, Sequence
|
||||
from numbers import Real, Integral
|
||||
from xml.etree import ElementTree as ET
|
||||
import sys
|
||||
|
||||
import openmc
|
||||
from openmc.checkvalue import *
|
||||
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
basestring = str
|
||||
|
||||
# A static variable for auto-generated Cell IDs
|
||||
AUTO_CELL_ID = 10000
|
||||
|
||||
|
|
@ -106,7 +110,7 @@ class Cell(object):
|
|||
AUTO_CELL_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(cell_id):
|
||||
elif not isinstance(cell_id, Integral):
|
||||
msg = 'Unable to set a non-integer Cell ID {0}'.format(cell_id)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -156,10 +160,9 @@ class Cell(object):
|
|||
|
||||
@rotation.setter
|
||||
def rotation(self, rotation):
|
||||
if not isinstance(rotation, (tuple, list, np.ndarray)):
|
||||
if not isinstance(rotation, Sequence):
|
||||
msg = 'Unable to add rotation {0} to Cell ID={1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(rotation, self._id)
|
||||
'it is not a sequence'.format(rotation, self._id)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(rotation) != 3:
|
||||
|
|
@ -168,20 +171,18 @@ class Cell(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for axis in rotation:
|
||||
if not is_integer(axis) and not is_float(axis):
|
||||
if not isinstance(axis, Real):
|
||||
msg = 'Unable to add rotation {0} to Cell ID={1} since ' \
|
||||
'it is not an integer or floating point ' \
|
||||
'value'.format(axis, self._id)
|
||||
'it is not a real number'.format(axis, self._id)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._rotation = rotation
|
||||
|
||||
@translation.setter
|
||||
def translation(self, translation):
|
||||
if not isinstance(translation, (tuple, list, np.ndarray)):
|
||||
if not isinstance(translation, Sequence):
|
||||
msg = 'Unable to add translation {0} to Cell ID={1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(translation, self._id)
|
||||
'it is not a sequence'.format(translation, self._id)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(translation) != 3:
|
||||
|
|
@ -190,20 +191,18 @@ class Cell(object):
|
|||
raise ValueError(msg)
|
||||
|
||||
for axis in translation:
|
||||
if not is_integer(axis) and not is_float(axis):
|
||||
if not isinstance(axis, Real):
|
||||
msg = 'Unable to add translation {0} to Cell ID={1} since ' \
|
||||
'it is not an integer or floating point ' \
|
||||
'value'.format(axis, self._id)
|
||||
'it is not a real number'.format(axis, self._id)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._translation = translation
|
||||
|
||||
@offsets.setter
|
||||
def offsets(self, offsets):
|
||||
if not isinstance(offsets, (tuple, list, np.ndarray)):
|
||||
if not isinstance(offsets, Sequence):
|
||||
msg = 'Unable to set offsets {0} to Cell ID={1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(offsets, self._id)
|
||||
'it is not a sequence'.format(offsets, self._id)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._offsets = offsets
|
||||
|
|
@ -478,7 +477,7 @@ class Universe(object):
|
|||
AUTO_UNIVERSE_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(universe_id):
|
||||
elif not isinstance(universe_id, Integral):
|
||||
msg = 'Unable to set Universe ID to a non-integer ' \
|
||||
'{0}'.format(universe_id)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -493,7 +492,7 @@ class Universe(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Universe ID={0} with a non-string ' \
|
||||
'value {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -531,13 +530,13 @@ class Universe(object):
|
|||
|
||||
"""
|
||||
|
||||
if not isinstance(cells, (list, tuple, np.ndarray)):
|
||||
msg = 'Unable to add Cells to Universe ID={0} since {1} is not a ' \
|
||||
'Python tuple/list or NumPy array'.format(self._id, cells)
|
||||
if not isinstance(cells, Sequence):
|
||||
msg = 'Unable to add Cells to Universe ID={0} since {1} is not ' \
|
||||
'a sequence'.format(self._id, cells)
|
||||
raise ValueError(msg)
|
||||
|
||||
for i in range(len(cells)):
|
||||
self.add_cell(cells[i])
|
||||
for cell in cells:
|
||||
self.add_cell(cell)
|
||||
|
||||
def remove_cell(self, cell):
|
||||
"""Remove a cell from the universe.
|
||||
|
|
@ -732,7 +731,7 @@ class Lattice(object):
|
|||
AUTO_UNIVERSE_ID += 1
|
||||
|
||||
# Check that the ID is an integer and wasn't already used
|
||||
elif not is_integer(lattice_id):
|
||||
elif not isinstance(lattice_id, Integral):
|
||||
msg = 'Unable to set non-integer Lattice ID {0}'.format(lattice_id)
|
||||
raise ValueError(msg)
|
||||
|
||||
|
|
@ -746,7 +745,7 @@ class Lattice(object):
|
|||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
if not is_string(name):
|
||||
if not isinstance(name, basestring):
|
||||
msg = 'Unable to set name for Lattice ID={0} with a non-string ' \
|
||||
'value {1}'.format(self._id, name)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -765,10 +764,9 @@ class Lattice(object):
|
|||
|
||||
@universes.setter
|
||||
def universes(self, universes):
|
||||
if not isinstance(universes, (tuple, list, np.ndarray)):
|
||||
if not isinstance(universes, Sequence):
|
||||
msg = 'Unable to set Lattice ID={0} universes to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, universes)
|
||||
'it is not a sequence'.format(self._id, universes)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._universes = np.asarray(universes, dtype=Universe)
|
||||
|
|
@ -908,10 +906,9 @@ class RectLattice(Lattice):
|
|||
|
||||
@dimension.setter
|
||||
def dimension(self, dimension):
|
||||
if not isinstance(dimension, (tuple, list, np.ndarray)):
|
||||
if not isinstance(dimension, Sequence):
|
||||
msg = 'Unable to set RectLattice ID={0} dimension to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, dimension)
|
||||
'it is not a sequence'.format(self._id, dimension)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(dimension) != 2 and len(dimension) != 3:
|
||||
|
|
@ -921,10 +918,9 @@ class RectLattice(Lattice):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in dimension:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set RectLattice ID={0} dimension to {1} since ' \
|
||||
'it is not an integer or floating point ' \
|
||||
'value'.format(self._id, dim)
|
||||
'it is not a real number'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif dim < 0:
|
||||
|
|
@ -936,10 +932,9 @@ class RectLattice(Lattice):
|
|||
|
||||
@lower_left.setter
|
||||
def lower_left(self, lower_left):
|
||||
if not isinstance(lower_left, (tuple, list, np.ndarray)):
|
||||
if not isinstance(lower_left, Sequence):
|
||||
msg = 'Unable to set RectLattice ID={0} lower_left to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, lower_left)
|
||||
'it is not a sequence'.format(self._id, lower_left)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(lower_left) != 2 and len(lower_left) != 3:
|
||||
|
|
@ -949,30 +944,27 @@ class RectLattice(Lattice):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in lower_left:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set RectLattice ID={0} lower_left to {1} since ' \
|
||||
'it is is not an integer or floating point ' \
|
||||
'value'.format(self._id, dim)
|
||||
'it is is not a real number'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._lower_left = lower_left
|
||||
|
||||
@offsets.setter
|
||||
def offsets(self, offsets):
|
||||
if not isinstance(offsets, (tuple, list, np.ndarray)):
|
||||
if not isinstance(offsets, Sequence):
|
||||
msg = 'Unable to set Lattice ID={0} offsets to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, offsets)
|
||||
'it is not a sequence'.format(self._id, offsets)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._offsets = offsets
|
||||
|
||||
@Lattice.pitch.setter
|
||||
def pitch(self, pitch):
|
||||
if not isinstance(pitch, (tuple, list, np.ndarray)):
|
||||
if not isinstance(pitch, Sequence):
|
||||
msg = 'Unable to set Lattice ID={0} pitch to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, pitch)
|
||||
'it is not a sequence'.format(self._id, pitch)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(pitch) != 2 and len(pitch) != 3:
|
||||
|
|
@ -981,10 +973,9 @@ class RectLattice(Lattice):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in pitch:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set Lattice ID={0} pitch to {1} since ' \
|
||||
'it is not an an integer or floating point ' \
|
||||
'value'.format(self._id, dim)
|
||||
'it is not a real number'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif dim < 0:
|
||||
|
|
@ -1184,8 +1175,7 @@ class HexLattice(Lattice):
|
|||
|
||||
@num_rings.setter
|
||||
def num_rings(self, num_rings):
|
||||
|
||||
if not is_integer(num_rings) and num_rings < 1:
|
||||
if not isinstance(num_rings, Integral) and num_rings < 1:
|
||||
msg = 'Unable to set HexLattice ID={0} number of rings to {1} ' \
|
||||
'since it is not a positive integer'.format(self._id, num_rings)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -1194,7 +1184,7 @@ class HexLattice(Lattice):
|
|||
|
||||
@num_axial.setter
|
||||
def num_axial(self, num_axial):
|
||||
if not is_integer(num_axial) and num_axial < 1:
|
||||
if not isinstance(num_axial, Integral) and num_axial < 1:
|
||||
msg = 'Unable to set HexLattice ID={0} number of axial to {1} ' \
|
||||
'since it is not a positive integer'.format(self._id, num_axial)
|
||||
raise ValueError(msg)
|
||||
|
|
@ -1203,10 +1193,9 @@ class HexLattice(Lattice):
|
|||
|
||||
@center.setter
|
||||
def center(self, center):
|
||||
if not isinstance(center, (tuple, list, np.ndarray)):
|
||||
if not isinstance(center, Sequence):
|
||||
msg = 'Unable to set HexLattice ID={0} dimension to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, center)
|
||||
'it is not a sequence'.format(self._id, center)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(center) != 2 and len(center) != 3:
|
||||
|
|
@ -1216,20 +1205,18 @@ class HexLattice(Lattice):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in center:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set HexLattice ID={0} center to {1} since ' \
|
||||
'it is not an integer or floating point ' \
|
||||
'value'.format(self._id, dim)
|
||||
'it is not a real number'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
||||
self._center = center
|
||||
|
||||
@Lattice.pitch.setter
|
||||
def pitch(self, pitch):
|
||||
if not isinstance(pitch, (tuple, list, np.ndarray)):
|
||||
if not isinstance(pitch, Sequence):
|
||||
msg = 'Unable to set Lattice ID={0} pitch to {1} since ' \
|
||||
'it is not a Python tuple/list or NumPy ' \
|
||||
'array'.format(self._id, pitch)
|
||||
'it is not a sequence'.format(self._id, pitch)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif len(pitch) != 2 and len(pitch) != 3:
|
||||
|
|
@ -1238,10 +1225,9 @@ class HexLattice(Lattice):
|
|||
raise ValueError(msg)
|
||||
|
||||
for dim in pitch:
|
||||
if not is_integer(dim) and not is_float(dim):
|
||||
if not isinstance(dim, Real):
|
||||
msg = 'Unable to set Lattice ID={0} pitch to {1} since ' \
|
||||
'it is not an an integer or floating point ' \
|
||||
'value'.format(self._id, dim)
|
||||
'it is not a real number'.format(self._id, dim)
|
||||
raise ValueError(msg)
|
||||
|
||||
elif dim < 0:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue