def Jhat(a_ptb): ic = interpolate(Constant((0.1, -84.9)), V) params_ = list(params) params_[param_idx] = a_ptb time = Constant(0.0) form = model.rhs(ic, time, params_) * dP scheme = Scheme(form, ic, time) (u, xs, ys) = main(ic, form, time, scheme, dt=dt) return assemble(inner(u, u) * dx)
def Jhat(a_ptb): ic = interpolate(Constant((0.1, -84.9)), V) params_ = list(params) params_[param_idx] = a_ptb time = Constant(0.0) form = model.rhs(ic, time, params_)*dP scheme = Scheme(form, ic, time) (u, xs, ys) = main(ic, form, time, scheme, dt=dt) return assemble(inner(u, u)*dx)
def Jhat(ic): time = Constant(0.0) form = model.rhs(ic, time, params)*dP (u, xs, ys) = main(ic, form, time, Scheme, dt=dt) return assemble(inner(u, u)*dx)
for i in range(int(0.1/dt)): solver.step(dt) xs.append(float(time)) ys.append(u.vector().array()) return (u, xs, ys) if __name__ == "__main__": Scheme = BackwardEuler #u = interpolate(state_init, V, name="Solution") #u = Function(V, name="Solution") u = interpolate(Constant((0.1, -84.9)), V, name="Solution") v = TestFunction(V) time = Constant(0.0) form = model.rhs(u, time, params)*dP ## Step 0. Check forward order-of-convergence (nothing to do with adjoints) check = False plot = False dt = 0.1 (u, xs, ys) = main(u, form, time, Scheme, dt=dt) ## Step 1. Check replay correctness replay = True if replay: info_blue("Checking replay correctness .. ") assert adjglobals.adjointer.equation_count > 0 adj_html("forward.html", "forward")
for i in range(4): solver.step(dt) xs.append(float(time)) ys.append(u.vector().array()) return (u, xs, ys) if __name__ == "__main__": #u = interpolate(state_init, V, name="Solution") #u = Function(V, name="Solution") u = interpolate(Constant((0.1, -84.9)), V, name="Solution") v = TestFunction(V) time = Constant(0.0) form = model.rhs(u, time, params) * dP ## Step 0. Check forward order-of-convergence (nothing to do with adjoints) check = False plot = False def Scheme(form, u, time): return RushLarsenScheme(form, u, time, order=1, generalized=True) return CrankNicolson(form, u, time) return BackwardEuler(form, u, time) dt = 0.01 scheme = Scheme(form, u, time) (u, xs, ys) = main(u, form, time, scheme, dt=dt) ## Step 1. Check replay correctness