Ejemplo n.º 1
0
    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")
Ejemplo n.º 5
0
    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