diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 10dc0a78a6802c73fdfca25cf52d1dac5b9dcaf7..823f23fc4dcb8e8bdf49105a0d429144873faf96 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,23 +7,29 @@ stages: - test - deploy -check: +style_check: stage: test image: registry.esss.lu.se/ics-docker/pre-commit script: - pre-commit run --all-files +examples: + stage: test + script: + - pip install numpy scipy h5py matplotlib webdavclient3 + - python tests.py -v + pages: stage: deploy script: - - pip install sphinx sphinxcontrib-blockdiag blockdiag sphinxcontrib-restbuilder numpy sphinx_rtd_theme m2r - - python setup.py install - - sphinx-build -b html -d public/doctrees doc public + - pip install sphinx sphinxcontrib-blockdiag blockdiag sphinxcontrib-restbuilder numpy sphinx_rtd_theme m2r + - python setup.py install + - sphinx-build -b html -d public/doctrees doc public artifacts: paths: - - public + - public only: - - master + - master release-pypi: tags: diff --git a/TraceWinCondor/submit.py b/TraceWinCondor/submit.py index a1e6003f3e9ff7c73321f28edf82bc2b76c0760a..f9afe1ac437ca44c8c77ffd5b595b92b7190c01e 100644 --- a/TraceWinCondor/submit.py +++ b/TraceWinCondor/submit.py @@ -1,15 +1,11 @@ def define_and_handle_args(): import argparse - parser = argparse.ArgumentParser( - description="Simple setup script to run TraceWin on HT Condor.." - ) + parser = argparse.ArgumentParser(description="Simple setup script to run TraceWin on HT Condor..") parser.add_argument("-s", dest="seed", default=None, type=int, help="Define seed") - parser.add_argument( - "-c", dest="calc_dir", default=".", type=str, help="Path to calculation folder" - ) + parser.add_argument("-c", dest="calc_dir", default=".", type=str, help="Path to calculation folder") parser.add_argument("-p", dest="priority", default=0, type=int, help="Job priority") @@ -31,8 +27,7 @@ def setup_exec_folder(): for OpSys in ["LINUX", "OSX"]: for Arch in ["INTEL", "X86_64"]: shutil.copy( - os.path.join(orig_path, "trace" + o[OpSys] + a[Arch]), - os.path.join("TraceWin_exe", "tracewin.%s.%s" % (OpSys, Arch)), + os.path.join(orig_path, "trace" + o[OpSys] + a[Arch]), os.path.join("TraceWin_exe", "tracewin.%s.%s" % (OpSys, Arch)), ) diff --git a/doc/conf.py b/doc/conf.py index a20d64a180cbfaadf8cf17a4f30d9ba53e943792..7f9565634ec2a71978888b264ca2e4bc5ddfff64 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -262,9 +262,7 @@ htmlhelp_basename = "ESSPythonToolsdoc" # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, "esspythontools", "ESS Python Tools Documentation", [author], 1) -] +man_pages = [(master_doc, "esspythontools", "ESS Python Tools Documentation", [author], 1)] # If true, show URL addresses after external links. # diff --git a/doc/examples/lib_tw.rst b/doc/examples/lib_tw.rst index 9d25ae3328eae7f510402c24cdb3c38ef3d85dc7..b0156e89beaaf2c0177f152f4bb612c4b9194aa5 100644 --- a/doc/examples/lib_tw.rst +++ b/doc/examples/lib_tw.rst @@ -10,26 +10,26 @@ Example 1 Read in plt file, write dst file for each location:: - from ess import lib_tw - - file_name_lat ='lattice2.dat' - file_name_lat_new='lattice2.adjusted.dat' - file_name_fmap =['Field_Maps/1D/'+f for f in ['Spoke_W_coupler.edz','MB_W_coupler.edz','HB_W_coupler.edz']] - file_name_st ='Steerer_Values.txt' - file_name_adj ='Adjusted_Values.txt' - - lat=lib_tw.LATTICE(file_name_lat,file_name_fmap) - # Updates based on Steerer_Values: - lat.update_st(file_name_st) - # Updates based on Adjusted_Values: - lat.update_adj(file_name_adj) - - lat.get_tw(file_name_lat_new) - - #-- If we want to reset all steerers to 0 ... - #for i in range(len(lat.lst)): - # if lat.lst[i].typ=='THIN_STEERING': lat.lst[i].BLx=0.0; lat.lst[i].BLy=0.0 - # if lat.lst[i].typ=='STEERER' : lat.lst[i].Bx =0.0; lat.lst[i].By =0.0 + >>> from ess import lib_tw + + >>> file_name_lat = 'testfiles/lattice.dat' + >>> file_name_lat_new = 'lattice.adjusted.dat' + >>> file_name_fmap = [f'testfiles/Field_Maps/{f}' for f in ['Spoke_W_coupler.edz','MB_W_coupler.edz','HB_W_coupler.edz']] + >>> file_name_st = 'testfiles/Steerer_Values.txt' + >>> file_name_adj = 'testfiles/Adjusted_Values.txt' + + >>> lat = lib_tw.LATTICE(file_name_lat, file_name_fmap) + >>> # Updates based on Steerer_Values: + >>> lat.update_st(file_name_st) + >>> # Updates based on Adjusted_Values: + >>> lat.update_adj(file_name_adj) + + >>> lat.get_tw(file_name_lat_new) + + >>> #-- reset all steerers to 0 ... + >>> for i in range(len(lat.lst)): + ... if lat.lst[i].typ=='THIN_STEERING': lat.lst[i].BLx=0.0; lat.lst[i].BLy=0.0 + ... if lat.lst[i].typ=='STEERER' : lat.lst[i].Bx =0.0; lat.lst[i].By =0.0 diff --git a/doc/examples/tracewin.rst b/doc/examples/tracewin.rst index 46f8660ef187be9a2ac230e43ad398e52f5ca526..0402ed4d826122714e3a7e24d6c9e91d9d4bc4f8 100644 --- a/doc/examples/tracewin.rst +++ b/doc/examples/tracewin.rst @@ -15,13 +15,11 @@ Read in plt file, write dst file for each location:: >>> for i in data.Nelp: ... dst = data.save_dst(i, f'distribution_{i}.dst') - Example 2 ========= Read in many Density files from a folder, put data into one HDF5 file:: - >>> from ess import TraceWin >>> import os >>> calc_dir = 'testfiles' @@ -33,3 +31,12 @@ Read in many Density files from a folder, put data into one HDF5 file:: ... data = TraceWin.density_file(fpath, envelope=envelope) ... data.savetohdf('Density.h5', group_name) +Example 3 +========= + +Read in the tracewin table, print the length by finding the max z value:: + + >>> data = TraceWin.partran('testfiles/tracewin.out') + >>> print(max(data['z(m)'])) + 54.49775 + diff --git a/ess/SP_Relativity.py b/ess/SP_Relativity.py index 388539982df42dfd6afd3efc19d0a61ce3ff5536..42cb79cab059c75a4c7146c4813d723936bb8bdd 100644 --- a/ess/SP_Relativity.py +++ b/ess/SP_Relativity.py @@ -8,9 +8,7 @@ added geometrical and normalized emittance calculations from scipy import constants # Proton mass in MeV/c -proton_mass_in_MeV = constants.physical_constants[ - "proton mass energy equivalent in MeV" -][0] +proton_mass_in_MeV = constants.physical_constants["proton mass energy equivalent in MeV"][0] # Speed of light in m/s c = constants.c diff --git a/ess/TTF.py b/ess/TTF.py index 998635f355a60e302127eb8bb6d5df38fffc70dd..d04120b82ea15edf92691a3901f876ea1c273ff7 100644 --- a/ess/TTF.py +++ b/ess/TTF.py @@ -54,13 +54,9 @@ def Field_TTF(field_1d, step_dz, freq, E_in, mass, RetMaxPhase): t = 0 dE = E_in for fval in field_1d: - dE += ( - fval[0] * step_dz * np.cos(omega * t + d_phase * np.radians(phase)) - ) + dE += fval[0] * step_dz * np.cos(omega * t + d_phase * np.radians(phase)) if dE < 0: - print( - "Please adjust the field level, particle decelrated to zero energy!" - ) + print("Please adjust the field level, particle decelrated to zero energy!") t += step_dz / (myrel.c * myrel.beta(dE, mass)) if dE > Emax: Emax = dE diff --git a/ess/fieldmap.py b/ess/fieldmap.py index 0670c6e398b9a78fbfedde1707aafdc6f24abe4a..821f440e519c52f9345abdb38d22ab8051f23628 100644 --- a/ess/fieldmap.py +++ b/ess/fieldmap.py @@ -148,15 +148,7 @@ def _read_binary_fieldmap(filepath: str, fieldmap_dim: int): Header = np.array([Nz, Zmax, Nx, Xmin, Xmax, Ny, Ymin, Ymax, Norm]) elif fieldmap_dim == 2: - Header_Type = np.dtype( - [ - ("Nz", "int32"), - ("Zmax", "float64"), - ("Nx", "int32"), - ("Xmax", "float64"), - ("Norm", "float64"), - ] - ) + Header_Type = np.dtype([("Nz", "int32"), ("Zmax", "float64"), ("Nx", "int32"), ("Xmax", "float64"), ("Norm", "float64")]) THeader = np.fromfile(field_File, dtype=Header_Type, count=1) Nz = THeader["Nz"][0] Zmax = THeader["Zmax"][0] @@ -167,9 +159,7 @@ def _read_binary_fieldmap(filepath: str, fieldmap_dim: int): Header = np.array([Nz, Zmax, Nx, Xmax, Norm]) elif fieldmap_dim == 1: - Header_Type = np.dtype( - [("Nz", "int32"), ("Zmax", "float64"), ("Norm", "float32")] - ) + Header_Type = np.dtype([("Nz", "int32"), ("Zmax", "float64"), ("Norm", "float32")]) Header = np.fromfile(field_File, dtype=Header_Type, count=1) Nz = THeader["Nz"][0] Zmax = THeader["Zmax"][0] @@ -244,11 +234,7 @@ def read_fieldmap(filepath: str, fieldmap_dim: int, file_type: str): def cut_fieldmap_length( - filepath: str, - fieldmap_dim: int, - entrance_rows_cut: int, - exit_rows_cut: int, - file_type: str, + filepath: str, fieldmap_dim: int, entrance_rows_cut: int, exit_rows_cut: int, file_type: str, ): """ parameters @@ -283,16 +269,10 @@ def cut_fieldmap_length( Header, Field = read_fieldmap(filepath, fieldmap_dim, file_type) - lowx = np.arange( - 0, int(entrance_rows_cut) - ) # list of rows to be removed from the entrance side - highx = np.arange( - int(Header[0] + 1 - exit_rows_cut), int(Header[0] + 1) - ) # list of rows to be removed from the exit side + lowx = np.arange(0, int(entrance_rows_cut)) # list of rows to be removed from the entrance side + highx = np.arange(int(Header[0] + 1 - exit_rows_cut), int(Header[0] + 1)) # list of rows to be removed from the exit side - newNz = ( - (Header[0] + 1) - entrance_rows_cut - exit_rows_cut - ) # new number of field data points after removal of rows + newNz = (Header[0] + 1) - entrance_rows_cut - exit_rows_cut # new number of field data points after removal of rows stepZ = Header[1] / Header[0] # depending the dimension of the field the fieldmap is reshaped for line removal @@ -302,9 +282,7 @@ def cut_fieldmap_length( Fieldmapmatrix = np.reshape(Field, (int(Header[0] + 1), int(Header[2] + 1))) newlength = newNz * (Header[2] + 1) elif fieldmap_dim == 3: - Fieldmapmatrix = np.reshape( - Field, (int(Header[0] + 1), int((Header[2] + 1) * (Header[5] + 1))) - ) + Fieldmapmatrix = np.reshape(Field, (int(Header[0] + 1), int((Header[2] + 1) * (Header[5] + 1)))) newlength = newNz * (Header[2] + 1) * (Header[5] + 1) if entrance_rows_cut > 0 and exit_rows_cut > 0: @@ -417,9 +395,7 @@ def save_to_ascii(Header, Field, output_filepath: str): elif len(Header) == 9: fieldmap_dim = 3 else: - raise ValueError( - "Wrong length of header, cannot write {}".format(output_filepath) - ) + raise ValueError("Wrong length of header, cannot write {}".format(output_filepath)) with open(output_filepath, "w") as out_file: @@ -451,26 +427,18 @@ def batch_convert_to_ascii(binary_field_path: str, fieldmap_dim: int): fieldmap_dim: int dimension of the fieldmap to be converted """ - onlyfiles = [ - f - for f in os.listdir(binary_field_path) - if os.path.isfile(os.path.join(binary_field_path, f)) - ] + onlyfiles = [f for f in os.listdir(binary_field_path) if os.path.isfile(os.path.join(binary_field_path, f))] for f in onlyfiles: if f[0] != ".": - Header, Field = _read_binary_fieldmap( - os.path.join(binary_field_path, f), fieldmap_dim - ) + Header, Field = _read_binary_fieldmap(os.path.join(binary_field_path, f), fieldmap_dim) save_to_ascii(Header, Field, os.path.join(binary_field_path, "ASCII", f)) return -def unify_grid_size( - old_x: list, old_y: list, new_x: list, kind="linear", save_to_file=None -): +def unify_grid_size(old_x: list, old_y: list, new_x: list, kind="linear", save_to_file=None): """ Takes a mesh as x values and the corresponding values of a function. creates a spline interpolation for those data sets. @@ -512,11 +480,7 @@ def unify_grid_size( def batch_cut_fieldmap( - fieldmaps_path: str, - fieldmap_dim: int, - entrance_rows_cut: int, - exit_rows_cut: int, - file_type: str, + fieldmaps_path: str, fieldmap_dim: int, entrance_rows_cut: int, exit_rows_cut: int, file_type: str, ): """ Saves a TraceWin readable ASCII file @@ -535,18 +499,12 @@ def batch_cut_fieldmap( 'b' for binary and 'a' for ascii fieldmap files. """ - onlyfiles = [ - f - for f in os.listdir(fieldmaps_path) - if os.path.isfile(os.path.join(fieldmaps_path, f)) - ] + onlyfiles = [f for f in os.listdir(fieldmaps_path) if os.path.isfile(os.path.join(fieldmaps_path, f))] for f in onlyfiles: if f[0] != ".": if entrance_rows_cut + exit_rows_cut > 0: - Header, Field = cut_fieldmap_length( - f, fieldmap_dim, entrance_rows_cut, exit_rows_cut, file_type - ) + Header, Field = cut_fieldmap_length(f, fieldmap_dim, entrance_rows_cut, exit_rows_cut, file_type) save_to_ascii(Header, Field, os.path.join(fieldmaps_path, "ASCII", f)) @@ -624,12 +582,8 @@ def create_tw_fieldmap( field_array = np.genfromtxt(field_File, delimiter=delimiter, skip_header=0) field_File.close() - items_per_row = np.array( - [[2, 1, 0, 0], [2, 2, 1, 0], [2, 3, 3, 1]] - ) # for 1D, 2D and 3D fields in an ASCII fieldmap in TraceWin format - l_header = np.sum( - items_per_row[fieldmap_dim - 1, :], axis=0 - ) # getting the length of the header from the items + items_per_row = np.array([[2, 1, 0, 0], [2, 2, 1, 0], [2, 3, 3, 1]]) # for 1D, 2D and 3D fields in an ASCII fieldmap in TraceWin format + l_header = np.sum(items_per_row[fieldmap_dim - 1, :], axis=0) # getting the length of the header from the items Header = np.zeros(l_header) # sort first on x coordinate, then y and then z for TraceWin fieldmap @@ -674,9 +628,5 @@ def create_tw_fieldmap( filename_wo_ext = os.path.splitext(tabular_file_name)[0] for i in range(fieldmap_dim, fieldmap_dim + n_col): save_to_ascii( - Header, - field_array[:, i], - os.path.join( - fieldmaps_path, filename_wo_ext + "." + extensions[i - fieldmap_dim] - ), + Header, field_array[:, i], os.path.join(fieldmaps_path, filename_wo_ext + "." + extensions[i - fieldmap_dim]), ) diff --git a/ess/lib_tw.py b/ess/lib_tw.py index 9002b5b60014061197f8ae6b07f594012e8e6c23..9744939ba1f6b8e7ae11c62202ceac1c1f2b045a 100644 --- a/ess/lib_tw.py +++ b/ess/lib_tw.py @@ -81,9 +81,7 @@ class LATTICE: # Field map dict dic_fmap = {} for file_name_fmap_i in file_name_fmap: - name_fmap = ".".join( - file_name_fmap_i.split("/")[-1].split(".")[:-1] - ) # Remove / and extension + name_fmap = ".".join(file_name_fmap_i.split("/")[-1].split(".")[:-1]) # Remove / and extension dic_fmap[name_fmap] = lib_tw_elem.FIELD_MAP_DATA(file_name_fmap_i) # In case the lattice file is in a different folder: basefolder = os.path.dirname(file_name_lat) @@ -143,9 +141,7 @@ class LATTICE: for element in self.lst: if found: # WARNING I worry that there could be an inactive comment/element between the ADJUST and actual corrector - logging.debug( - "Found element {} for corrector family {}".format(element.typ, i) - ) + logging.debug("Found element {} for corrector family {}".format(element.typ, i)) correctors.append(element) found = False if isinstance(element, lib_tw_elem.COMM): @@ -211,7 +207,7 @@ class LATTICE: break except IndexError: pass - except IndexError: + except AttributeError: pass def update_gamma(self): @@ -384,9 +380,7 @@ class LATTICE: with open(file_name, "w") as fname: for fmap in self.fmap: - fname.write( - self.fmap[fmap].get_bdsim(os.path.join(output_folder, fmap)) + "\n" - ) + fname.write(self.fmap[fmap].get_bdsim(os.path.join(output_folder, fmap)) + "\n") for lat_i in self.lst: if hasattr(lat_i, "get_bdsim"): fname.write(lat_i.get_bdsim() + "\n") @@ -590,9 +584,7 @@ class DST: 2015.10.06 """ - def __init__( - self, file_name, unit_x="cm", unit_px="rad", unit_z="rad", unit_pz="MeV" - ): + def __init__(self, file_name, unit_x="cm", unit_px="rad", unit_z="rad", unit_pz="MeV"): # Const c = 2.99792458 @@ -604,11 +596,7 @@ class DST: Ibeam = numpy.fromfile(file, dtype=numpy.float64, count=1)[0] freq = numpy.fromfile(file, dtype=numpy.float64, count=1)[0] numpy.fromfile(file, dtype=numpy.uint8, count=1) - x = ( - numpy.fromfile(file, dtype=numpy.float64, count=Nptcl * 6) - .reshape(Nptcl, 6) - .transpose() - ) + x = numpy.fromfile(file, dtype=numpy.float64, count=Nptcl * 6).reshape(Nptcl, 6).transpose() mass = numpy.fromfile(file, dtype=numpy.float64, count=1)[0] # Adjust units @@ -699,13 +687,9 @@ class DENSITY: while True: try: # Partran and envelope - ver, year, flag_long = numpy.fromfile( - file, dtype=numpy.uint16, count=3 - ) + ver, year, flag_long = numpy.fromfile(file, dtype=numpy.uint16, count=3) Nrun = numpy.fromfile(file, dtype=numpy.uint32, count=1)[0] - idx_elem.append( - numpy.fromfile(file, dtype=numpy.uint32, count=1)[0] - ) + idx_elem.append(numpy.fromfile(file, dtype=numpy.uint32, count=1)[0]) Ibeam.append(numpy.fromfile(file, dtype=numpy.float32, count=1)[0]) s.append(numpy.fromfile(file, dtype=numpy.float32, count=1)[0]) if ver >= 9: @@ -718,26 +702,14 @@ class DENSITY: xmax.append(numpy.fromfile(file, dtype=numpy.float32, count=7)) xmin.append(numpy.fromfile(file, dtype=numpy.float32, count=7)) if ver > 5: - sig_ave.append( - numpy.fromfile(file, dtype=numpy.float32, count=7) - ) - sig_rms.append( - numpy.fromfile(file, dtype=numpy.float32, count=7) - ) + sig_ave.append(numpy.fromfile(file, dtype=numpy.float32, count=7)) + sig_rms.append(numpy.fromfile(file, dtype=numpy.float32, count=7)) if ver >= 6: - cent_min.append( - numpy.fromfile(file, dtype=numpy.float32, count=7) - ) - cent_max.append( - numpy.fromfile(file, dtype=numpy.float32, count=7) - ) + cent_min.append(numpy.fromfile(file, dtype=numpy.float32, count=7)) + cent_max.append(numpy.fromfile(file, dtype=numpy.float32, count=7)) if ver >= 7: - eps_ave.append( - numpy.fromfile(file, dtype=numpy.float32, count=3) - ) - eps_rms.append( - numpy.fromfile(file, dtype=numpy.float32, count=3) - ) + eps_ave.append(numpy.fromfile(file, dtype=numpy.float32, count=3)) + eps_rms.append(numpy.fromfile(file, dtype=numpy.float32, count=3)) if ver >= 8: accpt.append(numpy.fromfile(file, dtype=numpy.float32, count=3)) Nptcl.append(numpy.fromfile(file, dtype=numpy.uint64, count=1)[0]) @@ -748,52 +720,24 @@ class DENSITY: den.append([]) den_pow.append([]) for n in range(Nrun): - loss_num[-1].append( - numpy.fromfile(file, dtype=numpy.uint64, count=1)[0] - ) - loss_pow[-1].append( - numpy.fromfile(file, dtype=numpy.float32, count=1)[0] - ) + loss_num[-1].append(numpy.fromfile(file, dtype=numpy.uint64, count=1)[0]) + loss_pow[-1].append(numpy.fromfile(file, dtype=numpy.float32, count=1)[0]) loss_num_ave.append(sum(loss_num[-1])) - loss_num_rms.append( - numpy.fromfile(file, dtype=numpy.uint64, count=1)[0] - ) - loss_num_min.append( - numpy.fromfile(file, dtype=numpy.uint64, count=1)[0] - ) - loss_num_max.append( - numpy.fromfile(file, dtype=numpy.uint64, count=1)[0] - ) + loss_num_rms.append(numpy.fromfile(file, dtype=numpy.uint64, count=1)[0]) + loss_num_min.append(numpy.fromfile(file, dtype=numpy.uint64, count=1)[0]) + loss_num_max.append(numpy.fromfile(file, dtype=numpy.uint64, count=1)[0]) loss_pow_ave.append(sum(loss_pow[-1])) - loss_pow_rms.append( - numpy.fromfile(file, dtype=numpy.float64, count=1)[0] - ) - loss_pow_min.append( - numpy.fromfile(file, dtype=numpy.float32, count=1)[0] - ) - loss_pow_max.append( - numpy.fromfile(file, dtype=numpy.float32, count=1)[0] - ) + loss_pow_rms.append(numpy.fromfile(file, dtype=numpy.float64, count=1)[0]) + loss_pow_min.append(numpy.fromfile(file, dtype=numpy.float32, count=1)[0]) + loss_pow_max.append(numpy.fromfile(file, dtype=numpy.float32, count=1)[0]) for k in range(7): if flag_long == 1: - den[-1].append( - numpy.fromfile( - file, dtype=numpy.uint64, count=Nstep - ) - ) + den[-1].append(numpy.fromfile(file, dtype=numpy.uint64, count=Nstep)) else: - den[-1].append( - numpy.fromfile( - file, dtype=numpy.uint32, count=Nstep - ) - ) + den[-1].append(numpy.fromfile(file, dtype=numpy.uint32, count=Nstep)) if Ibeam[-1] > 0: for k in range(3): - den_pow[-1].append( - numpy.fromfile( - file, dtype=numpy.float32, count=Nstep - ) - ) + den_pow[-1].append(numpy.fromfile(file, dtype=numpy.float32, count=Nstep)) # print Nrun,Nptcl[-1],idx_elem[-1] # Diag except IndexError: break @@ -857,12 +801,8 @@ class DENSITY: sig_std = numpy.nan_to_num(sig_std) # Replace nan with 0 eps_std = numpy.nan_to_num(eps_std) # Replace nan with 0 if Nptcl[0] > 0: - loss_num_std = numpy.sqrt( - numpy.around(loss_num_rms ** 2 - loss_num_ave ** 2, 16) - ) - loss_pow_std = numpy.sqrt( - numpy.around(loss_pow_rms ** 2 - loss_pow_ave ** 2, 16) - ) + loss_num_std = numpy.sqrt(numpy.around(loss_num_rms ** 2 - loss_num_ave ** 2, 16)) + loss_pow_std = numpy.sqrt(numpy.around(loss_pow_rms ** 2 - loss_pow_ave ** 2, 16)) loss_num_std = numpy.nan_to_num(loss_num_std) # Replace nan with 0 loss_pow_std = numpy.nan_to_num(loss_pow_std) # Replace nan with 0 @@ -955,9 +895,7 @@ class DENSITY: # -- Option outputs - self.idx_4_elem_end = [ - len(idx_elem) - 1 - idx_elem[::-1].index(i) for i in list(set(idx_elem)) - ] + self.idx_4_elem_end = [len(idx_elem) - 1 - idx_elem[::-1].index(i) for i in list(set(idx_elem))] # -------- Functions @@ -1028,9 +966,7 @@ def plt2x(path_file): s.append(unpack("d", file.read(8))[0]) phs.append(unpack("d", file.read(8))[0]) ken.append(unpack("d", file.read(8))[0]) - x.append( - [[unpack("f", file.read(4))[0] for l in range(7)] for k in range(Nptcl)] - ) + x.append([[unpack("f", file.read(4))[0] for l in range(7)] for k in range(Nptcl)]) except IndexError: break @@ -1087,10 +1023,7 @@ def x2twiss(x): x = [x_i - numpy.mean(x_i) for x_i in numpy.array(x).transpose()] sig = [[numpy.mean(x_i * x_k) for x_k in x] for x_i in x] - eps = [ - numpy.sqrt(numpy.linalg.det(numpy.array(sig)[i : i + 2][:, i : i + 2])) - for i in (0, 2, 4) - ] + eps = [numpy.sqrt(numpy.linalg.det(numpy.array(sig)[i : i + 2][:, i : i + 2])) for i in (0, 2, 4)] bet = [sig[i][i] / eps[i / 2] for i in (0, 2, 4)] alf = [-sig[i][i + 1] / eps[i / 2] for i in (0, 2, 4)] gam = [sig[i + 1][i + 1] / eps[i / 2] for i in (0, 2, 4)] @@ -1113,9 +1046,7 @@ def x2twiss_halo(x, sig_cut=(None, None, None)): for k in (0, 2, 4): if sig_cut[k / 2] is not None: x = x.transpose() - r_nom_sq = ( - x[k] ** 2 + (alf[k / 2] * x[k] + bet[k / 2] * x[k + 1]) ** 2 - ) / (bet[k / 2] * eps[k / 2]) + r_nom_sq = (x[k] ** 2 + (alf[k / 2] * x[k] + bet[k / 2] * x[k + 1]) ** 2) / (bet[k / 2] * eps[k / 2]) x = x.transpose() x_halo = [x[i] for i in range(len(x)) if r_nom_sq[i] > sig_cut[k / 2] ** 2] eps_tmp, bet_tmp, alf_tmp, gam_tmp = x2twiss(x_halo) @@ -1143,9 +1074,7 @@ def loss_elem2den(s, loss, file_name_dt="", dlt_dt=5e-6): try: # DTL cell and DT lengths with open(file_name_dt) as file: - L_cell, L_dt = numpy.array( - [map(float, lin.split()) for lin in file.readlines()] - ).transpose()[:2] + L_cell, L_dt = numpy.array([map(float, lin.split()) for lin in file.readlines()]).transpose()[:2] # Replace cell lengths with DT lengths Ndt = 0 for i in range(len(L)): @@ -1156,11 +1085,7 @@ def loss_elem2den(s, loss, file_name_dt="", dlt_dt=5e-6): Ndt += 1 # Check if Ndt != len(L_dt): - print( - "drift-tube # unmatched, in file: {}, matched: {}".format( - len(L_dt), Ndt - ) - ) + print("drift-tube # unmatched, in file: {}, matched: {}".format(len(L_dt), Ndt)) except FileNotFoundError: pass @@ -1193,9 +1118,7 @@ def loss_elem2den(s, loss, file_name_dt="", dlt_dt=5e-6): try: # Read DTL cell and DT lengths with open(file_name_dt) as file: - l_cell, l_dt = numpy.array( - [map(float, lin.split()) for lin in file.readlines()] - ).transpose()[:2] + l_cell, l_dt = numpy.array([map(float, lin.split()) for lin in file.readlines()]).transpose()[:2] # Replace cell lengths with DT lengths Ndt = 0 for i in range(len(lngth)): @@ -1206,11 +1129,7 @@ def loss_elem2den(s, loss, file_name_dt="", dlt_dt=5e-6): Ndt += 1 # Check if Ndt != len(l_cell): - print( - "drift-tube # unmatched, in file: {}, matched: {}".format( - len(l_cell), Ndt - ) - ) + print("drift-tube # unmatched, in file: {}, matched: {}".format(len(l_cell), Ndt)) except FileNotFoundError: pass diff --git a/ess/lib_tw_elem.py b/ess/lib_tw_elem.py index 6a817a0cb89b061f755af40005ef68a93296ec9e..38feaa989027bc247a0c4647f9490e38f574b28e 100644 --- a/ess/lib_tw_elem.py +++ b/ess/lib_tw_elem.py @@ -128,12 +128,8 @@ class FIELD_MAP_DATA: # Only support 1D edz for now! with open(path + ".txt", "w") as fmapout: for i in range(len(self.field)): - fmapout.write( - "{} {} {} {}\n".format(self.dL * i, 0.0, 0.0, self.field[i]) - ) - return '{0}: field, type="ebmap2d", integrator=g4classicalrk4, electricFile=bdsim1d:{0}.txt;'.format( - self.file_name[:-4] - ) + fmapout.write("{} {} {} {}\n".format(self.dL * i, 0.0, 0.0, self.field[i])) + return '{0}: field, type="ebmap2d", integrator=g4classicalrk4, electricFile=bdsim1d:{0}.txt;'.format(self.file_name[:-4]) # ---- Parent classes @@ -310,9 +306,7 @@ class FIELD_MAP(ELEM): lin += "L=" + str(self.L) + ", " lin += "FREQ=" + str(self.freq) + ", " lin += "VOLT=" + str(self.E0TL) + ", " - lin += ( - "LAG=" + str((0.5 * numpy.pi - self.phs_syn) / (2.0 * numpy.pi)) + "; " - ) # phs_MADX = pi/2-phs_TW + lin += "LAG=" + str((0.5 * numpy.pi - self.phs_syn) / (2.0 * numpy.pi)) + "; " # phs_MADX = pi/2-phs_TW return lin @@ -339,9 +333,7 @@ class FIELD_MAP(ELEM): def get_bdsim(self): - return 'element, geometryFile="gdml:{0}.gdml", fieldVacuum="{0}", l={1}'.format( - self.name_fmap, self.L - ) + return 'element, geometryFile="gdml:{0}.gdml", fieldVacuum="{0}", l={1}'.format(self.name_fmap, self.L) # ---- Active elements @@ -518,9 +510,7 @@ class QUAD(ELEM): def get_bdsim(self): - return "quadrupole, l={}*mm, k1={}, beampipeRadius={}*mm;".format( - self.L, self.G / Brho(self.gamma), self.apt - ) + return "quadrupole, l={}*mm, k1={}, beampipeRadius={}*mm;".format(self.L, self.G / Brho(self.gamma), self.apt) class THIN_STEERING(ELEM): @@ -633,9 +623,7 @@ class GAP(ELEM): gamma_c = self.gamma + 0.5 * self.E0TL / mass * numpy.cos(self.phs_rf) beta_c = numpy.sqrt(1.0 - 1.0 / gamma_c ** 2) k = self.beta_s / beta_c - self.E0TL *= ( - self.T0 + self.T1 * (k - 1.0) + 0.5 * self.T2 * (k - 1.0) ** 2 - ) / self.T0 + self.E0TL *= (self.T0 + self.T1 * (k - 1.0) + 0.5 * self.T2 * (k - 1.0) ** 2) / self.T0 self.gamma += self.E0TL / mass * numpy.cos(self.phs_rf) def get_tw(self): @@ -665,9 +653,7 @@ class GAP(ELEM): lin = "ELEM" + i + "_GAP" + ": RFCAVITY, L=0, " lin += "FREQ=" + str(self.freq) + ", " lin += "VOLT=" + str(self.E0TL) + ", " - lin += ( - "LAG=" + str((0.5 * numpy.pi - self.phs_rf) / (2.0 * numpy.pi)) + "; " - ) # phs_MADX = pi/2-phs_TW + lin += "LAG=" + str((0.5 * numpy.pi - self.phs_rf) / (2.0 * numpy.pi)) + "; " # phs_MADX = pi/2-phs_TW return lin @@ -745,9 +731,7 @@ class DTL_CEL(ELEM): gamma_c = self.gamma + 0.5 * self.E0TL / mass * numpy.cos(self.phs_rf) beta_c = numpy.sqrt(1.0 - 1.0 / gamma_c ** 2) k = self.beta_s / beta_c - self.E0TL *= ( - self.T0 + self.T1 * (k - 1.0) + 0.5 * self.T2 * (k - 1.0) ** 2 - ) / self.T0 + self.E0TL *= (self.T0 + self.T1 * (k - 1.0) + 0.5 * self.T2 * (k - 1.0) ** 2) / self.T0 self.gamma += self.E0TL / mass * numpy.cos(self.phs_rf) def get_tw(self): @@ -796,9 +780,7 @@ class DTL_CEL(ELEM): lin += "ELEM" + i + "_DTLCELL" + "_GAP: RFCAVITY, L=0, " lin += "FREQ=" + str(self.freq) + ", " lin += "VOLT=" + str(self.E0TL) + ", " - lin += ( - "LAG=" + str((0.5 * numpy.pi - self.phs_rf) / (2.0 * numpy.pi)) + "; \n" - ) # phs_MADX = pi/2-phs_TW + lin += "LAG=" + str((0.5 * numpy.pi - self.phs_rf) / (2.0 * numpy.pi)) + "; \n" # phs_MADX = pi/2-phs_TW if self.name != "": lin += self.name + "_DRIFT2: DRIFT, " diff --git a/ess/nextcloud.py b/ess/nextcloud.py index 6229c49f0584588bb940e492839623cfe9bb0c10..9539f87787cef4e50938f3f318a82e8ecd59acb0 100644 --- a/ess/nextcloud.py +++ b/ess/nextcloud.py @@ -123,9 +123,7 @@ class nextcloud: paths.append(os.path.join(current, path)) else: new_current = os.path.join(current, path) - paths.extend( - self._globsearch(new_current, remainders[i + 1 :]) - ) + paths.extend(self._globsearch(new_current, remainders[i + 1 :])) break return paths diff --git a/examples/Binary_fieldmap/Batch_Convert_and_Cut_Binary_Fieldmap.py b/examples/Binary_fieldmap/Batch_Convert_and_Cut_Binary_Fieldmap.py index 7c3d42aab02ddb4d38d2a416458811a38ca13035..da406b4516146483c61c847e88c976af13370654 100644 --- a/examples/Binary_fieldmap/Batch_Convert_and_Cut_Binary_Fieldmap.py +++ b/examples/Binary_fieldmap/Batch_Convert_and_Cut_Binary_Fieldmap.py @@ -74,15 +74,7 @@ def read_binary_fieldmap(path_plus_file, fieldmap_dim): Header = np.zeros(len(THeader)) Header = np.array([Nz, Zmax, Nx, Xmin, Xmax, Ny, Ymin, Ymax, Norm]) elif fieldmap_dim == 2: - Header_Type = np.dtype( - [ - ("Nz", "int32"), - ("Zmax", "float64"), - ("Nx", "int32"), - ("Xmax", "float64"), - ("Norm", "float64"), - ] - ) + Header_Type = np.dtype([("Nz", "int32"), ("Zmax", "float64"), ("Nx", "int32"), ("Xmax", "float64"), ("Norm", "float64")]) Header = np.fromfile(File, dtype=Header_Type, count=1) Nz = THeader["Nz"][0] Zmax = THeader["Zmax"][0] @@ -91,9 +83,7 @@ def read_binary_fieldmap(path_plus_file, fieldmap_dim): Norm = THeader["Norm"][0] Header = np.zeros(len(THeader)) elif fieldmap_dim == 1: - Header_Type = np.dtype( - [("Nz", "int32"), ("Zmax", "float64"), ("Norm", "float32")] - ) + Header_Type = np.dtype([("Nz", "int32"), ("Zmax", "float64"), ("Norm", "float32")]) Header = np.fromfile(File, dtype=Header_Type, count=1) Nz = THeader["Nz"][0] Zmax = THeader["Zmax"][0] @@ -138,9 +128,7 @@ def cut_fieldmap_length(Field, Header, fieldmap_dim, entrance_rows_cut, exit_row Fieldmapmatrix = np.reshape(Field, (int(Header[0] + 1), int(Header[2] + 1))) newlength = newNz * (Header[2] + 1) elif fieldmap_dim == 3: - Fieldmapmatrix = np.reshape( - Field, (int(Header[0] + 1), int((Header[2] + 1) * (Header[5] + 1))) - ) + Fieldmapmatrix = np.reshape(Field, (int(Header[0] + 1), int((Header[2] + 1) * (Header[5] + 1)))) # print(Fieldmapmatrix.shape) newlength = newNz * (Header[2] + 1) * (Header[5] + 1) @@ -186,9 +174,7 @@ for f in onlyfiles: Header, Field = read_binary_fieldmap(f, fieldmap_dim) if n_enter + n_exit > 0: - Header, Field = cut_fieldmap_length( - Field, Header, fieldmap_dim, n_enter, n_exit - ) + Header, Field = cut_fieldmap_length(Field, Header, fieldmap_dim, n_enter, n_exit) with open(os.path.join(mypath, "ASCII", f), "w") as out_file: @@ -217,12 +203,8 @@ for f in onlyfiles: elif fieldmap_dim == 3: # Norm = Header[8] - stepX = (Header[4] - Header[3]) / Header[ - 2 - ] # stepX = (Xmax - Xmin) / Nx - stepY = (Header[7] - Header[6]) / Header[ - 5 - ] # stepY = (Ymax - Ymin) / Ny + stepX = (Header[4] - Header[3]) / Header[2] # stepX = (Xmax - Xmin) / Nx + stepY = (Header[7] - Header[6]) / Header[5] # stepY = (Ymax - Ymin) / Ny # out_file.write((' '.join(str(hval) for hval in Header[0:2]))) # out_file.write('\n') diff --git a/examples/Binary_fieldmap/TTF.py b/examples/Binary_fieldmap/TTF.py index 2be8ea2ff58108853d10ad546e8dbc41b048d1c8..f55255337c8c2ca833a659d8728c74133123e2b1 100644 --- a/examples/Binary_fieldmap/TTF.py +++ b/examples/Binary_fieldmap/TTF.py @@ -56,14 +56,10 @@ def Field_TTF(field_1d, step_dz, freq, E_in, mass, RetMaxPhase): t = 0 dE = E_in for fval in field_1d: - dE += ( - fval[0] * step_dz * np.cos(omega * t + d_phase * np.radians(phase)) - ) + dE += fval[0] * step_dz * np.cos(omega * t + d_phase * np.radians(phase)) # print(dE) if dE < 0: - print( - "Please adjust the field level, particle decelrated to zero energy!" - ) + print("Please adjust the field level, particle decelrated to zero energy!") t += dz / (myrel.c() * myrel.beta(dE, mass)) if dE > Emax: Emax = dE @@ -132,10 +128,7 @@ dz = Header[1] / Header[0] z_points = dz * z print( - "Int_E:", - Field_integral(fz, dz), - "[TTF, Phase_Max_Energy]: ", - Field_TTF(fz, dz, 704.42, 700, 938, True), + "Int_E:", Field_integral(fz, dz), "[TTF, Phase_Max_Energy]: ", Field_TTF(fz, dz, 704.42, 700, 938, True), ) TTFb = TTF_beta(fz, dz, 704.42, 938) diff --git a/examples/fieldmap/fieldmap.py b/examples/fieldmap/fieldmap.py index ac361bc792a8fe2a4181141871e46d759faef308..75230a3d3178ffd003b22926026b47afa3640a09 100644 --- a/examples/fieldmap/fieldmap.py +++ b/examples/fieldmap/fieldmap.py @@ -37,9 +37,7 @@ for f in os.listdir(mypath): fdim = 3 if n_enter or n_exit: - Header, Field = fieldmap.cut_fieldmap_length( - fullpath, fdim, n_enter, n_exit, ftype - ) + Header, Field = fieldmap.cut_fieldmap_length(fullpath, fdim, n_enter, n_exit, ftype) else: Header, Field = fieldmap.read_fieldmap(fullpath, fdim, ftype) diff --git a/examples/manipulate_lattice/manipulate_lattice.py b/examples/manipulate_lattice/manipulate_lattice.py index 17c74a51acdde9cf45a8a1ff783c6c1d87eed7f0..a2778031bb9b3ae33971c6a1033fca66a537cca4 100644 --- a/examples/manipulate_lattice/manipulate_lattice.py +++ b/examples/manipulate_lattice/manipulate_lattice.py @@ -52,9 +52,7 @@ for lat_i in lat.lst: # -- Introduce an error command err_comm_name = "MY_ERROR_COMMAND" -err_comm_typ = ( - "ERROR_CAV_NCPL_STAT" # I know it's redundant but we also need this for now... -) +err_comm_typ = "ERROR_CAV_NCPL_STAT" # I know it's redundant but we also need this for now... err_comm_para = [0, 0, 0, 0, 0, 0, 0, 0, 0] # This also works: err_comm_para=[0]*100 err_comm = lib_tw.ERROR_CAV_NCPL_STAT(err_comm_name, err_comm_typ, err_comm_para) @@ -161,9 +159,7 @@ for i in idx_st_y: for i in set(idx_st_x + idx_st_y): if lat.lst[i].max <= 0: print( - "Max B/BL not defined for elem #", - str(lat.lst[i].idx_elem + 1), - ". Exiting...", + "Max B/BL not defined for elem #", str(lat.lst[i].idx_elem + 1), ". Exiting...", ) exit() diff --git a/examples/ttf/ttf.py b/examples/ttf/ttf.py index 43fbece192185b4c488e0052884b5524b5b34125..991a0a504bca01d4a41a6e13e71c3f88d53e3902 100644 --- a/examples/ttf/ttf.py +++ b/examples/ttf/ttf.py @@ -8,10 +8,7 @@ dz = Header[1] / Header[0] z_points = dz * z print( - "Int_E:", - TTF.Field_integral(fz, dz), - "[TTF, Phase_Max_Energy]: ", - TTF.Field_TTF(fz, dz, 704.42, 700, 938, True), + "Int_E:", TTF.Field_integral(fz, dz), "[TTF, Phase_Max_Energy]: ", TTF.Field_TTF(fz, dz, 704.42, 700, 938, True), ) TTFb = TTF.TTF_beta(fz, dz, 704.42, 938) diff --git a/scripts/ibsimu2tw b/scripts/ibsimu2tw index a3cb5dfea1c5dab536d1df873d8b1ac514733566..c859834189980486160e3b862f41e5a6458eba15 100755 --- a/scripts/ibsimu2tw +++ b/scripts/ibsimu2tw @@ -27,35 +27,21 @@ from ess import TraceWin print(TraceWin.__file__) -parser = argparse.ArgumentParser( - description="Converts IBSimu output to TraceWin dst format" -) +parser = argparse.ArgumentParser(description="Converts IBSimu output to TraceWin dst format") parser.add_argument("-i", "--inp", dest="infile", help="Input file", required=True) parser.add_argument("-o", "--out", dest="outfile", help="Output file", required=True) parser.add_argument( - "--h2", - dest="h2", - action="store_const", - help="Include H2", - const=True, - default=False, + "--h2", dest="h2", action="store_const", help="Include H2", const=True, default=False, ) parser.add_argument( - "--h3", - dest="h3", - action="store_const", - help="Include H3", - const=True, - default=False, + "--h3", dest="h3", action="store_const", help="Include H3", const=True, default=False, ) -parser.add_argument( - "-m", dest="mc2_H1", default=938.272, type=float, help="H1 mass [MeV/c2]" -) +parser.add_argument("-m", dest="mc2_H1", default=938.272, type=float, help="H1 mass [MeV/c2]") parser.add_argument("-f", dest="freq", default=352.21, type=float, help="Frequency") args = parser.parse_args() @@ -112,9 +98,7 @@ data = np.loadtxt(file_name_in, skiprows=8) data[:, 9] *= 1e3 # mc2: GeV => MeV six_squared = data[:, 9] ** 2 -six_squared += (1.0 + data[:, 2] ** 2 + data[:, 4] ** 2) * ( - cp * (1.0 + data[:, 6]) -) ** 2 +six_squared += (1.0 + data[:, 2] ** 2 + data[:, 4] ** 2) * (cp * (1.0 + data[:, 6])) ** 2 data[:, 6] = np.sqrt(six_squared) - data[:, 9] # dpz => W diff --git a/testfiles/Adjusted_Values.txt b/testfiles/Adjusted_Values.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/testfiles/Density_PAR_v10.dat b/testfiles/Density_PAR_v10.dat new file mode 100644 index 0000000000000000000000000000000000000000..0d29cb849d858ddcde80a0f656d8c3aeaed71bd8 Binary files /dev/null and b/testfiles/Density_PAR_v10.dat differ diff --git a/testfiles/Density_PAR_v8.dat b/testfiles/Density_PAR_v8.dat new file mode 100644 index 0000000000000000000000000000000000000000..e1b232753c0f3172ce843c062cb7e5a05385708c Binary files /dev/null and b/testfiles/Density_PAR_v8.dat differ diff --git a/testfiles/Steerer_Values.txt b/testfiles/Steerer_Values.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/testfiles/lattice.dat b/testfiles/lattice.dat new file mode 100644 index 0000000000000000000000000000000000000000..8f8b77c7775dc954347f609f2698c3463ff4c8e3 --- /dev/null +++ b/testfiles/lattice.dat @@ -0,0 +1,281 @@ +MARKER RFQ_MEBT_Optical + +;-------- MEBT 2017.v1b + +ERROR_QUAD_NCPL_STAT 145 1 0.2 0.2 0 0 0.06 0.5 0 1.227 1.504 1.846 2.264 ; 0.01 multipoles (@ 15 mm) + +ERROR_CAV_NCPL_STAT 145 1 0.5 0.5 0.115 0.115 1 1 0 +ERROR_CAV_NCPL_DYN 145 -1 0 0 0 0 0.2 0.2 0 + +DRIFT 34.57 18.4 0 0 0 +DIAG_CURRENT 26001 63 ; [BCM BCM2] +DRIFT 37.43 18.4 0 0 0 + +DRIFT 35 18.4 0 0 0 ; Valve + +MARKER RFQ_MEBT_Mechanical + +DRIFT 43 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +ADJUST_STEERER 29001 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 9 +QUAD 80 -16.3007 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 50 18.4 0 0 0 +DIAG_SIZE 23001 2.44 1.2922 ; [WS WS1] +DRIFT 50 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29001 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER 29002 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 10 +QUAD 80 19.5694 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 43.9 18.4 0 0 0 + +DRIFT 87.1 15 0 0 0 +;MATCH_FAM_FIELD 20000 8 +;SET_BEAM_PHASE_ERROR 0 0 +TUNE_CAVITY 21001 90 90 5 1 0.01 0.1 54 1 0.01 0.1 +GAP 130769 -90 15 0 0 0 0 0 +DRIFT 87.1 15 0 0 0 + +DRIFT 43.9 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29002 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER 29003 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 11 +QUAD 80 -12.4749 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 50 18.4 0 0 0 +APERTURE 18.4 18.4 0 ; [Coll] Coll open +;APERTURE 18.4 9.1 0 ; Coll V active (~23 W loss) +DRIFT 50 18.4 0 0 0 +;#DIAG_LOSS Z X Y ; [BLM BLM2] + +;SET_SIZE 1 0 6.456 0 0 ; (10-0.5)/3.290*sqrt(5) +DRIFT 64.75 18.4 0 0 0 +CHOPPER 2 0 10 0 1 ; [Chop d_z_mm=225] Chopper off +;CHOPPER 2 2500 10 0 1 ; [Chop d_z_mm=225] Chopper active (+/-2.5 kV) +DRIFT 225 18.4 10 0 0 +DRIFT 225 18.4 10 0 0 +DRIFT 35.25 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +QUAD 80 5 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +;> MEBT_BOX1_ENTRANCE + +DRIFT 75 18.4 0 0 0 +DIAG_SIZE 23901 3.8477 1.4339 ; [NPM NPM1B] +DRIFT 54 18.4 0 0 0 +DIAG_SIZE 23002 3.7906 1.4883 ; [WS WS1] +DRIFT 33.122 18.4 0 0 0 ; This drift and dump are actually 33.554 mm and 149.568 mm. + +;> DUMP_ENTRANCE + +DRIFT 10 18.4 17.95 0 -0.45 +DRIFT 10 18.4 17.6 0 -0.8 +DRIFT 10 18.4 17.25 0 -1.15 +DRIFT 10 18.4 16.9 0 -1.5 +DRIFT 10 18.4 16.55 0 -1.85 +DRIFT 10 18.4 16.2 0 -2.2 +DRIFT 10 18.4 15.85 0 -2.55 +DRIFT 5 18.4 15.5 0 -2.9 +;#CHOPPER_DUMP ; [ChDump] +DRIFT 5 18.4 15.5 0 -2.9 +DRIFT 10 18.4 15.15 0 -3.25 +DRIFT 10 18.4 14.8 0 -3.6 +DRIFT 10 18.4 14.45 0 -3.95 +DRIFT 10 18.4 14.1 0 -4.3 +DRIFT 10 18.4 13.75 0 -4.65 +DRIFT 10 18.4 13.4 0 -5 +;SET_SIZE 1 0 4.011 0 0 ; (13.0431-0.5-7)/3.09*sqrt(5), 0.9995 +DRIFT 10 18.4 13.05 0 -5.35 +DRIFT 0.001 18.4 12.7 0 -5.7 + +;> DUMP_EXIT +;#DIAG_LOSS Z X Y ; [BLM BLM2] + +DRIFT 6.277 18.4 0 0 0 + +DRIFT 15.5 18.4 0 0 0 +DIAG_CURRENT 26002 62.5 ; [BCM BCM3] +DRIFT 17 18.4 0 0 0 + +;> MEBT_BOX1_EXIT + +DRIFT 43 18.4 0 0 0 + +;SET_SIZE 1 0 0 51.43 0 ; 69 deg for 3-sig +DRIFT 87.1 15 0 0 0 +;MATCH_FAM_FIELD 20000 1 +;SET_BEAM_PHASE_ERROR 0 0 +TUNE_CAVITY 21002 90 90 5 1 0.01 0.1 26 1 0.01 0.1 +GAP 59666.9 -90 15 0 0 0 0 0 +DRIFT 87.1 15 0 0 0 + +DRIFT 43.9 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29003 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER 29004 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 12 +QUAD 80 6.87809 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 50 18.4 0 0 0 +APERTURE 18.4 18.4 0 ; [Coll] Coll open +;APERTURE 18.4 11.7 0 ; Coll V active (~22 W loss) +DRIFT 50 18.4 0 0 0 +;#DIAG_LOSS Z X Y ; [BLM BLM2] + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +;#DIAG_CURRENT ; [BCM BCMx] BPM pick-ups as FBCM +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 13 +QUAD 80 -14.7817 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 50 18.4 0 0 0 +DIAG_SIZE 23003 3.1274 3.7587 ; [WS WS1] +DIAG_EMIT 25001 0.2529 0.2517 ; [EMU EMU2] +DIAG_TWISS 22001 -6.535 3.4016 12.1447 4.9367 0 0 +;DIAG_SIZE 23003 3.0952 3.8389 ; For Partran +;DIAG_EMIT 25001 0.2894 0.2696 ; For Partran +;DIAG_TWISS 22001 -5.6005 2.912 11.8687 4.8076 0 0 ; For Partran +;================================================== +; Slit with SHIFT+APERTURE for experts +;================================================== +;SHIFT 0 0 ; SLIT-H position +;APERTURE 0.05 18.4 0 ; SLIT-H active +;SHIFT 0 0 ; SLIT-V position +;APERTURE 18.4 0.05 0 ; SLIT-V active +;================================================== +DRIFT 50 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29004 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER 29005 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 3 +QUAD 80 9.57296 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 29.8 18.4 0 0 0 + +DRIFT 59 18.4 0 0 0 +DIAG_SIZE 23101 0 0 21.1853 ; [LBM BSM1] +DRIFT 59 18.4 0 0 0 + +;> MEBT_BOX2_ENTRANCE + +;PLOT_DST ; Activate to save the dist at the grid. +DRIFT 70.2 18.4 0 0 0 +;#DIAG_SIZE ; Grid +DRIFT 55.5 18.4 0 0 0 +DIAG_CURRENT 26003 62.5 ; [FC FC2] Activate the next E.N.D to use as a stop. +;END +DIAG_SIZE 23902 2.5883 2.682 ; [NPM NPM1B] +DRIFT 76.5 18.4 0 0 0 + +;> MEBT_BOX2_EXIT + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 4 +QUAD 80 -9.19019 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 43.9 18.4 0 0 0 + +DRIFT 87.1 15 0 0 0 +;MATCH_FAM_FIELD 20000 2 +;SET_BEAM_PHASE_ERROR 0 0 +TUNE_CAVITY 21003 90 90 5 1 0.01 0.1 23 1 0.01 0.1 +GAP 145257 -90 15 0 0 0 0 0 +DRIFT 87.1 15 0 0 0 + +DRIFT 43.9 18.4 0 0 0 + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29005 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER 29006 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 5 +QUAD 80 18.58 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 50 18.4 0 0 0 +APERTURE 18.4 18.4 0 ; [Coll] Coll open +;APERTURE 18.4 3.3 0 ; Coll V active (~18 W loss) +DRIFT 50 18.4 0 0 0 +;#DIAG_LOSS Z X Y ; [BLM BLM2] + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29006 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER 29007 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 6 +QUAD 80 -30.7441 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 50 18.4 0 0 0 +DIAG_CURRENT 26004 62.5 ; [BCM BCM3] +;#DIAG_CURRENT ; [BCM BCM4] FBCM +DRIFT 50 18.4 0 0 0 +;#DIAG_LOSS Z X Y ; [BLM BLM2] + +DRIFT 6 18.4 0 0 0 +DRIFT 4 18.4 0 0 0 +DIAG_POSITION 29007 0 0 0.2 ; [BPM BPM1 d_z_mm=40] +ADJUST_STEERER_BY 29008 +STEERER 0 0 0.035 0 0 1866.766 ; [d_z_mm=40] BLmax ~ 28 Gm, b3 ~ 4200 (@ 15 mm) +;MATCH_FAM_GRAD 20000 7 +QUAD 80 23.8053 18.4 0 0 0 0 0 0 +DRIFT 4 18.4 0 0 0 +DRIFT 6 18.4 0 0 0 + +DRIFT 33 18.4 0 0 0 + +MARKER MEBT_DTL_Mechanical + +DRIFT 17 18.4 0 0 0 +DRIFT 35 18.4 0 0 0 ; Valve +;PLOT_DST +DRIFT 15 10 0 0 0 + + +END + diff --git a/testfiles/tracewin.out b/testfiles/tracewin.out new file mode 100644 index 0000000000000000000000000000000000000000..2503d0392eb166b854bc517b5e66d0b92364fac0 --- /dev/null +++ b/testfiles/tracewin.out @@ -0,0 +1,66 @@ + mc2(MeV) freq(MHz) Z I(mA) npart + 938.2720290000 352.21 1 0 100000 + Sizes, positions are in mm, angles in mrad + Phases in deg, energies in MeV + Emittances and halo in mm.mrad or deg.MeV + Phase advance per meter in deg/mm + Current is in mA + Powlost is in W + H&V dispersion in mm + ## z(m) gama-1 x0 y0 p0 x'0 y'0 W0 SizeX SizeY SizeP sxx' syy' spW ex ey ep hx hy hp npart kx ky kz ex99 ey99 ep99 phiS Ws SCCurrent Aper e4D EmitR kr Powlost Xmax Ymax ezdp SizeZ szdp Hdisp Vdisp Hdisp/dz Vdisp/dz e6D sxy sx'y' +0 0.000000e+00 2.122104e+00 0.000000e+00 0.000000e+00 -0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.775723e+00 1.232231e+00 2.915502e+00 1.155029e-01 -8.536676e-02 -4.576198e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 -0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.202839e-01 0.000000e+00 0.000000e+00 -1.000000e+19 0.000000e+00 0.000000e+00 6.716217e-01 6.530182e+00 3.898969e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +1 9.000000e-01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.835163e+00 1.173232e+00 2.940115e+00 1.229764e-01 -7.232086e-02 -4.614962e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.990679e-03 4.821230e-03 3.103036e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 6.585311e+00 3.931996e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +2 1.800000e+00 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.896288e+00 1.121622e+00 2.964729e+00 1.304500e-01 -5.927495e-02 -4.653725e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.864086e-03 5.296996e-03 3.051519e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 6.640441e+00 3.965023e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +3 3.159507e+00 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.991469e+00 1.060028e+00 3.001911e+00 1.417393e-01 -3.956828e-02 -4.712280e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.717972e-03 5.873607e-03 2.988686e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 6.723722e+00 4.014912e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +4 7.908751e+00 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.345114e+00 1.036711e+00 3.131812e+00 1.811768e-01 2.927415e-02 -4.916832e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.391910e-03 6.660047e-03 2.829245e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.014676e+00 4.189193e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +5 7.908751e+00 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.345114e+00 1.036711e+00 3.131812e+00 1.811768e-01 2.927415e-02 -4.916832e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.014676e+00 4.189193e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +6 1.180000e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.652414e+00 1.233727e+00 3.238257e+00 2.134895e-01 8.567956e-02 -5.084430e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.043704e-03 5.559326e-03 2.622770e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.253094e+00 4.331989e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +7 1.485550e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.901287e+00 1.476821e+00 3.321847e+00 2.388623e-01 1.299704e-01 -5.216032e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.432675e-04 3.835254e-03 2.472748e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.440320e+00 4.444115e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +8 1.780626e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.146334e+00 1.753350e+00 3.402577e+00 2.633653e-01 1.727430e-01 -5.343123e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 7.108593e-04 2.688517e-03 2.353355e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.621140e+00 4.552398e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +9 1.830096e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.187793e+00 1.802414e+00 3.416112e+00 2.674732e-01 1.799139e-01 -5.364430e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 6.469168e-04 2.196581e-03 2.288496e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.651456e+00 4.570552e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +10 1.865096e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.091093e+00 1.909985e+00 3.425688e+00 -1.956083e+00 9.911103e-01 -5.379505e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 6.520257e-04 2.036374e-03 2.273028e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.672904e+00 4.583395e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +11 1.869076e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.065908e+00 1.930639e+00 3.426777e+00 -1.940091e+00 1.001988e+00 -5.381219e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 6.865530e-04 1.880233e-03 2.266303e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.675343e+00 4.584856e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +12 1.869076e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.065908e+00 1.930639e+00 3.426777e+00 -1.940091e+00 1.001988e+00 -5.381219e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.675343e+00 4.584856e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +13 1.872296e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.045532e+00 1.947352e+00 3.427658e+00 -1.927153e+00 1.010788e+00 -5.382606e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 6.977225e-04 1.841167e-03 2.264889e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.677317e+00 4.586037e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +14 1.877296e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.013893e+00 1.973307e+00 3.429026e+00 -1.907064e+00 1.024453e+00 -5.384760e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 7.092507e-04 1.803158e-03 2.263468e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.680381e+00 4.587872e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +15 1.877296e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.013893e+00 1.973307e+00 3.429026e+00 -1.907064e+00 1.024453e+00 -5.384760e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.680381e+00 4.587872e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +16 1.914566e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.778102e+00 2.166916e+00 3.439223e+00 -1.757316e+00 1.126312e+00 -5.400812e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 7.800322e-04 1.615006e-03 2.255604e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.703221e+00 4.601549e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +17 1.931710e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.669665e+00 2.256047e+00 3.443914e+00 -1.688432e+00 1.173168e+00 -5.408196e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.798617e-04 1.414923e-03 2.245946e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.713727e+00 4.607840e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +18 2.213270e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.969357e-01 3.723269e+00 3.520953e+00 -5.571349e-01 1.942680e+00 -5.529465e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 2.759862e-03 8.230735e-04 2.193648e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 7.886279e+00 4.711163e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +19 2.513270e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.038195e+00 5.289475e+00 3.603041e+00 6.482531e-01 2.762590e+00 -5.658677e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 5.285086e-02 3.517038e-04 2.096778e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.070142e+00 4.821253e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +20 2.513270e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.038195e+00 5.289475e+00 3.603041e+00 6.482531e-01 2.762590e+00 -5.658677e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.070142e+00 4.821253e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +21 2.562740e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.348169e+00 5.547858e+00 3.616578e+00 8.470216e-01 2.897793e+00 -5.679984e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 4.572735e-03 2.362771e-04 2.041402e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.100462e+00 4.839406e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +22 2.597740e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.625140e+00 5.509464e+00 3.626155e+00 1.567842e+00 -4.078500e+00 -5.695059e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 2.956827e-03 2.245994e-04 2.028365e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.121914e+00 4.852250e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +23 2.601720e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.663539e+00 5.480001e+00 3.627244e+00 1.605079e+00 -4.056670e+00 -5.696773e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 2.387797e-03 2.305699e-04 2.022694e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.124353e+00 4.853711e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +24 2.601720e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.663539e+00 5.480001e+00 3.627244e+00 1.605079e+00 -4.056670e+00 -5.696773e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.124353e+00 4.853711e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +25 2.604940e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.694609e+00 5.456164e+00 3.628126e+00 1.635205e+00 -4.039009e+00 -5.698160e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 2.282107e-03 2.330177e-04 2.021502e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.126326e+00 4.854892e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +26 2.609940e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.742860e+00 5.419151e+00 3.629494e+00 1.681984e+00 -4.011585e+00 -5.700313e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 2.183115e-03 2.355216e-04 2.020304e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.129391e+00 4.856727e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +27 2.609940e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.742860e+00 5.419151e+00 3.629494e+00 1.681984e+00 -4.011585e+00 -5.700313e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.129391e+00 4.856727e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +28 2.647210e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.102678e+00 5.143266e+00 3.639692e+00 2.030675e+00 -3.807166e+00 -5.716365e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.748137e-03 2.503583e-04 2.013670e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.152234e+00 4.870404e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +29 2.664360e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.268328e+00 5.016316e+00 3.644385e+00 2.191133e+00 -3.713098e+00 -5.723752e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.348526e-03 2.702984e-04 2.005521e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.162745e+00 4.876697e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +30 2.664360e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.268328e+00 5.016316e+00 3.644385e+00 2.191133e+00 -3.713098e+00 -5.723752e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.162745e+00 4.876697e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +31 2.945890e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 4.989801e+00 2.933210e+00 3.721426e+00 4.825103e+00 -2.168942e+00 -5.845009e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 5.682198e-04 4.754848e-04 1.961335e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.335301e+00 4.980009e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +32 3.245890e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 7.891074e+00 7.255720e-01 3.803524e+00 7.631876e+00 -5.234801e-01 -5.974220e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.640953e-04 3.347940e-03 1.879282e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.519185e+00 5.090099e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +33 3.295360e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.369528e+00 3.778277e-01 3.817062e+00 8.094713e+00 -2.521434e-01 -5.995527e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 9.799384e-05 2.657084e-02 1.832251e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.549509e+00 5.108253e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +34 3.330360e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.679989e+00 1.837346e-01 3.826640e+00 6.995365e+00 -5.995838e-02 -6.010602e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.901048e-05 1.145643e-01 1.821162e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.570963e+00 5.121096e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +35 3.334340e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.712065e+00 1.727577e-01 3.827730e+00 7.021222e+00 -3.836291e-02 -6.012316e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.578596e-05 2.232207e-01 1.816336e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.573402e+00 5.122557e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +36 3.334340e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.712065e+00 1.727577e-01 3.827730e+00 7.021222e+00 -3.836291e-02 -6.012316e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.573402e+00 5.122557e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +37 3.337560e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.738015e+00 1.671443e-01 3.828611e+00 7.042142e+00 -2.089119e-02 -6.013703e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.516815e-05 2.453241e-01 1.815322e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.575376e+00 5.123739e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +38 3.342560e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.778311e+00 1.649382e-01 3.829979e+00 7.074626e+00 6.238796e-03 -6.015856e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.455390e-05 2.549635e-01 1.814302e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.578441e+00 5.125573e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +39 3.342560e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.778311e+00 1.649382e-01 3.829979e+00 7.074626e+00 6.238796e-03 -6.015856e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.578441e+00 5.125573e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +40 3.379830e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 9.078676e+00 3.274497e-01 3.840179e+00 7.316757e+00 2.084636e-01 -6.031909e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 8.127924e-05 1.457188e-01 1.808655e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.601286e+00 5.139250e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +41 3.396983e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 9.216919e+00 4.412536e-01 3.844873e+00 7.428197e+00 3.015368e-01 -6.039297e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 7.745121e-05 4.649352e-02 1.801716e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.611801e+00 5.145545e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +42 3.485033e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 9.926547e+00 1.070690e+00 3.868970e+00 8.000237e+00 7.792959e-01 -6.077220e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 7.079431e-05 1.435764e-02 1.788209e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e+01 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 8.665773e+00 5.177856e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +43 4.058040e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.454481e+01 5.281361e+00 4.025794e+00 1.172292e+01 3.888431e+00 -6.324017e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 4.487536e-05 1.216507e-03 1.707825e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.017030e+00 5.388130e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +44 4.058040e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.454481e+01 5.281361e+00 4.025794e+00 1.172292e+01 3.888431e+00 -6.324017e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.017030e+00 5.388130e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +45 4.511033e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.819590e+01 8.617175e+00 4.149780e+00 1.466591e+01 6.346370e+00 -6.519124e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 2.449542e-05 1.522132e-04 1.592270e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.294734e+00 5.554363e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +46 4.846540e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.090010e+01 1.108822e+01 4.241613e+00 1.684561e+01 8.166831e+00 -6.663628e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.705161e-05 7.258402e-05 1.511264e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.500424e+00 5.677482e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +47 4.846540e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.090010e+01 1.108822e+01 4.241613e+00 1.684561e+01 8.166831e+00 -6.663628e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.500424e+00 5.677482e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +48 4.935983e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.162102e+01 1.174700e+01 4.266095e+00 1.742670e+01 8.652148e+00 -6.702152e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.435295e-05 5.327039e-05 1.470080e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.555260e+00 5.710305e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +49 4.962039e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.183104e+01 1.193891e+01 4.273227e+00 1.759598e+01 8.793530e+00 -6.713375e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.374316e-05 4.948972e-05 1.459241e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.571235e+00 5.719866e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +50 4.962039e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.183104e+01 1.193891e+01 4.273227e+00 1.759598e+01 8.793530e+00 -6.713375e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.571235e+00 5.719866e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +51 5.043674e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.248902e+01 1.254019e+01 4.295573e+00 1.812634e+01 9.236478e+00 -6.748535e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.321148e-05 4.635313e-05 1.449199e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.621284e+00 5.749823e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +52 5.049205e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.253360e+01 1.258093e+01 4.297087e+00 1.816228e+01 9.266490e+00 -6.750917e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.280681e-05 4.402927e-05 1.441294e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.250000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.624675e+00 5.751853e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +53 5.449775e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.576224e+01 1.553138e+01 4.406735e+00 2.076468e+01 1.143998e+01 -6.923445e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 1.117326e-05 3.551866e-05 1.404780e-05 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.500000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.870267e+00 5.898848e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +54 5.449775e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.576224e+01 1.553138e+01 4.406735e+00 2.076468e+01 1.143998e+01 -6.923445e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.500000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.870267e+00 5.898848e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 +55 5.449775e+01 2.122104e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.576224e+01 1.553138e+01 4.406735e+00 2.076468e+01 1.143998e+01 -6.923445e+00 3.351792e-01 3.588645e-01 2.665244e-01 0.000000e+00 0.000000e+00 0.000000e+00 100000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.500000e+02 1.202839e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.716217e-01 9.870267e+00 5.898848e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.078529e-02 0.000000e+00 0.000000e+00 diff --git a/tests.py b/tests.py index 8458fdfd5ce7af4c29454f6dbed9edd896413000..b09aef0d54e80f292e4de830db14d01ba5678fee 100644 --- a/tests.py +++ b/tests.py @@ -1,4 +1,7 @@ if __name__ == "__main__": import doctest + import sys - doctest.testfile("doc/examples/tracewin.rst") + nfails = doctest.testfile("doc/examples/tracewin.rst")[0] + nfails += doctest.testfile("doc/examples/lib_tw.rst")[0] + sys.exit(nfails)