#!/usr/bin/env python3 # Copyright 2019-2020 Axel Huebl, Glenn Richardson, Maxence Thevenet # # This file is part of WarpX. # # License: BSD-3-Clause-LBNL import sys import numpy as np import scipy.constants as scc import yt ; yt.funcs.mylog.setLevel(0) # Static electric field and quantum parameters, from the input file. Es = 1.0e5 xi = 1.0e-23 # Load dataset and get laser field dsQED = yt.load(sys.argv[1]) QED_all_data_level_0 = dsQED.covering_grid(level=0,left_edge=(dsQED.domain_left_edge), dims=dsQED.domain_dimensions) EyQED_2d = QED_all_data_level_0['boxlib', 'Ey'].v.squeeze() # Extract 1D lineout of the laser field EyQED = EyQED_2d[EyQED_2d.shape[0]//2,:] # Longitudinal resolution dz = dsQED.domain_width[1].v/dsQED.domain_dimensions[1] # Initial position of the laser pulse max (from input file) z_start = 0. # Final position of the laser pulse max (from plotfile) z_end = dsQED.domain_left_edge[1].v + np.argmax(EyQED) * dz # Compute phase velocity and compare with theory phase_velocity_pic = (z_end-z_start)/dsQED.current_time.v phase_velocity_theory = scc.c/np.sqrt((1.+12.*xi*Es**2/scc.epsilon_0)/(1.+4.*xi*Es**2/scc.epsilon_0)) error_percent = 100.*np.abs(phase_velocity_pic-phase_velocity_theory)/phase_velocity_theory # Print and assert correctness print('Simulation velocity: ' + str(phase_velocity_pic)) print('Theory velocity : ' + str(phase_velocity_theory)) print('error (%) : ' + str(error_percent) ) print('Theoretical difference between with/without QED (%): ' + str(100*np.abs(phase_velocity_theory-scc.c)/scc.c)) assert( error_percent < 1.25 )