diff options
author | 2022-12-02 20:20:17 -0800 | |
---|---|---|
committer | 2022-12-02 20:20:17 -0800 | |
commit | 2857ca08a97b3a8f82d902480816acac0b9614d6 (patch) | |
tree | 5999a62464445e491eeb81a96444f48c0fa41125 /Examples/Modules/RigidInjection/analysis_rigid_injection_LabFrame.py | |
parent | 3b6a467d1b7dd79ce90b02048dd1c6a0db7b138d (diff) | |
download | WarpX-2857ca08a97b3a8f82d902480816acac0b9614d6.tar.gz WarpX-2857ca08a97b3a8f82d902480816acac0b9614d6.tar.zst WarpX-2857ca08a97b3a8f82d902480816acac0b9614d6.zip |
Clean up examples folders (#3545)
* Clean up examples folders
* Use `snake_case` names
* Rename `nci_corrector` as `nci_fdtd_stability`
Diffstat (limited to 'Examples/Modules/RigidInjection/analysis_rigid_injection_LabFrame.py')
-rwxr-xr-x | Examples/Modules/RigidInjection/analysis_rigid_injection_LabFrame.py | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/Examples/Modules/RigidInjection/analysis_rigid_injection_LabFrame.py b/Examples/Modules/RigidInjection/analysis_rigid_injection_LabFrame.py deleted file mode 100755 index ee88e3225..000000000 --- a/Examples/Modules/RigidInjection/analysis_rigid_injection_LabFrame.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright 2019-2020 Luca Fedeli, Maxence Thevenet -# -# This file is part of WarpX. -# -# License: BSD-3-Clause-LBNL - - -''' -Analysis script of a WarpX simulation of rigid injection. - -A Gaussian electron beam starts from -5 microns, propagates rigidly up to -20 microns after which it expands due to emittance only (the focal position is -20 microns). The beam width is measured after ~50 microns, and compared with -the theory (with a 5% error allowed). - -As a help to the user, the script also compares beam width to the theory in -case rigid injection is OFF (i.e., the beam starts expanding from -5 microns), -in which case a warning is raised. - -Additionally, this script tests that runtime attributes are correctly initialized -with the gaussian_beam injection style. -''' - -import os -import sys - -import numpy as np -import yt - -yt.funcs.mylog.setLevel(0) -sys.path.insert(1, '../../../../warpx/Regression/Checksum/') -import checksumAPI - -filename = sys.argv[1] - -# WarpX headers include more data when rigid injection is used, -# which gives an error with the last yt release. -# To avoid this issue, the three last lines of WarpXHeader are removed if -# needed. -def remove_rigid_lines(plotfile, nlines_if_rigid): - header_name = plotfile + '/WarpXHeader' - f = open(header_name, 'r') - file_lines = f.readlines() - nlines = len(file_lines) - f.close() - if nlines == nlines_if_rigid: - f = open(header_name, 'w') - f.writelines(file_lines[:-3]) - f.close() - -# Remove rigid injection header lines -remove_rigid_lines(filename, 18) -# Read beam parameters -ds = yt.load( filename ) -ad = ds.all_data() -# Beam longitudinal position -z = np.mean(ad['beam', 'particle_position_y'].v) -# Beam width -w = np.std(ad['beam', 'particle_position_x'].v) - -# initial parameters -z0 = 20.e-6 -z0_no_rigid = -5.e-6 -w0 = 1.e-6 -theta0 = np.arcsin(0.1) - -# Theoretical beam width after propagation if rigid OFF -# Inform the user if rigid injection simply off (just to be kind) -wth_no_rigid = np.sqrt( w0**2 + (z-z0_no_rigid)**2*theta0**2 ) -error_no_rigid = np.abs((w-wth_no_rigid)/wth_no_rigid) -if ( error_no_rigid < 0.05): - print("error no rigid: " + str(error_no_rigid)) - print("Looks like the beam defocuses as if rigid injection were OFF") - -# Theoretical beam width after propagation if rigid ON -wth = np.sqrt( w0**2 + (z-z0)**2*theta0**2 ) -error_rel = np.abs((w-wth)/wth) -tolerance_rel = 0.05 - -# Print error and assert small error -print("Beam position: " + str(z)) -print("Beam width : " + str(w)) - -print("error_rel : " + str(error_rel)) -print("tolerance_rel: " + str(tolerance_rel)) - -assert( error_rel < tolerance_rel ) - - -### Check that user runtime attributes are correctly initialized -filename_start = filename[:-5] + '00000' -ds_start = yt.load( filename_start ) -ad_start = ds_start.all_data() -x = ad_start['beam', 'particle_position_x'] -z = ad_start['beam', 'particle_position_y'] -orig_z = ad_start['beam', 'particle_orig_z'] -center = ad_start['beam', 'particle_center'] -assert(np.array_equal(z, orig_z)) -assert(np.array_equal(1*(np.abs(x) < 5.e-7), center)) - -test_name = os.path.split(os.getcwd())[1] -checksumAPI.evaluate_checksum(test_name, filename) |