def test_dq_de(self): from sfepy.fem import Integrals from sfepy.fem.mappings import get_jacobian problem = self.problem var = problem.create_variables(['us'])['us'] val = nm.arange(var.n_dof, dtype=var.dtype) var.data_from_any(val) val1 = problem.evaluate('de_grad.i1.Omega( us )', us=var, mode='el_avg') self.report('de_grad: min, max:', val1.min(), val1.max()) aux = problem.evaluate('dq_grad.i1.Omega( us )', us=var, mode='qp') integral = Integrals().get(2, 'v') det = get_jacobian(var.field, integral) val2 = (aux * det).sum(axis=1) / det.sum(axis=1) val2.shape = val1.shape self.report('dq_grad: min, max:', val2.min(), val2.max()) ok = self.compare_vectors(val1, val2, label1='de mode', label2='dq mode') if not ok: self.report('failed') return ok
def _integrate(var, val_qp): from sfepy.fem import Integrals from sfepy.fem.mappings import get_jacobian integral = Integrals().get(2, 'v') det = get_jacobian(var.field, integral) val = (val_qp * det).sum(axis=1) / det.sum(axis=1) return val