6def elem_get_interpolation_base(type: Geom.Elem.ElemType, coords: np.ndarray, xq):
11 if type
in [Geom.Elem.ElemType.Tri3, Geom.Elem.ElemType.Quad4]:
12 nv = 3
if type == Geom.Elem.ElemType.Tri3
else 4
17 areas[i] = np.linalg.norm(np.cross(xRel[i], xRel[(i + 1) % nv]))
18 if type == Geom.Elem.ElemType.Tri3:
20 return np.roll(areas, -1) / areas.sum()
21 if type == Geom.Elem.ElemType.Quad4:
22 vxi = areas[3] / (areas[1] + areas[3])
23 vet = areas[0] / (areas[0] + areas[2])
25 [(1 - vxi) * (1 - vet), vxi * (1 - vet), vxi * vet, (1 - vxi) * vet]
28 raise ValueError(f
"type not supported: {type}")
32 coords = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0]], dtype=np.float64).T
35 Geom.Elem.ElemType.Tri3, coords, np.array([0.1, 0.1, 0])
40 Geom.Elem.ElemType.Quad4, coords, np.array([0.1, 0.1, 0])