|
16 | 16 | L_OUT = True # args.L_OUT
|
17 | 17 | VIS = False
|
18 | 18 | VIS_DT=10
|
19 |
| -ITMAX = 4000 |
| 19 | +VAL=True |
| 20 | +ITMAX = 1000 |
20 | 21 | dt = 90.
|
21 | 22 | tdt = dt
|
22 | 23 | dx = 100000.
|
@@ -77,6 +78,32 @@ def live_plot3(fu, fv, fp, title=''):
|
77 | 78 | #plt.ylabel('y')
|
78 | 79 | plt.show()
|
79 | 80 |
|
| 81 | +def read_arrays(u_file, v_file, p_file): |
| 82 | + u_v = np.loadtxt(u_file,) |
| 83 | + v_v = np.loadtxt(v_file) |
| 84 | + p_v = np.loadtxt(p_file) |
| 85 | + return u_v, v_v, p_v |
| 86 | + |
| 87 | +def live_plot_val(fu, fv, fp, title=''): |
| 88 | + mxu = fu.max() |
| 89 | + mxv = fv.max() |
| 90 | + mxp = fp.max() |
| 91 | + clear_output(wait=True) |
| 92 | + fig, (ax1, ax2, ax3) = plt.subplots(figsize=(13, 3), ncols=3) |
| 93 | + |
| 94 | + pos1 = ax1.imshow(fp, cmap='Blues', vmin=-mxp, vmax=mxp,interpolation='none') |
| 95 | + ax1.set_title('p') |
| 96 | + plt.colorbar(pos1,ax=ax1) |
| 97 | + pos2 = ax2.imshow(fu, cmap='Reds', vmin=-mxu, vmax=mxu,interpolation='none') |
| 98 | + ax2.set_title('u') |
| 99 | + plt.colorbar(pos2,ax=ax2) |
| 100 | + pos3 = ax3.imshow(fv, cmap='Greens',vmin=-mxv, vmax=mxv,interpolation='none') |
| 101 | + ax3.set_title('v') |
| 102 | + plt.colorbar(pos3, ax=ax3) |
| 103 | + |
| 104 | + fig.suptitle(title) |
| 105 | + plt.show() |
| 106 | + |
80 | 107 | # Initial values of the stream function and p
|
81 | 108 | # for i in range(M + 1):
|
82 | 109 | # for j in range(N + 1):
|
@@ -425,6 +452,34 @@ def copy_var(
|
425 | 452 | print("t200: ",dt2)
|
426 | 453 | print("t300: ",dt3)
|
427 | 454 |
|
| 455 | + if VAL: |
| 456 | + |
| 457 | + u_val_f = 'ref/u.64.64.IT4000.txt' |
| 458 | + v_val_f = 'ref/v.64.64.IT4000.txt' |
| 459 | + p_val_f = 'ref/p.64.64.IT4000.txt' |
| 460 | + uval = np.zeros((M_LEN, N_LEN)) |
| 461 | + vval = np.zeros((M_LEN, N_LEN)) |
| 462 | + pval = np.zeros((M_LEN, N_LEN)) |
| 463 | + |
| 464 | + uref, vref, pref = read_arrays(v_val_f, u_val_f, p_val_f) |
| 465 | + uval = uref-unew[:,:,0] |
| 466 | + vval = vref-vnew[:,:,0] |
| 467 | + pval = pref-pnew[:,:,0] |
| 468 | + |
| 469 | + uLinfN= np.linalg.norm(uval, np.inf) |
| 470 | + vLinfN= np.linalg.norm(vval, np.inf) |
| 471 | + pLinfN= np.linalg.norm(pval, np.inf) |
| 472 | + |
| 473 | + |
| 474 | + |
| 475 | + live_plot_val(uval, vval, pval, "Val") |
| 476 | + print("uLinfN: ", uLinfN) |
| 477 | + print("vLinfN: ", vLinfN) |
| 478 | + print("pLinfN: ", pLinfN) |
| 479 | + print("udiff max: ",uval.max()) |
| 480 | + print("vdiff max: ",vval.max()) |
| 481 | + print("pdiff max: ",pval.max()) |
| 482 | + |
428 | 483 |
|
429 | 484 | # gt4py NEXT part!!!!!!!!!!!!!!!!!!!!
|
430 | 485 |
|
@@ -547,3 +602,31 @@ def calc_h_program(
|
547 | 602 | print(" diagonal elements of p:\n", pnew[:,:,0].diagonal()[:-1])
|
548 | 603 | print(" diagonal elements of u:\n", unew[:,:,0].diagonal()[:-1])
|
549 | 604 | print(" diagonal elements of v:\n", vnew[:,:,0].diagonal()[:-1])
|
| 605 | + |
| 606 | + if VAL: |
| 607 | + print("val") |
| 608 | + u_val_f = 'ref/u.64.64.IT4000.txt' |
| 609 | + v_val_f = 'ref/v.64.64.IT4000.txt' |
| 610 | + p_val_f = 'ref/p.64.64.IT4000.txt' |
| 611 | + uval = np.zeros((M_LEN, N_LEN)) |
| 612 | + vval = np.zeros((M_LEN, N_LEN)) |
| 613 | + pval = np.zeros((M_LEN, N_LEN)) |
| 614 | + |
| 615 | + uref, vref, pref = read_arrays(v_val_f, u_val_f, p_val_f) |
| 616 | + uval = uref-unew |
| 617 | + vval = vref-vnew |
| 618 | + pval = pref-pnew |
| 619 | + |
| 620 | + uLinfN= np.linalg.norm(uval, np.inf) |
| 621 | + vLinfN= np.linalg.norm(vval, np.inf) |
| 622 | + pLinfN= np.linalg.norm(pval, np.inf) |
| 623 | + |
| 624 | + |
| 625 | + |
| 626 | + live_plot_val(uval, vval, pval, "Val") |
| 627 | + print("uLinfN: ", uLinfN) |
| 628 | + print("vLinfN: ", vLinfN) |
| 629 | + print("pLinfN: ", pLinfN) |
| 630 | + print("udiff max: ",uval.max()) |
| 631 | + print("vdiff max: ",vval.max()) |
| 632 | + print("pdiff max: ",pval.max()) |
0 commit comments