def test_spatial_operator(self): mesh = np.linspace(0, 1, 11) x = fv.fields.Domain(mesh) c = fv.fields.Field1D('c', x) c.set_field(np.ones(10)) q = fv.fields.Field1D('q', x) q.set_field(np.zeros(10)) fa = afx.AdvectiveFlux1D() fa.set_advection_velocity(c) fd = dfx.DiffusiveFlux1D() fd.set_diffusion_coefficient(0.5) eq = equationclass.Equation() eq.add_flux_term(fa) eq.add_flux_term(fd) dq = eq.spatial_operator(q) dq_test = fa.apply(q) + fd.apply(q) dq_test = np.diff(dq_test) / x.dxh assert np.all(dq == dq_test) return
def test_step(self): mesh = np.linspace(0, 1, 11) x = fv.fields.Domain(mesh) c = fv.fields.Field1D('c', x) c.set_field(np.ones(10)) q = fv.fields.Field1D('q', x) q.set_field(np.zeros(10)) assert (type(q) == fv.fields.Field1D) fa = afx.AdvectiveFlux1D() fa.set_advection_velocity(c) fd = dfx.DiffusiveFlux1D() fd.set_diffusion_coefficient(0.5) eq = equationclass.Equation() eq.set_variable(q) eq.set_time_integration(ODEintegrators.EulerForward1) eq.add_flux_term(fa) eq.add_flux_term(fd) r = q.copy() dr = ODEintegrators.EulerForward1(0.1, r, eq.spatial_operator) r.update(dr) eq.step(0.1) assert np.all(q.val == r.val) return
def test_set_advection_velocity(self): mesh = np.linspace(0, 1, 11) x = fv.fields.Domain(mesh) c = fv.fields.Field1D('c', x) c.set_field(np.ones(10)) f = afx.AdvectiveFlux1D() f.set_advection_velocity(c) assert f.vel is c return
def test_add_flux_term(self): fa = afx.AdvectiveFlux1D() fd = dfx.DiffusiveFlux1D() eq = equationclass.Equation() eq.add_flux_term(fa) assert len(eq.flux_terms) == 1 assert fa in eq.flux_terms eq.add_flux_term(fd) assert len(eq.flux_terms) == 2 assert fa in eq.flux_terms assert fd in eq.flux_terms return
def test_arg_list(self): mesh = np.linspace(0, 1, 11) x = fv.fields.Domain(mesh) c = fv.fields.Field1D('c', x) c.set_field(np.ones(10)) q = fv.fields.Field1D('q', x) q.set_field(np.zeros(10)) f = afx.AdvectiveFlux1D() f.set_advection_velocity(c) args = f.arg_list(q) assert len(args) == 4 assert args[0] is q.val assert args[1] is x.dxp assert args[2] is x.dxh assert args[3] is c.val return