In [1]:
import arrayfire as af
import numpy as np
import pylab as pl

from bolt.lib.physical_system import physical_system
from bolt.lib.nonlinear.nonlinear_solver import nonlinear_solver
from bolt.lib.linear.linear_solver import linear_solver

import domain
import boundary_conditions
import params
import initialize

import bolt.src.nonrelativistic_boltzmann.advection_terms as advection_terms
import bolt.src.nonrelativistic_boltzmann.collision_operator as collision_operator
import bolt.src.nonrelativistic_boltzmann.moments as moments

%matplotlib inline

# Optimized plot parameters to make beautiful plots:
pl.rcParams['figure.figsize']  = 12, 7.5
pl.rcParams['figure.dpi']      = 300
pl.rcParams['image.cmap']      = 'jet'
pl.rcParams['lines.linewidth'] = 1.5
pl.rcParams['font.family']     = 'serif'
pl.rcParams['font.weight']     = 'bold'
pl.rcParams['font.size']       = 20
pl.rcParams['font.sans-serif'] = 'serif'
pl.rcParams['text.usetex']     = True
pl.rcParams['axes.linewidth']  = 1.5
pl.rcParams['axes.titlesize']  = 'medium'
pl.rcParams['axes.labelsize']  = 'medium'

pl.rcParams['xtick.major.size'] = 8
pl.rcParams['xtick.minor.size'] = 4
pl.rcParams['xtick.major.pad']  = 8
pl.rcParams['xtick.minor.pad']  = 8
pl.rcParams['xtick.color']      = 'k'
pl.rcParams['xtick.labelsize']  = 'medium'
pl.rcParams['xtick.direction']  = 'in'

pl.rcParams['ytick.major.size'] = 8
pl.rcParams['ytick.minor.size'] = 4
pl.rcParams['ytick.major.pad']  = 8
pl.rcParams['ytick.minor.pad']  = 8
pl.rcParams['ytick.color']      = 'k'
pl.rcParams['ytick.labelsize']  = 'medium'
pl.rcParams['ytick.direction']  = 'in'

In [10]:
# Time parameters:
t_final = 0.1
N       = 256

domain.N_q1 = int(N)
domain.N_p1 = int(N)

if (params.p_dim==2):
    domain.N_q2 = int(N)
    domain.N_p2 = int(N)

dt = 32*1e-3/N

# Defining the physical system to be solved:
system = physical_system(domain,
                         boundary_conditions,
                         params,
                         initialize,
                         advection_terms,
                         collision_operator.BGK,
                         moments
                        )

N_g_q = system.N_ghost_q

# Declaring a linear system object which will evolve the defined physical system:
nls = nonlinear_solver(system)
ls  = linear_solver(system)

In [11]:
time_array  = np.arange(dt, t_final + dt, dt)

rho_data_nls = np.zeros(time_array.size)
rho_data_ls  = np.zeros(time_array.size)

# Storing data at time t = 0:
n_nls           = nls.compute_moments('density')
rho_data_nls[0] = af.max(n_nls[:, :, N_g_q:-N_g_q, N_g_q:-N_g_q])

n_ls           = ls.compute_moments('density')
rho_data_ls[0] = af.max(n_ls) 

for time_index, t0 in enumerate(time_array):

    print('time_step = ', time_index, 'of ', time_array.size)
    nls.strang_timestep(dt)
    ls.RK4_timestep(dt)

    n_nls                     = nls.compute_moments('density')
    rho_data_nls[time_index]  = af.max(n_nls[:, :, N_g_q:-N_g_q, N_g_q:-N_g_q])
    
    n_ls                    = ls.compute_moments('density')
    rho_data_ls[time_index] = af.max(n_ls) 

nls.dump_distribution_function('dump_files/nlsf_' + str(N))
ls.dump_distribution_function('dump_files/lsf_' + str(N))


