aboutsummaryrefslogtreecommitdiff
path: root/Examples/Tests/particles_in_PML/analysis.py
blob: 9d0c95d352d84203cad3387f0e4377008197a98f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#! /usr/bin/env python
"""
This script tests the absorption of particles in the PML.

The input file inputs_2d/inputs is used: it features a positive and a
negative particle, going in opposite direction and eventually 
leaving the box. This script tests that the field in the box
is close to 0 once the particles have left. With regular 
PML, this test fails, since the particles leave a spurious
charge, with associated fields, behind them.
"""
import sys
import yt
import numpy as np
yt.funcs.mylog.setLevel(0)

# Open plotfile specified in command line
filename = sys.argv[1]
ds = yt.load( filename )

# Check that the field is low enough
ad0 = ds.covering_grid(level=0, left_edge=ds.domain_left_edge, dims=ds.domain_dimensions)
Ex_array = ad0['Ex'].to_ndarray()
Ey_array = ad0['Ey'].to_ndarray()
Ez_array = ad0['Ez'].to_ndarray()
max_Efield = max(Ex_array.max(), Ey_array.max(), Ez_array.max())
print( max_Efield )

# The field associated with the particle does not have
# the same amplitude in 2d and 3d
if ds.dimensionality == 2:
    assert max_Efield < 0.0003
elif ds.dimensionality == 3:
    assert max_Efield < 10
else:
    raise ValueError("Unknown dimensionality")