A0 /= Nu_estimate
        else:
            logger.info(
                "WARNING: Smart ICS not implemented for boundary condition choice."
            )

    #Add noise kick
    noise = global_noise(domain, int(args['--seed']))
    T1['g'] += A0 * P * np.cos(np.pi * z_de) * noise['g']
    T1.differentiate('z', out=T1_z)

    dt = None
    mode = 'overwrite'
elif TT_to_FT is not None:
    logger.info("restarting from {} and swapping BCs".format(TT_to_FT))
    dt = checkpoint.restart(TT_to_FT, solver)
    mode = 'overwrite'

    Nu = float(args['--TT_to_FT_Nu'])
    true_t_ff = np.sqrt(Nu)

    T1 = solver.state['T1']
    u = solver.state['u']
    v = solver.state['v']
    w = solver.state['w']
    vels = [u, v, w]

    #Adjust from fixed T to fixed flux
    z_de = domain.grid(-1, scales=domain.dealias)
    T1.set_scales(domain.dealias, keep_data=True)
    T1['g'] += (0.5 - z_de)  #Add T0
    T1.set_scales(domain.dealias)
    T1_z.set_scales(domain.dealias)
    z_de = domain.grid(-1, scales=domain.dealias)

    A0 = 1e-6

    #Add noise kick
    noise = global_noise(domain, int(args['--seed']))
    T1['g'] += A0 * np.cos(np.pi * z_de) * noise['g']  #/np.sqrt(Ra)
    T1.differentiate('z', out=T1_z)

    dt = None
    mode = 'overwrite'
else:
    logger.info("restarting from {}".format(restart))
    dt = checkpoint.restart(restart, solver)
    mode = 'append'
checkpoint.set_checkpoint(solver,
                          wall_dt=checkpoint_min * 60,
                          mode=mode,
                          iter=5e3)

### 7. Set simulation stop parameters, output, and CFL
if run_time_buoy is not None:
    solver.stop_sim_time = run_time_buoy + solver.sim_time
elif run_time_therm is not None:
    solver.stop_sim_time = run_time_therm * np.sqrt(Ra) + solver.sim_time
else:
    solver.stop_sim_time = 1 * np.sqrt(Ra) + solver.sim_time
solver.stop_wall_time = run_time_wall * 3600.
t_buoy = np.sqrt(Pr / Ra)