diff options
Diffstat (limited to 'Examples')
-rwxr-xr-x | Examples/Tests/collision/analysis_collision.py | 67 | ||||
-rw-r--r-- | Examples/Tests/collision/inputs | 65 |
2 files changed, 132 insertions, 0 deletions
diff --git a/Examples/Tests/collision/analysis_collision.py b/Examples/Tests/collision/analysis_collision.py new file mode 100755 index 000000000..25fa26e4b --- /dev/null +++ b/Examples/Tests/collision/analysis_collision.py @@ -0,0 +1,67 @@ +#! /usr/bin/env python + +# This script tests the collision module +# using electron-ion temperature relaxation. +# Initially, electrons and ions are both in equilibrium +# (gaussian) distributions, but have different temperatures. +# Relaxation occurs to bring the two temeratures to be +# a final same temperature through collisions. +# The code was tested to be valid, more detailed results +# were used to obtian an exponential fit with +# coefficients a and b. +# This automated test compares the results with the fit. + +# Possible errors: +# tolerance: 0.001 +# Possible running time: ~ 30.0 s + +import sys +import yt +import re +import math +import statistics +from glob import glob + +tolerance = 0.001 + +ng = 512 +ne = ng * 200 +ni = ng * 200 +np = ne + ni + +c = 299792458.0 +me = 9.10938356e-31 +mi = me * 5.0 + +# exponential fit coefficients +a = 0.041817463099883 +b = -0.083851393560288 + +last_fn = sys.argv[1] +temp = re.compile("([a-zA-Z_]+)([0-9]+)") +res = temp.match(last_fn).groups() +fn_list = glob(res[0] + "?????") + +error = 0.0 +nt = 0 +for fn in fn_list: + # load file + ds = yt.load( fn ) + ad = ds.all_data() + px = ad['particle_momentum_x'].to_ndarray() + # get time index j + buf = temp.match(fn).groups() + j = int(buf[1]) + # compute error + vxe = statistics.mean(px[ 0:ne])/me/c + vxi = statistics.mean(px[ne:np])/mi/c + vxd = vxe - vxi + fit = a*math.exp(b*j) + error = error + abs(fit-vxd) + nt = nt + 1 + +error = error / nt + +print('error = ', error) +print('tolerance = ', tolerance) +assert(error < tolerance) diff --git a/Examples/Tests/collision/inputs b/Examples/Tests/collision/inputs new file mode 100644 index 000000000..906f50b21 --- /dev/null +++ b/Examples/Tests/collision/inputs @@ -0,0 +1,65 @@ +################################# +####### GENERAL PARAMETERS ###### +################################# +max_step = 150 +amr.n_cell = 8 8 8 +amr.max_grid_size = 8 +amr.blocking_factor = 8 +amr.max_level = 0 +geometry.coord_sys = 0 +geometry.is_periodic = 1 1 1 +geometry.prob_lo = 0. 0. 0. +geometry.prob_hi = 4.154046151855669e2 4.154046151855669e2 4.154046151855669e2 +warpx.do_pml = 0 + +################################# +############ NUMERICS ########### +################################# +warpx.serialize_ics = 1 +warpx.verbose = 1 +warpx.cfl = 1.0 +amr.plot_int = 10 +warpx.plot_raw_fields = 0 + +################################# +############ PLASMA ############# +################################# +particles.nspecies = 2 +particles.species_names = electron ion + +electron.charge = -q_e +electron.mass = m_e +electron.injection_style = "NRandomPerCell" +electron.num_particles_per_cell = 200 +electron.profile = constant +electron.density = 1.0e21 +electron.momentum_distribution_type = "gaussian" +electron.ux_th = 0.044237441120300 +electron.uy_th = 0.044237441120300 +electron.uz_th = 0.044237441120300 +electron.ux_m = 0.044237441120300 +electron.do_not_deposit = 1 + +ion.charge = q_e +ion.mass = 4.554691780000000e-30 +ion.injection_style = "NRandomPerCell" +ion.num_particles_per_cell = 200 +ion.profile = constant +ion.density = 1.0e21 +ion.momentum_distribution_type = "gaussian" +ion.ux_th = 0.006256118919701 +ion.uy_th = 0.006256118919701 +ion.uz_th = 0.006256118919701 +ion.do_not_deposit = 1 + +################################# +############ COLLISION ########## +################################# +collisions.ncollisions = 3 +collisions.collision_names = collision1 collision2 collision3 +collision1.species = electron ion +collision2.species = electron electron +collision3.species = ion ion +collision1.CoulombLog = 15.9 +collision2.CoulombLog = 15.9 +collision3.CoulombLog = 15.9 |