time_step =  0 of  800
time_step =  1 of  800
time_step =  2 of  800
time_step =  3 of  800
time_step =  4 of  800
time_step =  5 of  800
time_step =  6 of  800
time_step =  7 of  800
time_step =  8 of  800
time_step =  9 of  800
time_step =  10 of  800
time_step =  11 of  800
time_step =  12 of  800
time_step =  13 of  800
time_step =  14 of  800
time_step =  15 of  800
time_step =  16 of  800
time_step =  17 of  800
time_step =  18 of  800
time_step =  19 of  800
time_step =  20 of  800
time_step =  21 of  800
time_step =  22 of  800
time_step =  23 of  800
time_step =  24 of  800
time_step =  25 of  800
time_step =  26 of  800
time_step =  27 of  800
time_step =  28 of  800
time_step =  29 of  800
time_step =  30 of  800
time_step =  31 of  800
time_step =  32 of  800
time_step =  33 of  800
time_step =  34 of  800
time_step =  35 of  800
time_step =  36 of  800
time_step =  37 of  800
time_step =  38 of  800
time_step =  39 of  800
time_step =  40 of  800
time_step =  41 of  800
time_step =  42 of  800
time_step =  43 of  800
time_step =  44 of  800
time_step =  45 of  800
time_step =  46 of  800
time_step =  47 of  800
time_step =  48 of  800
time_step =  49 of  800
time_step =  50 of  800
time_step =  51 of  800
time_step =  52 of  800
time_step =  53 of  800
time_step =  54 of  800
time_step =  55 of  800
time_step =  56 of  800
time_step =  57 of  800
time_step =  58 of  800
time_step =  59 of  800
time_step =  60 of  800
time_step =  61 of  800
time_step =  62 of  800
time_step =  63 of  800
time_step =  64 of  800
time_step =  65 of  800
time_step =  66 of  800
time_step =  67 of  800
time_step =  68 of  800
time_step =  69 of  800
time_step =  70 of  800
time_step =  71 of  800
time_step =  72 of  800
time_step =  73 of  800
time_step =  74 of  800
time_step =  75 of  800
time_step =  76 of  800
time_step =  77 of  800
time_step =  78 of  800
time_step =  79 of  800
time_step =  80 of  800
time_step =  81 of  800
time_step =  82 of  800
time_step =  83 of  800
time_step =  84 of  800
time_step =  85 of  800
time_step =  86 of  800
time_step =  87 of  800
time_step =  88 of  800
time_step =  89 of  800
time_step =  90 of  800
time_step =  91 of  800
time_step =  92 of  800
time_step =  93 of  800
time_step =  94 of  800
time_step =  95 of  800
time_step =  96 of  800
time_step =  97 of  800
time_step =  98 of  800
time_step =  99 of  800
time_step =  100 of  800
time_step =  101 of  800
time_step =  102 of  800
time_step =  103 of  800
time_step =  104 of  800
time_step =  105 of  800
time_step =  106 of  800
time_step =  107 of  800
time_step =  108 of  800
time_step =  109 of  800
time_step =  110 of  800
time_step =  111 of  800
time_step =  112 of  800
time_step =  113 of  800
time_step =  114 of  800
time_step =  115 of  800
time_step =  116 of  800
time_step =  117 of  800
time_step =  118 of  800
time_step =  119 of  800
time_step =  120 of  800
time_step =  121 of  800
time_step =  122 of  800
time_step =  123 of  800
time_step =  124 of  800
time_step =  125 of  800
time_step =  126 of  800
time_step =  127 of  800
time_step =  128 of  800
time_step =  129 of  800
time_step =  130 of  800
time_step =  131 of  800
time_step =  132 of  800
time_step =  133 of  800
time_step =  134 of  800
time_step =  135 of  800
time_step =  136 of  800
time_step =  137 of  800
time_step =  138 of  800
time_step =  139 of  800
time_step =  140 of  800
time_step =  141 of  800
time_step =  142 of  800
time_step =  143 of  800
time_step =  144 of  800
time_step =  145 of  800
time_step =  146 of  800
time_step =  147 of  800
time_step =  148 of  800
time_step =  149 of  800
time_step =  150 of  800
time_step =  151 of  800
time_step =  152 of  800
time_step =  153 of  800
time_step =  154 of  800
time_step =  155 of  800
time_step =  156 of  800
time_step =  157 of  800
time_step =  158 of  800
time_step =  159 of  800
time_step =  160 of  800
time_step =  161 of  800
time_step =  162 of  800
time_step =  163 of  800
time_step =  164 of  800
time_step =  165 of  800
time_step =  166 of  800
time_step =  167 of  800
time_step =  168 of  800
time_step =  169 of  800
time_step =  170 of  800
time_step =  171 of  800
time_step =  172 of  800
time_step =  173 of  800
time_step =  174 of  800
time_step =  175 of  800
time_step =  176 of  800
time_step =  177 of  800
time_step =  178 of  800
time_step =  179 of  800
time_step =  180 of  800
time_step =  181 of  800
time_step =  182 of  800
time_step =  183 of  800
time_step =  184 of  800
time_step =  185 of  800
time_step =  186 of  800
time_step =  187 of  800
time_step =  188 of  800
time_step =  189 of  800
time_step =  190 of  800
time_step =  191 of  800
time_step =  192 of  800
time_step =  193 of  800
time_step =  194 of  800
time_step =  195 of  800
time_step =  196 of  800
time_step =  197 of  800
time_step =  198 of  800
time_step =  199 of  800
time_step =  200 of  800
time_step =  201 of  800
time_step =  202 of  800
time_step =  203 of  800
time_step =  204 of  800
time_step =  205 of  800
time_step =  206 of  800
time_step =  207 of  800
time_step =  208 of  800
time_step =  209 of  800
time_step =  210 of  800
time_step =  211 of  800
time_step =  212 of  800
time_step =  213 of  800
time_step =  214 of  800
time_step =  215 of  800
time_step =  216 of  800
time_step =  217 of  800
time_step =  218 of  800
time_step =  219 of  800
time_step =  220 of  800
time_step =  221 of  800
time_step =  222 of  800
time_step =  223 of  800
time_step =  224 of  800
time_step =  225 of  800
time_step =  226 of  800
time_step =  227 of  800
time_step =  228 of  800
time_step =  229 of  800
time_step =  230 of  800
time_step =  231 of  800
time_step =  232 of  800
time_step =  233 of  800
time_step =  234 of  800
time_step =  235 of  800
time_step =  236 of  800
time_step =  237 of  800
time_step =  238 of  800
time_step =  239 of  800
time_step =  240 of  800
time_step =  241 of  800
time_step =  242 of  800
time_step =  243 of  800
time_step =  244 of  800
time_step =  245 of  800
time_step =  246 of  800
time_step =  247 of  800
time_step =  248 of  800
time_step =  249 of  800
time_step =  250 of  800
time_step =  251 of  800
time_step =  252 of  800
time_step =  253 of  800
time_step =  254 of  800
time_step =  255 of  800
time_step =  256 of  800
time_step =  257 of  800
time_step =  258 of  800
time_step =  259 of  800
time_step =  260 of  800
time_step =  261 of  800
time_step =  262 of  800
time_step =  263 of  800
time_step =  264 of  800
time_step =  265 of  800
time_step =  266 of  800
time_step =  267 of  800
time_step =  268 of  800
time_step =  269 of  800
time_step =  270 of  800
time_step =  271 of  800
time_step =  272 of  800
time_step =  273 of  800
time_step =  274 of  800
time_step =  275 of  800
time_step =  276 of  800
time_step =  277 of  800
time_step =  278 of  800
time_step =  279 of  800
time_step =  280 of  800
time_step =  281 of  800
time_step =  282 of  800
time_step =  283 of  800
time_step =  284 of  800
time_step =  285 of  800
time_step =  286 of  800
time_step =  287 of  800
time_step =  288 of  800
time_step =  289 of  800
time_step =  290 of  800
time_step =  291 of  800
time_step =  292 of  800
time_step =  293 of  800
time_step =  294 of  800
time_step =  295 of  800
time_step =  296 of  800
time_step =  297 of  800
time_step =  298 of  800
time_step =  299 of  800
time_step =  300 of  800
time_step =  301 of  800
time_step =  302 of  800
time_step =  303 of  800
time_step =  304 of  800
time_step =  305 of  800
time_step =  306 of  800
time_step =  307 of  800
time_step =  308 of  800
time_step =  309 of  800
time_step =  310 of  800
time_step =  311 of  800
time_step =  312 of  800
time_step =  313 of  800
time_step =  314 of  800
time_step =  315 of  800
time_step =  316 of  800
time_step =  317 of  800
time_step =  318 of  800
time_step =  319 of  800
time_step =  320 of  800
time_step =  321 of  800
time_step =  322 of  800
time_step =  323 of  800
time_step =  324 of  800
time_step =  325 of  800
time_step =  326 of  800
time_step =  327 of  800
time_step =  328 of  800
time_step =  329 of  800
time_step =  330 of  800
time_step =  331 of  800
time_step =  332 of  800
time_step =  333 of  800
time_step =  334 of  800
time_step =  335 of  800
time_step =  336 of  800
time_step =  337 of  800
time_step =  338 of  800
time_step =  339 of  800
time_step =  340 of  800
time_step =  341 of  800
time_step =  342 of  800
time_step =  343 of  800
time_step =  344 of  800
time_step =  345 of  800
time_step =  346 of  800
time_step =  347 of  800
time_step =  348 of  800
time_step =  349 of  800
time_step =  350 of  800
time_step =  351 of  800
time_step =  352 of  800
time_step =  353 of  800
time_step =  354 of  800
time_step =  355 of  800
time_step =  356 of  800
time_step =  357 of  800
time_step =  358 of  800
time_step =  359 of  800
time_step =  360 of  800
time_step =  361 of  800
time_step =  362 of  800
time_step =  363 of  800
time_step =  364 of  800
time_step =  365 of  800
time_step =  366 of  800
time_step =  367 of  800
time_step =  368 of  800
time_step =  369 of  800
time_step =  370 of  800
time_step =  371 of  800
time_step =  372 of  800
time_step =  373 of  800
time_step =  374 of  800
time_step =  375 of  800
time_step =  376 of  800
time_step =  377 of  800
time_step =  378 of  800
time_step =  379 of  800
time_step =  380 of  800
time_step =  381 of  800
time_step =  382 of  800
time_step =  383 of  800
time_step =  384 of  800
time_step =  385 of  800
time_step =  386 of  800
time_step =  387 of  800
time_step =  388 of  800
time_step =  389 of  800
time_step =  390 of  800
time_step =  391 of  800
time_step =  392 of  800
time_step =  393 of  800
time_step =  394 of  800
time_step =  395 of  800
time_step =  396 of  800
time_step =  397 of  800
time_step =  398 of  800
time_step =  399 of  800
time_step =  400 of  800
time_step =  401 of  800
time_step =  402 of  800
time_step =  403 of  800
time_step =  404 of  800
time_step =  405 of  800
time_step =  406 of  800
time_step =  407 of  800
time_step =  408 of  800
time_step =  409 of  800
time_step =  410 of  800
time_step =  411 of  800
time_step =  412 of  800
time_step =  413 of  800
time_step =  414 of  800
time_step =  415 of  800
time_step =  416 of  800
time_step =  417 of  800
time_step =  418 of  800
time_step =  419 of  800
time_step =  420 of  800
time_step =  421 of  800
time_step =  422 of  800
time_step =  423 of  800
time_step =  424 of  800
time_step =  425 of  800
time_step =  426 of  800
time_step =  427 of  800
time_step =  428 of  800
time_step =  429 of  800
time_step =  430 of  800
time_step =  431 of  800
time_step =  432 of  800
time_step =  433 of  800
time_step =  434 of  800
time_step =  435 of  800
time_step =  436 of  800
time_step =  437 of  800
time_step =  438 of  800
time_step =  439 of  800
time_step =  440 of  800
time_step =  441 of  800
time_step =  442 of  800
time_step =  443 of  800
time_step =  444 of  800
time_step =  445 of  800
time_step =  446 of  800
time_step =  447 of  800
time_step =  448 of  800
time_step =  449 of  800
time_step =  450 of  800
time_step =  451 of  800
time_step =  452 of  800
time_step =  453 of  800
time_step =  454 of  800
time_step =  455 of  800
time_step =  456 of  800
time_step =  457 of  800
time_step =  458 of  800
time_step =  459 of  800
time_step =  460 of  800
time_step =  461 of  800
time_step =  462 of  800
time_step =  463 of  800
time_step =  464 of  800
time_step =  465 of  800
time_step =  466 of  800
time_step =  467 of  800
time_step =  468 of  800
time_step =  469 of  800
time_step =  470 of  800
time_step =  471 of  800
time_step =  472 of  800
time_step =  473 of  800
time_step =  474 of  800
time_step =  475 of  800
time_step =  476 of  800
time_step =  477 of  800
time_step =  478 of  800
time_step =  479 of  800
time_step =  480 of  800
time_step =  481 of  800
time_step =  482 of  800
time_step =  483 of  800
time_step =  484 of  800
time_step =  485 of  800
time_step =  486 of  800
time_step =  487 of  800
time_step =  488 of  800
time_step =  489 of  800
time_step =  490 of  800
time_step =  491 of  800
time_step =  492 of  800
time_step =  493 of  800
time_step =  494 of  800
time_step =  495 of  800
time_step =  496 of  800
time_step =  497 of  800
time_step =  498 of  800
time_step =  499 of  800
time_step =  500 of  800
time_step =  501 of  800
time_step =  502 of  800
time_step =  503 of  800
time_step =  504 of  800
time_step =  505 of  800
time_step =  506 of  800
time_step =  507 of  800
time_step =  508 of  800
time_step =  509 of  800
time_step =  510 of  800
time_step =  511 of  800
time_step =  512 of  800
time_step =  513 of  800
time_step =  514 of  800
time_step =  515 of  800
time_step =  516 of  800
time_step =  517 of  800
time_step =  518 of  800
time_step =  519 of  800
time_step =  520 of  800
time_step =  521 of  800
time_step =  522 of  800
time_step =  523 of  800
time_step =  524 of  800
time_step =  525 of  800
time_step =  526 of  800
time_step =  527 of  800
time_step =  528 of  800
time_step =  529 of  800
time_step =  530 of  800
time_step =  531 of  800
time_step =  532 of  800
time_step =  533 of  800
time_step =  534 of  800
time_step =  535 of  800
time_step =  536 of  800
time_step =  537 of  800
time_step =  538 of  800
time_step =  539 of  800
time_step =  540 of  800
time_step =  541 of  800
time_step =  542 of  800
time_step =  543 of  800
time_step =  544 of  800
time_step =  545 of  800
time_step =  546 of  800
time_step =  547 of  800
time_step =  548 of  800
time_step =  549 of  800
time_step =  550 of  800
time_step =  551 of  800
time_step =  552 of  800
time_step =  553 of  800
time_step =  554 of  800
time_step =  555 of  800
time_step =  556 of  800
time_step =  557 of  800
time_step =  558 of  800
time_step =  559 of  800
time_step =  560 of  800
time_step =  561 of  800
time_step =  562 of  800
time_step =  563 of  800
time_step =  564 of  800
time_step =  565 of  800
time_step =  566 of  800
time_step =  567 of  800
time_step =  568 of  800
time_step =  569 of  800
time_step =  570 of  800
time_step =  571 of  800
time_step =  572 of  800
time_step =  573 of  800
time_step =  574 of  800
time_step =  575 of  800
time_step =  576 of  800
time_step =  577 of  800
time_step =  578 of  800
time_step =  579 of  800
time_step =  580 of  800
time_step =  581 of  800
time_step =  582 of  800
time_step =  583 of  800
time_step =  584 of  800
time_step =  585 of  800
time_step =  586 of  800
time_step =  587 of  800
time_step =  588 of  800
time_step =  589 of  800
time_step =  590 of  800
time_step =  591 of  800
time_step =  592 of  800
time_step =  593 of  800
time_step =  594 of  800
time_step =  595 of  800
time_step =  596 of  800
time_step =  597 of  800
time_step =  598 of  800
time_step =  599 of  800
time_step =  600 of  800
time_step =  601 of  800
time_step =  602 of  800
time_step =  603 of  800
time_step =  604 of  800
time_step =  605 of  800
time_step =  606 of  800
time_step =  607 of  800
time_step =  608 of  800
time_step =  609 of  800
time_step =  610 of  800
time_step =  611 of  800
time_step =  612 of  800
time_step =  613 of  800
time_step =  614 of  800
time_step =  615 of  800
time_step =  616 of  800
time_step =  617 of  800
time_step =  618 of  800
time_step =  619 of  800
time_step =  620 of  800
time_step =  621 of  800
time_step =  622 of  800
time_step =  623 of  800
time_step =  624 of  800
time_step =  625 of  800
time_step =  626 of  800
time_step =  627 of  800
time_step =  628 of  800
time_step =  629 of  800
time_step =  630 of  800
time_step =  631 of  800
time_step =  632 of  800
time_step =  633 of  800
time_step =  634 of  800
time_step =  635 of  800
time_step =  636 of  800
time_step =  637 of  800
time_step =  638 of  800
time_step =  639 of  800
time_step =  640 of  800
time_step =  641 of  800
time_step =  642 of  800
time_step =  643 of  800
time_step =  644 of  800
time_step =  645 of  800
time_step =  646 of  800
time_step =  647 of  800
time_step =  648 of  800
time_step =  649 of  800
time_step =  650 of  800
time_step =  651 of  800
time_step =  652 of  800
time_step =  653 of  800
time_step =  654 of  800
time_step =  655 of  800
time_step =  656 of  800
time_step =  657 of  800
time_step =  658 of  800
time_step =  659 of  800
time_step =  660 of  800
time_step =  661 of  800
time_step =  662 of  800
time_step =  663 of  800
time_step =  664 of  800
time_step =  665 of  800
time_step =  666 of  800
time_step =  667 of  800
time_step =  668 of  800
time_step =  669 of  800
time_step =  670 of  800
time_step =  671 of  800
time_step =  672 of  800
time_step =  673 of  800
time_step =  674 of  800
time_step =  675 of  800
time_step =  676 of  800
time_step =  677 of  800
time_step =  678 of  800
time_step =  679 of  800
time_step =  680 of  800
time_step =  681 of  800
time_step =  682 of  800
time_step =  683 of  800
time_step =  684 of  800
time_step =  685 of  800
time_step =  686 of  800
time_step =  687 of  800
time_step =  688 of  800
time_step =  689 of  800
time_step =  690 of  800
time_step =  691 of  800
time_step =  692 of  800
time_step =  693 of  800
time_step =  694 of  800
time_step =  695 of  800
time_step =  696 of  800
time_step =  697 of  800
time_step =  698 of  800
time_step =  699 of  800
time_step =  700 of  800
time_step =  701 of  800
time_step =  702 of  800
time_step =  703 of  800
time_step =  704 of  800
time_step =  705 of  800
time_step =  706 of  800
time_step =  707 of  800
time_step =  708 of  800
time_step =  709 of  800
time_step =  710 of  800
time_step =  711 of  800
time_step =  712 of  800
time_step =  713 of  800
time_step =  714 of  800
time_step =  715 of  800
time_step =  716 of  800
time_step =  717 of  800
time_step =  718 of  800
time_step =  719 of  800
time_step =  720 of  800
time_step =  721 of  800
time_step =  722 of  800
time_step =  723 of  800
time_step =  724 of  800
time_step =  725 of  800
time_step =  726 of  800
time_step =  727 of  800
time_step =  728 of  800
time_step =  729 of  800
time_step =  730 of  800
time_step =  731 of  800
time_step =  732 of  800
time_step =  733 of  800
time_step =  734 of  800
time_step =  735 of  800
time_step =  736 of  800
time_step =  737 of  800
time_step =  738 of  800
time_step =  739 of  800
time_step =  740 of  800
time_step =  741 of  800
time_step =  742 of  800
time_step =  743 of  800
time_step =  744 of  800
time_step =  745 of  800
time_step =  746 of  800
time_step =  747 of  800
time_step =  748 of  800
time_step =  749 of  800
time_step =  750 of  800
time_step =  751 of  800
time_step =  752 of  800
time_step =  753 of  800
time_step =  754 of  800
time_step =  755 of  800
time_step =  756 of  800
time_step =  757 of  800
time_step =  758 of  800
time_step =  759 of  800
time_step =  760 of  800
time_step =  761 of  800
time_step =  762 of  800
time_step =  763 of  800
time_step =  764 of  800
time_step =  765 of  800
time_step =  766 of  800
time_step =  767 of  800
time_step =  768 of  800
time_step =  769 of  800
time_step =  770 of  800
time_step =  771 of  800
time_step =  772 of  800
time_step =  773 of  800
time_step =  774 of  800
time_step =  775 of  800
time_step =  776 of  800
time_step =  777 of  800
time_step =  778 of  800
time_step =  779 of  800
time_step =  780 of  800
time_step =  781 of  800
time_step =  782 of  800
time_step =  783 of  800
time_step =  784 of  800
time_step =  785 of  800
time_step =  786 of  800
time_step =  787 of  800
time_step =  788 of  800
time_step =  789 of  800
time_step =  790 of  800
time_step =  791 of  800
time_step =  792 of  800
time_step =  793 of  800
time_step =  794 of  800
time_step =  795 of  800
time_step =  796 of  800
time_step =  797 of  800
time_step =  798 of  800
time_step =  799 of  800

In [12]:
import h5py

# Checking the errors
def check_convergence():
    N     = np.array([32, 64, 128, 256])
    error = np.zeros(N.size)
    
    for i in range(N.size):

        print("N = ", i)
        h5f   = h5py.File('dump_files/nlsf_' + str(N[i]) + '.h5')
        nls_f = h5f['distribution_function'][:]
        h5f.close()    

        h5f  = h5py.File('dump_files/lsf_' + str(N[i]) + '.h5')
        ls_f = h5f['distribution_function'][:]
        h5f.close()

        error[i] = np.mean(abs(nls_f - ls_f))

    print(error)
    poly = np.polyfit(np.log10(N), np.log10(error), 1)
    print(poly)

    pl.loglog(N, error, 'o-', label = 'Numerical')
    pl.loglog(N, error[0]*32**2/N**2, '--', color = 'black', 
              label = r'$O(N^{-2})$'
             )
    pl.legend(loc = 'best')
    pl.ylabel('Error')
    pl.xlabel('$N$')

In [13]:
check_convergence()


N =  0
N =  1
N =  2
N =  3
[  2.27942488e-08   3.30019343e-09   7.41818882e-10   1.85096470e-10]
[-2.29861577 -4.2487949 ]