def sym_scale_amp(fields, nodeGaussAmp, sym, search_tol=0.0001):
"""scale point load amplitude on symmetry faces / edges
:param fields: list (node ID, x, y, z)
:param nodeGaussAmp: amplitude of point load
:param sym: type of mesh symmetry (none, qsym, hsym)
:param search_tol: spatial tolerance to find nearby nodes
:returns nodeGaussAmp: symmetry-scaled point load amplitude
"""
from math import fabs
import sys
if sym == 'qsym':
if (fabs(fields[1]) < search_tol and fabs(fields[2]) < search_tol):
nodeGaussAmp = nodeGaussAmp / 4
elif (fabs(fields[1]) < search_tol or fabs(fields[2]) < search_tol):
nodeGaussAmp = nodeGaussAmp / 2
elif sym == 'hsym':
if fabs(fields[1]) < search_tol:
nodeGaussAmp = nodeGaussAmp / 2
elif sym != 'none':
sys.exit('ERROR: Invalid symmetry option specified.')
return nodeGaussAmp
评论列表
文章目录