# # def AveragePointToCellData(block,point_variable): # # Simple averaging of value at all nodes in element # like a simple PointDataToCellData filter numCells = block.GetNumberOfCells() elem_variable=zeros( (numCells,1) ) # for element in range (numCells): # Initialize element variables elem_variable[element]=0.0 cell=block.GetCell(element) numElemPts=cell.GetNumberOfPoints() # loop over pts and accumulate - divide by numPts for average for pt in range(numElemPts): pointID=cell.GetPointId(pt) #print pointID elem_variable[element]=elem_variable[element]+point_variable[pointID] elem_variable[element]=elem_variable[element]/numElemPts #print elem_variable[element] return elem_variable # def calc_element_angles(block): # # Must be done separately because of unique angle averaging problem at 180degrees # If average angles of 180 and -178, will get angle of 1 and we desire -179 # # check if angles already exist if check_elem_variable_exists(block,'Sector_Angle_undef'): el_angles=block.CellData['Sector_Angle_undef'] return el_angles # # Didn't find angles so: # Get Node angles and average at each cell # Undeformed Sector Angles (degrees about Y-axis, 0=FP) node_angles=calc_node_angles(block) # #All nodes now have angles - average and assign to elements # declare new variable arrays numCells = block.GetNumberOfCells() el_angles=zeros( (numCells,1) ) # for element in range (numCells): cell=block.GetCell(element) numElemPts=cell.GetNumberOfPoints() # flags to detect border sectors with both positive and negative angles sector_angle_pos=0 sector_angle_neg=0 # Initialize element variables el_angles[element]=0.0 # loop over pts and accumulate - divide by numPts for average for pt in range(numElemPts): pointID=cell.GetPointId(pt) #print pointID el_angles[element]=el_angles[element]+node_angles[pointID] if node_angles[pointID]>=0: sector_angle_pos=1 else: sector_angle_neg=1 #print el_angles[element] # detect "boundary" sectors with + and - angles and treat specially # sector between 180 and -178 deg would get +1deg from averaging # boundary sectors are always negative if (sector_angle_pos and sector_angle_neg): el_angles[element]=0.0 for pt in range(numElemPts): pointID=cell.GetPointId(pt) el_angles[element]=el_angles[element]-abs(node_angles[pointID]) el_angles[element]=el_angles[element]/numElemPts #print el_angles[element] return el_angles