def LW_solver(u_init, itmax=cb.itmax, filename="u_test", write=False, plot=False) : r = cb.dt/cb.dx t = it = 0 u = np.copy(u_init) u_nNext = [] while it <= itmax : if "test" in filename.split("_") : abs_work = osp.join(curr_work, "tests_case") if osp.exists(abs_work) == False: os.mkdir(abs_work) else : abs_work = curr_work curr_filename = filename + "_it%d.npy"%(it+1) curr_filename = osp.join(abs_work, curr_filename) if osp.exists(filename) == True : it += 1 continue fu = np.asarray([0.5*u_x**2 for u_x in u]) der_sec = [cb.fac*(u[k+1] - 2*u[k] + u[k-1]) for k in range(1, len(u)-1)] der_sec.insert(0, cb.fac*(u[1] - 2*u[0] + u[-1])) der_sec.insert(len(der_sec), cb.fac*(u[0] - 2*u[-1] + u[-2])) for i in range(1,cb.Nx-1) : # Pour prendre en compte le point Nx-2 u_m, u_p = cvc.intermediaires(u, fu, i, r) fu_m = 0.5*u_m**2 fu_p = 0.5*u_p**2 u_nNext.append( u[i] - r*( fu_p - fu_m ) + der_sec[i] ) # Conditions aux limites u[1:cb.Nx-1] = u_nNext u_nNext = [] u[0] = u[-2] u[-1]= u[1] u = np.asarray(u) if write == True : if osp.exists(curr_filename) : os.remove(curr_filename) np.save(curr_filename, u) if plot==True : if it % 10 == 0: plt.figure("Evolution de la solution") plt.clf() plt.plot(cb.line_x, u, label="iteration = %d" % it) plt.legend() plt.ylim(-2,2) plt.pause(0.15) it += 1 return u, abs_work
except NameError: try: from importlib import reload # Python 3.4+ except ImportError: from imp import reload # Python 3.0 - 3.3 NNC = reload(NNC) BNN = reload(BNN) cvc = reload(cvc) harm = reload(harm) #run multiple_init_NN_burger_case.py -nu 2.5e-2 -itmax 40 -CFL 0.4 -num_real 5 -Nx 52 -Nt 32 -beta_prior 10 -typeJ "u" np.random.seed(1000000) parser = cvc.parser() cb = cvc.Vitesse_Choc(parser) wdir = osp.abspath("./data/burger_dataset/complex_init_NN/") curr_work = osp.join(wdir, "Nx:%d_Nt:%d_nu:%.4f_CFL:%0.2f" % (cb.Nx, cb.Nt, cb.nu, cb.CFL)) #beta_Nx:52_Nt:32_nu:0.025_typei:sin_CFL:0.4_it:017.npy def LW_solver(u_init, itmax=cb.itmax, filename="u_test", write=False, plot=False) : r = cb.dt/cb.dx t = it = 0 u = np.copy(u_init) u_nNext = [] while it <= itmax : if "test" in filename.split("_") : abs_work = osp.join(curr_work, "tests_case") if osp.exists(abs_work) == False: