Beispiel #1
0
    # Compute energy
    # u_.assign(u_1)
    Eout_0 = df.assemble(geo_map.form(E_0))
    Eout_2 = df.assemble(geo_map.form(E_2))
    E_before = Eout_0 + Eout_2

    converged = False
    while not converged:
        try:
            solver.solve()
            converged = True
        except:
            info_blue("Did not converge. Chopping timestep.")
            dt.chop()
            info_blue("New timestep is: dt = {}".format(dt.get()))

        if converged:
            Eout_0 = df.assemble(geo_map.form(E_0))
            Eout_2 = df.assemble(geo_map.form(E_2))
            E_after = Eout_0 + Eout_2
            dE = E_after - E_before
            if not initial_step and dE > 1e-1 and False:
                info_blue(
                    "Converged, but energy increased. Chopping timestep.")
                info_blue("E_before = {}".format(E_before))
                info_blue("E_after  = {}".format(E_after))
                info_blue("dE       = {}".format(dE))
                info_blue("dt       = {}".format(dt.get()))
                dt.chop()
                converged = False
Beispiel #2
0
# Step in time
ts.dump(tstep)

initial_step = bool(parameters["restart_folder"] is None)
while t < T:
    tstep += 1
    info_cyan("tstep = {}, time = {}".format(tstep, t))

    u_1.assign(u_)

    converged = False
    while not converged:
        if parameters["anneal"]:
            tau.assign(
                anneal_func(
                    t+dt.get(),
                    parameters["tau"],
                    parameters["tau_ramp"],
                    parameters["t_ramp"]))

        # Compute energy
        u_.assign(u_1)
        Eout_0 = df.assemble(geo_map.form(E_0))
        Eout_2 = df.assemble(geo_map.form(E_2))
        E_before = Eout_0 + Eout_2

        try:
            solver.solve()
            converged = True
        except:
            info_blue("Did not converge. Chopping timestep.")

# Step in time
ts.dump(tstep)

while t < T:
    tstep += 1
    info_cyan("tstep = {}, time = {}".format(tstep, t))

    u_1.assign(u_)

    converged = False
    while not converged:
        if parameters["anneal"]:
            tau.assign(
                anneal_func(t + dt.get(), parameters["tau"],
                            parameters["tau_ramp"], parameters["t_ramp"]))
        try:
            solver.solve()
            converged = True
        except:
            info_blue("Did not converge. Chopping timestep.")
            dt.chop()
            info_blue("New timestep is: dt = {}".format(dt.get()))
    # Update time with final dt value
    t += dt.get()

    if tstep % 1 == 0:
        ts.dump(t)
        Eout_0 = df.assemble(geo_map.form(E_0))
        Eout_2 = df.assemble(geo_map.form(E_2))