How to compute the x,y,z coordinates of the centroid of a cell and the UFL corresponding node indices
6 months ago by
So far I have computed the normals and area of the boundary cells now I need to extract the xyz coordinates of the center of these 2-D cells so I can calculate an analytic function (c function) with them. I also need to store the corresponding node indices so I can apply the function value to these nodes. I honestly don't know how to start I assume this will involve finding the integration point at the center?
Below is my working code for the normals and areas:
from dolfin import * import time import numpy as np #define domain x_min = y_min = z_min = 0.0 x_max = y_max = z_max = 1.0 #define number of elements nx = ny = 1 nz = 1 #create mesh mesh = BoxMesh(Point(x_min, y_min, z_min), Point(x_max, y_max, z_max), nx, ny, nz) # define function space V = FunctionSpace(mesh, 'P', 1) #define boundary def boundary_sides(x, on_boundary): return near(x,x_min) or near(x,x_max) or near(x,y_max) or near(x,y_min) bmesh = BoundaryMesh(mesh, 'exterior') # calculate array of boundary faces normal vectors cell_map = bmesh.entity_map(2) norm_array =  f_area =  normal_array= Area_array =  msg = 'Cell %d in bmesh(%d in mesh) has normal %r' for bci, cell in enumerate(cells(bmesh)): n = cell.cell_normal().array() print(msg % (bci, cell_map[bci], list(n))) norm_array.append(list(n)) normal_array = np.array(norm_array)
Thanks in advance!
Community: FEniCS Project
6 months ago by
for cell in cells(mesh): centroid = cell.midpoint()
Please login to add an answer/comment or follow this question.