def get_volume(el, nd): from sfepy.linalg.utils import dets_fast dim = nd.shape[1] nnd = el.shape[1] etype = '%d_%d' % (dim, nnd) if etype == '2_4' or etype == '3_8': el = elems_q2t(el) nel = el.shape[0] #bc = nm.zeros((dim, ), dtype=nm.double) mul = 1.0 / factorial(dim) if dim == 3: mul *= -1.0 mtx = nm.ones((nel, dim + 1, dim + 1), dtype=nm.double) mtx[:, :, :-1] = nd[el, :] vols = mul * dets_fast(mtx) vol = vols.sum() bc = nm.dot(vols, mtx.sum(1)[:, :-1] / nnd) bc /= vol return vol, bc
def get_volume(el, nd): from sfepy.linalg.utils import dets_fast dim = nd.shape[1] nnd = el.shape[1] etype = '%d_%d' % (dim, nnd) if etype == '2_4' or etype == '3_8': el = elems_q2t(el) nel = el.shape[0] #bc = nm.zeros((dim, ), dtype=nm.double) mul = 1.0 / factorial(dim) if dim == 3: mul *= -1.0 mtx = nm.ones((nel, dim + 1, dim + 1), dtype=nm.double) mtx[:,:,:-1] = nd[el,:] vols = mul * dets_fast(mtx.copy()) vol = vols.sum() bc = nm.dot(vols, mtx.sum(1)[:,:-1] / nnd) bc /= vol return vol, bc
def get_volume(el, nd): from sfepy.mesh.mesh_tools import elems_q2t from sfepy.base.compat import factorial import numpy as nm from sfepy.linalg.utils import dets_fast dim = nd.shape[1] nnd = el.shape[1] etype = '%d_%d' % (dim, nnd) if etype == '2_4' or etype == '3_8': el = elems_q2t(el) nel = el.shape[0] mul = 1.0 / factorial(dim) if dim == 3: mul *= -1.0 mtx = nm.ones((nel, dim + 1, dim + 1), dtype=nm.double) mtx[:, :, :-1] = nd[el, :] vols = mul * dets_fast(mtx.copy()) vol = vols.sum() return vol
def get_volume(el, nd): from sfepy.mesh.mesh_tools import elems_q2t from sfepy.base.compat import factorial import numpy as nm from sfepy.linalg.utils import dets_fast dim = nd.shape[1] nnd = el.shape[1] etype = '%d_%d' % (dim, nnd) if etype == '2_4' or etype == '3_8': el = elems_q2t(el) nel = el.shape[0] mul = 1.0 / factorial(dim) if dim == 3: mul *= -1.0 mtx = nm.ones((nel, dim + 1, dim + 1), dtype=nm.double) mtx[:,:,:-1] = nd[el,:] vols = mul * dets_fast(mtx.copy()) vol = vols.sum() return vol
def get_simplex_volumes(cells, coors): """ Get volumes of simplices in nD. Parameters ---------- cells : array, shape (n, d) The indices of `n` simplices with `d` vertices into `coors`. coors : array The coordinates of simplex vertices. Returns ------- volumes : array The volumes of the simplices. """ scoors = coors[cells] deltas = scoors[:, 1:] - scoors[:, :1] dim = coors.shape[1] volumes = dets_fast(deltas) / factorial(dim) return volumes