def objectiveHeatTransfer(U, T, p, weight, *mesh, **options): solver = options['solver'] mesh = Mesh.container(mesh) Ti = T.extract(mesh.owner) Tw = 300. dtdn = (Tw - Ti) / mesh.deltas k = solver.Cp * solver.mu(Tw) / solver.Pr ht = k * dtdn * mesh.areas * weight w = mesh.areas * weight return ht.sum(), w.sum()
def objectiveDrag(U, T, p, *mesh, **options): solver = options['solver'] mesh = Mesh.container(mesh) U0 = U.extract(mesh.neighbour)[0] U0i = U.extract(mesh.owner)[0] p0 = p.extract(mesh.neighbour) T0 = T.extract(mesh.neighbour) nx = mesh.normals[0] mungUx = solver.mu(T0) * (U0 - U0i) / mesh.deltas drag = (p0 * nx - mungUx) * mesh.areas return drag.sum()
def objectiveDrag(U, T, p, *mesh, **options): solver = options['solver'] mesh = Mesh.container(mesh) U0 = U.extract(mesh.neighbour) Ui = U.extract(mesh.owner) p0 = p.extract(mesh.neighbour) T0 = T.extract(mesh.neighbour) nx = mesh.normals[0] mungUx = solver.mu(T0) * (U0[0] - Ui[0]) / mesh.deltas drag = (p0 * nx - mungUx) * mesh.areas # rescaled version rho0 = p0 / (solver.R * T0) D = diameter z = 2 * D drag = drag * 2. / (rho0 * (U0.dot(U0) * z * D)) return drag.sum()
def objectiveHeatTransferWeighting(weight, *mesh): mesh = Mesh.container(mesh) return (mesh.areas * weight).sum()
def interpolate(U, *meshArgs): mesh = Mesh.container(meshArgs) return central(U, mesh)
def interpolate(U, gradU, *meshArgs): mesh = Mesh.container(meshArgs) return secondOrder(U, gradU, mesh, 0)
def objectiveTest(U, T, p, *mesh, **options): mesh = Mesh.container(mesh) p0 = p.extract(mesh.neighbour) return (p0 * mesh.areas).sum()