utau = Retau*eqn.nu*2.0 ydns = dns[:,0]*0.5 udns = dns[:,2]*utau f = interp1d(ydns, udns) utarget = f(eqn.y) beta_prior = eqn.beta.copy() sigma_obs = 1e-10 sigma_prior = 1.0 eqn.objective = BayesianObjectiveU(utarget, beta_prior, sigma_obs, sigma_prior) inverse_solver = InverseSolver(eqn) inverse_solver.maxiter = 10 inverse_solver.stepsize = 0.1 inverse_solver.algo = "gn" eqn = inverse_solver.solve() plt.figure(11) plt.semilogx(eqn.yp, up_prior, 'g-', label=r'Prior') plt.semilogx(eqn.yp, eqn.up, 'r-', label=r'Posterior') plt.semilogx(eqn.yp[::5], utarget[::5]/utau, 'b.', label=r'DNS') plt.xlabel(r"$y^+$") plt.ylabel(r"$u^+$") plt.legend(loc=2) plt.tight_layout() plt.savefig("figs/inverse_matchu_u.pdf") plt.figure(4) beta11, beta12, beta22, beta33 = get_beta(eqn.beta)
eqn.beta[:] = 1.0 beta_prior = np.ones_like(eqn.beta) sigma_obs = 1e-10 sigma_prior = 1.0 if objective[0] == "ALL": eqn.objective = BayesianObjectiveAll(qtarget, beta_prior, sigma_obs, sigma_prior) elif objective[0] == "U": eqn.objective = BayesianObjectiveU(qtarget, beta_prior, sigma_obs, sigma_prior) else: raise ValueError("Objective function not defined!") inverse_solver = InverseSolver(eqn) inverse_solver.maxiter = maxiter inverse_solver.stepsize = maxstep inverse_solver.algo = "sd" eqn = inverse_solver.solve() plt.ioff() plt.figure(11) plt.semilogx(eqn.yp, up_prior, "g-", label=r"Prior") plt.semilogx(eqn.yp, eqn.up, "r-", label=r"Posterior") plt.semilogx(dns.yp[::5], dns.u[::5], "b.", label=r"DNS") plt.xlabel(r"$y^+$") plt.ylabel(r"$u^+$") plt.legend(loc=2) plt.tight_layout() plt.savefig("figs/inverse_%s_u.pdf" % objective) plt.figure(4)