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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/usr/bin/env python3
# Copyright 2019-2020 Luca Fedeli, Maxence Thevenet, Remi Lehe
#
#
# This file is part of WarpX.
#
# License: BSD-3-Clause-LBNL
"""
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 os
import sys
import yt
yt.funcs.mylog.setLevel(0)
sys.path.insert(1, '../../../../warpx/Regression/Checksum/')
import checksumAPI
# 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[('mesh','Ex')].to_ndarray()
Ey_array = ad0[('mesh','Ey')].to_ndarray()
Ez_array = ad0[('mesh','Ez')].to_ndarray()
max_Efield = max(Ex_array.max(), Ey_array.max(), Ez_array.max())
print( "max_Efield = %s" %max_Efield )
# The field associated with the particle does not have
# the same amplitude in 2d and 3d
if ds.dimensionality == 2:
if ds.max_level == 0:
tolerance_abs = 0.0003
elif ds.max_level == 1:
tolerance_abs = 0.0006
elif ds.dimensionality == 3:
if ds.max_level == 0:
tolerance_abs = 10
elif ds.max_level == 1:
tolerance_abs = 110
else:
raise ValueError("Unknown dimensionality")
print("tolerance_abs: " + str(tolerance_abs))
assert max_Efield < tolerance_abs
test_name = os.path.split(os.getcwd())[1]
checksumAPI.evaluate_checksum(test_name, filename)
|