Further corrections for averaging.

这个提交包含在:
Craig Warren
2021-11-19 09:15:46 +00:00
父节点 87ce4ae275
当前提交 c44f647f60
共有 7 个文件被更改,包括 61 次插入38 次删除

查看文件

@@ -84,7 +84,12 @@ class Box(UserObjectGeometry):
raise
# Check averaging
averagebox = self.check_averaging(grid)
try:
# Try user-specified averaging
averagebox = self.kwargs['averaging']
except KeyError:
# Otherwise go with the grid default
averagebox = grid.averagevolumeobjects
p3, p4 = uip.check_box_points(p1, p2, self.__str__())
# find nearest point on grid without translation

查看文件

@@ -62,34 +62,6 @@ class UserObjectGeometry:
else:
return ''
def check_averaging(self, grid):
"""Check material averaging value.
Args:
grid (class): Grid class instance - holds essential parameters
describing the model.
Returns:
averaging (bool): geometry object material averaging
"""
try:
# Try user-specified averaging
averaging = self.kwargs['averaging'].lower()
if averaging == 'y':
averaging = True
elif averaging == 'n':
averaging = False
else:
logger.exception(self.__str__() + f' requires averaging to be either y or n')
except KeyError:
# Otherwise go with the grid default
averaging = grid.averagevolumeobjects
return averaging
def rotate_point(p, axis, angle, origin=(0, 0, 0)):
"""Rotate a point.

查看文件

@@ -58,7 +58,12 @@ class Cylinder(UserObjectGeometry):
raise
# Check averaging
averagecylinder = self.check_averaging(grid)
try:
# Try user-specified averaging
averagecylinder = self.kwargs['averaging']
except KeyError:
# Otherwise go with the grid default
averagecylinder = grid.averagevolumeobjects
# check materials have been specified
# isotropic case

查看文件

@@ -75,7 +75,12 @@ class CylindricalSector(UserObjectGeometry):
raise
# Check averaging
averagecylindricalsector = self.check_averaging(grid)
try:
# Try user-specified averaging
averagecylindricalsector = self.kwargs['averaging']
except KeyError:
# Otherwise go with the grid default
averagecylindricalsector = grid.averagevolumeobjects
# check materials have been specified
# isotropic case

查看文件

@@ -55,7 +55,12 @@ class Sphere(UserObjectGeometry):
raise
# Check averaging
averagesphere = self.check_averaging(grid)
try:
# Try user-specified averaging
averagesphere = self.kwargs['averaging']
except KeyError:
# Otherwise go with the grid default
averagesphere = grid.averagevolumeobjects
# check materials have been specified
# isotropic case

查看文件

@@ -80,7 +80,12 @@ class Triangle(UserObjectGeometry):
self.__dorotate()
# Check averaging
averagetriangularprism = self.check_averaging(grid)
try:
# Try user-specified averaging
averagetriangularprism = self.kwargs['averaging']
except KeyError:
# Otherwise go with the grid default
averagetriangularprism = grid.averagevolumeobjects
# check materials have been specified
# isotropic case

查看文件

@@ -35,6 +35,27 @@ from .utilities.utilities import round_value
logger = logging.getLogger(__name__)
def check_averaging(averaging):
"""Check and set material averaging value.
Args:
averaging (string): Input value from hash command - should be 'y'
or 'n'
Returns:
averaging (bool): geometry object material averaging
"""
if averaging == 'y':
averaging = True
elif averaging == 'n':
averaging = False
else:
logger.exception(self.__str__() + f' requires averaging to be either y or n')
return averaging
def process_geometrycmds(geometry):
"""
This function checks the validity of command parameters, creates instances
@@ -115,7 +136,8 @@ def process_geometrycmds(geometry):
# Isotropic case with user specified averaging
elif len(tmp) == 13:
triangle = Triangle(p1=p1, p2=p2, p3=p3, thickness=thickness, material_id=tmp[11], averaging=tmp[12].lower())
averaging = check_averaging(tmp[12].lower())
triangle = Triangle(p1=p1, p2=p2, p3=p3, thickness=thickness, material_id=tmp[11], averaging=averaging)
# Uniaxial anisotropic case
elif len(tmp) == 14:
@@ -141,7 +163,8 @@ def process_geometrycmds(geometry):
# Isotropic case with user specified averaging
elif len(tmp) == 9:
box = Box(p1=p1, p2=p2, material_id=tmp[7], averaging=tmp[8])
averaging = check_averaging(tmp[8].lower())
box = Box(p1=p1, p2=p2, material_id=tmp[7], averaging=averaging)
# Uniaxial anisotropic case
elif len(tmp) == 10:
@@ -168,7 +191,8 @@ def process_geometrycmds(geometry):
# Isotropic case with user specified averaging
elif len(tmp) == 10:
cylinder = Cylinder(p1=p1, p2=p2, r=r, material_id=tmp[8], averaging=tmp[9])
averaging = check_averaging(tmp[9].lower())
cylinder = Cylinder(p1=p1, p2=p2, r=r, material_id=tmp[8], averaging=averaging)
# Uniaxial anisotropic case
elif len(tmp) == 11:
@@ -201,8 +225,9 @@ def process_geometrycmds(geometry):
# Isotropic case with user specified averaging
elif len(tmp) == 11:
averaging = check_averaging(tmp[10].lower())
cylindrical_sector = CylindricalSector(normal=normal, ctr1=ctr1, ctr2=ctr2, extent1=extent1, extent2=extent2,
r=r, start=start, end=end, averaging=tmp[10], material_id=tmp[9])
r=r, start=start, end=end, averaging=averaging, material_id=tmp[9])
# Uniaxial anisotropic case
elif len(tmp) == 12:
@@ -229,7 +254,8 @@ def process_geometrycmds(geometry):
# Isotropic case with user specified averaging
elif len(tmp) == 7:
sphere = Sphere(p1=p1, r=r, material_id=tmp[5], averaging=tmp[6])
averaging = check_averaging(tmp[6].lower())
sphere = Sphere(p1=p1, r=r, material_id=tmp[5], averaging=averaging)
# Uniaxial anisotropic case
elif len(tmp) == 8: