Retau = args.Retau
    dt = args.dt
    maxstep = args.maxstep
    maxiter = args.maxiter
    restart = args.restart
    tol = args.tol
    objective = args.objective
    nsamples = args.nsamples

    sigma_obs = 1e-10
    sigma_prior = 0.5


    dirname ="base_solution"
    y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
    eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
    eqn.writedir = "/tmp"
    # first dt can be large as we restart from a good solution
    eqn.force_boundary = False
    eqn.tol = tol
    eqn.dt = 1e1
    eqn.solve()
    beta_prior = np.ones_like(eqn.beta)
    eqn_prior = copy.deepcopy(eqn)
    up_prior = eqn.up.copy()

    Q_prior = np.zeros([np.size(eqn.q), nsamples])

    sample = 0
    while sample < nsamples:
        print "\rSampling prior %i of %i"%(sample, nsamples),
from utils import load_data, load_solution_stressomega
from objectives import BayesianObjective
from inverse import InverseSolver

class BayesianObjectiveU(BayesianObjective):
    def objective(self, val, param):
        J_obs = sum((val[::6] - self.val_target)**2)/self.sigma_obs
        J_prior = sum((param - self.param_prior)**2)/self.sigma_prior**2
        J = 0.5*(J_obs + J_prior)
        return J


dirname ="base_solution"
y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
Retau = 5.467390699999999697e+02
eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
eqn.writedir = "solution/stress_omega"
eqn.dt = 1e2
eqn.force_boundary = False
eqn.tol = 1e-5
eqn.solve()
eqn_prior = copy.deepcopy(eqn)
up_prior = eqn.up.copy()

dns = np.loadtxt("data/DNSsol.dat")
utau = Retau*eqn.nu*2.0
ydns = dns[:,0]*0.5
udns = dns[:,2]*utau
f = interp1d(ydns, udns)
utarget = f(eqn.y)
    parser.add_argument("--maxstep", type=float, default=0.05, required=True, help="Inverse max step size.")
    parser.add_argument("--maxiter", type=int, default=10, required=True, help="Inverse max number of iterations.")
    parser.add_argument("--restart", action="store_true", help="Read beta and restart from previous state.")
    args = parser.parse_args()

    Retau = args.Retau
    dt = args.dt
    maxstep = args.maxstep
    maxiter = args.maxiter
    restart = args.restart
    tol = args.tol
    objective = args.objective

    dirname ="base_solution"
    y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
    eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
    eqn.writedir = "solution"
    # first dt can be large as we restart from a good solution
    eqn.dt = 1e1
    eqn.force_boundary = False
    eqn.tol = tol
    eqn.solve()

    eqn.dt = dt
    eqn_prior = copy.deepcopy(eqn)
    up_prior = eqn.up.copy()

    qtarget = np.zeros_like(eqn.q)
    dns, wilcox, wilcox_kw = load_data()

    utau = Retau*eqn.nu*2.0
import sys
sys.path.insert(1, "../../src")
import matplotlib.pyplot as plt
import numpy as np

from stressomega import StressOmegaEquation, get_beta
from utils import load_data, load_solution_stressomega

dirname ="base_solution"
y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
Retau = 550.0
eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
eqn.writedir = "solution/stress_omega"
eqn.dt = 1e2
eqn.force_boundary = False
eqn.tol = 1e-7
eqn.solve()
dJdbeta = eqn.calc_sensitivity()
dns, wilcox, wilcox_kw = load_data()
dJdbeta_cs = np.zeros_like(dJdbeta)

dbeta = 1e-30
for i in range(len(dJdbeta)):
    eqn.beta[i] = eqn.beta[i] + 1j*dbeta
    eqn.solve()
    dJdbeta_cs[i] = np.imag(eqn.objective.objective(eqn.q, eqn.beta))/dbeta
    eqn.beta[i] = eqn.beta[i] - 1j*dbeta

plt.figure(4)
dJdbeta11, dJdbeta12, dJdbeta22, dJdbeta33 = get_beta(dJdbeta)
dJdbeta11_cs, dJdbeta12_cs, dJdbeta22_cs, dJdbeta33_cs = get_beta(dJdbeta_cs)
    parser.add_argument("--maxstep", type=float, default=0.05, required=True, help="Inverse max step size.")
    parser.add_argument("--maxiter", type=int, default=10, required=True, help="Inverse max number of iterations.")
    parser.add_argument("--restart", action="store_true", help="Read beta and restart from previous state.")
    args = parser.parse_args()

    Retau = args.Retau
    dt = args.dt
    maxstep = args.maxstep
    maxiter = args.maxiter
    restart = args.restart
    tol = args.tol
    objective = args.objective

    dirname ="base_solution"
    y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
    eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
    eqn.writedir = "/tmp"
    # first dt can be large as we restart from a good solution
    eqn.dt = 1e1
    eqn.force_boundary = False
    eqn.tol = tol
    eqn.dt = dt
    eqn.solve()
    eqn_prior = copy.deepcopy(eqn)
    up_prior = eqn.up.copy()

    dirname ="solution"
    y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
    eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
    eqn.writedir = "solution"
    # first dt can be large as we restart from a good solution
        weight_R33 = 1/np.mean(self.val_target[4::6])

        J_obs = sum((val[::6] - self.val_target[::6])**2)/self.sigma_obs**2 * abs(weight_u)**2
        J_obs += sum((val[1::6] - self.val_target[1::6])**2)/self.sigma_obs**2 * abs(weight_R11)**2
        J_obs += sum((val[2::6] - self.val_target[2::6])**2)/self.sigma_obs**2 * abs(weight_R12)**2
        J_obs += sum((val[3::6] - self.val_target[3::6])**2)/self.sigma_obs**2 * abs(weight_R22)**2
        J_obs += sum((val[4::6] - self.val_target[4::6])**2)/self.sigma_obs**2 * abs(weight_R33)**2
        J_prior = sum((param - self.param_prior)**2)/self.sigma_prior**2
        J = 0.5*(J_obs + J_prior)
        return J


dirname ="base_solution"
y, u, R11, R12, R22, R33, omega = load_solution_stressomega(dirname)
Retau = 5.467390699999999697e+02
eqn = StressOmegaEquation(y, u, R11, R12, R22, R33, omega, Retau)
eqn.writedir = "solution/stress_omega"
eqn.dt = 1e0
eqn.force_boundary = False
eqn.tol = 1e-5
eqn.solve()
eqn_prior = copy.deepcopy(eqn)
up_prior = eqn.up.copy()

qtarget = np.zeros_like(eqn.q)
dns, wilcox, wilcox_kw = load_data()

utau = Retau*eqn.nu*2.0
ydns = dns.y*0.5
ub = dns.u*utau
R11b = -(dns.ub*utau)**2