diff --git a/magnet/10T_DNP/B_Ellip_10T_DNP.m b/magnet/10T_DNP/B_Ellip_10T_DNP.m index 34d3837..44ca29d 100644 --- a/magnet/10T_DNP/B_Ellip_10T_DNP.m +++ b/magnet/10T_DNP/B_Ellip_10T_DNP.m @@ -1,149 +1,173 @@ function [B] = B_Ellip_10T_DNP(mode,magnet,I,r,z) % % Call: [B] = B_Ellip_10T_DNP(mode,magnet,r,z) % Examples: % 1. Plot axis magnetic field profile: % % >> z = linspace(0,1,101); % >> r = 0*z + 0.0; % >> I = [61.56 66.45 113.43 108.09 ]; % >> [B] = B_Ellip_Cryogenic_170('bz','cryogenic',I,r,z); % >> figure(1); plot(z,B) % % 2. Plot field lines (r* aphi = cst) % % >> z = linspace(0,1,51); % >> r = linspace(0,0.2,21); % >> [Z,R] = meshgrid(z,r); % >> I = [61.56 66.45 113.43 108.09 ]; % >> [Aphi] = B_Ellip_Cryogenic_170('aphi','cryogenic',I,R,Z); % >> figure(2); contour(Z,R,R.*Aphi); % % Magnetic field associated with GT170 GHz magnet, with currents Igun and Icav, % as read on power supplies (i.e. a current -(Icav+Igun) is actually flowing in the % gun coil. % The computation is based on the elliptic integral formulae that can be found in: % Smythe: "Static and Dynamic Electricity", Third edition, McGraw-Hill, p.290. % % Version : 1.0 J.-P. Hogge Sep. 16, 2003 % 1.1 J.-P. Hogge Jan. 12, 2005 Included 165Ghz FZK magnet, other options deactivated % % mode : 'bz','br','dbzbz','dbzdr','dbrdz','dbrdr', 'd2bzdz2' or 'aphi' % magnet : 'fzk_165ghz_oi' only so far % z : a row vector (in [m]) or a 2D matrix containing the z locations where the field is to be evaluated % r : a row vector (in [m]) or a 2D matrix containing the r locations where the field is to be evaluated % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 10T magnet for DNP gyrotron coils geometry [m] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% switch lower(magnet) - case 'new' % Geometry of the 10Tesla sup.cond. solenoid with 76 mm bore diameter + case 'bad' % Geometry of the 10Tesla sup.cond. solenoid with 76 mm bore diameter Ncoil = 13; Nturn = [1670 2117 2960 4995 12793 59 57 56 54 59 57 56 54]; rmin = [52.592 60.069 76.919 82.502 90.129 103.638 104.187 104.735 105.283 103.638 104.187 104.735 105.283].*10^(-3); - rmax = [60.069 66.051 82.502 90.129 103.638 104.187 104.735 105.283 105.832 104.190 104.735 105.283 105.832].*10^(-3); + rmax = [60.069 66.051 82.502 90.129 103.638 104.187 104.735 105.283 105.832 104.190 104.735 105.283 105.832].*10^(-3); zmin = [-145 -145 -150 -150 -150 -150 -150 -150 -150 -150 -150 -150 -150].*10^(-3); zmax = [145 145 150 150 150 150 150 150 150 150 150 150 150].*10^(-3); na = 8. *[10 10 10 10 10 10 10 10 10 10 10 10 10]; % Number of subcoils (radial direction nb = 8. *[10 10 10 10 10 10 10 10 10 10 10 10 10]; % Number of subcoils in longitudinal direction % I = 31.31 A => B~ 1.7T at flange % I = 32.35 A => B< 3T at z = 0 => 235 mm from top flange Current = [ I(1) I(2) I(3) I(4) I(5) I(6) I(7) I(8) I(9) I(10) I(11) I(12) I(13)]; % Current flowing in each power supply rcen = (rmin + rmax)/2; zcen = (zmin + zmax)/2; dr = rmax - rmin; dz = zmax - zmin; coilsurf= dr .* dz; JTot = Current .* Nturn; % Total current flowing in each coil J = JTot./(dr.*dz); % Current density in each coil Ic1 = JTot ; % Total current flowing in each coil [A] + case 'new' % Geometry of the 10Tesla sup.cond. solenoid with 76 mm bore diameter + + Ncoil = 13; + Nturn = [1670 2117 2960 4995 12793 59 57 56 54 59 57 56 54]; + rmin = [52.592 60.069 76.919 82.502 90.129 103.638 104.187 104.735 105.283 103.638 104.187 104.735 105.283].*10^(-3); + rmax = [60.069 66.051 82.502 90.129 103.638 104.187 104.735 105.283 105.832 104.190 104.735 105.283 105.832].*10^(-3); + zmin = [-144.5 -144.5 -149.5 -149.5 -149.5 -149.5 -149.5 -149.5 -149.5 112.661 113.658 114.655 115.652].*10^(-3); + zmax = [144.5 144.5 149.5 149.5 149.5 -112.661 -113.658 -114.655 -115.652 149.5 149.5 149.5 149.5].*10^(-3); + na = 8. *[10 10 10 10 10 10 10 10 10 10 10 10 10]; % Number of subcoils (radial direction + nb = 8. *[10 10 10 10 10 10 10 10 10 10 10 10 10]; % Number of subcoils in longitudinal direction + % I = 31.31 A => B~ 1.7T at flange + % I = 32.35 A => B< 3T at z = 0 => 235 mm from top flange + Current = [ I(1) I(2) I(3) I(4) I(5) I(6) I(7) I(8) I(9) I(10) I(11) I(12) I(13)]; % Current flowing in each power supply + + rcen = (rmin + rmax)/2; + zcen = (zmin + zmax)/2; + dr = rmax - rmin; + dz = zmax - zmin; + coilsurf= dr .* dz; + + JTot = Current .* Nturn; % Total current flowing in each coil + J = JTot./(dr.*dz); % Current density in each coil + Ic1 = JTot ; % Total current flowing in each coil [A] + otherwise disp('Unknown magnet') end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Construct array of current loops %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Number of coils ncoil = length(rcen); % Number of subcoils ntot = sum(na.*nb); % Preallocate space r2 = zeros(1,ntot); z2 = zeros(1,ntot); Ic = zeros(ntot,1); % isub is the index of subcoil isub = 0; for icoil=1:ncoil for ib=1:nb(icoil) for ia=1:na(icoil) isub = isub +1; r2(isub) = (rcen(icoil) - dr(icoil)/2) + (dr(icoil)/nb(icoil))*(ib-0.5); z2(isub) = (zcen(icoil) - dz(icoil)/2) + (dz(icoil)/na(icoil))*(ia-0.5); Ic(isub) = Ic1(icoil) / (na(icoil)*nb(icoil)); end end end % printf('isub =',isub) % Transform array of evaluation points in a one-dimensional array % r1d = reshape(r,1,prod(size(r))); z1d = reshape(z,1,prod(size(z))); % % Suppress locations where Green function diverges (i.e. on the sources) % for i=1:length(r2), [I] = find((r1d.*r1d -r2(i)*r2(i) == 0) & (z1d.*z1d - z2(i)^2)==0); if ~isempty(I) r1d(I)=NaN; z1d(I)=NaN; end end % Call greenem b = greenem_jph(mode,r1d,z1d,r2,z2); if(~iscell(mode)) nbmodes=length({mode}); else nbmodes=length(mode); end B=zeros(size(r,1),size(r,2),nbmodes); % b is a rectangular matrix (length(r1d) x length(r2)) which needs to be multiplied by the % column vector Ic to get the proper contribution of each source. for i=1:size(b,3) temp = b(:,:,i) * Ic; B(:,:,i) = reshape(temp,size(r,1),size(r,2)); end B(find((B==Inf)|(B==-Inf)))= 0; B(find(isnan(B))) = 0; return diff --git a/matlab/@fennecshdf5/displayDensPsi.m b/matlab/@fennecshdf5/displayDensPsi.m index 24ffe96..36c7925 100644 --- a/matlab/@fennecshdf5/displayDensPsi.m +++ b/matlab/@fennecshdf5/displayDensPsi.m @@ -1,105 +1,105 @@ function displayDensPsi(obj,tsteps,zlims,rlims) %DISPLAYDENSPSI plot the fluid density averaged in time for times t2d(tsteps) % Displays also the geometry of the metallic boundaries and the % magnetic field lines % Show on top the contour of the Psi function for the Davidson % loading f=figure('Name', sprintf('%sfluid_dens_psi',obj.name)); ax1=gca; if nargin<2 tsteps=length(obj.t2d); end if nargin<3 zlims=[obj.zgrid(1),obj.zgrid(end)]*1e3; end if nargin<4 rlims=[obj.rgrid(1),obj.rgrid(end)]*1e3; end geomw=obj.geomweight(:,:,1); dens=mean(obj.N(:,:,tsteps),3); dens(geomw<=0)=0; maxdens=max(dens(:)); [h,curve]=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,dens,30); hold on set(curve,'linecolor','none'); %contour(ax1,obj.zgrid,obj.rgrid,obj.geomweight(:,:,1),[0 0],'r-','linewidth',1.5,'Displayname','Boundaries'); if(obj.conformgeom) ylim(ax1,[obj.rgrid(1) obj.rgrid(sum(obj.nnr(1:2)))]*1000) else ylim(ax1,rlims) end xlim(ax1,zlims) xlabel(ax1,'z [mm]') ylabel(ax1,'r [mm]') %title(ax1,sprintf('Density t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',obj.t2d(fieldstart),obj.t2d(fieldend),double(maxdens))) c = colorbar(ax1); c.Label.String= 'n_e [m^{-3}]'; view(ax1,2) colormap(flipud(hot)); %% Magnetic field lines Blines=obj.rAthet; levels=linspace(min(Blines(obj.geomweight(:,:,1)>0)),max(Blines(obj.geomweight(:,:,1)>0)),35); [~,h1]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Blines,real(levels),'-.','color','k','linewidth',1.5,'Displayname','Magnetic field lines'); %% Equipotential lines Pot=mean(obj.pot(:,:,tsteps),3); Pot(obj.geomweight(:,:,1)<0)=NaN; %levels=8;%[-3.4 -5 -10 -15 -20 -25];%7; potcolor='b';%[0.3660 0.6740 0.1880]; [c1,h2]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Pot,'--','color',potcolor,'ShowText','on','linewidth',1.5,'Displayname','Equipotentials [kV]'); clabel(c1,h2,'Color',potcolor) clabel(c1,h2, 'labelspacing', 100); clabel(c1,h2, 'FontSize', 11); % Draw the metallic boundaries and the geometry itself [c1,hContour]=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,-geomw,[0,0],'linewidth',1.5); drawnow; xlim(ax1,zlims) % Change the color of the metallic boundaries to grey hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' try hFills(end).ColorData = uint8([150;150;150;255]); for idx = 1 : numel(hFills)-1 hFills(idx).ColorData(4) = 0; % default=255 end catch end h0=obj.H0; p0=obj.P0; if(obj.species(1).R.nt<2) h0=obj.H0; p0=obj.P0; else h0=mean(H(obj,{1:obj.species(1).VR.nparts,obj.species(1).VR.nt,false})); p0=mean(P(obj,{1:obj.species(1).VR.nparts,obj.species(1).VR.nt,false})); end Mirrorratio=(obj.Rcurv-1)/(obj.Rcurv+1); locpot=mean(obj.pot(:,:,end),3); psi=1+obj.qe*locpot/h0-1/(2*obj.me*h0)*(p0./obj.rgrid+obj.qe*0.5*obj.B0.*(obj.rgrid-obj.width/pi*Mirrorratio*cos(2*pi*obj.zgrid'/obj.width).*besseli(1,2*pi*obj.rgrid/obj.width))).^2; [~,hpsi]=contour(obj.zgrid*1000,obj.rgrid*1000,psi,[0 0],':','displayname','\Psi','linewidth',2.5,'Color','m'); grid on -legend([h1,h2,hpsi],{'Magnetic field lines','Equipotentials [V]','\Psi(r,z)=0'},'location','northeast') +legend([h1,h2,hpsi],{'Magnetic field lines','Equipotentials [V]','\zeta(r,z)=0'},'location','northeast') f.PaperOrientation='landscape'; f.PaperUnits='centimeters'; papsize=[16 14]; f.PaperSize=papsize; set(ax1,'fontsize',14); pos=f.Position; pos(4)=0.8*pos(4); f.Position=pos; %axis equal obj.savegraph(f,sprintf('%sfluid_dens_psi%i',obj.name,tsteps(1))) end diff --git a/matlab/@fennecshdf5/fennecshdf5.m b/matlab/@fennecshdf5/fennecshdf5.m index 956048c..eec70cd 100644 --- a/matlab/@fennecshdf5/fennecshdf5.m +++ b/matlab/@fennecshdf5/fennecshdf5.m @@ -1,3979 +1,3980 @@ classdef fennecshdf5 %fennecshdf5 General class used to treat hdf5 result files of fennecs code % A result file is loaded with a call to M=fennecshdf5(filename) where filename is the relative or absolute file path % after loading, several quantities and composite diagnostics such as moments of the distribution function or individual particles % quantities can be accessed. properties filename name folder fullpath timestamp info t0d t1d t2d tpart it0 it1 it2 restartsteps restarttimes %% Physical constants vlight=299792458; qe=1.60217662E-19; me=9.109383E-31; eps_0=8.85418781762E-12; kb=1.38064852E-23; %% Run parameters dt % simulation time step nrun % number of time steps simulated nlres nlsave nlclassical % Was the equation of motion solved in the classical framework nlPhis % Was the self-consistent electric field computed nz % number of intervals in the z direction for the grid nnr % number of intervals in the r direction for the grid for each of the 3 mesh regions lz % physical axial dimension of the simulation space nplasma % Number of initial macro particles potinn % Electric potential at the coaxial insert potout % Electric potential at the cylinder surface B0 % Normalization for the magnetic field Rcurv % Magnetic mirror ratio width % Magnetic mirror length n0 % Initial particle density in case of old particle loading temp % Initial particle temperature in case of old particle loading femorder % finite element method order in z and r direction ngauss % Order of the Gauss integration method for the FEM plasmadim % initial dimensions of the plasma for the old particle loading system radii % Radial limits of the three mesh regions coarse,fine,coarse H0 % Initial particle Energy for Davidsons distribution function P0 % Initial particle Angular momentum for Davidsons distribution function normalized % Are the parts quantities normalized in the h5 file nbspecies % Number of species simulated %% Frequencies omepe % Reference plasma frequency used for normalization omece % Reference cyclotronic frequency for normalization %% Normalizations tnorm % Time normalization rnorm % Dimension normalization bnorm % Magnetic field normalization enorm % Electric field normalization phinorm % Electric potential normalization vnorm % Velocity normalization %% Grid data rgrid % Radial grid position points zgrid % Axial grid position points dz % Axial grid step dr % Radial grid step for the three mesh regions CellVol % Volume of the cell used for density calculation celltype % type of cell -1 outside 1 inside 0 border linked_s % location of linked spline bsplinetype %% Magnetic field Br % Radial magnetic field Bz % Axial magnetic field Athet % Azimuthal component of the Magnetic potential vector rAthet % r*Athet used for the representation of magnetic field lines B % Magnetic field amplitude sinthet % ratio to project quantities along the magnetic field lines costhet % ratio to project quantities along the magnetic field lines %% Energies epot % Time evolution of the particles potential energy ekin % Time evolution of the particles kinetic energy etot % Time evolution of the particles total energy etot0 % Time evolution of the reference particle total energy eerr % Time evolution of the error on the energy conservation npart % Time evolution of the number of simulated %% 2D time data evaluated on grid points N % main specie Density fluidUR % main specie radial fluid velocity fluidUZ % main specie axial fluid velocity fluidUTHET % main specie azimuthal fluid velocity pot % Electric potential evaluated at grid points potxt % External Electric potential evaluated at grid points phi % Electric potential in spline form Er % Radial electric field Ez % Axial electric field Erxt % External Radial electric field Ezxt % External Axial electric field Presstens % Pressure tensor fluidEkin % average kinetic energy in each direction %% Splines knotsr % Spline radial knots knotsz % Spline axial knots %% Particle parameters weight % Macro particle numerical weight of the main specie qsim % Macro particle charge msim % Macro particle mass nbparts % Time evolution of the number of simulated particles partepot % Electric potential at the particles positions R % Particles radial position Z % Particles axial position Rindex % Particles radial grid index Zindex % Particles axial grid index partindex % Particles unique id for tracing trajectories VR % Particles radial velocity VZ % Particles axial velocity VTHET % Particles azimuthal velocity THET % Particles azimuthal position species % Array containing the other simulated species species_moments % containing moments for species (parts) %% Celldiag celldiag % Array containing the cell diagnostic data nbcelldiag % Total number of cell diagnostics %% Curvilinear geometry conformgeom % stores if we use the conforming or nonconforming boundary conditions r_a r_b z_r z_0 r_0 r_r L_r L_z Interior above1 above2 interior walltype geomweight dirichletweight gtilde spl_bound %% Maxwell source parameters maxwellsrce %% Collision with neutral parameters neutcol nudcol % effective momentum collision frequency %% Non ideal power supply psupply end methods function file=file(obj) % returns the h5 file name file=obj.filename; end function obj = fennecshdf5(filename,readparts,old) % Reads the new result file filename and read the parts data if readparts==true % adds the helper_classes folder to the path matlabfuncpath = dir([mfilename('fullpath'),'.m']); addpath(sprintf('%s/../helper_classes',matlabfuncpath.folder)); + addpath(sprintf('%s/../helper_functions',matlabfuncpath.folder)); addpath(sprintf('%s/../export_fig',matlabfuncpath.folder)); rehash path % Try catch are there for compatibility with older simulation files filedata=dir(filename); if (isempty(filedata)) fullpath=which(filename); filedata=dir(fullpath); if (isempty(filedata)) error("File: ""%s"" doesn't exist",filename) end end obj.folder=filedata.folder; obj.filename=filedata.name; [~, obj.name, ext] = fileparts(obj.filename); obj.filename=[obj.name,ext]; obj.fullpath=[obj.folder,'/',obj.filename]; obj.timestamp=filedata.date; if nargin==1 readparts=true; end if nargin<3 old=false; end %obj.info=h5info(filename); %% Read the run parameters obj.dt = h5readatt(obj.fullpath,'/data/input.00/','dt'); obj.nrun = h5readatt(obj.fullpath,'/data/input.00/','nrun'); obj.nlres = strcmp(h5readatt(obj.fullpath,'/data/input.00/','nlres'),'y'); obj.nlsave = strcmp(h5readatt(obj.fullpath,'/data/input.00/','nlsave'),'y'); obj.nlclassical =strcmp(h5readatt(obj.fullpath,'/data/input.00/','nlclassical'),'y'); obj.nlPhis =strcmp(h5readatt(obj.fullpath,'/data/input.00/','nlPhis'),'y'); obj.nz = h5readatt(obj.fullpath,'/data/input.00/','nz'); obj.nnr = h5read(obj.fullpath,'/data/input.00/nnr'); obj.lz = h5read(obj.fullpath,'/data/input.00/lz'); obj.qsim = h5readatt(obj.fullpath,'/data/input.00/','qsim'); obj.msim = h5readatt(obj.fullpath,'/data/input.00/','msim'); try obj.r_a=h5readatt(obj.fullpath,'/data/input.00/geometry','r_a'); obj.r_b=h5readatt(obj.fullpath,'/data/input.00/geometry','r_b'); obj.z_r=h5readatt(obj.fullpath,'/data/input.00/geometry','z_r'); obj.r_r=h5readatt(obj.fullpath,'/data/input.00/geometry','r_r'); obj.r_0=h5readatt(obj.fullpath,'/data/input.00/geometry','r_0'); obj.z_0=h5readatt(obj.fullpath,'/data/input.00/geometry','z_0'); obj.above1=h5readatt(obj.fullpath,'/data/input.00/geometry','above1'); obj.above2=h5readatt(obj.fullpath,'/data/input.00/geometry','above2'); obj.interior=h5readatt(obj.fullpath,'/data/input.00/geometry','interior'); obj.walltype=h5readatt(obj.fullpath,'/data/input.00/geometry','walltype'); try obj.L_r=h5readatt(obj.fullpath,'/data/input.00/geometry','L_r'); obj.L_z=h5readatt(obj.fullpath,'/data/input.00/geometry','L_z'); catch end obj.conformgeom=false; catch obj.conformgeom=true; obj.walltype=0; obj.r_a=obj.rgrid(1); obj.r_b=obj.rgrid(end); obj.above1=1; obj.above2=-1; obj.L_r=0; obj.L_z=0; end try obj.weight=h5readatt(obj.fullpath,'/data/part/','weight'); catch obj.weight=obj.msim/obj.me; end filesgrpinfo=h5info(obj.fullpath,'/files'); nbrst=h5readatt(obj.fullpath,'/files','jobnum'); obj.restartsteps(1)=0; obj.restarttimes(1)=0; grp=sprintf('/data/input.%02i/',0); obj.dt(1)=h5readatt(obj.fullpath,grp,'dt'); for i=1:nbrst grp=sprintf('/data/input.%02i/',i); obj.restartsteps(i+1)= h5readatt(obj.fullpath,grp,'startstep'); obj.restarttimes(i+1)= obj.restarttimes(i) + (obj.restartsteps(i+1)-obj.restartsteps(i))*obj.dt(i); obj.dt(i+1)=h5readatt(obj.fullpath,grp,'dt'); end obj.nplasma = h5readatt(obj.fullpath,'/data/input.00/','nplasma'); obj.potinn = h5readatt(obj.fullpath,'/data/input.00/','potinn'); obj.potout = h5readatt(obj.fullpath,'/data/input.00/','potout'); obj.B0 = h5readatt(obj.fullpath,'/data/input.00/','B0'); obj.Rcurv = h5readatt(obj.fullpath,'/data/input.00/','Rcurv'); obj.width = h5readatt(obj.fullpath,'/data/input.00/','width'); obj.n0 = h5readatt(obj.fullpath,'/data/input.00/','n0'); obj.temp = h5readatt(obj.fullpath,'/data/input.00/','temp'); try obj.it0 = h5readatt(obj.fullpath,'/data/input.00/','it0d'); obj.it1 = h5readatt(obj.fullpath,'/data/input.00/','it2d'); obj.it2 = h5readatt(obj.fullpath,'/data/input.00/','itparts'); catch obj.it0 = h5readatt(obj.fullpath,'/data/input.00/','it0'); obj.it1 = h5readatt(obj.fullpath,'/data/input.00/','it1'); obj.it1 = h5readatt(obj.fullpath,'/data/input.00/','it2'); end try try obj.nbspecies=h5readatt(obj.fullpath,'/data/part/','nbspecies'); catch obj.nbspecies=h5readatt(obj.fullpath,'/data/input.00/','nbspecies'); end obj.normalized=strcmp(h5readatt(obj.fullpath,'/data/input.00/','rawparts'),'y'); catch obj.nbspecies=1; obj.normalized=false; end try obj.nbcelldiag=h5readatt(obj.fullpath,'/data/celldiag/','nbcelldiag'); catch obj.nbcelldiag=0; end obj.omepe=sqrt(abs(obj.n0)*obj.qe^2/(obj.me*obj.eps_0)); obj.omece=obj.qe*obj.B0/obj.me; obj.npart= h5read(obj.fullpath, '/data/var0d/nbparts'); try obj.nudcol= h5read(obj.fullpath, '/data/var0d/nudcol'); catch end try obj.H0 = h5read(obj.fullpath,'/data/input.00/H0'); obj.P0 = h5read(obj.fullpath,'/data/input.00/P0'); catch obj.H0=3.2e-14; obj.P0=8.66e-25; end % Normalizations if old obj.tnorm=abs(1/obj.omepe); else obj.tnorm=min(abs(1/obj.omepe),abs(1/obj.omece)); end obj.rnorm=obj.vlight*obj.tnorm; obj.bnorm=obj.B0; obj.enorm=obj.vlight*obj.bnorm; obj.phinorm=obj.enorm*obj.rnorm; obj.vnorm=obj.vlight; % Conversion of the bias to V obj.potinn=obj.potinn*obj.phinorm; obj.potout=obj.potout*obj.phinorm; % Grid data obj.rgrid= h5read(obj.fullpath, '/data/var1d/rgrid')*obj.rnorm; obj.zgrid= h5read(obj.fullpath, '/data/var1d/zgrid')*obj.rnorm; obj.dz=(obj.zgrid(end)-obj.zgrid(1))/double(obj.nz); rid=1; for i=1:length(obj.nnr) obj.dr(i)=(obj.rgrid(sum(obj.nnr(1:i))+1)-obj.rgrid(rid))/double(obj.nnr(i)); rid=rid+obj.nnr(i); end Br = h5read(obj.fullpath,'/data/fields/Br')*obj.bnorm; obj.Br= reshape(Br,length(obj.zgrid),length(obj.rgrid)); Bz = h5read(obj.fullpath,'/data/fields/Bz')*obj.bnorm; obj.Bz= reshape(Bz,length(obj.zgrid),length(obj.rgrid)); try Atheta = h5read(obj.fullpath,'/data/fields/Athet'); obj.Athet= reshape(Atheta,length(obj.zgrid),length(obj.rgrid)); [rmeshgrid,~]=meshgrid(obj.rgrid,obj.zgrid); obj.rAthet=(rmeshgrid.*obj.Athet)'; catch end obj.B=sqrt(obj.Bz.^2+obj.Br.^2); obj.costhet=(obj.Br./obj.B)'; obj.sinthet=(obj.Bz./obj.B)'; clear Br Bz try obj.t0d=h5read(obj.fullpath,'/data/var0d/time'); catch obj.t0d=obj.dt.*double(0:length(obj.epot)-1); end try for i=0:nbrst grp=sprintf('/data/input.%02i/',i); obj.Erxt(:,:,i+1)=reshape(h5read(obj.fullpath,[grp,'Erxt']),length(obj.zgrid),length(obj.rgrid))'*obj.enorm; obj.Ezxt(:,:,i+1)=reshape(h5read(obj.fullpath,[grp,'Ezxt']),length(obj.zgrid),length(obj.rgrid))'*obj.enorm; obj.potxt(:,:,i+1)=reshape(h5read(obj.fullpath,[grp,'potxt']),length(obj.zgrid),length(obj.rgrid))'*obj.phinorm; end catch end obj.femorder = h5read(obj.fullpath,'/data/input.00/femorder'); obj.ngauss = h5read(obj.fullpath,'/data/input.00/ngauss'); obj.plasmadim = h5read(obj.fullpath,'/data/input.00/plasmadim'); obj.radii = h5read(obj.fullpath,'/data/input.00/radii'); obj.epot = h5read(obj.fullpath,'/data/var0d/epot'); obj.ekin = h5read(obj.fullpath,'/data/var0d/ekin'); obj.etot = h5read(obj.fullpath,'/data/var0d/etot'); try obj.etot0 = h5read(obj.fullpath,'/data/var0d/etot0'); obj.eerr = obj.etot-obj.etot0; catch obj.eerr = obj.etot-obj.etot(2); end if(obj.normalized) obj.pot=gridquantity(obj.fullpath,'/data/fields/pot',sum(obj.nnr)+1, obj.nz+1,1); obj.Er=gridquantity(obj.fullpath,'/data/fields/Er',sum(obj.nnr)+1, obj.nz+1,1); obj.Ez=gridquantity(obj.fullpath,'/data/fields/Ez',sum(obj.nnr)+1, obj.nz+1,1); else obj.pot=gridquantity(obj.fullpath,'/data/fields/pot',sum(obj.nnr)+1, obj.nz+1,obj.phinorm); obj.Er=gridquantity(obj.fullpath,'/data/fields/Er',sum(obj.nnr)+1, obj.nz+1,obj.enorm); obj.Ez=gridquantity(obj.fullpath,'/data/fields/Ez',sum(obj.nnr)+1, obj.nz+1,obj.enorm); end try obj.t2d = h5read(obj.fullpath,'/data/fields/time'); catch info=h5info(obj.fullpath,'/data/fields/partdensity'); obj.t2d=obj.dt*(0:info.objspace.Size(2)-1)*double(obj.it1); end try info=h5info(obj.fullpath,'/data/fields/moments'); obj.femorder = h5read(obj.fullpath,'/data/input.00/femorder'); kr=obj.femorder(2)+1; obj.knotsr=augknt(obj.rgrid,kr); kz=obj.femorder(1)+1; obj.knotsz=augknt(obj.zgrid,kz); try obj.CellVol= reshape(h5read(obj.fullpath,'/data/fields/volume'),length(obj.knotsz)-kz,length(obj.knotsr)-kr); obj.CellVol=permute(obj.CellVol,[2,1,3])*obj.rnorm^3; zvol=fnder(spmak(obj.knotsz,ones(1,length(obj.knotsz)-kz)), -1 ); rvol=fnder(spmak(obj.knotsr,2*pi*obj.knotsr(kr:length(obj.knotsr)-kr+1)'), -1 ); ZVol=diff(fnval(zvol,obj.knotsz)); RVol=diff(fnval(rvol,obj.knotsr)); CellVolfull=RVol(kr:end-kr+1)*ZVol(kz:end-kz+1)'; CellVolfull=padarray(CellVolfull,double([kr-1,kz-1]),'replicate','post'); % We remove the volumes which are too small and could % lead to noise obj.CellVol(obj.CellVol./CellVolfull<0.1)=0; catch zvol=fnder(spmak(obj.knotsz,ones(1,length(obj.knotsz)-kz)), -1 ); rvol=fnder(spmak(obj.knotsr,2*pi*[obj.rgrid' 2*obj.rgrid(end)-obj.rgrid(end-1)]), -1 ); ZVol=diff(fnval(zvol,obj.knotsz)); RVol=diff(fnval(rvol,obj.knotsr)); obj.CellVol=RVol(3:end-1)*ZVol(3:end-1)'; obj.CellVol=padarray(obj.CellVol,[1,1],'replicate','post'); end try obj.geomweight = h5read(obj.fullpath,'/data/input.00/geometry/geomweight'); obj.geomweight= reshape(obj.geomweight,length(obj.zgrid),length(obj.rgrid),[]); obj.geomweight = permute(obj.geomweight,[2,1,3]); catch obj.geomweight=ones(length(obj.rgrid),length(obj.zgrid),3); end try obj.dirichletweight = h5read(obj.fullpath,'/data/input.00/geometry/dirichletweight'); obj.dirichletweight= reshape(obj.dirichletweight,length(obj.zgrid),length(obj.rgrid),[]); obj.dirichletweight = permute(obj.dirichletweight,[2,1,3]); catch obj.dirichletweight=obj.geomweight; end try obj.gtilde = h5read(obj.fullpath,'/data/input.00/geometry/gtilde'); obj.gtilde= reshape(obj.gtilde,length(obj.zgrid),length(obj.rgrid),[]); obj.gtilde = permute(obj.gtilde,[2,1,3]); catch obj.gtilde=zeros(length(obj.rgrid),length(obj.zgrid),3); end geomweight=ones(length(obj.rgrid),length(obj.zgrid)); if(obj.normalized) obj.N=splinedensity(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, 1, geomweight, 1); obj.phi=splinequantity(obj.fullpath,'/data/fields/phi', obj.knotsr, obj.knotsz, obj.femorder, 1, obj.geomweight(:,:,1), -1); else obj.N=splinedensity(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, abs(obj.qsim/obj.qe), geomweight, 1); end obj.fluidUR=splinevelocity(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.vnorm, geomweight, 2); obj.fluidUTHET=splinevelocity(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.vnorm, geomweight, 3); obj.fluidUZ=splinevelocity(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.vnorm, geomweight, 4); if(obj.normalized) obj.Presstens=splinepressure(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, obj.vnorm^2*obj.me, geomweight); obj.fluidEkin=splineenergy(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, obj.vnorm^2*obj.me*0.5, geomweight); else obj.Presstens=splinepressure(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, obj.vnorm^2*obj.msim, geomweight); obj.fluidEkin=splineenergy(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, obj.vnorm^2*obj.msim*0.5, geomweight); end try obj.celltype=h5read(obj.fullpath,'/data/input.00/geometry/ctype')'; obj.linked_s=h5read(obj.fullpath,'/data/input.00/geometry/linked_s'); obj.bsplinetype=h5read(obj.fullpath,'/data/input.00/geometry/bsplinetype'); obj.bsplinetype=reshape(obj.bsplinetype,length(obj.knotsz)-kz,length(obj.knotsr)-kr); catch obj.celltype=[]; obj.linked_s=[]; end catch obj.CellVol=(obj.zgrid(2:end)-obj.zgrid(1:end-1))*((obj.rgrid(2:end).^2-obj.rgrid(1:end-1).^2)*pi)'; obj.CellVol=obj.CellVol'; obj.N=griddensity(obj.fullpath, '/data/fields/partdensity', sum(obj.nnr)+1, obj.nz+1, obj.CellVol, abs(obj.qsim/obj.qe), true); obj.fluidUR=gridquantity(obj.fullpath, '/data/fields/fluidur', sum(obj.nnr)+1, obj.nz+1, obj.vnorm, true); obj.fluidUTHET=gridquantity(obj.fullpath, '/data/fields/fluiduthet', sum(obj.nnr)+1, obj.nz+1, obj.vnorm, true); obj.fluidUZ=gridquantity(obj.fullpath, '/data/fields/fluiduz', sum(obj.nnr)+1, obj.nz+1, obj.vnorm, true); end % If we have a maxwellian source, read its parameters try obj.maxwellsrce.rlim=h5read(obj.fullpath, '/data/input.00/maxwellsource/rlimits'); obj.maxwellsrce.zlim=h5read(obj.fullpath, '/data/input.00/maxwellsource/zlimits'); obj.maxwellsrce.frequency=h5readatt(obj.fullpath, '/data/input.00/maxwellsource','frequency'); obj.maxwellsrce.radialtype=h5readatt(obj.fullpath, '/data/input.00/maxwellsource','radialtype'); obj.maxwellsrce.temperature=h5readatt(obj.fullpath, '/data/input.00/maxwellsource','temperature'); obj.maxwellsrce.time_end=h5readatt(obj.fullpath, '/data/input.00/maxwellsource','time_end'); obj.maxwellsrce.time_start=h5readatt(obj.fullpath, '/data/input.00/maxwellsource','time_start'); obj.maxwellsrce.vth=h5readatt(obj.fullpath, '/data/input.00/maxwellsource','vth'); obj.maxwellsrce.rate=obj.maxwellsrce.frequency*obj.weight/(pi*(diff(obj.maxwellsrce.rlim.^2))*diff(obj.maxwellsrce.zlim)); obj.maxwellsrce.current=obj.maxwellsrce.frequency*obj.weight*obj.qe; obj.maxwellsrce.present=true; catch obj.maxwellsrce.present=false; end %% load neutcol parameters try obj.neutcol.neutdens=double(h5readatt(obj.fullpath, '/data/input.00/neutcol','neutdens')); obj.neutcol.neutpressure=double(h5readatt(obj.fullpath, '/data/input.00/neutcol','neutpressure')); obj.neutcol.scatter_fac=double(h5readatt(obj.fullpath, '/data/input.00/neutcol','scatter_fac')); obj.neutcol.Eion=double(h5readatt(obj.fullpath, '/data/input.00/neutcol','Eion')); obj.neutcol.E0=double(h5readatt(obj.fullpath, '/data/input.00/neutcol','E0')); obj.neutcol.Escale=double(h5readatt(obj.fullpath, '/data/input.00/neutcol','Escale')); try obj.neutcol.io_cross_sec=double(h5read(obj.fullpath, '/data/input.00/neutcol/io_cross_sec')); obj.neutcol.io_cross_sec(:,2)=obj.neutcol.io_cross_sec(:,2)*obj.rnorm^2; obj.neutcol.io_cross_sec(:,3)=[log(obj.neutcol.io_cross_sec(2:end,2)./obj.neutcol.io_cross_sec(1:end-1,2))... ./log(obj.neutcol.io_cross_sec(2:end,1)./obj.neutcol.io_cross_sec(1:end-1,1)); 0]; obj.neutcol.iom_cross_sec=zeros(500,3); obj.neutcol.iom_cross_sec(:,1)=logspace(log10(obj.neutcol.Eion+0.001),log10(5e4),size(obj.neutcol.iom_cross_sec,1)); obj.neutcol.iom_cross_sec(:,2)=obj.sigmiopre(obj.neutcol.iom_cross_sec(:,1),true); obj.neutcol.iom_cross_sec(:,3)=abs([log(obj.neutcol.iom_cross_sec(2:end,2)./obj.neutcol.iom_cross_sec(1:end-1,2))... ./log(obj.neutcol.iom_cross_sec(2:end,1)./obj.neutcol.iom_cross_sec(1:end-1,1)); 0]); catch obj.neutcol.io_cross_sec=[]; obj.neutcol.iom_cross_sec=[]; end try obj.neutcol.ela_cross_sec=double(h5read(obj.fullpath, '/data/input.00/neutcol/ela_cross_sec')); obj.neutcol.ela_cross_sec(:,2)=obj.neutcol.ela_cross_sec(:,2)*obj.rnorm^2; obj.neutcol.ela_cross_sec(:,3)=[log(obj.neutcol.ela_cross_sec(2:end,2)./obj.neutcol.ela_cross_sec(1:end-1,2))... ./log(obj.neutcol.ela_cross_sec(2:end,1)./obj.neutcol.ela_cross_sec(1:end-1,1)); 0]; catch obj.neutcol.ela_cross_sec=[]; end obj.neutcol.present=true; catch obj.neutcol.present=false; end %% load spline boundaries try obj.spl_bound.nbsplines=h5readatt(obj.fullpath, '/data/input.00/geometry_spl','nbsplines'); for i=1:obj.spl_bound.nbsplines splgroup=sprintf('/data/input.00/geometry_spl/%02d',i); obj.spl_bound.boundary(i).knots=h5read(obj.fullpath,sprintf('%s/knots',splgroup)); obj.spl_bound.boundary(i).Dval=h5readatt(obj.fullpath,splgroup,'Dirichlet_val'); obj.spl_bound.boundary(i).coefs=reshape(h5read(obj.fullpath,sprintf('%s/pos',splgroup)),2,[])'; obj.spl_bound.boundary(i).order=h5readatt(obj.fullpath,splgroup,'order'); obj.spl_bound.boundary(i).kind=h5readatt(obj.fullpath,splgroup,'kind'); try obj.spl_bound.boundary(i).type=h5readatt(obj.fullpath,splgroup,'type'); catch end obj.spl_bound.boundary(i).fun=spmak(obj.spl_bound.boundary(i).knots,obj.spl_bound.boundary(i).coefs'); end catch obj.spl_bound.nbsplines=0; end %% load non ideal power supply parameters try obj.psupply.targetbias=h5readatt(obj.fullpath, '/data/input.00/psupply','targetbias'); obj.psupply.expdens=h5readatt(obj.fullpath, '/data/input.00/psupply','expdens'); obj.psupply.PSresistor=h5readatt(obj.fullpath, '/data/input.00/psupply','PSresistor'); obj.psupply.geomcapacitor=h5readatt(obj.fullpath, '/data/input.00/psupply','geomcapacitor'); obj.psupply.nbhdt=h5readatt(obj.fullpath, '/data/input.00/psupply','nbhdt'); obj.psupply.biases=h5read(obj.fullpath, '/data/var0d/biases'); obj.psupply.current=h5read(obj.fullpath, '/data/var0d/current'); obj.psupply.tau=obj.psupply.PSresistor*obj.psupply.geomcapacitor*obj.psupply.expdens/obj.neutcol.neutdens; obj.psupply.active=true; obj.psupply.bdpos=h5read(obj.fullpath, '/data/input.00/psupply/bdpos'); catch obj.psupply.active=false; end obj.species=h5parts.empty(obj.nbspecies,0); % Read the main particles parameters if(readparts) obj.species(1)=h5parts(obj.fullpath,'/data/part',obj,obj.normalized); if(obj.nbspecies >1) for i=2:obj.nbspecies obj.species(i)=h5parts(obj.fullpath,sprintf('/data/part/%2d',i),obj,true); try obj.species_moments(i-1).N=splinedensity(obj.fullpath, sprintf('/data/part/%2d/moments',i), obj.knotsr, obj.knotsz, obj.femorder, obj.CellVol, 1, geomweight, 1); obj.species_moments(i-1).fluidUR=splinevelocity(obj.fullpath, sprintf('/data/part/%2d/moments',i), obj.knotsr, obj.knotsz, obj.femorder, obj.vnorm, geomweight, 2); obj.species_moments(i-1).fluidUTHET=splinevelocity(obj.fullpath, sprintf('/data/part/%2d/moments',i), obj.knotsr, obj.knotsz, obj.femorder, obj.vnorm, geomweight, 3); obj.species_moments(i-1).fluidUZ=splinevelocity(obj.fullpath, sprintf('/data/part/%2d/moments',i), obj.knotsr, obj.knotsz, obj.femorder, obj.vnorm, geomweight, 4); catch % No moments stored obj.species_moments(i-1)=0; end end end end try obj.tpart = h5read(obj.fullpath,'/data/part/time'); obj.nbparts = h5read(obj.fullpath,'/data/part/Nparts'); catch obj.nbparts=obj.npart; obj.tpart=obj.dt*(0:size(obj.species(1).R,2)-1)*double(obj.it2); end if(obj.nbcelldiag > 0) obj.celldiag=h5parts.empty; j=0; for i=1:obj.nbcelldiag nbparts=h5read(obj.fullpath,sprintf('%s/Nparts',sprintf('/data/celldiag/%02d',i))); if (sum(nbparts)>0) j=j+1; obj.celldiag(j)=h5parts(obj.fullpath,sprintf('/data/celldiag/%02d',i),obj,true); obj.celldiag(j).rindex=double(h5readatt(obj.fullpath, sprintf('/data/celldiag/%02d',i),'rindex'))+(1:2); obj.celldiag(j).zindex=double(h5readatt(obj.fullpath, sprintf('/data/celldiag/%02d',i),'zindex'))+(1:2); end end end end %------------------------------------------ % Functions for accesing secondary simulation quantities function Atheta=Atheta(obj,R,Z) %% returns the magnetic vector potential at position R,Z interpolated from stored Athet in h5 file % halflz=(obj.zgrid(end)+obj.zgrid(1))/2; % Atheta=0.5*obj.B0*(R-obj.width/pi*(obj.Rcurv-1)/(obj.Rcurv+1)... % .*besseli(1,2*pi*R/obj.width).*cos(2*pi*(Z-halflz)/obj.width)); Atheta=interp2(obj.rgrid,obj.zgrid,obj.Athet,R,Z,'spline'); end function quantity=H(obj,indices) %% computes the total energy for the main specie % for the particle with index indices{1} at timepart step indices{2} % which is time obj.timepart(indices{2}) if strcmp(indices{1},':') p=1:obj.species(1).VR.nparts;% if nothing is defined we load all particles else p=indices{1}; end if strcmp(indices{2},':') t=1:length(obj.tpart); %if nothing is defined all time steps are considered else t=indices{2}; end % if track is true we look at specific particles with their % index and follow them in time % if it is false we just care about the distribution function % and specific particles can have different positions in the % resulting array for each timestep if size(indices,1)>2 track=indices{3}; else track=false; end quantity=0.5*obj.me*(obj.species(1).VR(p,t,track).^2+obj.species(1).VTHET(p,t,track).^2+obj.species(1).VZ(p,t,track).^2)+obj.species(1).partepot(p,t,track); end function quantity=P(obj,indices) %P computes the canonical angular momentum for the main specie % for the particle with index indices{1} at timepart step indices{2} % which is time obj.timepart(indices{2}) if strcmp(indices{1},':') p=1:obj.species(1).R.nparts; else p=indices{1}; end if strcmp(indices{2},':') t=1:length(obj.tpart); else t=indices{2}; end % if track is true we look at specific particles with their % index and follow them in time % if it is false we just care about the distribution function % and specific particles can have different positions in the % resulting array for each timestep if size(indices,1)>2 track=indices{3}; else track=false; end quantity=obj.species(1).R(p,t,track).*(obj.species(1).VTHET(p,t,track)*obj.me+sign(obj.qsim)*obj.qe*obj.Atheta(obj.species(1).R(p,t,track),obj.species(1).Z(p,t,track))); end function quantity=Vpar(obj,varargin) %Vpar Computes the parallel velocity for the main specie % for the particle with index indices{1} at timepart step indices{2} % which is time obj.timepart(indices{2}) if(~iscell(varargin)) indices=mat2cell(varargin); else indices=varargin; end if strcmp(indices{1},':') p=1:obj.species(1).R.nparts; else p=indices{1}; end if strcmp(indices{2},':') t=1:length(obj.tpart); else t=indices{2}; end % if track is true we look at specific particles with their % index and follow them in time % if it is false we just care about the distribution function % and specific particles can have different positions in the % resulting array for each timestep if size(indices,1)>2 track=indices{3}; else track=false; end Zp=obj.species(1).Z(p,t,track);% get the particle axial positon Rp=obj.species(1).R(p,t,track);% get the particle radial position % interpolate the magnetic field at the particle position Bzp=interp2(obj.zgrid,obj.rgrid,obj.Bz',Zp,Rp,'makima'); Brp=interp2(obj.zgrid,obj.rgrid,obj.Br',Zp,Rp,'makima'); Bp=sqrt(Bzp.^2+Brp.^2); % calculate the projection angle of the radial and axial % directions on the magnetic field line Costhet=Bzp./Bp; Sinthet=Brp./Bp; % calculate the actuale parallel velocity quantity=obj.species(1).VR(p,t,track).*Sinthet+obj.species(1).VZ(p,t,track).*Costhet; end function quantity=Vperp(obj,varargin) %Vperp Computes the perpendicular velocity in the guidind center reference frame, % for the main specie particle indices{1} at time indices{2} if(~iscell(varargin)) indices=mat2cell(varargin); else indices=varargin; end if strcmp(indices{1},':') p=1:obj.species(1).R.nparts; else p=indices{1}; end if strcmp(indices{2},':') t=1:length(obj.tpart); else t=indices{2}; end % if track is true we look at specific particles with their % index and follow them in time % if it is false we just care about the distribution function % and specific particles can have different positions in the % resulting array for each timestep if size(indices,2)>2 track=indices{3}; else track=false; end % if gcs is true, gives the perpendicular velocity in the % guiding center system by substracting the EXB azimuthal % velocity % else gives the total perpendicular velocity if size(indices,2)>3 gcs=indices{4}; else gcs=false; end % get the particle position Zp=obj.species(1).Z(p,t,track); Rp=obj.species(1).R(p,t,track); % interpolate the magnetic field at the particle position Bzp=interp2(obj.zgrid,obj.rgrid,obj.Bz',Zp,Rp,'makima'); Brp=interp2(obj.zgrid,obj.rgrid,obj.Br',Zp,Rp,'makima'); Bp=sqrt(Bzp.^2+Brp.^2); % calculate the projecting angles Costhet=Bzp./Bp; Sinthet=Brp./Bp; Vdrift=zeros(size(Zp)); if gcs % for each particle and each timestep % calculate the azimuthal ExB drift velocity for j=1:length(t) [~, tfield]=min(abs(obj.t2d-obj.tpart(t(j)))); timeEr=obj.Er(:,:,tfield); timeEz=obj.Ez(:,:,tfield); %posindE=sub2ind(size(timeEr),Rind(:,j),Zind(:,j)); timeErp=interp2(obj.zgrid,obj.rgrid,timeEr,Zp(:,j),Rp(:,j)); timeEzp=interp2(obj.zgrid,obj.rgrid,timeEz,Zp(:,j),Rp(:,j)); Vdrift(:,j)=(timeEzp.*Brp(:,j)-timeErp.*Bzp(:,j))./Bp(:,j).^2; end end % calculate the perpendicular velocity quantity=sqrt((obj.species(1).VTHET(p,t,track)-Vdrift).^2+(obj.species(1).VR(p,t,track).*Costhet-obj.species(1).VZ(p,t,track).*Sinthet).^2); end function quantity=cyclphase(obj,varargin) %cyclphase Computes the cyclotronic phase for the main specie % for particles with indices{1} at time indices{2} if(~iscell(varargin)) indices=mat2cell(varargin); else indices=varargin; end if strcmp(indices{1},':') p=1:obj.species(1).R.nparts; else p=indices{1}; end if strcmp(indices{2},':') t=1:length(obj.tpart); else t=indices{2}; end % if track is true we look at specific particles with their % index and follow them in time % if it is false we just care about the distribution function % and specific particles can have different positions in the % resulting array for each timestep if size(indices,2)>2 track=indices{3}; else track=false; end Zp=obj.species(1).Z(p,t,track); Rp=obj.species(1).R(p,t,track); % [~, zind(1)]=min(abs(obj.zgrid-0.005262)); % [~, zind(2)]=min(abs(obj.zgrid-0.006637)); % [~, rind(1)]=min(abs(obj.rgrid-0.0784)); % [~, rind(2)]=min(abs(obj.rgrid-0.07861)); % indices=Zp=obj.zgrid(zind(1)) &... % Rp=obj.rgrid(rind(1)); %Zp=Zp(indices); %Rp=Rp(indices); %p=indices; Bzp=interp2(obj.zgrid,obj.rgrid,obj.Bz',Zp,Rp,'makima'); Brp=interp2(obj.zgrid,obj.rgrid,obj.Br',Zp,Rp,'makima'); Bp=sqrt(Bzp.^2+Brp.^2); Costhet=Bzp./Bp; Sinthet=Brp./Bp; % compute the projection of the perpendicular velocity in the % radial direction vr=(obj.species(1).VR(p,t,track).*Costhet-obj.species(1).VZ(p,t,track).*Sinthet); % Get the perpendicular velocity vperp=obj.Vperp(p,t,track,true); vr=vr(indices); vperp=vperp(indices); cospsi=vr./vperp; quantity=acos(cospsi); end function p=borderpoints(obj,subdiv) %borderpoints Return a cell array containing the curves %defining the boundary of the domain % for each boundary p(1,:) and p(2,:) give axial and radial position % for each boundary p(3,:) and p(4,:) give axial and radial normals %gw= contourc(obj.zgrid,obj.rgrid,obj.geomweight(:,:,1),[0 0]) p=cell(0,0); if nargin<2 subdiv=1; end ndiv=sum(subdiv); %outer cylinder if any(obj.geomweight(end,:,1)>=0) idp=ceil(length(obj.zgrid)/ndiv); imin=1; for j=1:length(subdiv) imax=min(imin+subdiv(j)*idp-1,length(obj.zgrid)); p{end+1}=[obj.zgrid(imin:imax)';obj.rgrid(end)*ones(imax-imin+1,1)'; zeros(imax-imin+1,1)';ones(imax-imin+1,1)']; imin=imax; end end %inner cylinder if any(obj.geomweight(1,:,1)>=0) idp=ceil(length(obj.zgrid)/ndiv); imin=1; for j=1:length(subdiv) imax=min(imin+subdiv(j)*idp-1,length(obj.zgrid)); p{end+1}=[obj.zgrid(imin:imax)';obj.rgrid(1)*ones(imax-imin+1,1)'; zeros(imax-imin+1,1)';-ones(imax-imin+1,1)']; imin=imax; end end if obj.walltype==2 % We have an elliptic insert that we want to isolate gw=obj.ellipseborder; zpos=obj.zgrid(obj.zgrid<(min(gw(1,:))) | obj.zgrid>(max(gw(1,:)))); p{2}=[zpos,obj.rgrid(end)*ones(size(zpos))]'; p{1}=[obj.zgrid';obj.rgrid(1)*ones(size(obj.zgrid))']; gw=obj.ellipseborder; p{3}=gw; elseif obj.walltype==9 % extract all the walls gw=contourc(obj.zgrid,obj.rgrid,obj.geomweight(:,:,1),[0 0]); [x,y,~]=C2xyz(gw); for i=1:obj.spl_bound.nbsplines %subdiv=[4,1,2]; if( obj.spl_bound.boundary(i).type>1) continue end s=linspace(obj.spl_bound.boundary(i).knots(1),obj.spl_bound.boundary(i).knots(end),5*length(obj.spl_bound.boundary(i).knots)); positions=fnval(obj.spl_bound.boundary(i).fun,s); ndiv=sum(subdiv); idp=ceil(size(positions,2)/ndiv); imin=1; for j=1:length(subdiv) imax=min(imin+subdiv(j)*idp-1,size(positions,2)); p{end+1}=[positions(1,imin:imax);positions(2,imin:imax)]; imin=imax; end end elseif obj.walltype~=0 % extract all the walls gw=contourc(obj.zgrid,obj.rgrid,obj.geomweight(:,:,1),[0 0]); [x,y,~]=C2xyz(gw); for i=1:length(x) %subdiv=[4,1,2]; ndiv=sum(subdiv); idp=ceil(length(x{i})/ndiv); imin=1; for j=1:length(subdiv) imax=min(imin+subdiv(j)*idp-1,length(x{i})); p{end+1}=[x{i}(imin:imax);y{i}(imin:imax)]; imin=imax; end end end % figure % for i=1:length(p) % plot(p{i}(1,:),p{i}(2,:)) % hold on % end end function p=ellipseborder(obj) %ellipseborder returns the boundary points defining the %elliptic insert z=linspace(-0.998,0.998,600)*obj.z_r; p=zeros(4,length(z)); for i=1:length(z) p(1,i)=z(i)+obj.z_0; p(2,i)=obj.r_0-obj.r_r*sqrt(1-(z(i)/obj.z_r)^2); p(3,i)=2/(obj.z_r^2)*(z(i)); p(4,i)=2/(obj.r_r^2)*(p(2,i)-obj.r_0); end norm=sqrt(p(3,:).^2+p(4,:).^2); p(3,:)=double(obj.interior)*p(3,:)./norm; p(4,:)=double(obj.interior)*p(4,:)./norm; end function charge=totcharge(obj,fieldstep) % Integrates the density profile over the full volume to obtain % the total number of electrons in the volume n=splinedensity(obj.fullpath, '/data/fields/moments', obj.knotsr, obj.knotsz, obj.femorder,ones(size(obj.CellVol)), 1, 1); charge=sum(sum(n(:,:,fieldstep))); end function Gamma=Axialflux(obj,timestep,zpos, species_id) if nargin <4 species_id=1; end % Computes the axial particle flux n*Uz at timestep timestep and axial position zpos if species_id ==1 Gamma=obj.fluidUZ(:,zpos,timestep).*obj.N(:,zpos,timestep); else Gamma=obj.species_moments.fluidUZ(:,zpos,timestep).*obj.species_moments.N(:,zpos,timestep); end end function Gamma=Metallicflux(obj,timestep,subdiv) % Computes the particle flux at time obj.t2d(timestep) on the % metallic boundaries if nargin<3 subdiv=1; end % We find the borderpoints p=obj.borderpoints(subdiv); gamma=cell(size(p)); Nr=cell(size(p)); Nz=cell(size(p)); for i=1:length(p) bp=p{i}; if size(bp,1)==2 % We get the normals at these positions and normalise them Nr{i}=-interp2(obj.zgrid,obj.rgrid,obj.geomweight(:,:,3),bp(1,:),bp(2,:),'linear',0); Nz{i}=-interp2(obj.zgrid,obj.rgrid,obj.geomweight(:,:,2),bp(1,:),bp(2,:),'linear',0); norm=sqrt(Nr{i}.^2+Nz{i}.^2); norm(norm==0)=1; norm(isnan(norm))=1; Nr{i}=Nr{i}./norm; Nz{i}=Nz{i}./norm; else Nr{i}=bp(4,:); Nz{i}=bp(3,:); end gamma{i}=zeros(size(bp,2),length(timestep)); end [z,r]=ndgrid(obj.zgrid,obj.rgrid); N=obj.N(:,:,timestep(1)); n=griddedInterpolant(z,r,N'); % choose as function of species # (dep espece) uz=griddedInterpolant(z,r,obj.fluidUZ(:,:,timestep(1))'); ur=griddedInterpolant(z,r,obj.fluidUR(:,:,timestep(1))'); % we get the density and fluid velocities at the desired time % steps and interpolate them at the boundary position for j=1:length(timestep) n.Values=obj.N(:,:,timestep(j))'; % dependence esp %n.Values(obj.geomweight(:,:,1)<=0)=0; uz.Values=obj.fluidUZ(:,:,timestep(j))'; %uz.Values(obj.geomweight(:,:,1)<=0)=0; ur.Values=obj.fluidUR(:,:,timestep(j))'; %ur.Values(obj.geomweight(:,:,1)<=0)=0; for i=1:length(p) bp=p{i}; gamma{i}(:,j)=n(bp(1:2,:)').*(ur(bp(1:2,:)').*Nr{i}'+uz(bp(1:2,:)').*Nz{i}'); end end % return the boundary position p and the corresponding flux % gamma Gamma.p=p; Gamma.gamma=gamma; end function gamma_species = MetallicFlux_species(obj,timestep,subdiv) % Computes the particle flux at time obj.t2d(timestep) on the % metallic boundaries for species 2, supposedly the ions if nargin<3 subdiv=1; end % We find the borderpoints p=obj.borderpoints(subdiv); gamma=cell(size(p)); Nr=cell(size(p)); Nz=cell(size(p)); for i=1:length(p) bp=p{i}; if size(bp,1)==2 % We get the normals at these positions and normalise them Nr{i}=-interp2(obj.zgrid,obj.rgrid,obj.geomweight(:,:,3),bp(1,:),bp(2,:)); Nz{i}=-interp2(obj.zgrid,obj.rgrid,obj.geomweight(:,:,2),bp(1,:),bp(2,:)); norm=sqrt(Nr{i}.^2+Nz{i}.^2); Nr{i}=Nr{i}./norm; Nz{i}=Nz{i}./norm; else Nr{i}=bp(4,:); Nz{i}=bp(3,:); end gamma{i}=zeros(size(bp,2),length(timestep)); end [z,r]=ndgrid(obj.zgrid,obj.rgrid); N=obj.species_moments.N; N = N(:,:,timestep(1)); n=griddedInterpolant(z,r,N'); % choose as function of species # (dep espece) uz=griddedInterpolant(z,r,obj.species_moments.fluidUZ(:,:,timestep(1))'); ur=griddedInterpolant(z,r,obj.species_moments.fluidUR(:,:,timestep(1))'); % we get the density and fluid velocities at the desired time % steps and interpolate them at the boundary position for j=1:length(timestep) n.Values=obj.species_moments.N(:,:,timestep(j))'; % dependence esp uz.Values=obj.species_moments.fluidUZ(:,:,timestep(j))'; ur.Values=obj.species_moments.fluidUR(:,:,timestep(j))'; for i=1:length(p) bp=p{i}; gamma{i}(:,j)=n(bp(1:2,:)').*(ur(bp(1:2,:)').*Nr{i}'+uz(bp(1:2,:)').*Nz{i}'); end end % return the boundary position p and the corresponding flux % gamma gamma_species.p=p; gamma_species.gamma=gamma; end % function [I, pos]=OutCurrents_species(obj,timestep, subdiv) % % Computes the Outgoing currens at the simulation axial boundaries at timestep timestep % % This is simply the surface integral of the axial flux % if nargin<3 % subdiv=1; % end % flux=obj.Axialflux(timestep,[1 obj.nz+1],2); % Iz=squeeze(trapz(obj.species(1).rgrid,flux.*obj.species(1).rgrid)*2*pi*obj.species.q); % Iz(1,:)=-Iz(1,:); % gamm=obj.MetallicFlux_species(timestep, subdiv); % qe = obj.species.q; % % OK TILL HERE % % c=mflux.gamma{i}'*qe/(100^2)/P; % Im=zeros(length(gamm.p),length(timestep)); % pos=cell(size(gamm.p)); % % for i=1:length(gamm.p) % p=gamm.p{i}; % pos{i}=p; % flux=gamm.gamma{i}'*obj.species.q; % for j=1:length(timestep) % % Im(i,j)=pi/2*sum((p(2,1:end-1)+p(2,2:end)).*(flux(2:end,j)+flux(1:end-1,j))'... % % .*sqrt((p(1,2:end)-p(1,1:end-1)).^2+(p(2,2:end)-p(2,1:end-1)).^2)); % % %AxialDensity = flux(j,:).*sqrt(p(1,:).^2 + p(2,:).^2); % AxialDensity = flux(j,:).* p(2,:); % Im(i,j) = 2*pi*trapz(p(1,~isnan(AxialDensity)),AxialDensity(~isnan(AxialDensity))); % end % end % I=cat(1,Iz,Im); % end function [I, pos]=OutCurrents(obj,timestep, subdiv) % Computes the Outgoing currens at the simulation axial boundaries at timestep timestep % This is simply the surface integral of the axial flux if nargin<3 subdiv=1; end flux=obj.Axialflux(timestep,[1 obj.nz+1]); Iz=squeeze(trapz(obj.rgrid,flux.*obj.rgrid)*2*pi*obj.qsim/obj.weight); Iz(1,:)=-Iz(1,:); gamm=obj.Metallicflux(timestep, subdiv); Im=zeros(length(gamm.p),length(timestep)); pos=cell(size(gamm.p)); for i=1:length(gamm.p) p=gamm.p{i}; pos{i}=p; flux=gamm.gamma{i}'; for j=1:length(timestep) Im(i,j)=pi/2*sum((p(2,1:end-1)+p(2,2:end)).*(flux(j,2:end)+flux(j,1:end-1))... .*sqrt((p(1,2:end)-p(1,1:end-1)).^2+(p(2,2:end)-p(2,1:end-1)).^2)); %AxialDensity = flux(j,:).* p(2,:); %Im(i,j) = 2*pi*trapz(p(1,:),AxialDensity); end end I=-cat(1,Iz,Im*obj.qsim/obj.weight); end % % function [I, pos]=OutCurrents(obj,timestep, subdiv) % % Computes the Outgoing currens at the simulation axial boundaries at timestep timestep % % This is simply the surface integral of the axial flux for % % ions % if nargin<3 % subdiv=1; % end % qe = obj.qsim/obj.weight; % electrons charge % flux=obj.Axialflux(timestep,[1 obj.nz+1]); % Iz=squeeze(trapz(obj.rgrid,flux.*obj.rgrid)*2*pi*qe); % Iz(1,:)=-Iz(1,:); % % mflux = obj.Metallicflux(timestep,subdiv); % Im=zeros(length(mflux.p),length(timestep)); % pos=cell(size(mflux.p)); % % for ii =1:length(mflux.gamma) % pos{ii}=mflux.p{ii}; % p=mflux.p{ii}; % for jj = 1:length(timestep) % % flux = qe*mflux.gamma{ii}(:,jj)'.*mflux.p{ii}(2,:); % Im(ii,jj) = 2*pi*trapz(mflux.p{ii}(1,~isnan(flux)), flux(~isnan(flux))); % %Im(ii,jj)=pi/2*sum((p(2,1:end-1)+p(2,2:end)).*(flux(jj,2:end)+flux(jj,1:end-1))... % %.*sqrt((p(1,2:end)-p(1,1:end-1)).^2+(p(2,2:end)-p(2,1:end-1)).^2)); % end % end % % I=-cat(1,Iz,Im); % end function [I, pos]=OutCurrents_species(obj,timestep, subdiv) % Computes the Outgoing currens at the simulation axial boundaries at timestep timestep % This is simply the surface integral of the axial flux for % ions if nargin<3 subdiv=1; end flux=obj.Axialflux(timestep,[1 obj.nz+1],2); Iz=squeeze(trapz(obj.species(1).rgrid,flux.*obj.species(1).rgrid)*2*pi*obj.species.q); Iz(1,:)=-Iz(1,:); mflux = obj.MetallicFlux_species(timestep,subdiv); qe = abs(obj.species.q); % ions charge Im=zeros(length(mflux.p),length(timestep)); pos=cell(size(mflux.p)); for ii =1:length(mflux.gamma) pos{ii}=mflux.p{ii}; for jj = 1:length(timestep) flux = qe*mflux.gamma{ii}(:,jj)'.*mflux.p{ii}(2,:); Im(ii,jj) = 2*pi*trapz(mflux.p{ii}(1,~isnan(flux)), flux(~isnan(flux))); end end I=cat(1,Iz,Im); end function [pot] = PotentialWell(obj,fieldstep,fieldaligned) %PotentialWell Computes the potential well at the given timestep on the FEM grid points % interpolates the model data on rgrid and zgrid if nargin<3 fieldaligned=false; end model=obj.potentialwellmodel(fieldstep); z=model.z; modpot=model.pot; if fieldaligned r=model.rathet; lvls=linspace(min(obj.rAthet(:)),max(obj.rAthet(:)),400); [Zmesh,Rmesh]=meshgrid(obj.zgrid,lvls); else r=model.r; [Zmesh,Rmesh]=meshgrid(obj.zgrid,obj.rgrid); end pot=zeros(size(Zmesh,2),size(Zmesh,1),length(fieldstep)); for i=1:length(fieldstep) pot(:,:,i)=griddata(z,r,modpot(:,i),Zmesh,Rmesh)'; end end function Epar = Epar(obj,fieldstep) % Computes the electric field component parallel to the magnetic field line Epar=obj.Er(:,:,fieldstep).*(obj.Br./obj.B)' + (obj.Bz./obj.B)'.*obj.Ez(:,:,fieldstep); end function Eperp = Eperp(obj,fieldstep) % Computes the electric field component perpendicular to the magnetic field line Eperp=obj.Er(:,:,fieldstep).*(obj.Bz./obj.B)' - (obj.Br./obj.B)'.*obj.Ez(:,:,fieldstep); end function Ekin = Ekin(obj,varargin) %Ekin Computes the classical kinetic energy of particles indices{1} at % time obj.tpart(indices{2}) in Joules if(~iscell(varargin)) indices=mat2cell(varargin); else indices=varargin; end if strcmp(indices{1},':') p=1:obj.species(1).R.nparts; else p=indices{1}; end if strcmp(indices{2},':') t=1:length(obj.tpart); else t=indices{2}; end % if track is true we look at specific particles with their % index and follow them in time % if it is false we just care about the distribution function % and specific particles can have different positions in the % resulting array for each timestep if size(indices,1)>2 track=indices{3}; else track=false; end Vr=obj.species(1).VR(p,t,track); Vthet= obj.species(1).VTHET(p,t,track); Vz=obj.species(1).VZ(p,t,track); Ekin=0.5*obj.msim/obj.weight*(Vr.^2+Vthet.^2+Vz.^2); end function sig=sigio(obj,E,init) %sigio returns the total ionisation cross-section in m^2 % at energy E[eV] % init is only used during the loading of the h5 file if nargin <3 init=false; end sig=zeros(size(E)); if(~init &&( ~obj.neutcol.present || isempty(obj.neutcol.io_cross_sec))) sig=zeros(size(E)); return end for i=1:length(E(:)) if(E(i)>obj.neutcol.Eion) sig(ind2sub(size(E),i))=obj.fit_cross_sec(E(ind2sub(size(E),i)),obj.neutcol.io_cross_sec); end end end function sig=sigmio(obj,E) %sigmio returns the total ionisation cross-section for momentum exchange for the incoming electron in m^2 % at energy E[eV] sig=zeros(size(E)); if(~obj.neutcol.present || isempty(obj.neutcol.iom_cross_sec)) return end for i=1:length(E(:)) if(E(i)>obj.neutcol.Eion) sig(ind2sub(size(E),i))=obj.fit_cross_sec(E(ind2sub(size(E),i)),obj.neutcol.iom_cross_sec); end end end function sigm=sigmela(obj,E) %sigmela returns the elastic collision cross-section for momentum exchange for the incoming electron in m^2 % at energy E[eV] sigm=zeros(size(E)); if(~obj.neutcol.present || isempty(obj.neutcol.ela_cross_sec)) return end for i=1:length(E(:)) sigm(ind2sub(size(E),i))=obj.fit_cross_sec(E(ind2sub(size(E),i)),obj.neutcol.ela_cross_sec); end end function sig=sigela(obj,E) %sigmela returns the elastic collision cross-section for the incoming electron in m^2 % at energy E[eV] % if used this will give the frequency of elastic collisions E0=obj.neutcol.E0; chi=E./(0.25*E0+E); sig=(2*chi.^2)./((1-chi).*((1+chi).*log((1+chi)./(1-chi))-2*chi)).*obj.sigmela(E); end function [Forces, Density]=Forcespline(obj,it,fdens,getmean) %Forcespline calculates the fluid force terms in each direction %at time obj.t2d(it) % if fdens return the force density in N/m^3 othewise give % the force in N % if getmean return only the time averaged quanties over % time samples[it(1)...it(end] if strcmp(it,':') it=floor(0.95*size(obj.t2d)):size(obj.t2d)-1; end if nargin<3 fdens=true; end if nargin <4 getmean=false; end % To be able to calculate the centered finite difference in % time, we remove the first and last time indices it(it<2)=[]; it(it>length(obj.t2d)-1)=[]; m_e=obj.msim/obj.weight; q_e=obj.qsim/obj.weight; n=obj.N(:,:,it); [r,~]=meshgrid(obj.rgrid,obj.zgrid); Rinv=1./r'; Rinv(isinf(Rinv))=0; % get inverse of density to get the force in N Density.N=n; invn=1./n; invn(isnan(invn) | isinf(invn))=0; % Calculate electric forces Eforcer=q_e*obj.Er(:,:,it); Eforcez=q_e*obj.Ez(:,:,it); Dragforcer=zeros(size(n,1),size(n,2),size(n,3)); Dragforcethet=zeros(size(n,1),size(n,2),size(n,3)); Dragforcez=zeros(size(n,1),size(n,2),size(n,3)); time=obj.t2d(it); Forces.it=it; Forces.time=time; if getmean if ~fdens n=ones(size(n)); end % Electric forces Forces.Eforcer=mean(n.*q_e.*obj.Er(:,:,it),3); Forces.Eforcez=mean(n.*q_e.*obj.Ez(:,:,it),3); % Magnetic forces Forces.Bforcer=mean(q_e.*obj.fluidUTHET(:,:,it).*obj.Bz'.*n,3); Forces.Bforcethet=mean(q_e.*(obj.fluidUZ(:,:,it).*obj.Br'-obj.fluidUR(:,:,it).*obj.Bz').*n,3); Forces.Bforcez=mean(-q_e.*obj.fluidUTHET(:,:,it).*obj.Br'.*n,3); % Inertial forces Forces.inertforcer=mean(-m_e.*n.*(-obj.fluidUTHET(:,:,it).^2.*Rinv... +obj.fluidUR(:,:,it).*obj.fluidUR.der(:,:,it,[1 0])... +obj.fluidUZ(:,:,it).*obj.fluidUR.der(:,:,it,[0 1])),3); Forces.inertforcethet=mean(-m_e*n.*(obj.fluidUR(:,:,it).*obj.fluidUTHET(:,:,it).*Rinv... +obj.fluidUR(:,:,it).*obj.fluidUTHET.der(:,:,it,[1 0])... +obj.fluidUZ(:,:,it).*obj.fluidUTHET.der(:,:,it,[0 1])),3); Forces.inertforcez=mean(-m_e*n.*(obj.fluidUR(:,:,it).*obj.fluidUZ.der(:,:,it,[1 0])... +obj.fluidUZ(:,:,it).*obj.fluidUZ.der(:,:,it,[0 1])),3); % Pressure forces Forces.Pressforcer=mean(-n.*( squeeze(obj.Presstens.der(1,:,:,it,[1 0]))... + squeeze(obj.Presstens(1,:,:,it) - obj.Presstens(4,:,:,it)).*Rinv... + squeeze(obj.Presstens.der(3,:,:,it,[0 1])))... .*invn,3); Forces.Pressforcethet=mean(-n.*( squeeze(obj.Presstens.der(2,:,:,it,[1 0]))... + squeeze(obj.Presstens.der(5,:,:,it,[0 1])) ... + 2*squeeze(obj.Presstens(2,:,:,it)).*Rinv ... ).*invn,3); Forces.Pressforcez=mean(-n.*( squeeze(obj.Presstens.der(3,:,:,it,[1 0]))... + squeeze(obj.Presstens(3,:,:,it)).*Rinv... + squeeze(obj.Presstens.der(6,:,:,it,[0 1])) )... .*invn,3); % ellastic coll drag forces if( obj.neutcol.present) Ek=squeeze(obj.fluidEkin(1,:,:,it)+obj.fluidEkin(2,:,:,it)+obj.fluidEkin(3,:,:,it)); sigm=obj.sigmela(Ek/obj.qe)+obj.sigio(Ek/obj.qe)+obj.sigmio(Ek/obj.qe); dragfreq=obj.neutcol.neutdens.*sigm.*sqrt(2*obj.weight/obj.msim*Ek); Forces.Dragforcer=mean(-m_e*n.*dragfreq.*obj.fluidUR(:,:,it),3); Forces.Dragforcethet=mean(-m_e*n.*dragfreq.*obj.fluidUTHET(:,:,it),3); Forces.Dragforcez=mean(-m_e*n.*dragfreq.*obj.fluidUZ(:,:,it),3); else Forces.Dragforcer=0; Forces.Dragforcethet=0; Forces.Dragforcez=0; end % effective drag frequency due to the maxwellian source if( obj.maxwellsrce.present) dragfreqsrc=obj.maxwellsrce.frequency*obj.weight/(pi*diff(obj.maxwellsrce.zlim)*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2)).*invn; dragfreqsrc(isinf(dragfreqsrc))=0; Forces.Dragforcer=Forces.Dragforcer+mean(-n.*m_e.*dragfreqsrc.*obj.fluidUR(:,:,it),3); Forces.Dragforcethet=Forces.Dragforcethet+mean(-n.*m_e.*dragfreqsrc.*obj.fluidUTHET(:,:,it),3); Forces.Dragforcez=Forces.Dragforcez+mean(-n.*m_e.*dragfreqsrc.*obj.fluidUZ(:,:,it),3); end % Time derivative for fluid accelleration cdt=(obj.t2d(it+1)-obj.t2d(it-1)); cdt=reshape(cdt,1,1,[]); Forces.durdt=mean(m_e*(obj.fluidUR(:,:,it+1)-obj.fluidUR(:,:,it-1))./cdt,3); Forces.duthetdt=mean(m_e*(obj.fluidUTHET(:,:,it+1)-obj.fluidUTHET(:,:,it-1))./cdt,3); Forces.duzdt=mean(m_e*(obj.fluidUZ(:,:,it+1)-obj.fluidUZ(:,:,it-1))./cdt,3); else % Allocate memory Bforcer=zeros(size(n,1),size(n,2),size(n,3)); Bforcez=zeros(size(n,1),size(n,2),size(n,3)); Bforcethet=zeros(size(n,1),size(n,2),size(n,3)); inertforcer=zeros(size(n,1),size(n,2),size(n,3)); inertforcez=zeros(size(n,1),size(n,2),size(n,3)); inertforcethet=zeros(size(n,1),size(n,2),size(n,3)); Pressforcer=zeros(size(n,1),size(n,2),size(n,3)); Pressforcethet=zeros(size(n,1),size(n,2),size(n,3)); Pressforcez=zeros(size(n,1),size(n,2),size(n,3)); durdt=zeros(size(n,1),size(n,2),size(n,3)); duthetdt=zeros(size(n,1),size(n,2),size(n,3)); duzdt=zeros(size(n,1),size(n,2),size(n,3)); fluiduThet=obj.fluidUTHET(:,:,it); Density.fluiduThet=fluiduThet; for j=1:size(n,3) % Magnetic forces Bforcer(:,:,j)=q_e.*fluiduThet(:,:,j).*obj.Bz'; Bforcethet(:,:,j)=q_e.*(obj.fluidUZ(:,:,it(j)).*obj.Br'-obj.fluidUR(:,:,it(j)).*obj.Bz'); Bforcez(:,:,j)=-q_e.*fluiduThet(:,:,j).*obj.Br'; % Inertial forces inertforcer(:,:,j)=-m_e.*(-fluiduThet(:,:,j).^2.*Rinv... +obj.fluidUR(:,:,it(j)).*obj.fluidUR.der(:,:,it(j),[1 0])... +obj.fluidUZ(:,:,it(j)).*obj.fluidUR.der(:,:,it(j),[0 1])); inert1=obj.fluidUR(:,:,it(j)).*fluiduThet(:,:,j).*Rinv; inert2=obj.fluidUR(:,:,it(j)).*obj.fluidUTHET.der(:,:,it(j),[1 0]); inert3=obj.fluidUZ(:,:,it(j)).*obj.fluidUTHET.der(:,:,it(j),[0 1]); inertforcethet(:,:,j)=-m_e.*(inert1... +inert2... +inert3); inertforcez(:,:,j)=-m_e.*(obj.fluidUR(:,:,it(j)).*obj.fluidUZ.der(:,:,it(j),[1 0])... +obj.fluidUZ(:,:,it(j)).*obj.fluidUZ.der(:,:,it(j),[0 1])); % Pressure forces Pr1=squeeze(obj.Presstens.der(1,:,:,it(j),[1 0])); Pr2=squeeze(obj.Presstens(1,:,:,it(j)) - obj.Presstens(4,:,:,it(j))).*Rinv; Pr3=squeeze(obj.Presstens.der(3,:,:,it(j),[0 1])); Pressforcer(:,:,j)=-( Pr1... + Pr2... + Pr3 )... .*invn(:,:,j); Pthet1=squeeze(obj.Presstens.der(2,:,:,it(j),[1 0])); Pthet2=squeeze(obj.Presstens.der(5,:,:,it(j),[0 1])); Pthet3=2*squeeze(obj.Presstens(2,:,:,it(j))).*Rinv; Pressforcethet(:,:,j)=-( Pthet1... + Pthet2 ... + Pthet3 ... ).*invn(:,:,j); Pz1=squeeze(obj.Presstens.der(3,:,:,it(j),[1 0])); Pz2=squeeze(obj.Presstens(3,:,:,it(j))).*Rinv; Pz3=squeeze(obj.Presstens.der(6,:,:,it(j),[0 1])); Pressforcez(:,:,j)=-( Pz1... + Pz2... + Pz3 )... .*invn(:,:,j); % ellastic coll drag forces if( obj.neutcol.present) Ek=squeeze(obj.fluidEkin(1,:,:,it(j))+obj.fluidEkin(2,:,:,it(j))+obj.fluidEkin(3,:,:,it(j))); sigm=obj.sigmela(Ek/obj.qe)+obj.sigio(Ek/obj.qe)+obj.sigmio(Ek/obj.qe); dragfreq=obj.neutcol.neutdens.*sigm.*sqrt(2*obj.weight/obj.msim*Ek); Dragforcer(:,:,j)=-m_e*dragfreq.*obj.fluidUR(:,:,it(j)); Dragforcethet(:,:,j)=-m_e*dragfreq.*obj.fluidUTHET(:,:,it(j)); Dragforcez(:,:,j)=-m_e*dragfreq.*obj.fluidUZ(:,:,it(j)); end % effective drag frequency due to the maxwellian source if( obj.maxwellsrce.present) dragfreqsrc=obj.maxwellsrce.frequency*obj.weight/(pi*diff(obj.maxwellsrce.zlim)*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2))*invn(:,:,j); dragfreqsrc(isinf(dragfreqsrc))=0; Dragforcer(:,:,j)=Dragforcer(:,:,j)+-m_e*dragfreqsrc.*obj.fluidUR(:,:,it(j)); Dragforcethet(:,:,j)=Dragforcethet(:,:,j)+-m_e*dragfreqsrc.*obj.fluidUTHET(:,:,it(j)); Dragforcez(:,:,j)=Dragforcez(:,:,j)+-m_e*dragfreqsrc.*obj.fluidUZ(:,:,it(j)); end % Time derivative cdt=(obj.t2d(it(j)+1)-obj.t2d(it(j)-1)); durdt(:,:,j)=m_e*(obj.fluidUR(:,:,it(j)+1)-obj.fluidUR(:,:,it(j)-1))/cdt; duthetdt(:,:,j)=m_e*(obj.fluidUTHET(:,:,it(j)+1)-obj.fluidUTHET(:,:,it(j)-1))/cdt; duzdt(:,:,j)=m_e*(obj.fluidUZ(:,:,it(j)+1)-obj.fluidUZ(:,:,it(j)-1))/cdt; end if(~fdens) Forces.Eforcer=Eforcer; Forces.Eforcez=Eforcez; Forces.Bforcer=Bforcer; Forces.Bforcethet=Bforcethet; Forces.Bforcez=Bforcez; Forces.inertforcer=inertforcer; Forces.inertforcethet=inertforcethet; Forces.inertforcez=inertforcez; Forces.Pressforcer=Pressforcer; Forces.Pressforcethet=Pressforcethet; Forces.Pressforcez=Pressforcez; Forces.durdt=durdt; Forces.duthetdt=duthetdt; Forces.duzdt=duzdt; Forces.Dragforcer=Dragforcer; Forces.Dragforcethet=Dragforcethet; Forces.Dragforcez=Dragforcez; else % multiply by density to have force density Forces.Eforcer=Eforcer.*n; Forces.Eforcez=Eforcez.*n; Forces.Bforcer=Bforcer.*n; Forces.Bforcethet=Bforcethet.*n; Forces.Bforcez=Bforcez.*n; Forces.inertforcer=inertforcer.*n; Forces.inertforcethet=inertforcethet.*n; Forces.inertforcez=inertforcez.*n; Forces.Pressforcer=Pressforcer.*n; Forces.Pressforcethet=Pressforcethet.*n; Forces.Pressforcez=Pressforcez.*n; Forces.durdt=durdt.*n; Forces.duthetdt=duthetdt.*n; Forces.duzdt=duzdt.*n; Forces.Dragforcer=Dragforcer.*n; Forces.Dragforcethet=Dragforcethet.*n; Forces.Dragforcez=Dragforcez.*n; end end end function [lr,rb,lz,zb]= clouddims(obj,it,zpos,fracn) % clouddims return the cloud axial and radial limit at time it % and axial position zpos % fracn defines the fraction of the maximum density below which % we consider to have a vacuum if nargin<4 fracn=0.1; end % get the density n=obj.N(:,:,it); lr=cell(1,length(it)); lz=lr; rb=lr; zb=rb; for i=1:size(n,3) nthresh=fracn*max(max(n(:,:,i))); % find the points outside of the cloud outside=find(n(:,zpos,i)2) rmpos=outside(j); rppos=outside(j+1); lr{i}(k)=obj.rgrid(rppos-1)-obj.rgrid(rmpos+1); rb{i}(:,k)=[max(rmpos+1,1) min(rppos-1,sum(obj.nnr))]; k=k+1; end end maxgap=2; k=1; for I=rmpos+1:rppos-1 outside=find(n(I,:,i)maxgap) maxgap=zgap(j); zmpos=outside(j); zppos=outside(j+1); lz{i}(k)=obj.zgrid(zppos-1)-obj.zgrid(zmpos+1); zb{i}(:,k)=[max(zmpos+1,1) min(zppos-1,obj.nz)]; k=k+1; end end end end end function displaygeomweight(self) figure contourf(self.zgrid,self.rgrid,self.geomweight(:,:,1)) end %------------------------------------------ % Functions for plotting evolving quantities function line=displaysplbound(obj,ax,rescale,markers) %displaysplbound display on axis ax the boundary of the %simulation domain and the Dirichlet and Neumann walls defined %with spline curves if nargin<2 ax=gca; end if nargin<3 rescale=1; end if nargin<4 markers=true; end hold on for i=1:obj.spl_bound.nbsplines knots=obj.spl_bound.boundary(i).knots(1:end); coeffs=obj.spl_bound.boundary(i).coefs'*rescale; pp=spmak(knots,coeffs); sizec=size(coeffs,2); order=length(knots)-sizec; s=linspace(knots(order),knots(sizec+1),1000); fittedpos=fnval(pp,s); line=plot(fittedpos(1,:),fittedpos(2,:),'-','linewidth',2); %ine=plot(coeffs(1,:),coeffs(2,:),'-','linewidth',2); if markers plot(coeffs(1,:),coeffs(2,:),'rx','markersize',14) for j=1:size(coeffs,2) text(coeffs(1,j),coeffs(2,j),sprintf('%i',j),'fontsize',14) end end end end function displayraddim(obj,it,zpos,fracn) %displayraddim display the evolution of the radial dimension of the cloud in %time to find if the cloud size get below a critical radial %size at which the ionisation is not sufficient to compensate %the losses % also plot the well radial dimensions in time if nargin<3 zpos=floor(length(obj.zgrid)/2); end if nargin<4 fracn=0.1; end [lr,rb,lz,zb]=obj.clouddims(it,zpos,fracn); t=obj.t2d(it); Lr=zeros(size(lr)); er=obj.Er(:,:,it); r_min=Lr; r_minpred=r_min; well_r=Lr; nb=Lr; for i=1:length(lr) if ~isempty(lr{i}) && ~isempty(lz{i}) [Lr(i),id]=max(lr{i}); rm=rb{i}(1,id); rp=rb{i}(2,id); nb(i)=mean(obj.N(rm:rp,zpos,it(i))); Lp=min(lz{i}); Lm=mean(lz{i}); rpos=rm:rp; vperp=-er(rpos,zpos,i)./obj.Bz(zpos,rpos)'; Ek=0.5*obj.me*vperp.^2/obj.qe; sigio=obj.sigio(Ek); sigd=obj.sigmela(Ek)+obj.sigmio(Ek)+sigio; omegap2=obj.qe^2*obj.N(rpos,zpos,it(i))/obj.eps_0/obj.me; omegac2=(obj.qe*obj.Bz(zpos,rpos)'/obj.me).^2; ur=er(rpos,zpos,i)*obj.qe./((omegap2-omegac2)*obj.me).*sigd.*vperp*obj.neutcol.neutdens; r_minpred(i)=mean(obj.N(rp,zpos,it(i))*Lp*ur./(nb(i)*obj.neutcol.neutdens*sigio.*vperp*Lm));%mean(1./(-1/obj.rgrid(rm)+obj.neutcol.neutdens*sigio.*vperp./ur*(Lm/Lp)*nb(i)/obj.N(rp,zpos,it(i)))); rpos=rp; vperp=-er(rpos,zpos,i)./obj.Bz(zpos,rpos)'; Ek=0.5*obj.me*vperp.^2/obj.qe; sigio=obj.sigio(Ek); ur=obj.fluidUR(rpos,zpos,it(i)); r_min(i)=max(obj.N(rp,zpos,it(i))*Lp*ur/(nb(i)*obj.neutcol.neutdens*sigio.*vperp*Lm),0);%max(mean(1./(-1/obj.rgrid(rm)+obj.neutcol.neutdens*sigio.*vperp./ur*(Lm/Lp)*nb(i)/obj.N(rp,zpos,it(i)))),0); nb(i)=nb(i)*Lm*2*pi*obj.rgrid(rm)*Lr(i); else Lr(i)=NaN; r_min(i)=NaN; r_minpred(i)=NaN; end potwell=obj.PotentialWell(it(i))'; outside=find(isnan(potwell(:,zpos))); gap=diff(outside); for j=1:length(gap) if(gap(j)>2) rmpos=outside(j)+1; rppos=outside(j+1)-1; well_r(i)=obj.rgrid(rppos)-obj.rgrid(rmpos); end end end f=figure('Name', sprintf('%s rlims B=%f phi=%f',obj.name,obj.B0, (obj.potout-obj.potinn))); plot(t,Lr,'displayname','\Deltar_{cloud}','linewidth',1.3) hold on plot(t,r_min,'displayname','\Deltar_{min} (u_r simu)','linewidth',1.3) plot(t,r_minpred,'displayname','\Deltar_{min} (u_r pred)','linewidth',1.3) plot(t,well_r,'displayname','\Deltar_{well}','linewidth',1.3) ylabel('\Delta r [m]') yyaxis right plot(t,nb,'--','displayname','N') legend('location','eastoutside') xlabel('t [s]') ylabel('N') set(gca,'fontsize',12) yyaxis left ylimits=ylim; %ylim([ylimits(1) 1.1*max(Lr)]) title(sprintf('cloud radial limits at z=%1.2e[m]',obj.zgrid(zpos))) obj.savegraph(f,sprintf('%s/%s_%d_rlims',obj.folder,obj.name,zpos),[15 10]); end function displaypsi(obj,deltat) %% plot the initial and final radial profile at position z=0 and show the normalized enveloppe function Psi % relevant for Davidson annular distribution function f=figure('Name', sprintf('%s Psi',obj.name)); f.Name= sprintf('%s Psi',obj.name); zpos=floor(length(obj.zgrid)/2); tinit=1; tend=length(obj.t2d); if iscell(deltat) deltat=cell2mat(deltat); end if(obj.species(1).R.nt<2) h0=obj.H0; p0=obj.P0; else h0=mean(H(obj,{1:obj.species(1).VR.nparts,obj.species(1).VR.nt,false})); p0=mean(P(obj,{1:obj.species(1).VR.nparts,obj.species(1).VR.nt,false})); end lw=1.5; Mirrorratio=(obj.Rcurv-1)/(obj.Rcurv+1); locpot=mean(obj.pot(:,zpos,tend-deltat:tend),3); psi=1+obj.qe*locpot(:)/h0-1/(2*obj.me*h0)*(p0./obj.rgrid+obj.qe*0.5*obj.B0.*(obj.rgrid-obj.width/pi*Mirrorratio*cos(2*pi*obj.zgrid(zpos)/obj.width)*besseli(1,2*pi*obj.rgrid/obj.width))).^2; locdens=mean(obj.N(:,zpos,tend-deltat:tend),3); [maxn,In]=max(locdens);%M.N(:,zpos,tinit)); plot(obj.rgrid*1e3,obj.N(:,zpos,tinit),'b-','DisplayName',sprintf('t=%1.2f[ns]',obj.t2d(tinit)*1e9),'linewidth',lw) hold on - plot(obj.rgrid*1e3,locdens,'r--','DisplayName',sprintf('t=[%1.2f-%1.2f] [ns] averaged',obj.t2d(tend-deltat)*1e9,obj.t2d(tend)*1e9),'linewidth',lw) + plot(obj.rgrid*1e3,locdens,'r-','DisplayName',sprintf('t=[%1.2f-%1.2f] [ns] averaged',obj.t2d(tend-deltat)*1e9,obj.t2d(tend)*1e9),'linewidth',lw) %r0=0.005;% r0=obj.rgrid(In); %maxn=5e14; - plot(obj.rgrid(In-5:end)*1e3,1./obj.rgrid(In-5:end)*r0*maxn,'DisplayName','n_{e,fit}=c/r','linewidth',lw) + plot(obj.rgrid(In-5:end)*1e3,1./obj.rgrid(In-5:end)*r0*maxn,'--','DisplayName','n_{e,fit}=a/r','linewidth',lw) %plot(obj.rgrid(In-2:end),1./obj.rgrid(In-2:end).^2*maxn*obj.rgrid(In)^2,'DisplayName','N=c*1/r^2','linewidth',lw) %plot(obj.rgrid(In-2:end),1./obj.rgrid(In-2:end).^4*maxn*obj.rgrid(In)^4,'DisplayName','N=c*1/r^4','linewidth',lw) xlabel('r [mm]') ylabel('n_e [m^{-3}]') I=find(psi>0); if (length(I)>1) I=[I(1)-2; I(1)-1; I; I(end)+1; I(end)+2]; else I=obj.nnr(1):length(psi); end rq=linspace(obj.rgrid(max(I(1),1)),obj.rgrid(I(end)),500); psiinterp=interp1(obj.rgrid(I),psi(I),rq,'pchip'); zeroindices=find(diff(psiinterp>=0),2); maxpsiinterp=max(psiinterp); - plot(rq*1e3,maxn*psiinterp/abs(maxpsiinterp),'Displayname','normalized \Psi [a.u.]','linewidth',lw) + plot(rq*1e3,maxn*psiinterp/abs(maxpsiinterp),'--','Displayname','normalized \zeta [a.u.]','linewidth',lw) ylim([0 inf]); drawnow ylimits=ylim; for i=1:length(zeroindices) - border=plot([rq(zeroindices(i)) rq(zeroindices(i))]*1e3,[0 1./obj.rgrid(In-5)*r0*maxn],'k--','linewidth',lw); + border=plot([rq(zeroindices(i)) rq(zeroindices(i))]*1e3,[0 1./obj.rgrid(In-5)*r0*maxn],'--','linewidth',lw,'Color',[.7 .7 .7]); set(get(get(border,'Annotation'),'LegendInformation'),'IconDisplayStyle','off'); end legend xlim([0 0.02]*1e3) grid on %title(sprintf('Radial density profile at z=%1.2e[m]',obj.zgrid(zpos))) set(gca,'fontsize',12) obj.savegraph(f,sprintf('%sPsi',obj.name),[15 10]); end function f=displayrprofile(obj,t,zpos,init) %% plot the initial and final radial profile at the axial center of the simulation space % also plot the azimuthal fluid rotation frequency profile % t: time index considered % zpos: axial position index % init: initial time considered for comparison f=figure('Name', sprintf('%s Prof',obj.name)); if nargin < 3 || length(zpos)<1 zpos=floor(length(obj.zgrid)/2); end if nargin<4 init=false; end if(iscell(t)) t=cell2mat(t); end lw=1.5; if init tinit=t(1); t=t(2:end); end locdens=mean(obj.N(:,zpos,t),3); %inverse of radius Rinv=1./obj.rgrid; Rinv(isnan(Rinv))=0; %azimuthal velocity and azimuthal rotation frequency in m/s and %1/s vthet=mean(obj.fluidUTHET(:,zpos,t),3); omegare=(vthet.*Rinv); % plot the initial density if(init) plot(obj.rgrid,obj.N(:,zpos,tinit),'bx-','DisplayName',sprintf('t=%1.2f[ns]',obj.t2d(tinit)*1e9),'linewidth',lw) end hold on %plot the time averaged current density plot(obj.rgrid,locdens,'rx-','DisplayName',sprintf('t=[%1.2f-%1.2f] [ns] averaged',obj.t2d(t(1))*1e9,obj.t2d(t(end))*1e9),'linewidth',lw) xlabel('r [m]') ylabel('n_e [m^{-3}]') legend('location','Northwest') % limit the axis to the simulation domain if obj.conformgeom xlim([obj.rgrid(1) obj.rgrid(sum(obj.nnr(1:2)))]) else xlim([obj.rgrid(1) obj.rgrid(end)]) end grid on ylimits=ylim(); % plot the metallic walls for a constant radius coaxial % configuration if obj.conformgeom plot(obj.rgrid(1)*[1 1],ylimits,'k--') plot(obj.rgrid(end)*[1 1],ylimits,'k--') else plot(obj.r_a*[1 1],ylimits,'k--') if obj.walltype==0 plot(obj.r_b*[1 1],ylimits,'k--') elseif obj.walltype==1 rmax=obj.r_0-obj.r_r*sqrt(1-(obj.zgrid(zpos)-obj.z_0)^2/obj.z_r^2); plot(rmax*[1 1],ylimits,'k--') end end yyaxis right % plot the azimuthal fluid rotation frequency profile plot(obj.rgrid,omegare,'DisplayName',sprintf('<\\omega_{re}> t=[%1.2f-%1.2f] [ns] averaged',obj.t2d(t(1))*1e9,obj.t2d(t(end))*1e9),'linewidth',lw) ylabel('\omega_{re} [1/s]') title(sprintf('Radial density profile at z=%1.2e[m]',obj.zgrid(zpos))) obj.savegraph(f,sprintf('%srProf',obj.name),[15 10]); end function displayenergy(obj) %% Plot the time evolution of the system energy and number of simulated macro particles tmin=2; tmax=length(obj.ekin); f=figure('Name', sprintf('%s Energy',obj.name)); subplot(1,2,1) semilogy(obj.t0d(tmin:tmax)*1e9,obj.ekin(tmin:tmax),'-',... obj.t0d(tmin:tmax)*1e9,obj.epot(tmin:tmax),':',... - obj.t0d(tmin:tmax)*1e9,obj.etot(tmin:tmax),'-.',... + obj.t0d(tmin:tmax)*1e9,obj.etot(tmin:tmax),'-.', ... 'linewidth',4) obj.t0d(tmin:tmax)*1e9,obj.etot0(tmin:tmax),'--','linewidth',4) %obj.t0d(tmin:tmax),obj.ekin(tmin:tmax)-obj.epot(tmin:tmax),'--', legend('E_{kin}', 'E_{pot}', 'E_{tot}','E_{ref}','location','east') xlabel('Time [ns]') ylabel('Energies [J]') grid on xlim([obj.t0d(tmin) obj.t0d(tmax)]*1e9); xlimits=xlim(); ylim([1e-7 1e-3]) set(gca,'fontsize',14) subplot(1,2,2) try semilogy(obj.t0d(tmin:tmax)*1e9,abs(obj.eerr(tmin:tmax)./obj.etot0(tmin:tmax)),'-','linewidth',1.5) catch semilogy(obj.t0d(tmin:tmax)*1e9,abs(obj.eerr(tmin:tmax)/obj.etot(2)),'-','linewidth',1.5) end hold on xlabel('Time [ns]') ylabel('Total energy relative error [-]') xlim(xlimits) grid on % try % yyaxis right % plot(obj.t0d(tmin:tmax),abs(obj.npart(tmin:tmax)./obj.npart(1)*100),'d--') % ylabel('Nparts %') % %ylim([0 110]) % catch % end ylimits=ylim; for i=1:length(obj.restarttimes) plot(obj.restarttimes(i)*[1 1],ylimits,'k--') end set(gca,'fontsize',14) Position=f.Position; Position(3)=1.5*Position(3); f.Position=Position; obj.savegraph(f,sprintf('%s/%sEnergy',obj.folder,obj.name)); end function out=displaycharge(obj,scalet,f,linelegend) %% Plot the time evolution of the system charge of electrons % f: figure handle if you want to stack several such curves % on the same figure % linelegend: legend for this charge evolution tmin=1; tmax=length(obj.ekin); if nargin<2 scalet =false; end if nargin<3 f=figure('Name', sprintf('%s Charge',obj.name)); end if nargin<4 linelegend=''; end ax=f.CurrentAxes; if isempty(ax) ax=axes(f); end if scalet if obj.neutcol.present vexb0=(obj.Ez(:,:,1).*obj.Br'-obj.Er(:,:,1).*obj.Bz')./(obj.B'.^2); vexb0(obj.geomweight(:,:,1)<=0)=0; E=0.5*obj.msim/obj.weight*mean(abs(vexb0(:)))^2/obj.qe; taucol=1/(obj.neutcol.neutdens*mean(abs(vexb0(:)))*(obj.sigio(E)+obj.sigmela(E)+obj.sigmio(E))); try Sio_S=1e17*(obj.neutcol.neutdens*mean(abs(vexb0(:)))*obj.sigio(E))/(obj.maxwellsrce.frequency*obj.weight/(pi*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2)*diff(obj.maxwellsrce.zlim))) catch end tlabel='t/\tau_d [-]'; else taucol=2*pi/obj.omece; tlabel='t/\tau_ce [-]'; end else taucol=1e-9; tlabel='t [ns]'; end try plot(ax,obj.t0d(tmin:tmax)/taucol,abs(obj.npart(tmin:tmax)*obj.qsim),'linewidth',2,'displayname',linelegend) hold on ylabel(ax,'Total charge [C]') xlabel(ax,tlabel) grid on if(nargin>2) legend end set(ax,'fontsize',12) catch end if nargin < 2 obj.savegraph(f,sprintf('%s/%scharge',obj.folder,obj.name)); end out.time = obj.t0d(tmin:tmax)/taucol; out.charge = abs(obj.npart(tmin:tmax)*obj.qsim); end function displaySimParticles(obj) %% Plot the time evolution of the number of simulated markers in the main specie f=figure('Name', sprintf('%s Trapped particles',obj.name)); plot(obj.t0d,obj.npart,'linewidth',1.5) xlabel('t [s]') ylabel('N particles') set(gca,'fontsize',12) obj.savegraph(f,sprintf('%s/%sntrapped',obj.folder,obj.name),[10 12]); end function displayLarmorRad(obj,time2d) if nargin<2 time2d=length(obj.t2d); end % Plot the larmor radius for created particles with low energy % the larmor radius is calculated by considering that the % initial perpendicular velocity \approx the ExB velocity if time2d>0 Er=obj.Er(:,:,time2d); Ez=obj.Ez(:,:,time2d); else Er=obj.Erxt(:,:,1); Ez=obj.Ezxt(:,:,1); end rl=abs(obj.me/obj.qe*(-Er.*obj.Bz'+Ez.*obj.Br')./(obj.B.^3)'); figure rl(obj.geomweight(:,:,1)<0)=0; contourf(obj.zgrid,obj.rgrid,rl) hold on contour(obj.zgrid,obj.rgrid,obj.geomweight(:,:,1),[0 0],'r-','linewidth',3) if time2d>0 n=obj.N(:,:,time2d); maxN=max(n (:)); n=n/maxN*mean(rl(:)); contour(obj.zgrid,obj.rgrid,n,linspace(0,1,6)*mean(rl(:)),'r:','linewidth',3) end c=colorbar; xlabel('z [m]') ylabel('r [m]') c.Label.String='r_L [m]'; end function displayHP(obj,tstart) % Plot the histogramm of the total energy and canonical angular momentum at time tstart and % end time of the simulation over the full simulation space for the main specie if(iscell(tstart)) tstart=cell2mat(tstart); end if(obj.species(1).R.nt>=2) tstart=obj.species(1).R.nt; f=figure('Name', sprintf('%s HP',obj.name)); legtext=sprintf("t=%2.1f - %2.1f [ns]",obj.tpart(tstart)*1e9,obj.tpart(end)*1e9); subplot(1,2,1) partsmax=min(obj.nbparts(end),obj.species(1).R.nparts); Hloc=H(obj,{1:obj.nbparts(1),1,false}); h1=histogram(Hloc,20,'BinLimits',[min(Hloc(:)) max(Hloc(:))],'DisplayName',sprintf("t=%2.3d [ns]",obj.tpart(1)*1e9)); hold on Hloc=H(obj,{1:partsmax,obj.species(1).R.nt,false}); %,'Binwidth',h1.BinWidth h1=histogram(Hloc,20,'BinLimits',[min(Hloc(:)) max(Hloc(:))],'DisplayName',legtext); ylabel('counts') xlabel('H [J]') legend subplot(1,2,2) Ploc=P(obj,{1:obj.nbparts(1),1,false}); h2=histogram(Ploc,50,'BinLimits',[min(Ploc(:)) max(Ploc(:))],'DisplayName',sprintf("t=%2.3d [ns]",obj.tpart(1)*1e9)); hold on Ploc=P(obj,{1:partsmax,obj.species(1).R.nt,false}); histogram(Ploc,50,'BinLimits',[min(Ploc(:)) max(Ploc(:))],'DisplayName',legtext); ylabel('counts') xlabel('P [kg\cdotm^2\cdots^{-1}]') %clear P %clear H legend %xlim([0.95*h2.BinLimits(1) 1.05*h2.BinLimits(2)]) obj.savegraph(f,sprintf('%s/%sParts_HP',obj.folder,obj.name)); end end function displayaveragetemp(obj) % Computes and show the particles average temperature as a function of time f=figure('Name',sprintf('%s potinn=%f part temperature',obj.name,obj.potinn)); vr2=obj.species(1).VR(:,:,false); vr2=mean(vr2.^2,1)-mean(vr2,1).^2; vz2=obj.species(1).VZ(:,:,false); vz2=mean(vz2.^2,1)-mean(vz2,1).^2; vthet2=obj.species(1).VTHET(:,:,false); vthet2=mean(vthet2.^2,1)-mean(vthet2,1).^2; plot(obj.tpart,0.5*obj.me*vr2/obj.qe,'displayname','T_r') hold on plot(obj.tpart,0.5*obj.me*vz2/obj.qe,'displayname','T_z') plot(obj.tpart,0.5*obj.me*vthet2/obj.qe,'displayname','T_{thet}') xlabel('time [s]') ylabel('T [eV]') title(sprintf('\\phi_a=%.1f kV \\phi_b=%.1f kV R=%.1f',obj.potinn/1e3,obj.potout/1e3,obj.Rcurv)) legend grid obj.savegraph(f,sprintf('%s/%s_partstemp',obj.folder,obj.name)); end function displayCurrentsevol(obj,timesteps,species_id) % Computes and display the time evolution of the outgoing currents on each domain boundary % at timesteps timesteps P=obj.neutcol.neutdens*obj.kb*300/100; if nargin<2 timesteps=1:length(obj.t2d); end if nargin<3 species_id=1; end if species_id ==1 currents=obj.OutCurrents(timesteps); currents = currents/P; else currents=obj.OutCurrents_species(timesteps); currents = currents/P; end f=figure('Name',sprintf('%s Currents',obj.name)); if(obj.B(1,1)>obj.B(end,1)) lname='HFS'; rname='LFS'; else lname='LFS'; rname='HFS'; end plot(obj.t2d(timesteps),currents(1,:),'Displayname',lname,'linewidth',1.8); hold on plot(obj.t2d(timesteps),currents(2,:),'Displayname',rname,'linewidth',1.8); plot(obj.t2d(timesteps),currents(3,:),'Displayname','outer cylinder','linewidth',1.8); plot(obj.t2d(timesteps),currents(4,:),'Displayname','inner cylinder','linewidth',1.8); if size(currents,1)>=5 plot(obj.t2d(timesteps),currents(5,:),'Displayname','ellipse','linewidth',1.8); end legend('location','Northeast') xlabel('time [s]') ylabel('I [A/mbar]') grid on set(gca,'fontsize',12) title(sprintf('\\phi_b-\\phi_a=%.2g kV, R=%.1f',(obj.potout-obj.potinn)/1e3,obj.Rcurv)) obj.savegraph(f,sprintf('%s/%s_outCurrents',obj.folder,obj.name),[16 12]); end function displayChargeLossevol(obj,timesteps,toptitle,scalet,dens) % Computes and display the time evolution of the outgoing currents on each domain boundary % at time obj.t2d(timesteps) %scalet=true scales the time by the ellastic collision %frequency %dens = true plot the time evolution of the maximum electron %density in the simulation domain otherwise plot the total %number of electrons in the domain if nargin<2 timesteps=1:length(obj.t2d); end if nargin<4 scalet=true; end if nargin <5 dens=true; end if scalet if obj.neutcol.present vexb0=(obj.Ez(:,:,1).*obj.Br'-obj.Er(:,:,1).*obj.Bz')./(obj.B'.^2); vexb0(obj.geomweight(:,:,1)<=0)=0; E=0.5*obj.msim/obj.weight*mean(abs(vexb0(:)))^2/obj.qe; taucol=1/(obj.neutcol.neutdens*mean(abs(vexb0(:)))*(obj.sigio(E)+obj.sigmela(E)+obj.sigmio(E))); try Sio_S=1e17*(obj.neutcol.neutdens*mean(abs(vexb0(:)))*obj.sigio(E))/(obj.maxwellsrce.frequency*obj.weight/(pi*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2)*diff(obj.maxwellsrce.zlim))) catch end tlabel='t/\tau_d [-]'; else taucol=2*pi/obj.omece; tlabel='t/\tau_ce [-]'; end else taucol=1e-9; tlabel='t [ns]'; end if dens N=obj.N(:,:,timesteps); geomw=obj.geomweight(:,:,1); geomw(geomw<0)=0; geomw(geomw>0)=1; N=N.*geomw; nmax=squeeze(max(max(N,[],1),[],2)); tn=(obj.t2d(timesteps)); nlabel='n_{e,max} [m^{-3}]'; ndlabel='n_{e,max}'; else t0dst=find(obj.t0d>=obj.t2d(timesteps(1)),1,'first'); t0dlst=find(obj.t0d<=obj.t2d(timesteps(end)),1,'last'); tn=obj.t0d(t0dst:t0dlst); nmax=obj.npart(t0dst:t0dlst)*obj.weight; nlabel='Nb e^-'; ndlabel='Nb e^-'; end [currents,pos]=obj.OutCurrents(timesteps); P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar currents=currents/P; f=figure('Name',sprintf('%s Charges',obj.name)); % Plot the evolution of nb of particles yyaxis right p=plot(tn/taucol,nmax,'b-.','linewidth',1.8,'Displayname',ndlabel); ylabel(nlabel) ax=gca; ax.YAxis(2).Color=p.Color; ylim([0 inf]) if(obj.B(1,1)>obj.B(end,1)) lname='HFS'; rname='LFS'; else lname='LFS'; rname='HFS'; end yyaxis left mincurr=max(currents(:))*5e-3; if (max(currents(1,:)>mincurr)) plot(obj.t2d(timesteps)/taucol,currents(1,:),'r:','Displayname',lname,'linewidth',1.8); end hold on if (max(currents(2,:)>mincurr)) plot(obj.t2d(timesteps)/taucol,currents(2,:),'r--','Displayname',rname,'linewidth',1.8); end if (max(currents(3,:)>mincurr)) plot(obj.t2d(timesteps)/taucol,currents(3,:),'r-','Displayname','outer cylinder','linewidth',1.8); end if (max(currents(4,:)>mincurr)) plot(obj.t2d(timesteps)/taucol,currents(4,:),'Displayname','inner cylinder','linewidth',1.8); end if (size(currents,1)>=5 && max(currents(5,:)>mincurr)) plot(obj.t2d(timesteps)/taucol,currents(5,:),'r-','Displayname','ellipse','linewidth',1.8); end xlabel(tlabel) ylabel('I/p_n [A/mbar]') grid on set(gca,'fontsize',12) ax.YAxis(1).Color='red'; legend('Orientation','horizontal','location','south','numcolumns',3) if nargin <3 title(sprintf('\\phi_b-\\phi_a=%.2g kV, B=%f T',(obj.potout-obj.potinn)/1e3,max(obj.B(:)))) elseif ~isempty(toptitle) title(toptitle) end obj.savegraph(f,sprintf('%s/%s_ChargeEvol%i%i',obj.folder,obj.name,scalet,dens),[16 14]); end function out = displaytotcurrevol(obj,timesteps,species_id,all_cur_id, toptitle,scalet,dens,subdiv,nmean) % Computes and display the time evolution of the outgoing % currents at time obj.t2d(timesteps) %scalet=true scales the time by the ellastic collision %frequency %dens = true plot the time evolution of the maximum electron %density in the simulation domain otherwise plot the total %number of electrons in the domain % also plot in a subplot the color coded boundary corresponding % to each current if nargin<2 timesteps=1:length(obj.t2d); end if nargin<3 species_id =1; end if nargin<4 all_cur_id = 0; end if nargin<5 toptitle=""; end if nargin<6 scalet=true; end if nargin <7 dens=true; end if nargin<8 subdiv=1; end if nargin<9 nmean=1; end if scalet if obj.neutcol.present vexb0=(obj.Ez(:,:,1).*obj.Br'-obj.Er(:,:,1).*obj.Bz')./(obj.B'.^2); vexb0(obj.geomweight(:,:,1)<=0)=0; E=0.5*obj.msim/obj.weight*mean(abs(vexb0(:)))^2/obj.qe; taucol=1/(obj.neutcol.neutdens*mean(abs(vexb0(:)))*(obj.sigio(E)+obj.sigmela(E)+obj.sigmio(E))); try Sio_S=1e17*(obj.neutcol.neutdens*mean(abs(vexb0(:)))*obj.sigio(E))/(obj.maxwellsrce.frequency*obj.weight/(pi*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2)*diff(obj.maxwellsrce.zlim))) catch end tlabel='t/\tau_d [-]'; else taucol=2*pi/obj.omece; tlabel='t/\tau_ce [-]'; end else taucol=1e-9; tlabel='t [ns]'; end if dens if species_id==1 N=obj.N(:,:,timesteps); else N=obj.species_moments.N(:,:,timesteps); end geomw=obj.geomweight(:,:,1); geomw(geomw<0)=0; geomw(geomw>0)=1; N=N.*geomw; %[~,idl]=max(N(:,:,end),[],'all','linear'); %[ir,iz]=ind2sub(size(geomw),idl); %nmax=squeeze(max(max(N,[],1),[],2)); tn=(obj.t2d(timesteps)); nmax=zeros(2,length(tn)); nrhalf= floor(0.5*length(obj.rgrid));%find(obj.rgrid>0.07); nmax(1,:)=squeeze(max(max(N(1:nrhalf,:,:),[],1),[],2)); nmax(2,:)=squeeze(max(max(N(nrhalf+1:end,:,:),[],1),[],2)); nlabel='n_{e,max} [m^{-3}]'; ndlabel='n_{e,max}'; else t0dst=find(obj.t0d>=obj.t2d(timesteps(1)),1,'first'); t0dlst=find(obj.t0d<=obj.t2d(timesteps(end)),1,'last'); tn=obj.t0d(t0dst:t0dlst); nmax=obj.npart(t0dst:t0dlst)*obj.weight; nlabel='Nb e^-'; ndlabel='Nb e^-'; end if species_id ==1 [currents,pos]=obj.OutCurrents(timesteps,subdiv); P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar currents=currents/P; else % for ionic currents [currents,pos]=obj.OutCurrents_species(timesteps,subdiv); P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar currents=currents/P; end % hack to sum ionic + electronic current if all_cur_id==1 [el_curr,pos]=obj.OutCurrents(timesteps,subdiv); P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar out.elec_currents=el_curr/P; [ion_curr,pos]=obj.OutCurrents_species(timesteps,subdiv); P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar out.ion_currents=ion_curr/P; totCurr_el = sum(out.elec_currents(1:end-1,:),1); totCurr_ion = sum(out.ion_currents,1); TotalCurrent = totCurr_el+totCurr_ion; out.temps = tn/taucol; end % plot f=figure('Name',sprintf('%s Charges',obj.name)); tiledlayout(2,1) nexttile % Plot the evolution of nb of particles yyaxis right for i=1:size(nmax,1) p=plot(tn/taucol,nmax(i,:),'b','linewidth',2.2,'Displayname',sprintf('%s, %d',ndlabel,i)); hold on end ylabel(nlabel) axl=gca; axl.YAxis(2).Color=p.Color; ylim([0 inf]) if(obj.B(1,1)>obj.B(end,1)) lname='HFS'; rname='LFS'; else lname='LFS'; rname='HFS'; end yyaxis( 'left'); map=colormap(lines); set(axl,'linestyleorder',{'-',':','--','*','+'},... 'ColorOrder',map(2:7,:), 'NextPlot','replacechildren') p(1)=plot(axl,obj.t2d(timesteps)/taucol,movmean(currents(1,:),nmean),'Displayname',lname,'linewidth',1.8); hold on p(2)=plot(axl,obj.t2d(timesteps)/taucol,movmean(currents(2,:),nmean),'Displayname',rname,'linewidth',1.8); % Plot the currents for i=3:size(currents,1) p(i)=plot(axl,obj.t2d(timesteps)/taucol,movmean(currents(i,:),nmean),'Displayname',sprintf('border %i',i-2),'linewidth',1.8); end if all_cur_id ==0 plot(axl,obj.t2d(timesteps)/taucol,movmean(sum(currents(:,:),1,'omitnan'),nmean),'k-','Displayname','total','linewidth',1.8); else % plot(axl,obj.t2d(timesteps)/taucol,movmean(sum(out.elec_currents + out.ion_currents,1,'omitnan'),nmean),'k-','Displayname','total','linewidth',1.8); plot(axl,obj.t2d(timesteps)/taucol,movmean(TotalCurrent,nmean),'k-','Displayname','total','linewidth',1.8); hold on p(size(currents,1))=plot(axl,obj.t2d(timesteps)/taucol,movmean(out.ion_currents(end,:),nmean),'Displayname',sprintf('border %i',i-2),'linewidth',1.8); end hold on xlabel(tlabel) ylabel('I/p_n [A/mbar]') grid on set(gca,'fontsize',12) ax.YAxis(1).Color='black'; %legend('Orientation','horizontal','location','north','numcolumns',3) if ~isempty(toptitle) title(toptitle) end ax2=nexttile; geomw=obj.geomweight(:,:,1); geomw(geomw<=0)=0; geomw(geomw>0)=NaN; [c1,hContour]=contourf(ax2,obj.zgrid*1000,obj.rgrid*1000,geomw, [0 0]); hold on drawnow; grid on; for i=1:length(pos) plot(ax2,pos{i}(1,:)*1000,pos{i}(2,:)*1000,'linestyle',p(i+2).LineStyle,... 'color',p(i+2).Color,'marker',p(i+2).Marker,... 'displayname',sprintf('border %i',i),'linewidth',1.8) hold on end title('Domain') plot(ax2,ones(size(obj.rgrid))*obj.zgrid(1)*1000,obj.rgrid*1000,'linestyle',p(1).LineStyle,... 'color',p(1).Color,'marker',p(1).Marker,... 'displayname',lname,'linewidth',1.8) plot(ax2,ones(size(obj.rgrid))*obj.zgrid(end)*1000,obj.rgrid*1000,'linestyle',p(2).LineStyle,... 'color',p(2).Color,'marker',p(2).Marker,... 'displayname',rname,'linewidth',1.8) xlabel('z [mm]') ylabel('r [mm]') grid on set(gca,'fontsize',12) hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' try hFills(1).ColorData = uint8([150;150;150;255]); for idx = 2 : numel(hFills) hFills(idx).ColorData(4) = 0; % default=255 end catch end %legend('Orientation','horizontal','location','north','numcolumns',4) fprintf('mean total current: %f [A/mbar]\n',mean(sum(currents(:,max(1,size(currents,2)-30):end),1,'omitnan'))); %if nargin <3 % sgtitle(sprintf('\\phi_b-\\phi_a=%.2g kV, B=%f T',(obj.potout-obj.potinn)*obj.phinorm/1e3,mean(obj.B(:)))) %elseif ~isempty(toptitle) % sgtitle(toptitle) %end if length(subdiv)>1 obj.savegraph(f,sprintf('%s/%s_totIEvol%i%i_div',obj.folder,obj.name,scalet,dens),[16 14]); else obj.savegraph(f,sprintf('%s/%s_totIEvol%i%i',obj.folder,obj.name,scalet,dens),[16 14]); end end % % function displaytotcurrevol(obj,timesteps,species_id,all_cur_id,toptitle,scalet,dens,subdiv,nmean) % % Computes and display the time evolution of the outgoing % % currents at time obj.t2d(timesteps) % %scalet=true scales the time by the ellastic collision % %frequency % %dens = true plot the time evolution of the maximum electron % %density in the simulation domain otherwise plot the total % %number of electrons in the domain % % also plot in a subplot the color coded boundary corresponding % % to each current % if nargin<2 % timesteps=1:length(obj.t2d); % end % if nargin<3 % species_id =1; % end % if nargin<4 % all_cur_id=0; % end % if nargin<5 % toptitle=""; % end % if nargin<6 % scalet=true; % end % if nargin <7 % dens=true; % end % if nargin<8 % subdiv=1; % end % if nargin<9 % nmean=1; % end % % if scalet % if obj.neutcol.present % vexb0=(obj.Ez(:,:,1).*obj.Br'-obj.Er(:,:,1).*obj.Bz')./(obj.B'.^2); % vexb0(obj.geomweight(:,:,1)<=0)=0; % E=0.5*obj.msim/obj.weight*mean(abs(vexb0(:)))^2/obj.qe; % taucol=1/(obj.neutcol.neutdens*mean(abs(vexb0(:)))*(obj.sigio(E)+obj.sigmela(E)+obj.sigmio(E))); % try % Sio_S=1e17*(obj.neutcol.neutdens*mean(abs(vexb0(:)))*obj.sigio(E))/(obj.maxwellsrce.frequency*obj.weight/(pi*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2)*diff(obj.maxwellsrce.zlim))) % catch % end % tlabel='t/\tau_d [-]'; % else % taucol=2*pi/obj.omece; % tlabel='t/\tau_ce [-]'; % end % else % taucol=1e-9; % tlabel='t [ns]'; % end % % if dens % if species_id==1 % N=obj.N(:,:,timesteps); % else % N=obj.species_moments.N(:,:,timesteps); % end % geomw=obj.geomweight(:,:,1); % geomw(geomw<0)=0; % geomw(geomw>0)=1; % N=N.*geomw; % %[~,idl]=max(N(:,:,end),[],'all','linear'); % %[ir,iz]=ind2sub(size(geomw),idl); % %nmax=squeeze(max(max(N,[],1),[],2)); % tn=(obj.t2d(timesteps)); % nmax=zeros(2,length(tn)); % nrhalf= floor(0.5*length(obj.rgrid));%find(obj.rgrid>0.07); % % nmax(1,:)=squeeze(max(max(N(1:nrhalf,:,:),[],1),[],2)); % nmax(2,:)=squeeze(max(max(N(nrhalf+1:end,:,:),[],1),[],2)); % % % nlabel='n_{e,max} [m^{-3}]'; % ndlabel='n_{e,max}'; % else % t0dst=find(obj.t0d>=obj.t2d(timesteps(1)),1,'first'); % t0dlst=find(obj.t0d<=obj.t2d(timesteps(end)),1,'last'); % tn=obj.t0d(t0dst:t0dlst); % nmax=obj.npart(t0dst:t0dlst)*obj.weight; % nlabel='Nb e^-'; % ndlabel='Nb e^-'; % end % % if all_cur_id == 0 % if species_id ==1 % [currents,pos]=obj.OutCurrents(timesteps,subdiv); % P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar % currents=currents/P; % else % for ionic currents % [currents,pos]=obj.OutCurrents_species(timesteps,subdiv); % P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar % currents=currents/P; % end % else % [currents_el,pos]=obj.OutCurrents(timesteps,subdiv); % P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar % currents_el=currents_el/P; % [currents_ion,pos]=obj.OutCurrents_species(timesteps,subdiv); % currents_ion = current_ion/P; % end % % f=figure('Name',sprintf('%s Charges',obj.name)); % tiledlayout(2,1) % nexttile % % Plot the evolution of nb of particles % yyaxis right % for i=1:size(nmax,1) % p=plot(tn/taucol,nmax(i,:),'b','linewidth',2.2,'Displayname',sprintf('%s, %d',ndlabel,i)); % hold on % end % ylabel(nlabel) % axl=gca; % axl.YAxis(2).Color=p.Color; % ylim([0 inf]) % % if(obj.B(1,1)>obj.B(end,1)) % lname='HFS'; % rname='LFS'; % else % lname='LFS'; % rname='HFS'; % end % % yyaxis( 'left'); % map=colormap(lines); % set(axl,'linestyleorder',{'-',':','--','*','+'},... % 'ColorOrder',map(2:7,:), 'NextPlot','replacechildren') % p(1)=plot(axl,obj.t2d(timesteps)/taucol,movmean(currents(1,:),nmean),'Displayname',lname,'linewidth',1.8); % hold on % p(2)=plot(axl,obj.t2d(timesteps)/taucol,movmean(currents(2,:),nmean),'Displayname',rname,'linewidth',1.8); % % Plot the currents % for i=3:size(currents,1) % p(i)=plot(axl,obj.t2d(timesteps)/taucol,movmean(currents(i,:),nmean),'Displayname',sprintf('border %i',i-2),'linewidth',1.8); % end % plot(axl,obj.t2d(timesteps)/taucol,movmean(sum(currents(:,:),1,'omitnan'),nmean),'k-','Displayname','total','linewidth',1.8); % hold on % xlabel(tlabel) % ylabel('I/p_n [A/mbar]') % grid on % set(gca,'fontsize',12) % ax.YAxis(1).Color='black'; % % %legend('Orientation','horizontal','location','north','numcolumns',3) % % if ~isempty(toptitle) % title(toptitle) % end % % ax2=nexttile; % geomw=obj.geomweight(:,:,1); % geomw(geomw<=0)=0; % geomw(geomw>0)=NaN; % [c1,hContour]=contourf(ax2,obj.zgrid*1000,obj.rgrid*1000,geomw, [0 0]); % hold on % drawnow; % grid on; % % for i=1:length(pos) % plot(ax2,pos{i}(1,:)*1000,pos{i}(2,:)*1000,'linestyle',p(i+2).LineStyle,... % 'color',p(i+2).Color,'marker',p(i+2).Marker,... % 'displayname',sprintf('border %i',i),'linewidth',1.8) % hold on % end % title('Domain') % plot(ax2,ones(size(obj.rgrid))*obj.zgrid(1)*1000,obj.rgrid*1000,'linestyle',p(1).LineStyle,... % 'color',p(1).Color,'marker',p(1).Marker,... % 'displayname',lname,'linewidth',1.8) % plot(ax2,ones(size(obj.rgrid))*obj.zgrid(end)*1000,obj.rgrid*1000,'linestyle',p(2).LineStyle,... % 'color',p(2).Color,'marker',p(2).Marker,... % 'displayname',rname,'linewidth',1.8) % xlabel('z [mm]') % ylabel('r [mm]') % grid on % set(gca,'fontsize',12) % hFills=hContour.FacePrims; % [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' % try % hFills(1).ColorData = uint8([150;150;150;255]); % for idx = 2 : numel(hFills) % hFills(idx).ColorData(4) = 0; % default=255 % end % catch % end % %legend('Orientation','horizontal','location','north','numcolumns',4) % % % fprintf('mean total current: %f [A/mbar]\n',mean(sum(currents(:,max(1,size(currents,2)-30):end),1,'omitnan'))); % % %if nargin <3 % % sgtitle(sprintf('\\phi_b-\\phi_a=%.2g kV, B=%f T',(obj.potout-obj.potinn)*obj.phinorm/1e3,mean(obj.B(:)))) % %elseif ~isempty(toptitle) % % sgtitle(toptitle) % %end % if length(subdiv)>1 % obj.savegraph(f,sprintf('%s/%s_totIEvol%i%i_div',obj.folder,obj.name,scalet,dens),[16 14]); % else % obj.savegraph(f,sprintf('%s/%s_totIEvol%i%i',obj.folder,obj.name,scalet,dens),[16 14]); % end % % end function display1Dpotentialwell(obj,timestep,rpos) % Display the potential well along the magentic field line % passing by rgrid(rpos) at the center of the simulation space if iscell(timestep) timestep=cell2mat(timestep); end f=figure('Name',sprintf('%s 1D Potential well',obj.name)); model=obj.potentialwellmodel(timestep); z=model.z; r=model.r; Pot=model.pot; rathet=model.rathet; if (mod(rpos, 1) ~= 0) [~,rpos]=min(abs(obj.rgrid-rpos)); end crpos=obj.rgrid(rpos); id=find(timestep==0); timestep(id)=[]; n=obj.N(:,:,timestep); if(~isempty(timestep==0)) N0=zeros(obj.N.nr+1,obj.N.nz+1); n=cat(3,n(:,:,1:id-1),N0,n(:,:,id:end)); end n=mean(n,3); linepot=zeros(length(obj.zgrid),length(timestep)); rathetpos=obj.rAthet(rpos,ceil(length(obj.zgrid)/2)); F=scatteredInterpolant(z',rathet',Pot(:,1)); for i=1:length(timestep) F=scatteredInterpolant(z',rathet',Pot(:,i)); linepot(:,i)=F(obj.zgrid,rathetpos*ones(size(obj.zgrid))); %linepot(:,i)=griddata(z,rathet,pot(:,i),obj.zgrid,rathetpos); end linepot=mean(linepot,2); [Zinit,~]=meshgrid(obj.zgrid,obj.rAthet(:,1)); n=griddata(Zinit,obj.rAthet,n,obj.zgrid,rathetpos); plot(obj.zgrid,linepot) ylabel('Potentiel [eV]') xlabel('z [m]') xlim([obj.zgrid(1) obj.zgrid(end)]) hold(gca, 'on') yyaxis right plot(obj.zgrid,n) ylabel('n [m^{-3}]') if length(timestep)==1 title(sprintf('Potential well t=%1.2f [ns] r=%1.2f [mm]',obj.t2d(timestep)*1e9,1e3*crpos)) else title(sprintf('Potential well t=[%1.2f-%1.2f] [ns] r=%1.2f [mm]',obj.t2d(timestep(1))*1e9,obj.t2d(timestep(end))*1e9,1e3*crpos)) end obj.savegraph(f,sprintf('%s/%s_well1Dr_%d',obj.folder,obj.name,rpos)); end function displayVdistribRThetZ(obj,timestep, rpos, zpos) %displayVdistribRThetZ plot the velocity distribution function % in m/s %extracted from the markers at position window from rpos(1) %rpos(end) and zpos(1) to zpos(end) % and at time obj.tpart(timestep) %rpos and zpos are given as grid indices if(obj.species(1).R.nt>=2) if nargin<2 timesteppart=length(obj.tpart); timestep=timesteppart; else timesteppart=timestep; end if nargin<3 || isempty(rpos) rpos=1:length(obj.rgrid); rspan=[obj.rgrid(1) obj.rgrid(end)]; else r=[obj.rgrid(1);(obj.rgrid(1:end-1)+obj.rgrid(2:end))*0.5;obj.rgrid(end)]; rspan=[r(rpos) r(rpos+1)]; end if nargin<4 || isempty(zpos) zpos=1:length(obj.zgrid); zspan=[obj.zgrid(1) obj.zgrid(end)]; else z=[obj.zgrid(1);(obj.zgrid(1:end-1)+obj.zgrid(2:end))*0.5;obj.zgrid(end)]; zspan=[z(zpos) z(zpos+1)]; end nbp=min(obj.nbparts(1),obj.species(1).R.nparts); R=obj.species(1).R(1:nbp,1,false); Z=obj.species(1).Z(1:nbp,1,false); Vr=obj.species(1).VR(1:nbp,1,false); Vz=obj.species(1).VZ(1:nbp,1,false); Vthet=obj.species(1).VTHET(1:nbp,1,false); ids=R>=rspan(1) & R<=rspan(2) & Z>=zspan(1) & Z<=zspan(2); Vr=Vr(ids); Vz=Vz(ids); Vthet=Vthet(ids); vTr=std(Vr,1); vTz=std(Vz,1); vTthet=std(Vthet,1); nbp=min(obj.nbparts(timesteppart),obj.species(1).R.nparts); Rend=obj.species(1).R(1:nbp,timesteppart,false); Zend=obj.species(1).Z(1:nbp,timesteppart,false); Vrend=obj.species(1).VR(1:nbp,timesteppart,false); Vzend=obj.species(1).VZ(1:nbp,timesteppart,false); Vthetend=obj.species(1).VTHET(1:nbp,timesteppart,false); ids=Rend>=rspan(1) & Rend<=rspan(2) & Zend>=zspan(1) & Zend<=zspan(2); nbtot=sum(ids) Vrend=Vrend(ids); Vzend=Vzend(ids); Vthetend=Vthetend(ids); vTrend=std(Vrend,1); vTzend=std(Vzend,1); vTthetend=std(Vthetend,1); binwidth=abs(max(Vrend)-min(Vrend))/sqrt(length(Vrend)); f=figure('Name',sprintf("%s vrz distrib",obj.file)); [~,time2did]=min(abs(obj.t2d-obj.tpart(timestep))); subplot(1,4,1); obj.dispV(Vr,Vrend,'V_r [m/s]',[1,timesteppart]) [~,time2did]=min(abs(obj.t2d-obj.tpart(timestep))); if length(rpos)==1 vexb=-obj.Er(rpos,zpos,time2did)/obj.Bz(zpos,rpos)'; vexb=mean(vexb(:)); if ~isempty(obj.neutcol.ela_cross_sec) % plot the radial drift velocity as nu_dE_r/(B\Omega_c) vdr=obj.neutcol.neutdens*obj.sigmela(vexb^2*obj.me*0.5/obj.qe)*vexb*-obj.Er(rpos,zpos,time2did)... ./(obj.B(zpos,rpos)'.*obj.B(zpos,rpos)'*obj.qe/obj.me); vdr=mean(vdr(:)); ylimits=ylim; plot(vdr*[1 1],ylimits,'k--','displayname',sprintf('V_{d,pred}=%1.2g [m/s]',vdr)) end end subplot(1,4,2); obj.dispV(Vthet,Vthetend,'V\theta [m/s]',[1,timesteppart]) hold on drawnow ylimits=ylim; if length(rpos)==1 if ~isempty(obj.Erxt) vexbext=-obj.Erxt(rpos,zpos)/obj.Bz(zpos,rpos)'; plot(vexbext*[1 1],ylimits,'k--','displayname',sprintf('V_{ExB,ext}=%1.2g [m/s]',vexbext)) end plot(vexb*[1 1],ylimits,'k-.','displayname',sprintf('V_{ExB,tot}=%1.2g [m/s]',vexb)) end subplot(1,4,3); obj.dispV(Vz,Vzend,'Vz [m/s]',[1,timesteppart]) subplot(1,4,4); obj.dispV(sqrt(Vr.^2+(Vthet).^2+Vz.^2),sqrt(Vrend.^2+(Vthetend).^2+Vzend.^2),'Vtot [m/s]',[1,timesteppart],'maxwell') sgtitle(sprintf('t=%1.2e[ns] r=[%2.1f, %2.1f] [mm] z=[%2.1f, %2.1f] [mm]',obj.tpart(timestep)*1e9, rspan*1e3, zspan*1e3)) obj.savegraph(f,sprintf('%s/%sParts_V_RZ',obj.folder,obj.name),[25 14]); end end function displayEkin(obj,timestep, rpos, zpos) %displayEkin plot the kinetic energy distribution function in %eV %extracted from the markers at position window from rpos(1) %rpos(end) and zpos(1) to zpos(end) % and at time obj.tpart(timestep) %rpos and zpos are given as grid indices if(obj.species(1).R.nt>=2) if nargin<2 timesteppart=[1 length(obj.tpart)]; else if length(timestep)<2 timesteppart=[1 timestep]; else timesteppart=[timestep(1) timestep(end)]; end end if nargin<3 || isempty(rpos) rspan=[obj.rgrid(1) obj.rgrid(end)]; else r=[obj.rgrid(1);(obj.rgrid(1:end-1)+obj.rgrid(2:end))*0.5;obj.rgrid(end)]; rspan=[r(rpos) r(rpos+1)]; end if nargin<4 || isempty(zpos) zspan=[obj.zgrid(1) obj.zgrid(end)]; else z=[obj.zgrid(1);(obj.zgrid(1:end-1)+obj.zgrid(2:end))*0.5;obj.zgrid(end)]; zspan=[z(zpos) z(zpos+1)]; end nbp=min(obj.nbparts(timesteppart(1)),obj.species(1).R.nparts); R=obj.species(1).R(1:nbp,timesteppart(1),false); Z=obj.species(1).Z(1:nbp,timesteppart(1),false); Ekin=obj.Ekin(1:nbp,timesteppart(1),false); ids=R>=rspan(1) & R<=rspan(2) & Z>=zspan(1) & Z<=zspan(2); Ekin=Ekin(ids)/obj.qe; nbp=min(obj.nbparts(timesteppart(2)),obj.species(1).R.nparts); Rend=obj.species(1).R(1:nbp,timesteppart(2),false); Zend=obj.species(1).Z(1:nbp,timesteppart(2),false); Ekinend=obj.Ekin(1:nbp,timesteppart(2),false); ids=Rend>=rspan(1) & Rend<=rspan(2) & Zend>=zspan(1) & Zend<=zspan(2); Ekinend=Ekinend(ids)/obj.qe; f=figure('Name',sprintf("%s E_k distrib",obj.file)); obj.dispV(Ekin,Ekinend,'E_k',timesteppart,'maxwell') sgtitle(sprintf('dt=%1.2e[ns] r=[%2.1f, %2.1f] [mm] z=[%2.1f, %2.1f] [mm]',obj.dt*1e9, rspan*1e3, zspan*1e3)) obj.savegraph(f,sprintf('%s/%sParts_E_kin',obj.folder,obj.name)); end end function displayVdistribParPer(obj,timestep, rpos, zpos, gcs) %displayVdistribParPer plot the velocity distribution function % in m/s for the parallel and perpendicular velocity %extracted from the markers at position window from rpos(1) %rpos(end) and zpos(1) to zpos(end) % and at time obj.tpart(timestep) %rpos and zpos are given as grid indices % gcs define if you give the perpendicular velocity in the % guiding center frame or in the laboratory frame if(obj.species(1).R.nt>=2) if nargin<2 timesteppart=length(obj.tpart); else timesteppart=timestep; end if nargin<3 || isempty(rpos) rspan=[obj.rgrid(1) obj.rgrid(end)]; else r=[obj.rgrid(1);(obj.rgrid(1:end-1)+obj.rgrid(2:end))*0.5;obj.rgrid(end)]; rspan=[r(rpos) r(rpos+1)]; end if nargin<4 || isempty(zpos) zspan=[obj.zgrid(1) obj.zgrid(end)]; else z=[obj.zgrid(1);(obj.zgrid(1:end-1)+obj.zgrid(2:end))*0.5;obj.zgrid(end)]; zspan=[z(zpos) z(zpos+1)]; end if nargin<5 gcs=false; % define if we look in the guiding center system end nbp=min(obj.nbparts(1),obj.species(1).R.nparts); R=obj.species(1).R(1:nbp,1,false); Z=obj.species(1).Z(1:nbp,1,false); ids=R>=rspan(1) & R<=rspan(2) & Z>=zspan(1) & Z<=zspan(2); Vperp=obj.Vperp(1:nbp,1,false,gcs); Vpar=obj.Vpar(1:nbp,1,false); Vperp=Vperp(ids); Vpar=Vpar(ids); nbp=min(obj.nbparts(timesteppart),obj.species(1).R.nparts); R=obj.species(1).R(1:nbp,timesteppart,false); Z=obj.species(1).Z(1:nbp,timesteppart,false); ids=R>=rspan(1) & R<=rspan(2) & Z>=zspan(1) & Z<=zspan(2); Vperpend=obj.Vperp(1:nbp,timesteppart,false,gcs); Vparend=obj.Vpar(1:nbp,timesteppart,false); Vperpend=Vperpend(ids); Vparend=Vparend(ids); %binwidth=abs(max(Vparend)-min(Vparend))/500; f=figure('Name',sprintf("%s v parper distrib",obj.file)); subplot(1,2,1) if gcs lgd='v_\perp gcs [m/s]'; else lgd='v_\perp [m/s]'; end obj.dispV(Vperp,Vperpend,lgd,[1,timesteppart], 'maxwell') subplot(1,2,2) obj.dispV(abs(Vpar),abs(Vparend),'v_{par} [m/s]',[1,timesteppart],'None') sgtitle(sprintf('t=%1.2e[ns] r=[%2.1f, %2.1f] [mm] z=[%2.1f, %2.1f] [mm]',obj.tpart(timestep)*1e9, rspan*1e3, zspan*1e3)) obj.savegraph(f,sprintf('%s/%sParts_V_parper',obj.folder,obj.name)); if gcs obj.savegraph(f,sprintf('%s/%sParts_V_parpergcs',obj.folder,obj.name)); else obj.savegraph(f,sprintf('%s/%sParts_V_parper',obj.folder,obj.name)); end end end function display2DVdistrib(obj,timestep, rpos, zpos, gcs) %display2DVdistrib plot the velocity distribution function % in m/s for the parallel and perpendicular velocity % and for the radial azimuthal velocity % as a 2D contour plot the show the velocity phase space distribution %extracted from the markers at position window from rpos(1) %rpos(end) and zpos(1) to zpos(end) % and at time obj.tpart(timestep) %rpos and zpos are given as grid indices % gcs define if you give the perpendicular velocity in the % guiding center frame or in the laboratory frame if(obj.species(1).R.nt>=2) if nargin<2 timesteppart=length(obj.tpart); else timesteppart=timestep; end if nargin<3 || isempty(rpos) rspan=[obj.rgrid(1) obj.rgrid(end)]; else r=[obj.rgrid(1);(obj.rgrid(1:end-1)+obj.rgrid(2:end))*0.5;obj.rgrid(end)]; rspan=[r(rpos(1)) r(rpos(end)+1)]; end if nargin<4 || isempty(zpos) zspan=[obj.zgrid(1) obj.zgrid(end)]; else z=[obj.zgrid(1);(obj.zgrid(1:end-1)+obj.zgrid(2:end))*0.5;obj.zgrid(end)]; zspan=[z(zpos(1)) z(zpos(end)+1)]; end if nargin<5 gcs=false; % define if we look in the guiding center system end nbp=min(obj.nbparts(timesteppart),obj.species(1).R.nparts); R=obj.species(1).R(1:nbp,timesteppart,false); Z=obj.species(1).Z(1:nbp,timesteppart,false); ids=R>=rspan(1) & R<=rspan(2) & Z>=zspan(1) & Z<=zspan(2); Vperp=obj.Vperp(1:nbp,timesteppart,false,gcs); Vpar=obj.Vpar(1:nbp,timesteppart,false); Vr=obj.species(1).VR(1:nbp,timesteppart,false); Vthet=obj.species(1).VTHET(1:nbp,timesteppart,false); Vper=Vperp(ids); Vpar=Vpar(ids); Vr=Vr(ids); Vthet=Vthet(ids); nbp=sum(ids(:)); f=figure('Name',sprintf("%s v parper distrib",obj.file)); subplot(2,1,1) [N,Xedges,Yedges] = histcounts2(Vpar,Vper,20); Xedges=(Xedges(1:end-1)+Xedges(2:end))/2; Yedges=(Yedges(1:end-1)+Yedges(2:end))/2; contourf(Xedges,Yedges,N') xlabel('v_{par} [m/s]') ylabel('v_{\perp} [m/s]') c=colorbar; c.Label.String='Counts'; subplot(2,1,2) [N,Xedges,Yedges] = histcounts2(Vthet,Vr,20); Xedges=(Xedges(1:end-1)+Xedges(2:end))/2; Yedges=(Yedges(1:end-1)+Yedges(2:end))/2; contourf(Xedges,Yedges,N') %histogram2(Vthet,Vr,'displaystyle','tile','binmethod','auto') %scatter(Vthet,Vr) xlabel('v_\theta [m/s]') ylabel('v_r [m/s]') c=colorbar; c.Label.String='Counts'; sgtitle(sprintf('t=%1.2e[ns] r=[%2.1f, %2.1f] [mm] z=[%2.1f, %2.1f] [mm] N=%3i',mean(obj.tpart(timestep))*1e9, rspan*1e3, zspan*1e3,nbp)) mkdir(sprintf('%s/vdist',obj.folder)) if gcs obj.savegraph(f,sprintf('%s/vdist/%sParts_V_2dparpergcs_r%iz%it%i',obj.folder,obj.name,floor(mean(rpos)),floor(mean(zpos)),floor(mean(timestep)))); else obj.savegraph(f,sprintf('%s/vdist/%sParts_V_2dparper_r%iz%it%i',obj.folder,obj.name,floor(mean(rpos)),floor(mean(zpos)),floor(mean(timestep)))); end end end function [p, maxnb, c]=displayPhaseSpace(obj,type,partsstep, Rindex, Zindex,legendtext, figtitle, f, maxnb, c, gcs) if nargin<8 f=figure; f=gca; end if nargin<7 figtitle=sprintf('r=%1.2f [mm] z=%1.2f [mm] \\Delta\\phi=%1.1f[kV] R=%1.1f',obj.rgrid(Rindex)*1e3,obj.zgrid(Zindex)*1e3,(obj.potout-obj.potinn)*obj.phinorm/1e3,obj.Rcurv); end if nargin <6 legendtext=sprintf('t=%1.3g [s]',obj.tpart(partsstep)); end fieldstep=find(obj.tpart(partsstep(end))==obj.t2d,1); if nargin>=10 ctemp=c; n=zeros(length(c{1}),length(c{2})); else nbins=15; n=zeros(nbins); end if nargin <11 gcs=true; end for i=1:length(partsstep) odstep=find(obj.tpart(partsstep(i))==obj.t0d); nbp=min(obj.species(1).R.nparts,obj.nbparts(partsstep(i))); Rp=obj.species(1).R(1:nbp,partsstep(i),false); Zp=obj.species(1).Z(1:nbp,partsstep(i),false); deltar=obj.dr(2)/2; deltarm=obj.rgrid(Rindex)-sqrt(obj.rgrid(Rindex)^2-deltar^2-2*obj.rgrid(Rindex)*deltar); deltaz=obj.dz/2; Indices=Rp>=obj.rgrid(Rindex)-deltarm & Rp=obj.zgrid(Zindex)-deltaz & Zp0)),max(Blines(obj.geomweight(:,:,1)>0)),20); Blines(obj.geomweight(:,:,1)<0)=NaN; [~,h1]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Blines,real(levels),'-.','color','k','linewidth',1.5,'Displayname','Magnetic field lines'); % Draw the metallic boundaries and the geometry itself [c1,hContour]=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,-geomw,[0,0],'linewidth',1.5); drawnow; xlim(ax1,[obj.zgrid(1)*1000 obj.zgrid(end)*1000]) % Change the color of the metallic boundaries to grey hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' try hFills(end).ColorData = uint8([150;150;150;255]); for idx = 1 : numel(hFills)-1 hFills(idx).ColorData(4) = 0; % default=255 end catch end grid on; hold on; f.PaperOrientation='landscape'; f.PaperUnits='centimeters'; papsize=[16 14]; f.PaperSize=papsize; set(ax1,'fontsize',14) %axis equal obj.savegraph(f,sprintf('%sfluid_dens',obj.name)) end function display_ionicconfigurration(obj, fieldstart, fieldend, species_id) %displayconfiguration plot the configuration of the simulation % domain withe boundaries, the magnetic field lines the % electric equipotential lines and the electron density % averaged in time between t2d(fieldstart) and t2d(fieldend) % species_id: gathers the ion species indices in an array. for ii = 1 :species_id(end-1) dens(ii,:,:)=mean(obj.species_moments(ii).N(:,:,fieldstart:fieldend),3); end geomw=obj.geomweight(:,:,1); maxdens=max(dens(:)); geomw(geomw<0)=0; geomw(geomw>0)=maxdens; dens(geomw<=0)=0; geomw(geomw>0)=NaN; f=figure('Name', sprintf('%s fields',obj.name)); ax1=gca; title(sprintf('Configuration')) %dens(dens<=1e13)=NaN; %% electron density for ii =1:2 h(ii)=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,dens(ii,:,:),50,'Displayname','n_e [m^{-3}]', 'linestyle','none'); hold on; end colormap(flipud(hot)); %% Magnetic field lines Blines=obj.rAthet; levels=linspace(min(Blines(obj.geomweight(:,:,1)>0)),max(Blines(obj.geomweight(:,:,1)>0)),20); [~,h1]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Blines,real(levels),'-.','color','k','linewidth',1.5,'Displayname','Magnetic field lines'); %% Equipotential lines Pot=mean(obj.pot(:,:,fieldstart:fieldend),3); Pot(obj.geomweight(:,:,1)<0)=NaN; %levels=8;%[-3.4 -5 -10 -15 -20 -25];%7; potcolor='b';%[0.3660 0.6740 0.1880]; [c1,h2]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Pot,'--','color',potcolor,'ShowText','on','linewidth',1.2,'Displayname','Equipotentials [kV]'); clabel(c1,h2,'Color',potcolor) % Grey outline shows metallic parts [c1,hContour]=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,geomw, [0 0]); drawnow; % set the axia limits xlim(ax1,[obj.zgrid(1)*1000 obj.zgrid(end)*1000]) if(obj.conformgeom) ylim([ax1 ],[obj.rgrid(1)*1000 obj.rgrid(rgridend)*1000]) else ylim([ax1],[obj.rgrid(1)*1000 obj.rgrid(end)*1000]) end legend([h1,h2],{'Magnetic field lines','Equipotentials [V]'},'location','northeast') xlabel(ax1,'z [mm]') ylabel(ax1,'r [mm]') c = colorbar(ax1); c.Label.String= 'n[m^{-3}]'; view(ax1,2) grid on; hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' try hFills(1).ColorData = uint8([150;150;150;255]); for idx = 2 : numel(hFills) hFills(idx).ColorData(4) = 0; % default=255 end catch end [~, name, ~] = fileparts(obj.file); % with this you could show the outline of the maxwellian source % if obj.maxwellsrce.present % rlen=diff(obj.maxwellsrce.rlim); % zlen=diff(obj.maxwellsrce.zlim); % rectangle('Position',[obj.maxwellsrce.zlim(1) obj.maxwellsrce.rlim(1) zlen rlen]*1000,'Edgecolor','g','Linewidth',2,'Linestyle','--') % end % in case of coaxial configuration, extend the display domain % and add grey rectangles to show metallic boundaries if( obj.walltype >=2 && obj.walltype<=4) rectangle('Position',[obj.zgrid(1) obj.r_b obj.zgrid(end)-obj.zgrid(1) 0.001]*1e3,'FaceColor',[150 150 150]/255,'Edgecolor','none') ylimits=ylim; ylim([ylimits(1),ylimits(2)+1]) end if sum(obj.geomweight(:,1,1))==0 rectangle('Position',[obj.zgrid(1) obj.r_a-0.001 obj.zgrid(end)-obj.zgrid(1) 0.001]*1e3,'FaceColor',[150 150 150]/255,'Edgecolor','none') ylimits=ylim; ylim([ylimits(1)-1,ylimits(2)]) end f.PaperUnits='centimeters'; %axis equal papsize=[14 5 ]; obj.savegraph(f,sprintf('%s/%sFields',obj.folder,obj.name),papsize); end function displayconfiguration(obj,fieldstart,fieldend) %displayconfiguration plot the configuration of the simulation % domain withe boundaries, the magnetic field lines the % electric equipotential lines and the electron density % averaged in time between t2d(fieldstart) and t2d(fieldend) dens=mean(obj.N(:,:,fieldstart:fieldend),3); geomw=obj.geomweight(:,:,1); maxdens=max(dens(:)); geomw(geomw<0)=0; geomw(geomw>0)=maxdens; dens(geomw<=0)=0; geomw(geomw>0)=NaN; f=figure('Name', sprintf('%s fields',obj.name)); ax1=gca; title(sprintf('Configuration')) %dens(dens<=1e13)=NaN; %% electron density h=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,dens,50,'Displayname','n_e [m^{-3}]', 'linestyle','none'); hold on; colormap(flipud(hot)); %% Magnetic field lines Blines=obj.rAthet; levels=linspace(min(Blines(obj.geomweight(:,:,1)>0)),max(Blines(obj.geomweight(:,:,1)>0)),20); [~,h1]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Blines,real(levels),'-.','color','k','linewidth',1.5,'Displayname','Magnetic field lines'); %% Equipotential lines Pot=mean(obj.pot(:,:,fieldstart:fieldend),3); Pot(obj.geomweight(:,:,1)<0)=NaN; %levels=8;%[-3.4 -5 -10 -15 -20 -25];%7; potcolor='b';%[0.3660 0.6740 0.1880]; [c1,h2]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Pot,'--','color',potcolor,'ShowText','on','linewidth',1.2,'Displayname','Equipotentials [kV]'); clabel(c1,h2,'Color',potcolor) % Grey outline shows metallic parts [c1,hContour]=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,geomw, [0 0]); drawnow; % set the axia limits xlim(ax1,[obj.zgrid(1)*1000 obj.zgrid(end)*1000]) if(obj.conformgeom) ylim([ax1 ],[obj.rgrid(1)*1000 obj.rgrid(rgridend)*1000]) else ylim([ax1],[obj.rgrid(1)*1000 obj.rgrid(end)*1000]) end legend([h1,h2],{'Magnetic field lines','Equipotentials [V]'},'location','northeast') xlabel(ax1,'z [mm]') ylabel(ax1,'r [mm]') c = colorbar(ax1); c.Label.String= 'n[m^{-3}]'; view(ax1,2) grid on; hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' try hFills(1).ColorData = uint8([150;150;150;255]); for idx = 2 : numel(hFills) hFills(idx).ColorData(4) = 0; % default=255 end catch end [~, name, ~] = fileparts(obj.file); % with this you could show the outline of the maxwellian source % if obj.maxwellsrce.present % rlen=diff(obj.maxwellsrce.rlim); % zlen=diff(obj.maxwellsrce.zlim); % rectangle('Position',[obj.maxwellsrce.zlim(1) obj.maxwellsrce.rlim(1) zlen rlen]*1000,'Edgecolor','g','Linewidth',2,'Linestyle','--') % end % in case of coaxial configuration, extend the display domain % and add grey rectangles to show metallic boundaries if( obj.walltype >=2 && obj.walltype<=4) rectangle('Position',[obj.zgrid(1) obj.r_b obj.zgrid(end)-obj.zgrid(1) 0.001]*1e3,'FaceColor',[150 150 150]/255,'Edgecolor','none') ylimits=ylim; ylim([ylimits(1),ylimits(2)+1]) end if sum(obj.geomweight(:,1,1))==0 rectangle('Position',[obj.zgrid(1) obj.r_a-0.001 obj.zgrid(end)-obj.zgrid(1) 0.001]*1e3,'FaceColor',[150 150 150]/255,'Edgecolor','none') ylimits=ylim; ylim([ylimits(1)-1,ylimits(2)]) end f.PaperUnits='centimeters'; %axis equal papsize=[14 5 ]; obj.savegraph(f,sprintf('%s/%sFields',obj.folder,obj.name),papsize); end function displaymagfield(obj) %displaymagfield display the magnetic field lines and the %amplitude of the magnetic field using a contour % also show the domain boundaries B=obj.B'; f=figure('Name', sprintf('%s B field',obj.name)); B(obj.geomweight(:,:,1)<0)=NaN; ax1=gca; title(sprintf('Configuration')) Blv=linspace(min(B(:)),max(B(:)),25); if length(Blv)<2 Blv=min(B(:))*[1 1]; end h=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,B,Blv,'Displayname','B [T]', 'linestyle','none'); hold on; %% Magnetic field lines Blines=obj.rAthet; levels=linspace(min(Blines(obj.geomweight(:,:,1)>0)),max(Blines(obj.geomweight(:,:,1)>0)),10); Blines(obj.geomweight(:,:,1)<0)=NaN; [~,h1]=contour(ax1,obj.zgrid*1000,obj.rgrid*1000,Blines,real(levels),'r-.','linewidth',1.5,'Displayname','Magnetic field lines'); colormap(ax1,'parula') % Grey outline geomw=obj.geomweight(:,:,1); geomw(geomw>0)=NaN; geomw(geomw<0)=min(B(:)); [c1,hContour]=contourf(ax1,obj.zgrid*1000,obj.rgrid*1000,geomw, [0 0]); drawnow; xlim(ax1,[obj.zgrid(1)*1000 obj.zgrid(end)*1000]) if(obj.conformgeom) ylim([ax1 ],[obj.rgrid(1)*1000 obj.rgrid(rgridend)*1000]) else ylim([ax1],[obj.rgrid(1)*1000 obj.rgrid(end)*1000]) end %legend([h1],{'Magnetic field lines'},'location','northwest') xlabel(ax1,'z [mm]') ylabel(ax1,'r [mm]') %title(ax1,sprintf('Density t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) c = colorbar(ax1); c.Label.String= '|B| [T]'; view(ax1,2) %set(h,'edgecolor','none'); grid on; hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' %caxis([min(B(:)) max(B(:))]) try hFills(1).ColorData = uint8([150;150;150;255]); for idx = 2 : numel(hFills) hFills(idx).ColorData(4) = 0; % default=255 end catch end [~, name, ~] = fileparts(obj.file); if( obj.walltype >=2 && obj.walltype<=4) rectangle('Position',[obj.zgrid(1) obj.r_b obj.zgrid(end)-obj.zgrid(1) 0.001]*1e3,'FaceColor',[150 150 150]/255,'Edgecolor','none') ylimits=ylim; ylim([ylimits(1),ylimits(2)+1]) end if(isempty(obj.spl_bound)) rectangle('Position',[obj.zgrid(1) obj.r_a-0.001 obj.zgrid(end)-obj.zgrid(1) 0.001]*1e3,'FaceColor',[150 150 150]/255,'Edgecolor','none') ylimits=ylim; ylim([ylimits(1)-1,ylimits(2)]) end f.PaperUnits='centimeters'; %axis equal set(gca,'fontsize',14) papsize=[14 5 ]; pos=f.Position; pos(3)=floor(1.5*pos(3)); f.Position=pos; axis equal obj.savegraph(f,sprintf('%s/%s_Bfield',obj.folder,obj.name),papsize); end function displaySurfFlux(obj,timestep, subdiv, species_id,scalet) %displaySurfFlux plot the current densities %on the domain boundaries for time t2d(timestep) %directly on the boundaries themselves %make it easier to see where the currents are collected if nargin<3 subdiv=1; end if nargin<4 species_id =1; end if nargin<5 scalet = false; end if species_id ==1 mflux= obj.Metallicflux(timestep,subdiv); lflux= -squeeze(obj.Axialflux(timestep,1,species_id))'; rflux= squeeze(obj.Axialflux(timestep,length(obj.zgrid),species_id))'; qe = obj.qe; else mflux= obj.MetallicFlux_species(timestep,subdiv); lflux= -squeeze(obj.Axialflux(timestep,1,species_id))'; rflux= squeeze(obj.Axialflux(timestep,length(obj.zgrid),species_id))'; qe = obj.species(species_id-1).q; end time=obj.t2d(timestep); if nargin<3 ids=1:length(mflux); end %% P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar f=figure('name','fluxevol'); linew=3; %obj.displaysplbound(gca,1e3); % Grey outline geomw=obj.geomweight(:,:,1); geomw(geomw>0)=NaN; geomw(geomw<0)=0; [c1,hContour]=contourf(obj.zgrid*1000,obj.rgrid*1000,geomw, [0 0]); hold on contour(obj.zgrid*1e3,obj.rgrid*1e3,obj.geomweight(:,:,1),[0 0],'b-','linewidth',1.5); hold on for i=1:length(mflux.p) x=mflux.p{i}(1,:)*1000; y=mflux.p{i}(2,:)*1000; y(end)=NaN; c=mean(mflux.gamma{i},2)'*qe/(100^2)/P; %c=mflux.gamma{i}'*obj.qe/(100^2)/P; %c=mflux.gamma{i}'*qe/(100^2)/P; c(c<=1e-4*max(c))=NaN; patch(x,y,c,'EdgeColor','interp','LineWidth',linew); hold on end x=obj.zgrid(1)*ones(size(obj.rgrid))*1000; y=obj.rgrid*1000; y(end)=NaN; c=mean(lflux,1)*qe/(100^2)/P; %c=lflux*obj.qe/(100^2)/P; %c=lflux*qe/(100^2)/P; c(c<=1e-4*max(c))=NaN; patch(x,y,c,'EdgeColor','interp','LineWidth',linew); x=obj.zgrid(end)*ones(size(obj.rgrid))*1e3; y=obj.rgrid*1000; y(end)=NaN; c=mean(rflux,1)*qe/(100^2)/P; %c=rflux*obj.qe/(100^2)/P; %c=rflux*qe/(100^2)/P; c(c<=1e-4*max(c))=NaN; patch(x,y,c,'EdgeColor','interp','LineWidth',linew); if scalet == false title(sprintf('t=%4.2f [ns]',mean(time)*1e9)) else if obj.neutcol.present vexb0=(obj.Ez(:,:,1).*obj.Br'-obj.Er(:,:,1).*obj.Bz')./(obj.B'.^2); vexb0(obj.geomweight(:,:,1)<=0)=0; E=0.5*obj.msim/obj.weight*mean(abs(vexb0(:)))^2/obj.qe; taucol=1/(obj.neutcol.neutdens*mean(abs(vexb0(:)))*(obj.sigio(E)+obj.sigmela(E)+obj.sigmio(E))); try Sio_S=1e17*(obj.neutcol.neutdens*mean(abs(vexb0(:)))*obj.sigio(E))/(obj.maxwellsrce.frequency*obj.weight/(pi*(obj.maxwellsrce.rlim(2)^2-obj.maxwellsrce.rlim(1)^2)*diff(obj.maxwellsrce.zlim))) catch end tlabel='t/\tau_d [-]'; else taucol=2*pi/obj.omece; tlabel='t/\tau_ce [-]'; end title(sprintf('t/\\tau_d=%4.2f [-]', mean(time)/taucol)) end c=colorbar; c.Label.String= 'j\cdotn [A/(cm^2 mbar)]'; xlabel('z [mm]') ylabel('r [mm]') colormap(jet) set(gca,'colorscale','log') set(gca,'fontsize',10) %% Magnetic field lines Blines=obj.rAthet; levels=linspace(min(Blines(obj.geomweight(:,:,1)>0)),max(Blines(obj.geomweight(:,:,1)>0)),15); Blines(obj.geomweight(:,:,1)<0)=NaN; [~,h1]=contour(obj.zgrid*1000,obj.rgrid*1000,Blines,real(levels),'k-.','linewidth',1.5,'Displayname','Magnetic field lines'); %axis equal drawnow % Set boundaries to gray hFills=hContour.FacePrims; [hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' try hFills(1).ColorData = uint8([150;150;150;255]); for idx = 2 : numel(hFills) hFills(idx).ColorData(4) = 0; % default=255 end catch end pos=f.Position; %pos(3)=floor(1.5*pos(3)); f.Position=pos; %axis equal xlim([obj.zgrid(1) obj.zgrid(end)]*1e3+0.1*[-1 1]) xlim([20*1e-3 obj.zgrid(end)]*1e3+0.1*[-1 1]) ylim([obj.rgrid(1) obj.rgrid(end)]*1e3+0.1*[-1 1]) drawnow pause(0.5) c.Ticks=[1e-2 1e-1 1 1e1 1e2]; obj.savegraph(f,sprintf('%s/%s_surfFlux_it2d_%i',obj.folder,obj.name,floor(mean(timestep))),[16 14]); end % interactive window to display the terms of the pressure tensor guiPressure(obj,logdensity,showgrid,fixed,temperature) % interactive window to display the electron density, magnetic % field lines, electric potential and field at given time steps guiFields(obj,logdensity,showgrid,fixed,parper) function displaycollfreq(obj) %displaycollfreq plot the collision frequencies in Hz/mbar for a range of %electron kinetic energies in eV for the different collision %processes considered: ionisation and elastic collisions E=logspace(1,4,1000); v=sqrt(2/obj.msim*obj.weight*E*obj.qe); P=obj.neutcol.neutdens*obj.kb*300/100;% pressure at room temperature in mbar tauio=P./(obj.neutcol.neutdens*obj.sigio(E).*v); tauiom=P./(obj.neutcol.neutdens*obj.sigmio(E).*v); tauelam=P./(obj.neutcol.neutdens*obj.sigmela(E).*v); f=figure('name','t scales coll'); loglog(E,1./tauio,'displayname','ionisation','linewidth',1.5) hold on loglog(E,1./tauiom,'displayname','ionisation momentum','linewidth',1.5) loglog(E,1./tauelam,'displayname','elastic','linewidth',1.5) loglog(E,1./tauio+1./tauiom+1./tauelam,'displayname','total drag','linewidth',1.5) loglog([E(1) E(end)],1./(2*pi/obj.omece)* [1 1],'--','displayname','cyclotronic','linewidth',1.5) xlabel('Electron kinetic energy [eV]') ylabel('\nu [Hz/mbar]') legend('location','southeast') grid on obj.savegraph(f,sprintf('%s/collfreqscales',obj.folder),[14 12]); end function displaycrosssec(obj) %displaycrosssec plot the collision crosssections in m^2 for a range of %electron kinetic energies in eV for the different collision %processes considered: ionisation and elastic collisions E=logspace(1,4,1000); sig_io=obj.sigio(E); sig_iom=obj.sigmio(E); sig_elam=obj.sigmela(E); f=figure('name','t scales coll'); loglog(E,sig_io,'displayname','ionisation','linewidth',1.5) hold on loglog(E,sig_iom,'displayname','ionisation momentum','linewidth',1.5) loglog(E,sig_elam,'displayname','elastic','linewidth',1.5) loglog(E,sig_io+sig_elam+sig_iom,'displayname','total drag','linewidth',1.5) xlabel('Energy [eV]') ylabel('\sigma [m^{2}]') legend('location','southeast') grid on obj.savegraph(f,sprintf('%s/coll_cross_sec_scales',obj.folder),[14 12]); end %------------------------------------------ % Helper functions needed for other functions function [zpos,rpos]=getpos(obj,tstep) % interactive window to return an specific axial and radial % position picked from the cloud density if nargin<2 tstep=length(obj.t2d); end n=obj.N(:,:,tstep); n(obj.geomweight(:,:,1)<0)=NaN; figure contourf(obj.zgrid,obj.rgrid,n); xlabel('z [m]') ylabel('r [m]') [x,y]=ginput(1); zpos=find(x>obj.zgrid,1,'last'); rpos=find(y>obj.rgrid,1,'last'); hold on plot(obj.zgrid(zpos),obj.rgrid(rpos),'rx') fprintf('zpos=%i rpos=%i z=%1.4f r=%1.4f\n',zpos,rpos,obj.zgrid(zpos),obj.rgrid(rpos)) end function changed=ischanged(obj) %ischanged Check if the file has been changed since the initial loading of the file %and if some data must be reloaded try filedata=dir(obj.fullpath); checkedtimestamp=filedata.date; if (max(checkedtimestamp > obj.timestamp) ) changed=true; return end changed=false; return catch changed=true; return end end function dispV(obj,V,Vend,label,t, dist, vd) %dispV generic functio to plot the velocity distribution and %comapare two timesteps V and Vend at time t(1) and t(2) if nargin<6 dist='gaussian'; end if nargin<7 vd=0; end vmean=mean(V(~isnan(V))); vtherm=std(V(~isnan(V)),1); vmeanend=mean(Vend(~isnan(Vend))); vthermend=std(Vend(~isnan(Vend)),1); if(length(V)>1) [Counts,edges]=histcounts(V,'binmethod','sqrt'); binwidth=mean(diff(edges)); plot([edges(1) 0.5*(edges(2:end)+edges(1:end-1)) edges(end)],[0 Counts 0],'DisplayName',sprintf("t=%2.3d [ns]",obj.tpart(t(1))*1e9)); hold on end hold on [Counts,edges]=histcounts(Vend,'binmethod','sqrt'); plot([edges(1) 0.5*(edges(2:end)+edges(1:end-1)) edges(end)],[0 Counts 0],'DisplayName',sprintf("t=%2.3d [ns]",obj.tpart(t(2))*1e9)); if strcmp(dist,'maxwell') vfit=linspace(0,edges(end),300); a=vmeanend/sqrt(2); dist=sqrt(2/pi)*vfit.^2.*exp(-((vfit).^2-vd^2)/2/a^2)/a^3; dist=dist/max(dist); plot(vfit,max(Counts)*dist,'displayname',sprintf('Maxw mu=%2.2g sigma=%2.2g',vmeanend,vthermend)) elseif strcmp(dist,'gaussian') vfit=linspace(edges(1),edges(end),300); dist=exp(-(vfit-vmeanend).^2/2/vthermend^2); plot(vfit,max(Counts)*dist,'displayname',sprintf('gauss mu=%2.2g sigma=%2.2g',vmeanend,vthermend)) end ylabel('counts') xlabel(label) grid on legend('location','southoutside','orientation','vertical') end function cross_sec=fit_cross_sec(obj,energy,crosssec_table) %Interpolate the cross-section at the given energy using the %crosssec_table and an exponential fitting cross_sec=0; if (energy<=0 || isnan(energy) || isinf(energy)) return end id=find(energy>crosssec_table(:,1),1,'last'); if(isempty(id)) id=1; end id=min(size(crosssec_table,1)-1,id); id=max(1,id); cross_sec=crosssec_table(id,2)*(energy/crosssec_table(id,1))^crosssec_table(id,3); %cross_sec=crosssec_table(id,2)+(crosssec_table(id+1,2)-crosssec_table(id,2))*(energy-crosssec_table(id,1))/((crosssec_table(id+1,1)-crosssec_table(id,1))); end function fighandle=savegraph(obj, fighandle, name, papsize) %% Saves the given figure as a pdf a .fig and an eps using export_fig if (nargin < 4) papsize=[14 16]; end %export_fig(fighandle,name,'-png','-r300') exportgraphics(fighandle,sprintf('%s.png',name),'Resolution',300) print(fighandle,name,'-dpdf','-fillpage') savefig(fighandle,name) fighandle.PaperUnits='centimeters'; set(fighandle, 'Color', 'w'); fighandle.PaperSize=papsize; exportgraphics(fighandle,sprintf('%s.eps',name)) export_fig(fighandle,name,'-eps','-painters') end function sig=dsigmaio(obj,Ekin, Ebar, Ei, E0, chi, gamma) % calculates the integrand used for the ionisation collision % cross section for momentum exchange for the incoming electron % it is only used by obj.sigmiopre gamma=reshape(gamma,1,[],1); chi=reshape(chi,1,1,[]); siggamma=sin(gamma).*(E0^2+8*(1-chi)*(Ekin-Ei)*E0)./(E0+4*(1-chi)*(Ekin-Ei)-4*(1-chi)*(Ekin-Ei).*cos(gamma)).^2/2; sigchi=(Ekin-Ei)./(Ebar*atan((Ekin-Ei)/(2*Ebar)).*(1+(chi*(Ekin-Ei)/Ebar).^2)); dp=1- trapz(gamma,sqrt((1-chi).*(1-Ei/Ekin)).*cos(gamma).*siggamma,2);%- trapz(gamma,sqrt((1-chi).*(1-Ei/Ekin)).*cos(gamma).*siggamma,2); sig=sigchi.*dp; end function sigm=sigmiopre(obj,E, init) % returns the precalculated values used for the interpolation % of the ionisation collision cross-section for momentum % exchange for the incoming electron if nargin <3 init=false; end if(~init &&( ~obj.neutcol.present || isempty(obj.neutcol.io_cross_sec))) sigm=zeros(size(E)); return end Ebar=obj.neutcol.scatter_fac; Ei=obj.neutcol.Eion; E0=obj.neutcol.E0; nE=numel(E); nchi=300; ngamma=300; gamma=linspace(0,pi,ngamma); chi=linspace(0,0.5,nchi); %sigm2=zeros(nE,nchi); sigm=zeros(size(E)); for i=1:nE if(E(i)>=Ei) sigm2=zeros(nchi,1); for j=1:nchi %sigm2(j)=trapz(alpha,trapz(gamma,obj.dsigmaio(E(i),Ebar,Ei,E0,chi(j),alpha,gamma),2),1); sigm2(j)=obj.dsigmaio(E(i),Ebar,Ei,E0,chi(j),gamma); end sigm(i)=trapz(chi,sigm2)*obj.sigio(E(i),init); %sigm(i)=trapz(chi,trapz(alpha,trapz(gamma,dsigmaio(obj,E(i),Ebar,Ei,E0,chi,alpha,gamma),2),1),3)*obj.sigio(E(i),init); end end end end end diff --git a/matlab/DispPressure.m b/matlab/DispPressure.m deleted file mode 100644 index e65848f..0000000 --- a/matlab/DispPressure.m +++ /dev/null @@ -1,35 +0,0 @@ -function DispPressure(M,it) - -dens=mean(M.N(:,:,it),3); -maxdens=max(max(dens)); - -f=figure('title',M.name); -plotsubplot(subplot(2,3,1),squeeze(mean(M.Presstens(1,:,:,it),4)),'P_{rr} [Pa]'); -plotsubplot(subplot(2,3,2),squeeze(mean(M.Presstens(2,:,:,it),4)),'P_{r\theta} [Pa]'); -plotsubplot(subplot(2,3,3),squeeze(mean(M.Presstens(3,:,:,it),4)),'P_{rz} [Pa]'); -plotsubplot(subplot(2,3,4),squeeze(mean(M.Presstens(4,:,:,it),4)),'P_{\theta\theta} [Pa]'); -plotsubplot(subplot(2,3,5),squeeze(mean(M.Presstens(5,:,:,it),4)),'P_{z\theta} [Pa]'); -plotsubplot(subplot(2,3,6),squeeze(mean(M.Presstens(6,:,:,it),4)),'P_{zz} [Pa]'); - -sgtitle(sprintf('Pressure t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(min(it)),M.t2d(max(it)),double(maxdens))) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%sfluid_Pressure',name),'-dpdf','-fillpage') - -function plotsubplot(ax,Val,clabel) - h=surface(ax,M.zgrid,M.rgrid,Val); - xlim(ax,[M.zgrid(1) M.zgrid(end)]) - rgridend=sum(M.nnr(1:2)); - ylim(ax,[M.rgrid(1) M.rgrid(rgridend)]) - xlabel(ax,'z [m]') - ylabel(ax,'r [m]') - c = colorbar(ax); - c.Label.String= clabel; - view(ax,2) - set(h,'edgecolor','none'); -end -end - diff --git a/matlab/Parallel.m b/matlab/Parallel.m deleted file mode 100644 index 1c22402..0000000 --- a/matlab/Parallel.m +++ /dev/null @@ -1,31 +0,0 @@ -clear all -N=[1,2,4,8]; -t=[469.8, 294.1,253.2, 158.5]; - -Speedup=t(1)./t; -Efficiency=Speedup./N*100; -figure -plot(N,Speedup) -xlabel('N') -ylabel('Speed up') - -figure -plot(N,Efficiency) -xlabel('N') -ylabel('Efficiency %') - -N=[ 1, 2, 4, 8, 12, 16, 24]; -t=[617.1, 389.4, 287.2, 211.9, 182.7, 142.4, 132.7]; -Speedup=t(1)./t; -Efficiency=Speedup./N*100; -figure -plot(N,Speedup) -hold on -plot(N,N) -xlabel('N') -ylabel('Speed up') - -figure -plot(N,Efficiency) -xlabel('N') -ylabel('Efficiency %') \ No newline at end of file diff --git a/matlab/Parallel_old.m b/matlab/Parallel_old.m deleted file mode 100644 index 330aefe..0000000 --- a/matlab/Parallel_old.m +++ /dev/null @@ -1,29 +0,0 @@ -clear all -N=[1,2,4,8]; -t=[469.8, 294.1,253.2, 158.5]; - -Speedup=t(1)./t; -Efficiency=Speedup./N*100; -figure -plot(N,Speedup) -xlabel('N') -ylabel('Speed up') - -figure -plot(N,Efficiency) -xlabel('N') -ylabel('Efficiency %') - -N=[1,2,4]; -t=[182.6, 113.2,64.4]; -Speedup=t(1)./t; -Efficiency=Speedup./N*100; -figure -plot(N,Speedup) -xlabel('N') -ylabel('Speed up') - -figure -plot(N,Efficiency) -xlabel('N') -ylabel('Efficiency %') \ No newline at end of file diff --git a/matlab/analyse_espic2D.m b/matlab/analyse_espic2D.m deleted file mode 100644 index 9e961d0..0000000 --- a/matlab/analyse_espic2D.m +++ /dev/null @@ -1,171 +0,0 @@ -% file='stable_13_decoupled_fft.h5'; -file='teststablegauss_13_fft.h5'; -% file='teststable_13_1058400.h5'; -%close all hidden; -if (~exist('M','var')) - M.file=file; -end -M=load_espic2d(file,M,'fields'); - -% M.epot = 0.5*h5read(file,'/data/var0d/epot'); -% M.ekin = h5read(file,'/data/var0d/ekin'); -% M.etot = M.epot+M.ekin; -% M.eerr = M.etot-M.etot(2); -[~, name, ~] = fileparts(M.file); -tmin=2; -tmax=length(M.ekin); -f=figure(); -plot(M.t0d(tmin:tmax),M.ekin(tmin:tmax),'o-',... - M.t0d(tmin:tmax),M.epot(tmin:tmax),'d-',... - M.t0d(tmin:tmax),M.etot(tmin:tmax),'h-',... - M.t0d(tmin:tmax),M.eerr(tmin:tmax),'x--') -legend('E_{kin}', 'E_{pot}', 'E_{tot}','E_{err}') -xlabel('t [s]') -ylabel('Energies [J]') -grid on - -f.PaperOrientation='landscape'; -f.PaperUnits='centimeters'; -f.PaperSize=[15 7]; -print(f,sprintf('%s_Energy',name),'-dpdf','-fillpage') - -f=figure(); -semilogy(M.t0d(tmin:tmax),abs(M.eerr(tmin:tmax)./M.etot(tmin:tmax)),'-') -xlabel('t [s]') -ylabel('|E_{err}/E_{tot}|') -grid on -f.PaperOrientation='landscape'; -f.PaperUnits='centimeters'; -f.PaperSize=[15 7]; -print(f,sprintf('%s_Energyerr',name),'-dpdf','-fillpage') - -figure -[Z,R] = meshgrid (M.zgrid,M.rgrid); -subplot(2,1,1) -contourf(Z,R,M.Br') -xlabel('Z') -ylabel('R') -c = colorbar; -c.Label.String= 'B_r [T]'; -grid on - -subplot(2,1,2) -contourf(Z,R,M.Bz') -xlabel('Z [m]') -ylabel('R [m]') -c = colorbar; -c.Label.String= 'B_z [T]'; -grid on - -[~, name, ~] = fileparts(M.file); -f=figure('NumberTitle', 'off', 'Name', [name,' Bfield']); -contourf(Z,R,M.B',100,'LineColor','none'); -shading flat -colormap('jet') -hold on -Bz=M.Bz'; -Br=M.Br'; -gridstep=4; -quiver(Z(1:gridstep:end,1:gridstep:end),R(1:gridstep:end,1:gridstep:end),... - Bz(1:gridstep:end,1:gridstep:end),Br(1:gridstep:end,1:gridstep:end),'k') -% h=streamslice(Z,R,M.Bz',M.Br'); -% set(h,'Color','w') -xlabel('Z [m]') -ylabel('R [m]') -c = colorbar; -c.Label.String= '|B| [T]'; -f.PaperOrientation='landscape'; -f.PaperUnits='centimeters'; -f.PaperPosition=[0 0 10 6]; -f.PaperSize=[16 10]; -print(f,sprintf('%s_Bfield',name),'-dpdf','-fillpage') - - -[~, name, ~] = fileparts(M.file); -f=figure('NumberTitle', 'off', 'Name', [name,' rAfield']); -subplot(2,1,1) -contour(Z,R,M.Athet'.*R,50); -hold on -xlabel('Z [m]') -ylabel('R [m]') -rectangle('Position',[-.16 4e-3 .32 10e-3],'EdgeColor','r') -subplot(2,1,2) -contour(Z,R,M.Athet'.*R,600); -hold on -xlabel('Z [m]') -ylabel('R [m]') -c = colorbar('SouthOutside'); -c.Label.String= '|rA_\theta| [Tm^2]'; -ylim([4 14]*10^(-3)) -xlim([-0.16 0.16]) -f.PaperOrientation='landscape'; -f.PaperUnits='centimeters'; -f.PaperSize=[14 12]; -print(f,sprintf('%s_fieldlines',name),'-dpdf','-fillpage') - - - -% figure -% ax3=subplot(2,1,1); -% contourf(ax3,M.zgrid,M.rgrid,mean(M.Er(:,:,end-2000:end),3)') -% xlabel(ax3,'Z [m]') -% ylabel(ax3,'R [m]') -% c = colorbar(ax3); -% c.Label.String= 'E_r [V/m]'; -% title(ax3,'Average Radial Electric field') -% grid on -% ax3.Children(1).ZDataSource='data.Er'; -% -% ax4=subplot(2,1,2); -% contourf(ax4,M.zgrid,M.rgrid,mean(M.Ez(:,:,end-2000:end),3)') -% xlabel(ax4,'Z [m]') -% ylabel(ax4,'R [m]') -% c = colorbar(ax4); -% c.Label.String= 'E_z [V/m]'; -% title(ax4,'Average Axial Electric field') -% grid on -% ax4.Children(1).ZDataSource='data.Ez'; - - -f=figure(); -tstudied=0; -legtext=sprintf("t=%2.1f - %2.1f [ns]",M.tpart(end-tstudied)*1e9,M.tpart(end)*1e9); -subplot(1,3,1) -VR=M.VR(:,1); -h1=histogram(VR,20,'BinLimits',[min(VR(:)) max(VR(:))],'DisplayName',sprintf("t=%2.3d [ns]",M.tpart(1)*1e9)); -hold on -VR=mean(M.VR(:,end-tstudied:end),2); -h1=histogram(VR,'BinWidth',h1.BinWidth,'DisplayName',legtext); -ylabel('counts') -xlabel('V_r [m/s]') -legend - -subplot(1,3,2) -VTHET=M.VTHET(:,1); -h1=histogram(VTHET,20,'BinLimits',[min(VTHET(:)) max(VTHET(:))],'DisplayName',sprintf("t=%2.3d [ns]",M.tpart(1)*1e9)); -hold on -VTHET=mean(M.VTHET(:,end-tstudied:end),2); -h1=histogram(VTHET,'BinWidth',h1.BinWidth,'DisplayName',legtext); -ylabel('counts') -xlabel('V_\theta [m/s]') -legend - -subplot(1,3,3) -hold off -VZ=M.VZ(:,1); -h1=histogram(VZ,20,'BinLimits',[min(VZ(:)) max(VZ(:))],'DisplayName',sprintf("t=%2.3d [ns]",M.tpart(1)*1e9)); -hold on -VZ=mean(M.VZ(:,end-tstudied:end),2); -h1=histogram(VZ,'BinWidth',h1.BinWidth,'DisplayName',legtext); -ylabel('counts') -xlabel('V_z [m/s]') -legend -f=gcf; -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); - - - -dispespicFields(M) - -BrillouinRatio=2*M.omepe^2/(M.qe*min(min(M.Bz))/M.me)^2 \ No newline at end of file diff --git a/matlab/analyse_espicfields.m b/matlab/analyse_espicfields.m deleted file mode 100644 index dc84c09..0000000 --- a/matlab/analyse_espicfields.m +++ /dev/null @@ -1,391 +0,0 @@ -%% time extent of plotted variables -% file='teststablegauss_13_traject2.h5'; -% file='unigauss.h5'; -% file='Dav_5e14fine_wr+.h5'; -% file='stablegauss_8e19fine.h5' -% % %file='teststable_Dav1.h5'; -% % %close all hidden; -% if (~exist('M','var')) -% M.file=file; -% end -% M=load_espic2d(file,M,'all'); - -t2dlength=size(M.t2d,1) -fieldstart=max(1,t2dlength-500);%floor(0.95*t2dlength); -fieldend=t2dlength;%23; -deltat=t2dlength-fieldstart; -%[~, rgridend]=min(abs(M.rgrid-0.045)); -rgridend=sum(M.nnr(1:2)); -[~, name, ~] = fileparts(M.file); - -M.displayenergy - - - -%% Radial profile -try - M.displayrprofile([1,fieldstart:fieldend],[],true) -catch -end - -%% -%fieldstart=2300; fieldend=2500; -dens=mean(M.N(:,:,fieldstart:fieldend),3); -geomw=M.geomweight(:,:,1); -geomw(geomw<0)=0; -geomw(geomw>0)=max(max(dens)); -dispdens=dens; -dispdens(geomw<=0)=NaN; -pot=mean(M.pot(:,:,fieldstart:fieldend),3); -brillratio=2*dens*M.me./(M.eps_0*M.B'.^2); -[R,Z]=meshgrid(M.rgrid,M.zgrid); -Rinv=1./R; -Rinv(isnan(Rinv))=0; -VTHET=mean(M.fluidUTHET(:,:,fieldstart:fieldend),3); -omegare=(VTHET.*Rinv'); -maxdens=max(max(dens)); - - -% f=figure(); -% ax3=gca; -% surface(ax3,M.zgrid(1:end-1),M.rgrid(1:end-1),(squeeze(mean(M.Presstens(4,:,:,fieldstart:end),4)))*M.vlight) -% xlabel(ax3,'z [m]') -% ylabel(ax3,'r [m]') -% xlim(ax3,[M.zgrid(1) M.zgrid(end)]) -% ylim(ax3,[M.rgrid(1) M.rgrid(50)]) -% colormap(ax3,'jet') -% c = colorbar(ax3); -% c.Label.String= 'thermal v_\theta [m/s]'; -% %c.Limits=[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]; -% %caxis(ax3,[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]) -% title(ax3,'Azimuthal velocity') -% %set(ax3,'colorscale','log') -% grid(ax3, 'on') -% view(ax3,2) -% f.PaperOrientation='landscape'; -% [~, name, ~] = fileparts(M.file); -% f.PaperUnits='centimeters'; -% papsize=[16 14]; -% f.PaperSize=papsize; -% print(f,sprintf('%sfluid_thermtheta',name),'-dpdf','-fillpage') - -%% Density -M.displaydensity(fieldstart,fieldend); - -%% Fieldswide -f=figure('Name', sprintf('%s fields',name)); -ax1=gca; -h=contourf(ax1,M.zgrid,M.rgrid,dispdens,'Displayname','n_e [m^{-3}]'); -hold on; -%[c1,h]=contour(ax1,M.zgrid,M.rgrid,pot./1e3,5,'m--','ShowText','off','linewidth',1.5,'Displayname','Equipotentials [kV]'); -%clabel(c1,h,'Color','white') -Blines=zeros(size(M.Athet)); -for i=1:length(M.zgrid) - Blines(i,:)=M.Athet(i,:).*M.rgrid'; -end -zindex=floor(length(M.zgrid/2)); -levels=logspace( log10(min(min(Blines(:,2:end)))), log10(max(max(Blines(:,:)))),8); -contour(ax1,M.zgrid,M.rgrid,Blines',real(levels),'r-.','linewidth',1.5,'Displayname','Magnetic field lines'); -[~, hContour]=contourf(ax1,M.zgrid,M.rgrid,geomw,2); -drawnow; -xlim(ax1,[M.zgrid(1) M.zgrid(end)]) -ylim(ax1,[M.rgrid(1) M.rgrid(end)]) -legend({'n_e [m^{-3}]','Magnetic field lines'},'location','southwest') -xlabel(ax1,'z [m]') -ylabel(ax1,'r [m]') -title(ax1,sprintf('Density t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) -c = colorbar(ax1); -c.Label.String= 'n[m^{-3}]'; -view(ax1,2) -%set(h,'edgecolor','none'); -grid on; -hFills=hContour.FacePrims; -[hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' -hFills(1).ColorData = uint8([255;255;255;255]); -for idx = 2 : numel(hFills) - hFills(idx).ColorData(4) = 0; % default=255 -end -%rectangle('position',[M.zgrid(5) M.rgrid(3) M.zgrid(end-5)-M.zgrid(5) (M.rgrid(rgridend)-M.rgrid(1))],'Edgecolor','white','linestyle','--','linewidth',2) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[18 10]; -f.PaperSize=papsize; -print(f,sprintf('%sFieldswide',name),'-dpdf','-fillpage') -savefig(f,sprintf('%sFieldswide',name)) - -%% Fields -f=figure('Name', sprintf('%s fields',name)); -ax1=gca; -h=contourf(ax1,M.zgrid*1000,M.rgrid*1000,dispdens,'Displayname','n_e [m^{-3}]'); -hold on; -pot(M.geomweight(:,:,1)<0)=0; -Blines=zeros(size(M.Athet)); -for i=1:length(M.zgrid) - Blines(i,:)=M.Athet(i,:).*M.rgrid'; -end -zindex=floor(length(M.zgrid/2)); -%levels=logspace( log10(min(min(Blines(:,2:end)))), log10(max(max(Blines(:,:)))),10); -levels=linspace(min(min(Blines(:,2:end))),max(max(Blines(:,:))),10); -[~,h1]=contour(ax1,M.zgrid*1000,M.rgrid*1000,Blines',real(levels),'r-.','linewidth',1.5,'Displayname','Magnetic field lines'); -max(abs(pot(:)))/1e3 -[c1,h2]=contour(ax1,M.zgrid*1000,M.rgrid*1000,pot./1e3,'m--','ShowText','on','linewidth',1.2,'Displayname','Equipotentials [kV]'); -clabel(c1,h2,'Color','white') - -%contour(ax1,M.zgrid*1000,M.rgrid*1000,M.geomweight(:,:,1),[0 0],'w-','linewidth',1.5); - -[c1,hContour]=contourf(ax1,M.zgrid*1000,M.rgrid*1000,geomw); -drawnow; -xlim(ax1,[M.zgrid(1)*1000 M.zgrid(end)*1000]) -if(M.conformgeom) - ylim(ax1,[M.rgrid(1)*1000 M.rgrid(rgridend)*1000]) -else - ylim(ax1,[M.rgrid(1)*1000 M.rgrid(end)*1000]) -end -legend([h1,h2],{'Magnetic field lines','Equipotentials [kV]'},'location','southwest') -xlabel(ax1,'z [mm]') -ylabel(ax1,'r [mm]') -%title(ax1,sprintf('Density t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) -c = colorbar(ax1); -c.Label.String= 'n[m^{-3}]'; -view(ax1,2) -%set(h,'edgecolor','none'); -grid on; -hFills=hContour.FacePrims; -[hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor' -try -hFills(1).ColorData = uint8([150;150;150;255]); -for idx = 2 : numel(hFills) - hFills(idx).ColorData(4) = 0; % default=255 -end -catch -end -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -if M.maxwellsrce.present - rlen=diff(M.maxwellsrce.rlim); - zlen=diff(M.maxwellsrce.zlim); -rectangle('Position',[M.maxwellsrce.zlim(1) M.maxwellsrce.rlim(1) zlen rlen]*1000,'Edgecolor','g','Linewidth',3,'Linestyle','--') -end -%rectangle('Position',[-10 73 44 8],'Edgecolor','g','Linewidth',3,'Linestyle','--') -f.PaperUnits='centimeters'; -papsize=[12 8]; -f.PaperSize=papsize; -rectangle('Position',[M.zgrid(1) M.rgrid(1) M.zgrid(end)-M.zgrid(1) 0.064-M.rgrid(1)]*1000,'FaceColor',[150 150 150]/255) -print(f,sprintf('%sFields',name),'-dpdf','-fillpage') -savefig(f,sprintf('%sFields',name)) - -%% Brillouin -f=figure('Name', sprintf('%s Brillouin',name)); -ax1=gca; -brillratio(geomw<=0)=NaN; -h=surface(ax1,M.zgrid,M.rgrid,brillratio); -set(h,'edgecolor','none'); -xlim(ax1,[M.zgrid(1) M.zgrid(end)]) -if(M.conformgeom) - ylim(ax1,[M.rgrid(1) M.rgrid(rgridend)]) -else - ylim(ax1,[M.rgrid(1) M.rgrid(end)]) -end -xlabel(ax1,'z [m]') -ylabel(ax1,'r [m]') -title(ax1,'Position') -c = colorbar(ax1); -c.Label.String= 'Brillouin Ratio'; -view(ax1,2) -caxis([0 max(1.2,max(brillratio(:)))]) -title(ax1,sprintf('Brillouin Ratio t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%sfluid_Brillouin',name),'-dpdf','-fillpage') -savefig(f,sprintf('%sfluid_Brillouin',name)) - -%% Omegar -f=figure('Name', sprintf('%s Omegar',name)); -ax3=gca; -omegare(geomw<=0)=NaN; -surface(ax3,M.zgrid,M.rgrid,omegare,'edgecolor','None') -xlabel(ax3,'z [m]') -ylabel(ax3,'r [m]') -xlim(ax3,[M.zgrid(1) M.zgrid(end)]) -if(M.conformgeom) - ylim(ax3,[M.rgrid(1) M.rgrid(rgridend)]) -else - ylim(ax3,[M.rgrid(1) M.rgrid(end)]) -end -colormap(ax3,'jet') -c = colorbar(ax3); -c.Label.String= '|\omega_\theta| [1/s]'; -%c.Limits=[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]; -%caxis(ax3,[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]) -title(ax3,sprintf('Azimuthal frequency t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) -%set(ax3,'colorscale','log') -grid(ax3, 'on') -view(ax3,2) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%sfluid_omegar',name),'-dpdf','-fillpage') -savefig(f,sprintf('%sfluid_omegar',name)) - -%% VTHET -f=figure('Name', sprintf('%s Vthet',name)); -ax3=gca; -VTHET(geomw<=0)=NaN; -surface(ax3,M.zgrid,M.rgrid,VTHET,'edgecolor','None') -xlabel(ax3,'z [m]') -ylabel(ax3,'r [m]') -xlim(ax3,[M.zgrid(1) M.zgrid(end)]) -if(M.conformgeom) - ylim(ax3,[M.rgrid(1) M.rgrid(rgridend)]) -else - ylim(ax3,[M.rgrid(1) M.rgrid(end)]) -end -colormap(ax3,'jet') -c = colorbar(ax3); -c.Label.String= '|V_\theta| [m/s]'; -%c.Limits=[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]; -%caxis(ax3,[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]) -title(ax3,sprintf('Azimuthal velocity t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) -%set(ax3,'colorscale','log') -grid(ax3, 'on') -view(ax3,2) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%sfluid_vthet',name),'-dpdf','-fillpage') -savefig(f,sprintf('%sfluid_vthet',name)) - -%% vdrift -f=figure('Name', sprintf('%s V drift',name)); -ax3=gca; -vdrift=(mean(M.Ez(:,:,fieldstart:end),3).*M.Br'-mean(M.Er(:,:,fieldstart:end),3).*M.Bz')./(M.B.^2)'; -vdrift(geomw<=0)=NaN; -v=vdrift; -surface(ax3,M.zgrid,M.rgrid,v,'edgecolor','None') -xlabel(ax3,'z [m]') -ylabel(ax3,'r [m]') -xlim(ax3,[M.zgrid(1) M.zgrid(end)]) -if(M.conformgeom) - ylim(ax3,[M.rgrid(1) M.rgrid(rgridend)]) -else - ylim(ax3,[M.rgrid(1) M.rgrid(end)]) -end -colormap(ax3,'jet') -c = colorbar(ax3); -set(ax3,'zscale','log') -set(ax3,'colorscale','log') -c.Label.String= 'V_{ExB}'; -%c.Limits=[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]; -%caxis(ax3,[min(M.fluidUTHET(:)) max(M.fluidUTHET(:))]) -title(ax3,sprintf('V_{ExB} velocity t=[%1.2g-%1.2g]s n_e=%1.2gm^{-3}',M.t2d(fieldstart),M.t2d(fieldend),double(maxdens))) -%set(ax3,'colorscale','log') -grid(ax3, 'on') -view(ax3,2) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%sfluid_EB',name),'-dpdf','-fillpage') -savefig(f,sprintf('%sfluid_EB',name)) - - -%% HP -if(obj.species(1).R.nt>=2) -taveragestart=max(floor(0.8*size(M.tpart,1)),2); -M.displayHP(taveragestart); -end - -%% VR, VTHET, VZ -M.displayVdistribRThetZ() - -%% Vperp Vpar -M.displayVdistribParPer() - - -%% 0D diagnostics -BrillouinRatioth=2*M.omepe^2/M.omece^2 -BrillouinMax=max(max(brillratio)) -NpartsTrapped=mean(M.npart(end-10:end))*M.msim/M.me -dblengthiter=fieldstart:fieldend; - - -Pr=squeeze(M.Presstens(1,:,:,dblengthiter)); -Pz=squeeze(M.Presstens(6,:,:,dblengthiter)); -enddens=M.N(:,:,dblengthiter); -meanPr=mean(Pr,3); -meanPz=mean(Pz,3); -Tr=Pr./enddens; -Tz=Pz./enddens; -Debye_length=sqrt(abs(min(min(min(mean(Tr(Tr>0)./enddens(Tr>0),3))),min(min(mean(Tz(Tz>0)./enddens(Tz>0),3)))))*M.eps_0/M.qe^2) - - -%% Debye length -f=figure('Name', sprintf('%s Debye',name)); -subplot(2,1,1) -surface(M.zgrid,M.rgrid,sqrt(mean(abs(Tr./enddens*M.eps_0/M.qe^2),3)),'edgecolor','none') -colorbar -f.PaperOrientation='landscape'; -xlabel('z [m]') -ylabel('r [m]') -c = colorbar; -c.Label.String= '\lambda_r [m]'; - -subplot(2,1,2) -surface(M.zgrid,M.rgrid,sqrt(mean(abs(Tz./enddens*M.eps_0/M.qe^2),3)),'edgecolor','none') -colorbar -f.PaperOrientation='landscape'; -xlabel('z [m]') -ylabel('r [m]') -c = colorbar; -c.Label.String= '\lambda_z [m]'; - -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%s_dblength',name),'-dpdf','-fillpage') -savefig(f,sprintf('%s_dblength',name)) - -%% Temperature -f=figure('Name', sprintf('%s Temperature',name)); -ax1=subplot(2,1,1); -title('Radial temperature') -surface(M.zgrid,M.rgrid,mean(Tr,3)/M.qe,'edgecolor','none') -colormap('jet') -c = colorbar; -c.Label.String= 'T_{er} [eV]'; -templimits1=caxis; - -ax2=subplot(2,1,2); -title('Axial tempreature') -surface(M.zgrid,M.rgrid,mean(Tz,3)/M.qe,'edgecolor','none') -colormap('jet') -c = colorbar; -c.Label.String= 'T_{ez} [eV]'; -maxtemp=max([templimits1,caxis]); -caxis(ax1,[0 maxtemp]) -caxis(ax2,[0 maxtemp]) -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -f.PaperUnits='centimeters'; -papsize=[16 14]; -f.PaperSize=papsize; -print(f,sprintf('%s_temp',name),'-dpdf','-fillpage') -savefig(f,sprintf('%s_temp',name)) - - -%% Wells -M.display2Dpotentialwell(t2dlength-1); -M.display2Dpotentialwell(t2dlength-1,false); - - - diff --git a/matlab/analyse_espicparts.m b/matlab/analyse_espicparts.m deleted file mode 100644 index 163a2b3..0000000 --- a/matlab/analyse_espicparts.m +++ /dev/null @@ -1,72 +0,0 @@ -file='teststablegauss_13_traject2.h5'; -%close all hidden; -if (~exist('M','var')) - M.file=file; -end -M=load_espic2d(file,M,'all'); - - -tmin=2; -tmax=length(M.ekin); -figure -plot(M.t0d(tmin:tmax),M.ekin(tmin:tmax),'o-',... - M.t0d(tmin:tmax),M.epot(tmin:tmax),'d-',... - M.t0d(tmin:tmax),M.etot(tmin:tmax),'h-',... - M.t0d(tmin:tmax),M.eerr(tmin:tmax),'x--') -legend('ekin', 'epot', 'etot','eerr') -xlabel('Time [s]') -ylabel('Energies [J]') -grid on - -figure -semilogy(M.t0d(tmin:tmax),abs(M.eerr(tmin:tmax)/M.etot(2)*100),'h-') -xlabel('t [s]') -ylabel('E_{err} %') -xlim([M.t0d(tmin),M.t0d(tmax)]) -grid on - - -% Rlarmor=(M.me*sqrt(M.VR.^2+M.VTHET.^2)/(M.qe*M.B0)); -% Rmax=M.R; -% Rmin=M.R-Rlarmor; -% [Isoutsideuprow,Isoutsideupcol]=find(Rmax-M.rgrid(end)>0); -% [Isoutsidedownrow,Isoutsidedowncol]=find(M.rgrid(1)-Rmin>0); - -%dispespicParts(M) - - -f=figure(); -tstudied=2; -legtext=sprintf("t=%2.1f - %2.1f [ns]",M.tpart(end-tstudied)*1e9,M.tpart(end)*1e9); -subplot(1,2,1) -H=M.H(:,1); -h1=histogram(H,20,'BinLimits',[min(H(:)) max(H(:))],'DisplayName',sprintf("t=%2.3d [ns]",M.tpart(1)*1e9)); -hold on -H=mean(M.H(:,end-tstudied:end),2); -h1=histogram(H,'BinWidth',h1.BinWidth,'DisplayName',legtext); -ylabel('counts') -xlabel('H [J]') -legend - -subplot(1,2,2) -P=M.P(:,1); -h2=histogram(P,20,'BinLimits',[min(P(:)) max(P(:))],'DisplayName',sprintf("t=%2.3d [ns]",M.tpart(1)*1e9)); -hold on -P=mean(M.P(:,end-tstudied:end),2); -histogram(P,'BinWidth',h2.BinWidth,'DisplayName',legtext); -ylabel('counts') -xlabel('P [kg\cdotm^2\cdots^{-1}]') -xlim(h2.BinLimits) -%clear P -%clear H -legend -f.PaperOrientation='landscape'; -[~, name, ~] = fileparts(M.file); -xlim([0.95*h2.BinLimits(1) 1.05*h2.BinLimits(2)]) -print(f,sprintf('%sParts_HP',name),'-dpdf','-fillpage') - - - - - -BrillouinRatio=2*M.omepe^2/M.omece^2 \ No newline at end of file diff --git a/matlab/Blocklength.m b/matlab/helper_classes/Blocklength.m similarity index 100% rename from matlab/Blocklength.m rename to matlab/helper_classes/Blocklength.m diff --git a/matlab/h5Complex.m b/matlab/helper_classes/h5Complex.m similarity index 100% rename from matlab/h5Complex.m rename to matlab/helper_classes/h5Complex.m diff --git a/matlab/h5Complex_ll.m b/matlab/helper_classes/h5Complex_ll.m similarity index 100% rename from matlab/h5Complex_ll.m rename to matlab/helper_classes/h5Complex_ll.m diff --git a/matlab/guiParts.m b/matlab/helper_functions/guiParts.m similarity index 100% rename from matlab/guiParts.m rename to matlab/helper_functions/guiParts.m diff --git a/matlab/rbfinder.m b/matlab/helper_functions/rbfinder.m similarity index 100% rename from matlab/rbfinder.m rename to matlab/helper_functions/rbfinder.m diff --git a/matlab/rbfindercoax.m b/matlab/helper_functions/rbfindercoax.m similarity index 100% rename from matlab/rbfindercoax.m rename to matlab/helper_functions/rbfindercoax.m diff --git a/matlab/sscalling.m b/matlab/sscalling.m index d4c2766..6ed207b 100644 --- a/matlab/sscalling.m +++ b/matlab/sscalling.m @@ -1,47 +1,47 @@ %% Strong scaling for a collisional system with 10M electrons using FENNECS % the geometry is a coaxial configuration of constant radius Ncores = [ 1 2 4 8 16];% 36 72]; time = [ (10890+10150)/2 6402 3799 2366 2128];% 1665 1155]; f=figure; plot(Ncores, time(1)*Ncores(1)./time,'r-','displayname','Measured','linewidth',1.5) hold on plot(Ncores,Ncores,'k--','displayname','Ideal','linewidth',1.5) ylabel('t_1/t_N') yyaxis right plot(Ncores,time(1).*Ncores(1)./(time.*Ncores),'bx:','linewidth',1.5,'markersize',12,'displayname','Efficiency') xlabel('N_{cores}') ylabel('Efficiency') set(gca,'fontsize',12) grid on legend('location','southeast') ax = gca; ax.YAxis(1).Color = 'k'; ax.YAxis(2).Color = 'b'; ylim([0 1]) M.savegraph(f,'sscalingOMP'); %% MPI with 4 cores per task Ntasks = [ 1 2 4 8]; time = [3799 1533 976 654]; f=figure; plot(Ntasks, time(1)./time,'r-','displayname','Measured','linewidth',1.5) hold on -ylabel('t_1/t_N') +ylabel('Speedup [-]') plot(Ntasks,Ntasks,'k--','displayname','Ideal','linewidth',1.5) yyaxis right plot(Ntasks,time(1).*Ntasks(1)./(time.*Ntasks),'bx:','linewidth',1.5,'markersize',12,'displayname','Efficiency') -xlabel('N_{tasks}') -ylabel('Efficiency') +xlabel('N_{tasks} [-]') +ylabel('Parallel efficiency [-]') set(gca,'fontsize',12) grid on legend('location','southeast') ylim([0 2]) xlim([0 9]) ax = gca; ax.YAxis(1).Color = 'k'; ax.YAxis(2).Color = 'b'; M.savegraph(f,'sscalingMPI'); diff --git a/matlab/stable_13_finefluid_dens.eps b/matlab/stable_13_finefluid_dens.eps deleted file mode 100644 index 0933da9..0000000 --- a/matlab/stable_13_finefluid_dens.eps +++ /dev/null @@ -1,8391 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%Produced by poppler pdftops version: 22.01.0 (http://poppler.freedesktop.org) -%%Creator: \050MATLAB, The Mathworks, Inc. Version 9.8.0.1451342 \\(R2020a\\) Update 5. Operating System: Linux) -%%LanguageLevel: 2 -%%DocumentSuppliedResources: (atend) -%%BoundingBox: 0 0 1157 647 -%%HiResBoundingBox: 0 0 1157 647 -%%DocumentSuppliedResources: (atend) -%%EndComments -%%BeginProlog -%%BeginResource: procset xpdf 3.00 0 -%%Copyright: Copyright 1996-2011 Glyph & Cog, LLC -/xpdf 75 dict def xpdf begin -% PDF special state -/pdfDictSize 15 def -/pdfSetup { - /setpagedevice where { - pop 2 dict begin - /Policies 1 dict dup begin /PageSize 6 def end def - { /Duplex true def } if - currentdict end setpagedevice - } { - pop - } ifelse -} def -/pdfSetupPaper { - % Change paper size, but only if different from previous paper size otherwise - % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size - % so we use the same when checking if the size changes. - /setpagedevice where { - pop currentpagedevice - /PageSize known { - 2 copy - currentpagedevice /PageSize get aload pop - exch 4 1 roll - sub abs 5 gt - 3 1 roll - sub abs 5 gt - or - } { - true - } ifelse - { - 2 array astore - 2 dict begin - /PageSize exch def - /ImagingBBox null def - currentdict end - setpagedevice - } { - pop pop - } ifelse - } { - pop - } ifelse -} def -/pdfStartPage { - pdfDictSize dict begin - /pdfFillCS [] def - /pdfFillXform {} def - /pdfStrokeCS [] def - /pdfStrokeXform {} def - /pdfFill [0] def - /pdfStroke [0] def - /pdfFillOP false def - /pdfStrokeOP false def - /pdfLastFill false def - /pdfLastStroke false def - /pdfTextMat [1 0 0 1 0 0] def - /pdfFontSize 0 def - /pdfCharSpacing 0 def - /pdfTextRender 0 def - /pdfPatternCS false def - /pdfTextRise 0 def - /pdfWordSpacing 0 def - /pdfHorizScaling 1 def - /pdfTextClipPath [] def -} def -/pdfEndPage { end } def -% PDF color state -/cs { /pdfFillXform exch def dup /pdfFillCS exch def - setcolorspace } def -/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def - setcolorspace } def -/sc { pdfLastFill not { pdfFillCS setcolorspace } if - dup /pdfFill exch def aload pop pdfFillXform setcolor - /pdfLastFill true def /pdfLastStroke false def } def -/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if - dup /pdfStroke exch def aload pop pdfStrokeXform setcolor - /pdfLastStroke true def /pdfLastFill false def } def -/op { /pdfFillOP exch def - pdfLastFill { pdfFillOP setoverprint } if } def -/OP { /pdfStrokeOP exch def - pdfLastStroke { pdfStrokeOP setoverprint } if } def -/fCol { - pdfLastFill not { - pdfFillCS setcolorspace - pdfFill aload pop pdfFillXform setcolor - pdfFillOP setoverprint - /pdfLastFill true def /pdfLastStroke false def - } if -} def -/sCol { - pdfLastStroke not { - pdfStrokeCS setcolorspace - pdfStroke aload pop pdfStrokeXform setcolor - pdfStrokeOP setoverprint - /pdfLastStroke true def /pdfLastFill false def - } if -} def -% build a font -/pdfMakeFont { - 4 3 roll findfont - 4 2 roll matrix scale makefont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /Encoding exch def - currentdict - end - definefont pop -} def -/pdfMakeFont16 { - exch findfont - dup length dict begin - { 1 index /FID ne { def } { pop pop } ifelse } forall - /WMode exch def - currentdict - end - definefont pop -} def -% graphics state operators -/q { gsave pdfDictSize dict begin } def -/Q { - end grestore - /pdfLastFill where { - pop - pdfLastFill { - pdfFillOP setoverprint - } { - pdfStrokeOP setoverprint - } ifelse - } if -} def -/cm { concat } def -/d { setdash } def -/i { setflat } def -/j { setlinejoin } def -/J { setlinecap } def -/M { setmiterlimit } def -/w { setlinewidth } def -% path segment operators -/m { moveto } def -/l { lineto } def -/c { curveto } def -/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } def -/h { closepath } def -% path painting operators -/S { sCol stroke } def -/Sf { fCol stroke } def -/f { fCol fill } def -/f* { fCol eofill } def -% clipping operators -/W { clip newpath } def -/W* { eoclip newpath } def -/Ws { strokepath clip newpath } def -% text state operators -/Tc { /pdfCharSpacing exch def } def -/Tf { dup /pdfFontSize exch def - dup pdfHorizScaling mul exch matrix scale - pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put - exch findfont exch makefont setfont } def -/Tr { /pdfTextRender exch def } def -/Tp { /pdfPatternCS exch def } def -/Ts { /pdfTextRise exch def } def -/Tw { /pdfWordSpacing exch def } def -/Tz { /pdfHorizScaling exch def } def -% text positioning operators -/Td { pdfTextMat transform moveto } def -/Tm { /pdfTextMat exch def } def -% text string operators -/xyshow where { - pop - /xyshow2 { - dup length array - 0 2 2 index length 1 sub { - 2 index 1 index 2 copy get 3 1 roll 1 add get - pdfTextMat dtransform - 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put - } for - exch pop - xyshow - } def -}{ - /xyshow2 { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval show moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval show moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/cshow where { - pop - /xycp { - 0 3 2 roll - { - pop pop currentpoint 3 2 roll - 1 string dup 0 4 3 roll put false charpath moveto - 2 copy get 2 index 2 index 1 add get - pdfTextMat dtransform rmoveto - 2 add - } exch cshow - pop pop - } def -}{ - /xycp { - currentfont /FontType get 0 eq { - 0 2 3 index length 1 sub { - currentpoint 4 index 3 index 2 getinterval false charpath moveto - 2 copy get 2 index 3 2 roll 1 add get - pdfTextMat dtransform rmoveto - } for - } { - 0 1 3 index length 1 sub { - currentpoint 4 index 3 index 1 getinterval false charpath moveto - 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get - pdfTextMat dtransform rmoveto - } for - } ifelse - pop pop - } def -} ifelse -/Tj { - fCol - 0 pdfTextRise pdfTextMat dtransform rmoveto - currentpoint 4 2 roll - pdfTextRender 1 and 0 eq { - 2 copy xyshow2 - } if - pdfTextRender 3 and dup 1 eq exch 2 eq or { - 3 index 3 index moveto - 2 copy - currentfont /FontType get 3 eq { fCol } { sCol } ifelse - xycp currentpoint stroke moveto - } if - pdfTextRender 4 and 0 ne { - 4 2 roll moveto xycp - /pdfTextClipPath [ pdfTextClipPath aload pop - {/moveto cvx} - {/lineto cvx} - {/curveto cvx} - {/closepath cvx} - pathforall ] def - currentpoint newpath moveto - } { - pop pop pop pop - } ifelse - 0 pdfTextRise neg pdfTextMat dtransform rmoveto -} def -/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0 - pdfTextMat dtransform rmoveto } def -/TJmV { 0.001 mul pdfFontSize mul neg 0 exch - pdfTextMat dtransform rmoveto } def -/Tclip { pdfTextClipPath cvx exec clip newpath - /pdfTextClipPath [] def } def -/Tclip* { pdfTextClipPath cvx exec eoclip newpath - /pdfTextClipPath [] def } def -% Level 2/3 image operators -/pdfImBuf 100 string def -/pdfImStr { - 2 copy exch length lt { - 2 copy get exch 1 add exch - } { - () - } ifelse -} def -/skipEOD { - { currentfile pdfImBuf readline - not { pop exit } if - (%-EOD-) eq { exit } if } loop -} def -/pdfIm { image skipEOD } def -/pdfImM { fCol imagemask skipEOD } def -/pr { 2 index 2 index 3 2 roll putinterval 4 add } def -/pdfImClip { - gsave - 0 2 4 index length 1 sub { - dup 4 index exch 2 copy - get 5 index div put - 1 add 3 index exch 2 copy - get 3 index div put - } for - pop pop rectclip -} def -/pdfImClipEnd { grestore } def -% shading operators -/colordelta { - false 0 1 3 index length 1 sub { - dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt { - pop true - } if - } for - exch pop exch pop -} def -/funcCol { func n array astore } def -/funcSH { - dup 0 eq { - true - } { - dup 6 eq { - false - } { - 4 index 4 index funcCol dup - 6 index 4 index funcCol dup - 3 1 roll colordelta 3 1 roll - 5 index 5 index funcCol dup - 3 1 roll colordelta 3 1 roll - 6 index 8 index funcCol dup - 3 1 roll colordelta 3 1 roll - colordelta or or or - } ifelse - } ifelse - { - 1 add - 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch - 6 index 6 index 4 index 4 index 4 index funcSH - 2 index 6 index 6 index 4 index 4 index funcSH - 6 index 2 index 4 index 6 index 4 index funcSH - 5 3 roll 3 2 roll funcSH pop pop - } { - pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul - funcCol sc - dup 4 index exch mat transform m - 3 index 3 index mat transform l - 1 index 3 index mat transform l - mat transform l pop pop h f* - } ifelse -} def -/axialCol { - dup 0 lt { - pop t0 - } { - dup 1 gt { - pop t1 - } { - dt mul t0 add - } ifelse - } ifelse - func n array astore -} def -/axialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index axialCol 2 index axialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index axialSH - exch 3 2 roll axialSH - } { - pop 2 copy add 0.5 mul - axialCol sc - exch dup dx mul x0 add exch dy mul y0 add - 3 2 roll dup dx mul x0 add exch dy mul y0 add - dx abs dy abs ge { - 2 copy yMin sub dy mul dx div add yMin m - yMax sub dy mul dx div add yMax l - 2 copy yMax sub dy mul dx div add yMax l - yMin sub dy mul dx div add yMin l - h f* - } { - exch 2 copy xMin sub dx mul dy div add xMin exch m - xMax sub dx mul dy div add xMax exch l - exch 2 copy xMax sub dx mul dy div add xMax exch l - xMin sub dx mul dy div add xMin exch l - h f* - } ifelse - } ifelse -} def -/radialCol { - dup t0 lt { - pop t0 - } { - dup t1 gt { - pop t1 - } if - } ifelse - func n array astore -} def -/radialSH { - dup 0 eq { - true - } { - dup 8 eq { - false - } { - 2 index dt mul t0 add radialCol - 2 index dt mul t0 add radialCol colordelta - } ifelse - } ifelse - { - 1 add 3 1 roll 2 copy add 0.5 mul - dup 4 3 roll exch 4 index radialSH - exch 3 2 roll radialSH - } { - pop 2 copy add 0.5 mul dt mul t0 add - radialCol sc - encl { - exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 0 360 arc h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - 360 0 arcn h f - } { - 2 copy - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arcn - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arcn h - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a1 a2 arc - dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add - a2 a1 arc h f - } ifelse - } ifelse -} def -end -%%EndResource -%%EndProlog -%%BeginSetup -xpdf begin -%%BeginResource: font YILPYX+Helvetica -%!FontType1-1.0: YILPYX+Helvetica -12 dict begin -/FontInfo 10 dict dup begin -/Notice (\(URW\)++,Copyright 2014 by \(URW\)++ Design & Development) readonly def -/Copyright (Copyright \(URW\)++,Copyright 2014 by \(URW\)++ Design & Develo\ -pment) readonly def -/FullName (Nimbus Sans) readonly def -/FamilyName (Nimbus Sans) readonly def -/isFixedPitch false def -/ItalicAngle 0 def -/UnderlinePosition 0 def -/UnderlineThickness 0 def -end readonly def -/FontName /YILPYX+Helvetica def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/FontBBox [0 -212 762 729] readonly def -/StrokeWidth 0 def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 32 /space put -dup 45 /hyphen put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 54 /six put -dup 56 /eight put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 109 /m put -dup 114 /r put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -5AA4F71255501637F1A431BAB555283D093E1B588B45B0281559110D21315C62 -BD638C6B34BA54AA75227715D9947EBCD51A104CAEA657499E94138F5645BF68 -368BB1B1EC8E4776F067FFF2CE9B89FB7E63A7DB304498C1036D399C47A4CB79 -BD517EDB02BEB90195FD7DDAF3E839BCE2DB156D9337DBB2305A465B3E0FFB97 -1985C79DC71C47E26F9F0F042B2CDEE97B679358059256FB93D662D43C7ECB5B -1A564DFCECB963478373C69F52172F071E0AA6082A3E10D9E1CE2851CFA210EE -7BD5FCB1AAE15E89D1FB339D587D218B89C18A32F47C7451A80CB1FC07CF5EF6 -FB39B30D1F8747CF302EAFC179F06E5D11CA91B74F4900A8E3BB60AE146088CD -80855E68DF6050B060DA60DDB63DE453ABB4DC3977B973C6F2F30983D64B5A78 -903AEDDF9961E7E49B297C93BE291DCD3CFAFD71AE4403CD6B8146DDC3F3E6C5 -305E5E77618A5209F83961088A67FE0F6C76C9BB8E9FE5F3A15F6A14201362BA -DA28D8AB95BFE9411488486800535F51ED8857E5B4657E1A22A993D6E39E0C05 -8F847FDDE9EE6EF999A2BBC3786D00BA61D497321963753826C5A2AA13E59E95 -0827AB2350DF03F1D5ADE57D72371C380BB04DD49614DD588EBFC73E69BEE8B4 -4AD1A4536092D5990DA6B42A555ABF1287765466BB9C7DEBCF3C51F4C05B733F -FDBDAC7BCF218EDCE5B73C40D9ABA9213275F6CEC691E89E7933FDA53CA897C9 -8C3A29EA809AD8CC0EA043182228D1F84CB145D03CF4D239851835B81270785E -C379602F3401C3301D544258E1CBC581F23BB7281C5586FDF0B390217F93AFE3 -81D3E4FD43AF5C1A3B3DB18976DD516A6CCABE466DFAF50089C679D498F87DA2 -429D594578A2E63A8493C83EC5A5EE5928CAF5E1463C684C3B47231802531B87 -A8ADE932370D13072B69E79E20C64406F5DD97BBDAB9B8CECFAD14E9C75F7CFE -92B58FCF59D6B732DE09834E07A43189662E4EE2FFDCA8B2507E115525AD81FD -18BB12B04D19EDC29A6D03E88F4B60BBC321CAD7B8033F1DBCD298043C9DED69 -FD96883573B6B6DCD87325E04E4B8C28728C1C7EC77FFDC3BC0ACD27FBD7B31B -3AF6C10D4575ACD8B0C3A48ACA7CFFF27AD7874D82983828BABB61EE37446256 -A6A65C2984B6D225D322B677BBFADBDC5C01B002E46CAB6842ECF664FDCD6036 -38A3F8BD6004359FE36263825ECFAA476C6880F9C76191EA7A47E62491264B4D -B77B65569133D93261F2920A33EACDCA391D2598D34BC6D17B98C8603BBAF1E9 -6C29EC6B16434E8832FFD6494E1D8E54D4988DC6A66493CB77622DE69E432679 -55EBAABF7A5C02E77F77698B99FBCC8BF705C6A6F56A866EF7BA9061B54B4A76 -B6E20EDFF934E830C2637D92BCC651063B7582F8F62B402985C05F189F5640D5 -A6D6D0BFE8BCA2024E1CDF48A6A619AE1593647D86FE456420FE01901AF39EFD -4F363D06F1C67B465B7A58EBBD7AE09E38F3191990135C9C3E6538A2511B0FA0 -B532A1DC540E538D59766E6208D9FE0CB140DF06475FD08398178274907E3A23 -C1188B81CD4C678912A78777B8DA3ABB21E60B0805E70FD0C1E6A47BA476A757 -8FEF40286152787E38132B7E511CC78BA347442399D2FCD0DE2DEC94A4C5708B -C326BC9C24607075D9D43D771CEFF0A2306678C4CB4DD6539DDAB9B5371CEF8C -3B3D72E31CA1FC3FDDE66446DB59E9687279619461468F826700B3BB762733D6 -1D7292B26A08DAD194BE9F1BFCDA1AAC0C48C6F0B3BCC087DB664F9A9EECD711 -502CD678C41199D9813B951CB5586CD9AE177BE34650381EDFE5A9DA2FDA56DB -DA8F7D1F10B7C93BA36BA456A72AC9CC75C290ACF0D492537E2DA3FD363589B2 -538E6615B75413B3350B5A5C1F2A67422F9342F494FAEA8C19E2D16DC370BF73 -EB2FF6A332C3038B97974FA709C946174105758121CF7F8775826BBB593816CF -41852E2DE5F8C9E6D759619C12EED574390C282E78E543BC5AD7BC66D3EBDD1A -CBBE8C2824ACEF7744330E1835F273E5AF0C3A62689B474E636E6D8D9790A9AD -13BD33540783F9FD695728B445A5F65DACEF17B686001BDF1BD6471FB1BD2E83 -52DFEB55F84F74095C6F77FFB53CFB57C9D53D08D343B752700B1FA13E707EC1 -CD708B98A0E06F5ED20EF0D09ACA8B7FD8EE3559989BA1A4288560F58189312A -59518A3D3AE2B90E9E8BA8CEFBF9B39013C2E08DB1DEF07F230C14E9F27A0AFE -8E7036E69DFC2274BAC3CA04402D1B75491F2C8CB3978983B157C124CC71121A -05328D629D7BAC784FE0A3280D82AF1F02B3C18B9E07D25727C0364531F8191B -4A0A6612EF1EF48528215D45131CBFFC5C7614B51A3DD29FC63EFC991F4A4749 -FB842AD14A14125218102AE7D4F3D029CF83058F1BB0BCE940BBB35A56989C17 -01F9FA60B278FC800CB91D5744495443E6A9A2EB98DB1790E102EED5B260BAD1 -3CE81268B0166973678634CA5B2EEC84B6F8018BB45C132DED2C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndResource -/F7_0 /YILPYX+Helvetica 1 1 -[ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef - /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle - /parenleft/parenright/asterisk/plus/comma/hyphen/period/slash - /zero/one/two/three/four/five/six/seven - /eight/nine/colon/semicolon/less/equal/greater/question - /at/A/B/C/D/E/F/G - /H/I/J/K/L/M/N/O - /P/Q/R/S/T/U/V/W - /X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore - /grave/a/b/c/d/e/f/g - /h/i/j/k/l/m/n/o - /p/q/r/s/t/u/v/w - /x/y/z/braceleft/bar/braceright/asciitilde/bullet - /Euro/bullet/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl - /circumflex/perthousand/Scaron/guilsinglleft/OE/bullet/Zcaron/bullet - /bullet/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash - /tilde/trademark/scaron/guilsinglright/oe/bullet/zcaron/Ydieresis - /space/exclamdown/cent/sterling/currency/yen/brokenbar/section - /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron - /degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered - /cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown - /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla - /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis - /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply - /Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls - /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla - /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis - /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide - /oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] -pdfMakeFont -%%EndSetup -pdfStartPage -%%EndPageSetup -[] 0 d -1 i -0 j -0 J -10 M -1 w -/DeviceGray {} cs -[0] sc -/DeviceGray {} CS -[0] SC -false op -false OP -{} settransfer -0 0 1157 647 re -W -q -q -[0.1 0 0 0.1 0 0] cm -/DeviceGray {} cs -[1] sc --1490 -470 14400 7320 re -f --1490 -470 14400 7320 re -f -385 332.5 m -11545 332.5 l -11545 6302.5 l -385 6302.5 l -385 332.5 l -h -385 351.273 m -385 332.5 l -11545 332.5 l -11545 6302.5 l -11457.8 6302.5 l -11370.6 6302.5 l -11283.4 6302.5 l -11196.3 6302.5 l -11109.1 6302.5 l -11021.9 6302.5 l -10934.7 6302.5 l -10847.5 6302.5 l -10760.3 6302.5 l -10673.1 6302.5 l -10585.9 6302.5 l -10498.8 6302.5 l -10411.6 6302.5 l -10324.4 6302.5 l -10237.2 6302.5 l -10150 6302.5 l -10062.8 6302.5 l -9975.63 6302.5 l -9888.44 6302.5 l -9801.25 6302.5 l -9714.06 6302.5 l -9626.88 6302.5 l -9539.69 6302.5 l -9452.5 6302.5 l -9365.31 6302.5 l -9278.13 6302.5 l -9190.94 6302.5 l -9103.75 6302.5 l -9016.56 6302.5 l -8929.38 6302.5 l -8842.19 6302.5 l -8755 6302.5 l -8667.81 6302.5 l -8580.63 6302.5 l -8493.44 6302.5 l -8406.25 6302.5 l -8319.06 6302.5 l -8231.88 6302.5 l -8144.69 6302.5 l -8057.5 6302.5 l -7970.31 6302.5 l -7883.13 6302.5 l -7795.94 6302.5 l -7708.75 6302.5 l -7621.56 6302.5 l -7534.38 6302.5 l -7447.19 6302.5 l -7360 6302.5 l -7272.81 6302.5 l -7185.63 6302.5 l -7098.44 6302.5 l -7011.25 6302.5 l -6924.06 6302.5 l -6836.88 6302.5 l -6749.69 6302.5 l -6662.5 6302.5 l -6575.31 6302.5 l -6488.13 6302.5 l -6400.94 6302.5 l -6313.75 6302.5 l -6226.56 6302.5 l -6139.38 6302.5 l -6052.19 6302.5 l -5965 6302.5 l -5877.81 6302.5 l -5790.63 6302.5 l -5703.44 6302.5 l -5616.25 6302.5 l -5529.06 6302.5 l -5441.88 6302.5 l -5354.69 6302.5 l -5267.5 6302.5 l -5180.31 6302.5 l -5093.13 6302.5 l -5005.94 6302.5 l -4918.75 6302.5 l -4831.56 6302.5 l -4744.38 6302.5 l -4657.19 6302.5 l -4570 6302.5 l -4482.81 6302.5 l -4395.63 6302.5 l -4308.44 6302.5 l -4221.25 6302.5 l -4134.06 6302.5 l -4046.88 6302.5 l -3959.69 6302.5 l -3872.5 6302.5 l -3785.31 6302.5 l -3698.13 6302.5 l -3610.94 6302.5 l -3523.75 6302.5 l -3436.56 6302.5 l -3349.38 6302.5 l -3262.19 6302.5 l -3175 6302.5 l -3087.81 6302.5 l -3000.63 6302.5 l -2913.44 6302.5 l -2826.25 6302.5 l -2739.06 6302.5 l -2651.88 6302.5 l -2564.69 6302.5 l -2477.5 6302.5 l -2390.31 6302.5 l -2303.13 6302.5 l -2215.94 6302.5 l -2128.75 6302.5 l -2041.56 6302.5 l -1954.38 6302.5 l -1867.19 6302.5 l -1780 6302.5 l -1692.81 6302.5 l -1605.63 6302.5 l -1518.44 6302.5 l -1431.25 6302.5 l -1344.06 6302.5 l -1256.88 6302.5 l -1169.69 6302.5 l -1082.5 6302.5 l -995.313 6302.5 l -908.125 6302.5 l -820.938 6302.5 l -733.75 6302.5 l -646.563 6302.5 l -559.375 6302.5 l -472.188 6302.5 l -385 6302.5 l -385 6113.52 l -385 5924.52 l -385 5735.54 l -385 5546.55 l -385 5357.56 l -385 5168.57 l -385 4979.59 l -385 4790.6 l -385 4601.61 l -385 4412.63 l -385 4223.64 l -385 4034.65 l -385 3845.66 l -385 3656.67 l -385 3467.69 l -385 3278.7 l -385 3089.72 l -385 2900.73 l -385 2711.74 l -385 2522.75 l -385 2333.76 l -385 2144.78 l -385 1955.79 l -385 1766.8 l -385 1577.82 l -385 1388.83 l -385 1199.84 l -385 1010.85 l -385 821.867 l -385 632.875 l -385 630.063 l -385 627.242 l -385 624.43 l -385 621.609 l -385 618.797 l -385 615.977 l -385 613.164 l -385 610.352 l -385 607.531 l -385 604.719 l -385 601.898 l -385 599.086 l -385 596.27 l -385 593.457 l -385 590.637 l -385 587.824 l -385 585.004 l -385 582.191 l -385 579.371 l -385 576.559 l -385 573.738 l -385 570.926 l -385 568.105 l -385 565.293 l -385 562.48 l -385 559.66 l -385 556.848 l -385 554.027 l -385 551.215 l -385 548.395 l -385 545.582 l -385 542.762 l -385 539.949 l -385 537.129 l -385 534.316 l -385 531.496 l -385 528.684 l -385 525.863 l -385 523.051 l -385 520.234 l -385 501.461 l -385 482.688 l -385 463.914 l -385 445.145 l -385 426.371 l -385 407.598 l -385 388.816 l -385 370.047 l -385 351.273 l -h -4221.25 554.973 m -4158.3 556.848 l -4134.06 558.781 l -4117.07 559.66 l -4095.82 562.48 l -4078.93 565.293 l -4068.83 568.105 l -4067.99 570.926 l -4074.19 573.738 l -4082.63 576.559 l -4101.32 579.371 l -4134.06 580.938 l -4152.66 582.191 l -4221.25 584.246 l -4308.44 584.934 l -4323.57 585.004 l -4395.63 586.016 l -4482.81 586.871 l -4570 587.523 l -4610.96 587.824 l -4657.19 588.582 l -4744.38 589.613 l -4831.56 590.313 l -4875.68 590.637 l -4918.75 591.289 l -5005.94 592.254 l -5093.13 592.895 l -5180.31 593.379 l -5192.97 593.457 l -5267.5 594.309 l -5354.69 594.977 l -5441.88 595.43 l -5529.06 595.758 l -5616.25 596.004 l -5703.44 596.191 l -5754.84 596.27 l -5790.63 596.418 l -5877.81 596.629 l -5965 596.695 l -6052.19 596.629 l -6139.38 596.418 l -6175.16 596.27 l -6226.56 596.191 l -6313.75 596.004 l -6400.94 595.758 l -6488.13 595.43 l -6575.31 594.977 l -6662.5 594.309 l -6737.01 593.457 l -6749.69 593.379 l -6836.88 592.895 l -6924.06 592.254 l -7011.25 591.289 l -7054.23 590.637 l -7098.44 590.313 l -7185.63 589.613 l -7272.81 588.582 l -7319.08 587.824 l -7360 587.523 l -7447.19 586.871 l -7534.38 586.016 l -7606.63 585.004 l -7621.56 584.934 l -7708.75 584.254 l -7777.41 582.191 l -7795.94 580.938 l -7828.72 579.371 l -7847.39 576.559 l -7855.82 573.738 l -7862 570.926 l -7861.16 568.105 l -7851.06 565.293 l -7834.16 562.48 l -7812.91 559.66 l -7795.94 558.781 l -7771.68 556.848 l -7708.75 554.973 l -7621.56 554.363 l -7534.38 554.336 l -7447.19 554.426 l -7360 554.523 l -7272.81 554.582 l -7185.63 554.566 l -7098.44 554.484 l -7011.25 554.379 l -6924.06 554.297 l -6836.88 554.246 l -6749.69 554.23 l -6662.5 554.254 l -6575.31 554.305 l -6488.13 554.371 l -6400.94 554.449 l -6313.75 554.516 l -6226.56 554.574 l -6139.38 554.621 l -6052.19 554.648 l -5965 554.656 l -5877.81 554.648 l -5790.63 554.621 l -5703.44 554.574 l -5616.25 554.516 l -5529.06 554.449 l -5441.88 554.371 l -5354.69 554.305 l -5267.5 554.254 l -5180.31 554.23 l -5093.13 554.246 l -5005.94 554.297 l -4918.75 554.379 l -4831.56 554.484 l -4744.38 554.566 l -4657.19 554.582 l -4570 554.523 l -4482.81 554.426 l -4395.63 554.336 l -4308.44 554.363 l -f -/DeviceRGB {} cs -[1 1 0.875] sc -4158.3 556.848 m -4221.25 554.973 l -4308.44 554.363 l -4395.63 554.336 l -4482.81 554.426 l -4570 554.523 l -4657.19 554.582 l -4744.38 554.566 l -4831.56 554.484 l -4918.75 554.379 l -5005.94 554.297 l -5093.13 554.246 l -5180.31 554.23 l -5267.5 554.254 l -5354.69 554.305 l -5441.88 554.371 l -5529.06 554.449 l -5616.25 554.516 l -5703.44 554.574 l -5790.63 554.621 l -5877.81 554.648 l -5965 554.656 l -6052.19 554.648 l -6139.38 554.621 l -6226.56 554.574 l -6313.75 554.516 l -6400.94 554.449 l -6488.13 554.371 l -6575.31 554.305 l -6662.5 554.254 l -6749.69 554.23 l -6836.88 554.246 l -6924.06 554.297 l -7011.25 554.379 l -7098.44 554.484 l -7185.63 554.566 l -7272.81 554.582 l -7360 554.523 l -7447.19 554.426 l -7534.38 554.336 l -7621.56 554.363 l -7708.75 554.973 l -7771.68 556.848 l -7795.94 558.781 l -7812.91 559.66 l -7834.16 562.48 l -7851.06 565.293 l -7861.16 568.105 l -7862 570.926 l -7855.82 573.738 l -7847.39 576.559 l -7828.72 579.371 l -7795.94 580.938 l -7777.41 582.191 l -7708.75 584.254 l -7621.56 584.934 l -7606.63 585.004 l -7534.38 586.016 l -7447.19 586.871 l -7360 587.523 l -7319.08 587.824 l -7272.81 588.582 l -7185.63 589.613 l -7098.44 590.313 l -7054.23 590.637 l -7011.25 591.289 l -6924.06 592.254 l -6836.88 592.895 l -6749.69 593.379 l -6737.01 593.457 l -6662.5 594.309 l -6575.31 594.977 l -6488.13 595.43 l -6400.94 595.758 l -6313.75 596.004 l -6226.56 596.191 l -6175.16 596.27 l -6139.38 596.418 l -6052.19 596.629 l -5965 596.695 l -5877.81 596.629 l -5790.63 596.418 l -5754.84 596.27 l -5703.44 596.191 l -5616.25 596.004 l -5529.06 595.758 l -5441.88 595.43 l -5354.69 594.977 l -5267.5 594.309 l -5192.97 593.457 l -5180.31 593.379 l -5093.13 592.895 l -5005.94 592.254 l -4918.75 591.289 l -4875.68 590.637 l -4831.56 590.313 l -4744.38 589.613 l -4657.19 588.582 l -4610.96 587.824 l -4570 587.523 l -4482.81 586.871 l -4395.63 586.016 l -4323.57 585.004 l -4308.44 584.934 l -4221.25 584.246 l -4152.66 582.191 l -4134.06 580.938 l -4101.32 579.371 l -4082.63 576.559 l -4074.19 573.738 l -4067.99 570.926 l -4068.83 568.105 l -4078.93 565.293 l -4095.82 562.48 l -4117.07 559.66 l -4134.06 558.781 l -4158.3 556.848 l -h -4221.25 556.434 m -4207.54 556.848 l -4149.79 559.66 l -4138.42 562.48 l -4134.06 563.59 l -4116.7 565.293 l -4096.51 568.105 l -4094.82 570.926 l -4107.23 573.738 l -4124.09 576.559 l -4134.06 577.523 l -4141.37 579.371 l -4195.43 582.191 l -4221.25 582.965 l -4308.44 584.238 l -4395.63 584.688 l -4455.06 585.004 l -4482.81 585.379 l -4570 586.391 l -4657.19 587.164 l -4737.11 587.824 l -4744.38 587.93 l -4831.56 589.047 l -4918.75 589.832 l -5005.94 590.523 l -5019.45 590.637 l -5093.13 591.488 l -5180.31 592.219 l -5267.5 592.781 l -5354.69 593.27 l -5390.29 593.457 l -5441.88 593.883 l -5529.06 594.414 l -5616.25 594.797 l -5703.44 595.074 l -5790.63 595.262 l -5877.81 595.367 l -5965 595.406 l -6052.19 595.367 l -6139.38 595.262 l -6226.56 595.074 l -6313.75 594.797 l -6400.94 594.414 l -6488.13 593.883 l -6539.67 593.457 l -6575.31 593.27 l -6662.5 592.781 l -6749.69 592.219 l -6836.88 591.496 l -6910.55 590.637 l -6924.06 590.523 l -7011.25 589.832 l -7098.44 589.047 l -7185.63 587.93 l -7192.96 587.824 l -7272.81 587.164 l -7360 586.391 l -7447.19 585.379 l -7474.96 585.004 l -7534.38 584.688 l -7621.56 584.238 l -7708.75 582.969 l -7734.69 582.191 l -7788.65 579.371 l -7795.94 577.531 l -7805.93 576.559 l -7822.78 573.738 l -7835.16 570.926 l -7833.48 568.105 l -7813.28 565.293 l -7795.94 563.59 l -7791.57 562.48 l -7780.2 559.66 l -7722.42 556.848 l -7708.75 556.434 l -7621.56 555.199 l -7534.38 555.129 l -7447.19 555.281 l -7360 555.453 l -7272.81 555.559 l -7185.63 555.527 l -7098.44 555.387 l -7011.25 555.203 l -6924.06 555.063 l -6836.88 554.973 l -6749.69 554.949 l -6662.5 554.988 l -6575.31 555.07 l -6488.13 555.184 l -6400.94 555.316 l -6313.75 555.453 l -6226.56 555.566 l -6139.38 555.656 l -6052.19 555.707 l -5965 555.73 l -5877.81 555.707 l -5790.63 555.656 l -5703.44 555.566 l -5616.25 555.453 l -5529.06 555.316 l -5441.88 555.184 l -5354.69 555.07 l -5267.5 554.988 l -5180.31 554.949 l -5093.13 554.973 l -5005.94 555.063 l -4918.75 555.203 l -4831.56 555.387 l -4744.38 555.527 l -4657.19 555.559 l -4570 555.453 l -4482.81 555.281 l -4395.63 555.129 l -4308.44 555.199 l -f -/DeviceRGB {} cs -[1 1 0.7324] sc -4207.54 556.848 m -4221.25 556.434 l -4308.44 555.199 l -4395.63 555.129 l -4482.81 555.281 l -4570 555.453 l -4657.19 555.559 l -4744.38 555.527 l -4831.56 555.387 l -4918.75 555.203 l -5005.94 555.063 l -5093.13 554.973 l -5180.31 554.949 l -5267.5 554.988 l -5354.69 555.07 l -5441.88 555.184 l -5529.06 555.316 l -5616.25 555.453 l -5703.44 555.566 l -5790.63 555.656 l -5877.81 555.707 l -5965 555.73 l -6052.19 555.707 l -6139.38 555.656 l -6226.56 555.566 l -6313.75 555.453 l -6400.94 555.316 l -6488.13 555.184 l -6575.31 555.07 l -6662.5 554.988 l -6749.69 554.949 l -6836.88 554.973 l -6924.06 555.063 l -7011.25 555.203 l -7098.44 555.387 l -7185.63 555.527 l -7272.81 555.559 l -7360 555.453 l -7447.19 555.281 l -7534.38 555.129 l -7621.56 555.199 l -7708.75 556.434 l -7722.42 556.848 l -7780.2 559.66 l -7791.57 562.48 l -7795.94 563.59 l -7813.28 565.293 l -7833.48 568.105 l -7835.16 570.926 l -7822.78 573.738 l -7805.93 576.559 l -7795.94 577.531 l -7788.65 579.371 l -7734.69 582.191 l -7708.75 582.969 l -7621.56 584.238 l -7534.38 584.688 l -7474.96 585.004 l -7447.19 585.379 l -7360 586.391 l -7272.81 587.164 l -7192.96 587.824 l -7185.63 587.93 l -7098.44 589.047 l -7011.25 589.832 l -6924.06 590.523 l -6910.55 590.637 l -6836.88 591.496 l -6749.69 592.219 l -6662.5 592.781 l -6575.31 593.27 l -6539.67 593.457 l -6488.13 593.883 l -6400.94 594.414 l -6313.75 594.797 l -6226.56 595.074 l -6139.38 595.262 l -6052.19 595.367 l -5965 595.406 l -5877.81 595.367 l -5790.63 595.262 l -5703.44 595.074 l -5616.25 594.797 l -5529.06 594.414 l -5441.88 593.883 l -5390.29 593.457 l -5354.69 593.27 l -5267.5 592.781 l -5180.31 592.219 l -5093.13 591.488 l -5019.45 590.637 l -5005.94 590.523 l -4918.75 589.832 l -4831.56 589.047 l -4744.38 587.93 l -4737.11 587.824 l -4657.19 587.164 l -4570 586.391 l -4482.81 585.379 l -4455.06 585.004 l -4395.63 584.688 l -4308.44 584.238 l -4221.25 582.965 l -4195.43 582.191 l -4141.37 579.371 l -4134.06 577.523 l -4124.09 576.559 l -4107.23 573.738 l -4094.82 570.926 l -4096.51 568.105 l -4116.7 565.293 l -4134.06 563.59 l -4138.42 562.48 l -4149.79 559.66 l -4207.54 556.848 l -h -4308.44 556.039 m -4258.65 556.848 l -4221.25 557.469 l -4170.05 559.66 l -4152.91 562.48 l -4139.48 565.293 l -4134.06 566.988 l -4124.18 568.105 l -4121.66 570.926 l -4134.06 572.93 l -4135.71 573.738 l -4142.45 576.559 l -4157.39 579.371 l -4221.25 581.934 l -4236.1 582.191 l -4308.44 583.539 l -4395.63 584.086 l -4482.81 584.559 l -4549.61 585.004 l -4570 585.266 l -4657.19 586.219 l -4744.38 586.996 l -4831.56 587.785 l -4835.35 587.824 l -4918.75 588.77 l -5005.94 589.531 l -5093.13 590.254 l -5138.52 590.637 l -5180.31 591.055 l -5267.5 591.738 l -5354.69 592.293 l -5441.88 592.773 l -5529.06 593.191 l -5590.72 593.457 l -5616.25 593.59 l -5703.44 593.957 l -5790.63 594.207 l -5877.81 594.348 l -5965 594.395 l -6052.19 594.348 l -6139.38 594.207 l -6226.56 593.957 l -6313.75 593.59 l -6339.31 593.457 l -6400.94 593.191 l -6488.13 592.773 l -6575.31 592.293 l -6662.5 591.738 l -6749.69 591.055 l -6791.58 590.637 l -6836.88 590.254 l -6924.06 589.531 l -7011.25 588.77 l -7094.73 587.824 l -7098.44 587.785 l -7185.63 586.996 l -7272.81 586.219 l -7360 585.266 l -7380.33 585.004 l -7447.19 584.559 l -7534.38 584.086 l -7621.56 583.539 l -7694.02 582.191 l -7708.75 581.934 l -7772.64 579.371 l -7787.57 576.559 l -7794.3 573.738 l -7795.94 572.93 l -7808.32 570.926 l -7805.79 568.105 l -7795.94 566.996 l -7790.51 565.293 l -7777.08 562.48 l -7759.94 559.66 l -7708.75 557.469 l -7671.3 556.848 l -7621.56 556.039 l -7534.38 555.918 l -7447.19 556.137 l -7360 556.383 l -7272.81 556.531 l -7185.63 556.496 l -7098.44 556.285 l -7011.25 556.031 l -6924.06 555.82 l -6836.88 555.707 l -6749.69 555.68 l -6662.5 555.723 l -6575.31 555.844 l -6488.13 556 l -6400.94 556.195 l -6313.75 556.383 l -6226.56 556.555 l -6139.38 556.691 l -6052.19 556.773 l -5965 556.801 l -5877.81 556.773 l -5790.63 556.691 l -5703.44 556.555 l -5616.25 556.383 l -5529.06 556.195 l -5441.88 556 l -5354.69 555.844 l -5267.5 555.723 l -5180.31 555.68 l -5093.13 555.707 l -5005.94 555.82 l -4918.75 556.031 l -4831.56 556.285 l -4744.38 556.496 l -4657.19 556.531 l -4570 556.383 l -4482.81 556.137 l -4395.63 555.918 l -f -/DeviceRGB {} cs -[1 1 0.6074] sc -4258.65 556.848 m -4308.44 556.039 l -4395.63 555.918 l -4482.81 556.137 l -4570 556.383 l -4657.19 556.531 l -4744.38 556.496 l -4831.56 556.285 l -4918.75 556.031 l -5005.94 555.82 l -5093.13 555.707 l -5180.31 555.68 l -5267.5 555.723 l -5354.69 555.844 l -5441.88 556 l -5529.06 556.195 l -5616.25 556.383 l -5703.44 556.555 l -5790.63 556.691 l -5877.81 556.773 l -5965 556.801 l -6052.19 556.773 l -6139.38 556.691 l -6226.56 556.555 l -6313.75 556.383 l -6400.94 556.195 l -6488.13 556 l -6575.31 555.844 l -6662.5 555.723 l -6749.69 555.68 l -6836.88 555.707 l -6924.06 555.82 l -7011.25 556.031 l -7098.44 556.285 l -7185.63 556.496 l -7272.81 556.531 l -7360 556.383 l -7447.19 556.137 l -7534.38 555.918 l -7621.56 556.039 l -7671.3 556.848 l -7708.75 557.469 l -7759.94 559.66 l -7777.08 562.48 l -7790.51 565.293 l -7795.94 566.996 l -7805.79 568.105 l -7808.32 570.926 l -7795.94 572.93 l -7794.3 573.738 l -7787.57 576.559 l -7772.64 579.371 l -7708.75 581.934 l -7694.02 582.191 l -7621.56 583.539 l -7534.38 584.086 l -7447.19 584.559 l -7380.33 585.004 l -7360 585.266 l -7272.81 586.219 l -7185.63 586.996 l -7098.44 587.785 l -7094.73 587.824 l -7011.25 588.77 l -6924.06 589.531 l -6836.88 590.254 l -6791.58 590.637 l -6749.69 591.055 l -6662.5 591.738 l -6575.31 592.293 l -6488.13 592.773 l -6400.94 593.191 l -6339.31 593.457 l -6313.75 593.59 l -6226.56 593.957 l -6139.38 594.207 l -6052.19 594.348 l -5965 594.395 l -5877.81 594.348 l -5790.63 594.207 l -5703.44 593.957 l -5616.25 593.59 l -5590.72 593.457 l -5529.06 593.191 l -5441.88 592.773 l -5354.69 592.293 l -5267.5 591.738 l -5180.31 591.055 l -5138.52 590.637 l -5093.13 590.254 l -5005.94 589.531 l -4918.75 588.77 l -4835.35 587.824 l -4831.56 587.785 l -4744.38 586.996 l -4657.19 586.219 l -4570 585.266 l -4549.61 585.004 l -4482.81 584.559 l -4395.63 584.086 l -4308.44 583.539 l -4236.1 582.191 l -4221.25 581.934 l -4157.39 579.371 l -4142.45 576.559 l -4135.71 573.738 l -4134.06 572.93 l -4121.66 570.926 l -4124.18 568.105 l -4134.06 566.988 l -4139.48 565.293 l -4152.91 562.48 l -4170.05 559.66 l -4221.25 557.469 l -4258.65 556.848 l -h -4395.63 556.715 m -4324.94 556.848 l -4308.44 556.863 l -4221.25 558.34 l -4190.31 559.66 l -4167.39 562.48 l -4149.52 565.293 l -4138.81 568.105 l -4137.9 570.926 l -4144.47 573.738 l -4153.48 576.559 l -4173.41 579.371 l -4221.25 581.289 l -4273.59 582.191 l -4308.44 582.836 l -4395.63 583.48 l -4482.81 583.969 l -4570 584.531 l -4633.55 585.004 l -4657.19 585.273 l -4744.38 586.121 l -4831.56 586.887 l -4918.75 587.703 l -4930.68 587.824 l -5005.94 588.543 l -5093.13 589.262 l -5180.31 589.969 l -5259.93 590.637 l -5267.5 590.703 l -5354.69 591.316 l -5441.88 591.836 l -5529.06 592.285 l -5616.25 592.676 l -5703.44 592.984 l -5790.63 593.207 l -5877.81 593.352 l -5965 593.395 l -6052.19 593.352 l -6139.38 593.207 l -6226.56 592.984 l -6313.75 592.676 l -6400.94 592.285 l -6488.13 591.836 l -6575.31 591.316 l -6662.5 590.703 l -6670.2 590.637 l -6749.69 589.969 l -6836.88 589.262 l -6924.06 588.543 l -6999.39 587.824 l -7011.25 587.703 l -7098.44 586.887 l -7185.63 586.121 l -7272.81 585.273 l -7296.39 585.004 l -7360 584.531 l -7447.19 583.969 l -7534.38 583.48 l -7621.56 582.844 l -7656.52 582.191 l -7708.75 581.289 l -7756.61 579.371 l -7776.54 576.559 l -7785.54 573.738 l -7792.09 570.926 l -7791.18 568.105 l -7780.47 565.293 l -7762.59 562.48 l -7739.67 559.66 l -7708.75 558.34 l -7621.56 556.863 l -7604.62 556.848 l -7534.38 556.715 l -7490.47 556.848 l -7447.19 556.914 l -7360 557.043 l -7272.81 557.117 l -7185.63 557.094 l -7098.44 556.996 l -7011.25 556.848 l -7008.76 556.848 l -6924.06 556.586 l -6836.88 556.434 l -6749.69 556.398 l -6662.5 556.457 l -6575.31 556.609 l -6488.13 556.816 l -6477.96 556.848 l -6400.94 556.961 l -6313.75 557.078 l -6226.56 557.176 l -6139.38 557.254 l -6052.19 557.305 l -5965 557.32 l -5877.81 557.305 l -5790.63 557.254 l -5703.44 557.176 l -5616.25 557.078 l -5529.06 556.961 l -5451.95 556.848 l -5441.88 556.816 l -5354.69 556.609 l -5267.5 556.457 l -5180.31 556.398 l -5093.13 556.434 l -5005.94 556.586 l -4921.32 556.848 l -4918.75 556.848 l -4831.56 556.996 l -4744.38 557.094 l -4657.19 557.117 l -4570 557.043 l -4482.81 556.914 l -4439.68 556.848 l -f -/DeviceRGB {} cs -[1 1 0.467] sc -4324.94 556.848 m -4395.63 556.715 l -4439.68 556.848 l -4482.81 556.914 l -4570 557.043 l -4657.19 557.117 l -4744.38 557.094 l -4831.56 556.996 l -4918.75 556.848 l -4921.32 556.848 l -5005.94 556.586 l -5093.13 556.434 l -5180.31 556.398 l -5267.5 556.457 l -5354.69 556.609 l -5441.88 556.816 l -5451.95 556.848 l -5529.06 556.961 l -5616.25 557.078 l -5703.44 557.176 l -5790.63 557.254 l -5877.81 557.305 l -5965 557.32 l -6052.19 557.305 l -6139.38 557.254 l -6226.56 557.176 l -6313.75 557.078 l -6400.94 556.961 l -6477.96 556.848 l -6488.13 556.816 l -6575.31 556.609 l -6662.5 556.457 l -6749.69 556.398 l -6836.88 556.434 l -6924.06 556.586 l -7008.76 556.848 l -7011.25 556.848 l -7098.44 556.996 l -7185.63 557.094 l -7272.81 557.117 l -7360 557.043 l -7447.19 556.914 l -7490.47 556.848 l -7534.38 556.715 l -7604.62 556.848 l -7621.56 556.863 l -7708.75 558.34 l -7739.67 559.66 l -7762.59 562.48 l -7780.47 565.293 l -7791.18 568.105 l -7792.09 570.926 l -7785.54 573.738 l -7776.54 576.559 l -7756.61 579.371 l -7708.75 581.289 l -7656.52 582.191 l -7621.56 582.844 l -7534.38 583.48 l -7447.19 583.969 l -7360 584.531 l -7296.39 585.004 l -7272.81 585.273 l -7185.63 586.121 l -7098.44 586.887 l -7011.25 587.703 l -6999.39 587.824 l -6924.06 588.543 l -6836.88 589.262 l -6749.69 589.969 l -6670.2 590.637 l -6662.5 590.703 l -6575.31 591.316 l -6488.13 591.836 l -6400.94 592.285 l -6313.75 592.676 l -6226.56 592.984 l -6139.38 593.207 l -6052.19 593.352 l -5965 593.395 l -5877.81 593.352 l -5790.63 593.207 l -5703.44 592.984 l -5616.25 592.676 l -5529.06 592.285 l -5441.88 591.836 l -5354.69 591.316 l -5267.5 590.703 l -5259.93 590.637 l -5180.31 589.969 l -5093.13 589.262 l -5005.94 588.543 l -4930.68 587.824 l -4918.75 587.703 l -4831.56 586.887 l -4744.38 586.121 l -4657.19 585.273 l -4633.55 585.004 l -4570 584.531 l -4482.81 583.969 l -4395.63 583.48 l -4308.44 582.836 l -4273.59 582.191 l -4221.25 581.289 l -4173.41 579.371 l -4153.48 576.559 l -4144.47 573.738 l -4137.9 570.926 l -4138.81 568.105 l -4149.52 565.293 l -4167.39 562.48 l -4190.31 559.66 l -4221.25 558.34 l -4308.44 556.863 l -4324.94 556.848 l -h -4221.25 559.203 m -4210.57 559.66 l -4181.88 562.48 l -4159.55 565.293 l -4146.2 568.105 l -4145.04 570.926 l -4153.23 573.738 l -4164.51 576.559 l -4189.43 579.371 l -4221.25 580.652 l -4308.44 582.16 l -4313.46 582.191 l -4395.63 582.879 l -4482.81 583.375 l -4570 583.914 l -4657.19 584.523 l -4720.43 585.004 l -4744.38 585.242 l -4831.56 585.977 l -4918.75 586.707 l -5005.94 587.516 l -5038.29 587.824 l -5093.13 588.273 l -5180.31 588.926 l -5267.5 589.602 l -5354.69 590.297 l -5400.3 590.637 l -5441.88 590.898 l -5529.06 591.371 l -5616.25 591.789 l -5703.44 592.129 l -5790.63 592.383 l -5877.81 592.539 l -5965 592.586 l -6052.19 592.539 l -6139.38 592.383 l -6226.56 592.129 l -6313.75 591.789 l -6400.94 591.371 l -6488.13 590.898 l -6529.77 590.637 l -6575.31 590.305 l -6662.5 589.609 l -6749.69 588.926 l -6836.88 588.273 l -6891.7 587.824 l -6924.06 587.516 l -7011.25 586.707 l -7098.44 585.977 l -7185.63 585.242 l -7209.52 585.004 l -7272.81 584.523 l -7360 583.914 l -7447.19 583.375 l -7534.38 582.879 l -7616.72 582.191 l -7621.56 582.16 l -7708.75 580.652 l -7740.6 579.371 l -7765.5 576.559 l -7776.77 573.738 l -7784.95 570.926 l -7783.79 568.105 l -7770.43 565.293 l -7748.1 562.48 l -7719.41 559.66 l -7708.75 559.203 l -7621.56 557.344 l -7534.38 557.191 l -7447.19 557.32 l -7360 557.449 l -7272.81 557.508 l -7185.63 557.492 l -7098.44 557.402 l -7011.25 557.27 l -6924.06 557.133 l -6836.88 557.035 l -6749.69 557.012 l -6662.5 557.051 l -6575.31 557.148 l -6488.13 557.27 l -6400.94 557.402 l -6313.75 557.531 l -6226.56 557.652 l -6139.38 557.734 l -6052.19 557.793 l -5965 557.816 l -5877.81 557.793 l -5790.63 557.734 l -5703.44 557.652 l -5616.25 557.531 l -5529.06 557.402 l -5441.88 557.27 l -5354.69 557.148 l -5267.5 557.051 l -5180.31 557.012 l -5093.13 557.035 l -5005.94 557.133 l -4918.75 557.27 l -4831.56 557.402 l -4744.38 557.492 l -4657.19 557.508 l -4570 557.449 l -4482.81 557.32 l -4395.63 557.191 l -4308.44 557.344 l -f -/DeviceRGB {} cs -[1 1 0.341] sc -4210.57 559.66 m -4221.25 559.203 l -4308.44 557.344 l -4395.63 557.191 l -4482.81 557.32 l -4570 557.449 l -4657.19 557.508 l -4744.38 557.492 l -4831.56 557.402 l -4918.75 557.27 l -5005.94 557.133 l -5093.13 557.035 l -5180.31 557.012 l -5267.5 557.051 l -5354.69 557.148 l -5441.88 557.27 l -5529.06 557.402 l -5616.25 557.531 l -5703.44 557.652 l -5790.63 557.734 l -5877.81 557.793 l -5965 557.816 l -6052.19 557.793 l -6139.38 557.734 l -6226.56 557.652 l -6313.75 557.531 l -6400.94 557.402 l -6488.13 557.27 l -6575.31 557.148 l -6662.5 557.051 l -6749.69 557.012 l -6836.88 557.035 l -6924.06 557.133 l -7011.25 557.27 l -7098.44 557.402 l -7185.63 557.492 l -7272.81 557.508 l -7360 557.449 l -7447.19 557.32 l -7534.38 557.191 l -7621.56 557.344 l -7708.75 559.203 l -7719.41 559.66 l -7748.1 562.48 l -7770.43 565.293 l -7783.79 568.105 l -7784.95 570.926 l -7776.77 573.738 l -7765.5 576.559 l -7740.6 579.371 l -7708.75 580.652 l -7621.56 582.16 l -7616.72 582.191 l -7534.38 582.879 l -7447.19 583.375 l -7360 583.914 l -7272.81 584.523 l -7209.52 585.004 l -7185.63 585.242 l -7098.44 585.977 l -7011.25 586.707 l -6924.06 587.516 l -6891.7 587.824 l -6836.88 588.273 l -6749.69 588.926 l -6662.5 589.609 l -6575.31 590.305 l -6529.77 590.637 l -6488.13 590.898 l -6400.94 591.371 l -6313.75 591.789 l -6226.56 592.129 l -6139.38 592.383 l -6052.19 592.539 l -5965 592.586 l -5877.81 592.539 l -5790.63 592.383 l -5703.44 592.129 l -5616.25 591.789 l -5529.06 591.371 l -5441.88 590.898 l -5400.3 590.637 l -5354.69 590.297 l -5267.5 589.602 l -5180.31 588.926 l -5093.13 588.273 l -5038.29 587.824 l -5005.94 587.516 l -4918.75 586.707 l -4831.56 585.977 l -4744.38 585.242 l -4720.43 585.004 l -4657.19 584.523 l -4570 583.914 l -4482.81 583.375 l -4395.63 582.879 l -4313.46 582.191 l -4308.44 582.16 l -4221.25 580.652 l -4189.43 579.371 l -4164.51 576.559 l -4153.23 573.738 l -4145.04 570.926 l -4146.2 568.105 l -4159.55 565.293 l -4181.88 562.48 l -4210.57 559.66 l -h -4308.44 557.824 m -4230.87 559.66 l -4221.25 560.27 l -4196.37 562.48 l -4169.59 565.293 l -4153.59 568.105 l -4152.18 570.926 l -4162 573.738 l -4175.55 576.559 l -4205.45 579.371 l -4221.25 580.008 l -4308.44 581.785 l -4384.8 582.191 l -4395.63 582.281 l -4482.81 582.789 l -4570 583.301 l -4657.19 583.848 l -4744.38 584.457 l -4822.84 585.004 l -4831.56 585.078 l -4918.75 585.707 l -5005.94 586.383 l -5093.13 587.148 l -5171.93 587.824 l -5180.31 587.883 l -5267.5 588.504 l -5354.69 589.188 l -5441.88 589.863 l -5529.06 590.449 l -5563.36 590.637 l -5616.25 590.906 l -5703.44 591.273 l -5790.63 591.559 l -5877.81 591.73 l -5965 591.781 l -6052.19 591.723 l -6139.38 591.559 l -6226.56 591.273 l -6313.75 590.906 l -6366.59 590.637 l -6400.94 590.449 l -6488.13 589.863 l -6575.31 589.188 l -6662.5 588.504 l -6749.69 587.883 l -6757.99 587.824 l -6836.88 587.148 l -6924.06 586.383 l -7011.25 585.707 l -7098.44 585.078 l -7107.19 585.004 l -7185.63 584.457 l -7272.81 583.848 l -7360 583.301 l -7447.19 582.781 l -7534.38 582.281 l -7545.22 582.191 l -7621.56 581.785 l -7708.75 580.008 l -7724.58 579.371 l -7754.47 576.559 l -7768.01 573.738 l -7777.81 570.926 l -7776.4 568.105 l -7760.39 565.293 l -7733.61 562.48 l -7708.75 560.27 l -7699.11 559.66 l -7621.56 557.832 l -7534.38 557.621 l -7447.19 557.734 l -7360 557.844 l -7272.81 557.906 l -7185.63 557.898 l -7098.44 557.816 l -7011.25 557.688 l -6924.06 557.559 l -6836.88 557.469 l -6749.69 557.449 l -6662.5 557.492 l -6575.31 557.59 l -6488.13 557.711 l -6400.94 557.852 l -6313.75 557.988 l -6226.56 558.113 l -6139.38 558.219 l -6052.19 558.281 l -5965 558.301 l -5877.81 558.281 l -5790.63 558.219 l -5703.44 558.113 l -5616.25 557.988 l -5529.06 557.852 l -5441.88 557.711 l -5354.69 557.59 l -5267.5 557.492 l -5180.31 557.449 l -5093.13 557.469 l -5005.94 557.559 l -4918.75 557.688 l -4831.56 557.816 l -4744.38 557.898 l -4657.19 557.906 l -4570 557.844 l -4482.81 557.727 l -4395.63 557.621 l -f -/DeviceRGB {} cs -[1 1 0.1999] sc -4230.87 559.66 m -4308.44 557.824 l -4395.63 557.621 l -4482.81 557.727 l -4570 557.844 l -4657.19 557.906 l -4744.38 557.898 l -4831.56 557.816 l -4918.75 557.688 l -5005.94 557.559 l -5093.13 557.469 l -5180.31 557.449 l -5267.5 557.492 l -5354.69 557.59 l -5441.88 557.711 l -5529.06 557.852 l -5616.25 557.988 l -5703.44 558.113 l -5790.63 558.219 l -5877.81 558.281 l -5965 558.301 l -6052.19 558.281 l -6139.38 558.219 l -6226.56 558.113 l -6313.75 557.988 l -6400.94 557.852 l -6488.13 557.711 l -6575.31 557.59 l -6662.5 557.492 l -6749.69 557.449 l -6836.88 557.469 l -6924.06 557.559 l -7011.25 557.688 l -7098.44 557.816 l -7185.63 557.898 l -7272.81 557.906 l -7360 557.844 l -7447.19 557.734 l -7534.38 557.621 l -7621.56 557.832 l -7699.11 559.66 l -7708.75 560.27 l -7733.61 562.48 l -7760.39 565.293 l -7776.4 568.105 l -7777.81 570.926 l -7768.01 573.738 l -7754.47 576.559 l -7724.58 579.371 l -7708.75 580.008 l -7621.56 581.785 l -7545.22 582.191 l -7534.38 582.281 l -7447.19 582.781 l -7360 583.301 l -7272.81 583.848 l -7185.63 584.457 l -7107.19 585.004 l -7098.44 585.078 l -7011.25 585.707 l -6924.06 586.383 l -6836.88 587.148 l -6757.99 587.824 l -6749.69 587.883 l -6662.5 588.504 l -6575.31 589.188 l -6488.13 589.863 l -6400.94 590.449 l -6366.59 590.637 l -6313.75 590.906 l -6226.56 591.273 l -6139.38 591.559 l -6052.19 591.723 l -5965 591.781 l -5877.81 591.73 l -5790.63 591.559 l -5703.44 591.273 l -5616.25 590.906 l -5563.36 590.637 l -5529.06 590.449 l -5441.88 589.863 l -5354.69 589.188 l -5267.5 588.504 l -5180.31 587.883 l -5171.93 587.824 l -5093.13 587.148 l -5005.94 586.383 l -4918.75 585.707 l -4831.56 585.078 l -4822.84 585.004 l -4744.38 584.457 l -4657.19 583.848 l -4570 583.301 l -4482.81 582.789 l -4395.63 582.281 l -4384.8 582.191 l -4308.44 581.785 l -4221.25 580.008 l -4205.45 579.371 l -4175.55 576.559 l -4162 573.738 l -4152.18 570.926 l -4153.59 568.105 l -4169.59 565.293 l -4196.37 562.48 l -4221.25 560.27 l -4230.87 559.66 l -h -4308.44 558.309 m -4251.22 559.66 l -4221.25 561.559 l -4210.86 562.48 l -4179.63 565.293 l -4160.97 568.105 l -4159.32 570.926 l -4170.76 573.738 l -4186.58 576.559 l -4221.25 579.363 l -4221.47 579.371 l -4308.44 581.41 l -4395.63 581.875 l -4481.7 582.191 l -4482.81 582.199 l -4570 582.684 l -4657.19 583.172 l -4744.38 583.699 l -4831.56 584.246 l -4918.75 584.754 l -4968.91 585.004 l -5005.94 585.25 l -5093.13 585.918 l -5180.31 586.691 l -5267.5 587.418 l -5322.69 587.824 l -5354.69 588.07 l -5441.88 588.797 l -5529.06 589.473 l -5616.25 590.012 l -5703.44 590.426 l -5764.75 590.637 l -5790.63 590.727 l -5877.81 590.922 l -5965 590.98 l -6052.19 590.914 l -6139.38 590.727 l -6165.19 590.637 l -6226.56 590.426 l -6313.75 590.012 l -6400.94 589.473 l -6488.13 588.797 l -6575.31 588.07 l -6607.29 587.824 l -6662.5 587.418 l -6749.69 586.691 l -6836.88 585.918 l -6924.06 585.25 l -6961.18 585.004 l -7011.25 584.754 l -7098.44 584.246 l -7185.63 583.699 l -7272.81 583.172 l -7360 582.684 l -7447.19 582.199 l -7448.23 582.191 l -7534.38 581.875 l -7621.56 581.41 l -7708.57 579.371 l -7708.75 579.363 l -7743.45 576.559 l -7759.24 573.738 l -7770.67 570.926 l -7769.01 568.105 l -7750.35 565.293 l -7719.13 562.48 l -7708.75 561.559 l -7678.76 559.66 l -7621.56 558.309 l -7534.38 558.039 l -7447.19 558.137 l -7360 558.242 l -7272.81 558.301 l -7185.63 558.297 l -7098.44 558.219 l -7011.25 558.109 l -6924.06 557.988 l -6836.88 557.914 l -6749.69 557.891 l -6662.5 557.934 l -6575.31 558.023 l -6488.13 558.152 l -6400.94 558.297 l -6313.75 558.445 l -6226.56 558.59 l -6139.38 558.699 l -6052.19 558.773 l -5965 558.797 l -5877.81 558.773 l -5790.63 558.699 l -5703.44 558.59 l -5616.25 558.445 l -5529.06 558.297 l -5441.88 558.152 l -5354.69 558.023 l -5267.5 557.934 l -5180.31 557.891 l -5093.13 557.914 l -5005.94 557.988 l -4918.75 558.109 l -4831.56 558.219 l -4744.38 558.297 l -4657.19 558.301 l -4570 558.242 l -4482.81 558.137 l -4395.63 558.039 l -f -/DeviceRGB {} cs -[1 1 0.075] sc -4251.22 559.66 m -4308.44 558.309 l -4395.63 558.039 l -4482.81 558.137 l -4570 558.242 l -4657.19 558.301 l -4744.38 558.297 l -4831.56 558.219 l -4918.75 558.109 l -5005.94 557.988 l -5093.13 557.914 l -5180.31 557.891 l -5267.5 557.934 l -5354.69 558.023 l -5441.88 558.152 l -5529.06 558.297 l -5616.25 558.445 l -5703.44 558.59 l -5790.63 558.699 l -5877.81 558.773 l -5965 558.797 l -6052.19 558.773 l -6139.38 558.699 l -6226.56 558.59 l -6313.75 558.445 l -6400.94 558.297 l -6488.13 558.152 l -6575.31 558.023 l -6662.5 557.934 l -6749.69 557.891 l -6836.88 557.914 l -6924.06 557.988 l -7011.25 558.109 l -7098.44 558.219 l -7185.63 558.297 l -7272.81 558.301 l -7360 558.242 l -7447.19 558.137 l -7534.38 558.039 l -7621.56 558.309 l -7678.76 559.66 l -7708.75 561.559 l -7719.13 562.48 l -7750.35 565.293 l -7769.01 568.105 l -7770.67 570.926 l -7759.24 573.738 l -7743.45 576.559 l -7708.75 579.363 l -7708.57 579.371 l -7621.56 581.41 l -7534.38 581.875 l -7448.23 582.191 l -7447.19 582.199 l -7360 582.684 l -7272.81 583.172 l -7185.63 583.699 l -7098.44 584.246 l -7011.25 584.754 l -6961.18 585.004 l -6924.06 585.25 l -6836.88 585.918 l -6749.69 586.691 l -6662.5 587.418 l -6607.29 587.824 l -6575.31 588.07 l -6488.13 588.797 l -6400.94 589.473 l -6313.75 590.012 l -6226.56 590.426 l -6165.19 590.637 l -6139.38 590.727 l -6052.19 590.914 l -5965 590.98 l -5877.81 590.922 l -5790.63 590.727 l -5764.75 590.637 l -5703.44 590.426 l -5616.25 590.012 l -5529.06 589.473 l -5441.88 588.797 l -5354.69 588.07 l -5322.69 587.824 l -5267.5 587.418 l -5180.31 586.691 l -5093.13 585.918 l -5005.94 585.25 l -4968.91 585.004 l -4918.75 584.754 l -4831.56 584.246 l -4744.38 583.699 l -4657.19 583.172 l -4570 582.684 l -4482.81 582.199 l -4481.7 582.191 l -4395.63 581.875 l -4308.44 581.41 l -4221.47 579.371 l -4221.25 579.363 l -4186.58 576.559 l -4170.76 573.738 l -4159.32 570.926 l -4160.97 568.105 l -4179.63 565.293 l -4210.86 562.48 l -4221.25 561.559 l -4251.22 559.66 l -h -4308.44 558.789 m -4271.56 559.66 l -4225.22 562.48 l -4221.25 562.703 l -4189.66 565.293 l -4168.36 568.105 l -4166.45 570.926 l -4179.53 573.738 l -4197.61 576.559 l -4221.25 578.469 l -4237.46 579.371 l -4308.44 581.035 l -4395.63 581.5 l -4482.81 581.762 l -4570 582.086 l -4596.21 582.191 l -4657.19 582.504 l -4744.38 582.941 l -4831.56 583.414 l -4918.75 583.906 l -5005.94 584.387 l -5093.13 584.824 l -5127.32 585.004 l -5180.31 585.488 l -5267.5 586.367 l -5354.69 587.117 l -5441.88 587.754 l -5451.5 587.824 l -5529.06 588.492 l -5616.25 589.121 l -5703.44 589.594 l -5790.63 589.922 l -5877.81 590.125 l -5965 590.191 l -6052.19 590.125 l -6139.38 589.922 l -6226.56 589.594 l -6313.75 589.121 l -6400.94 588.492 l -6478.58 587.824 l -6488.13 587.754 l -6575.31 587.117 l -6662.5 586.367 l -6749.69 585.488 l -6802.75 585.004 l -6836.88 584.824 l -6924.06 584.387 l -7011.25 583.906 l -7098.44 583.414 l -7185.63 582.949 l -7272.81 582.504 l -7333.81 582.191 l -7360 582.086 l -7447.19 581.762 l -7534.38 581.5 l -7621.56 581.035 l -7692.57 579.371 l -7708.75 578.469 l -7732.41 576.559 l -7750.48 573.738 l -7763.53 570.926 l -7761.63 568.105 l -7740.32 565.293 l -7708.75 562.711 l -7704.77 562.48 l -7658.41 559.66 l -7621.56 558.789 l -7534.38 558.461 l -7447.19 558.543 l -7360 558.641 l -7272.81 558.699 l -7185.63 558.691 l -7098.44 558.625 l -7011.25 558.527 l -6924.06 558.422 l -6836.88 558.348 l -6749.69 558.332 l -6662.5 558.371 l -6575.31 558.469 l -6488.13 558.594 l -6400.94 558.746 l -6313.75 558.902 l -6226.56 559.051 l -6139.38 559.18 l -6052.19 559.262 l -5965 559.293 l -5877.81 559.262 l -5790.63 559.18 l -5703.44 559.051 l -5616.25 558.902 l -5529.06 558.746 l -5441.88 558.594 l -5354.69 558.469 l -5267.5 558.371 l -5180.31 558.332 l -5093.13 558.348 l -5005.94 558.422 l -4918.75 558.527 l -4831.56 558.625 l -4744.38 558.691 l -4657.19 558.699 l -4570 558.641 l -4482.81 558.543 l -4395.63 558.461 l -f -/DeviceRGB {} cs -[1 0.957 0] sc -4271.56 559.66 m -4308.44 558.789 l -4395.63 558.461 l -4482.81 558.543 l -4570 558.641 l -4657.19 558.699 l -4744.38 558.691 l -4831.56 558.625 l -4918.75 558.527 l -5005.94 558.422 l -5093.13 558.348 l -5180.31 558.332 l -5267.5 558.371 l -5354.69 558.469 l -5441.88 558.594 l -5529.06 558.746 l -5616.25 558.902 l -5703.44 559.051 l -5790.63 559.18 l -5877.81 559.262 l -5965 559.293 l -6052.19 559.262 l -6139.38 559.18 l -6226.56 559.051 l -6313.75 558.902 l -6400.94 558.746 l -6488.13 558.594 l -6575.31 558.469 l -6662.5 558.371 l -6749.69 558.332 l -6836.88 558.348 l -6924.06 558.422 l -7011.25 558.527 l -7098.44 558.625 l -7185.63 558.691 l -7272.81 558.699 l -7360 558.641 l -7447.19 558.543 l -7534.38 558.461 l -7621.56 558.789 l -7658.41 559.66 l -7704.77 562.48 l -7708.75 562.711 l -7740.32 565.293 l -7761.63 568.105 l -7763.53 570.926 l -7750.48 573.738 l -7732.41 576.559 l -7708.75 578.469 l -7692.57 579.371 l -7621.56 581.035 l -7534.38 581.5 l -7447.19 581.762 l -7360 582.086 l -7333.81 582.191 l -7272.81 582.504 l -7185.63 582.949 l -7098.44 583.414 l -7011.25 583.906 l -6924.06 584.387 l -6836.88 584.824 l -6802.75 585.004 l -6749.69 585.488 l -6662.5 586.367 l -6575.31 587.117 l -6488.13 587.754 l -6478.58 587.824 l -6400.94 588.492 l -6313.75 589.121 l -6226.56 589.594 l -6139.38 589.922 l -6052.19 590.125 l -5965 590.191 l -5877.81 590.125 l -5790.63 589.922 l -5703.44 589.594 l -5616.25 589.121 l -5529.06 588.492 l -5451.5 587.824 l -5441.88 587.754 l -5354.69 587.117 l -5267.5 586.367 l -5180.31 585.488 l -5127.32 585.004 l -5093.13 584.824 l -5005.94 584.387 l -4918.75 583.906 l -4831.56 583.414 l -4744.38 582.941 l -4657.19 582.504 l -4596.21 582.191 l -4570 582.086 l -4482.81 581.762 l -4395.63 581.5 l -4308.44 581.035 l -4237.46 579.371 l -4221.25 578.469 l -4197.61 576.559 l -4179.53 573.738 l -4166.45 570.926 l -4168.36 568.105 l -4189.66 565.293 l -4221.25 562.703 l -4225.22 562.48 l -4271.56 559.66 l -h -4308.44 559.27 m -4291.91 559.66 l -4239.24 562.48 l -4221.25 563.531 l -4199.7 565.293 l -4175.75 568.105 l -4173.59 570.926 l -4188.3 573.738 l -4208.64 576.559 l -4221.25 577.578 l -4253.45 579.371 l -4308.44 580.66 l -4395.63 581.133 l -4482.81 581.328 l -4570 581.566 l -4657.19 581.867 l -4744.38 582.191 l -4744.46 582.191 l -4831.56 582.582 l -4918.75 583.059 l -5005.94 583.594 l -5093.13 584.133 l -5180.31 584.645 l -5238.75 585.004 l -5267.5 585.309 l -5354.69 586.219 l -5441.88 586.953 l -5529.06 587.582 l -5564.61 587.824 l -5616.25 588.227 l -5703.44 588.762 l -5790.63 589.129 l -5877.81 589.344 l -5965 589.422 l -6052.19 589.344 l -6139.38 589.129 l -6226.56 588.762 l -6313.75 588.227 l -6365.46 587.824 l -6400.94 587.582 l -6488.13 586.953 l -6575.31 586.219 l -6662.5 585.309 l -6691.28 585.004 l -6749.69 584.645 l -6836.88 584.133 l -6924.06 583.594 l -7011.25 583.051 l -7098.44 582.582 l -7185.63 582.191 l -7185.67 582.191 l -7272.81 581.867 l -7360 581.566 l -7447.19 581.328 l -7534.38 581.133 l -7621.56 580.66 l -7676.57 579.371 l -7708.75 577.578 l -7721.38 576.559 l -7741.71 573.738 l -7756.39 570.926 l -7754.24 568.105 l -7730.28 565.293 l -7708.75 563.531 l -7690.73 562.48 l -7638.07 559.66 l -7621.56 559.27 l -7534.38 558.879 l -7447.19 558.953 l -7360 559.047 l -7272.81 559.09 l -7185.63 559.09 l -7098.44 559.031 l -7011.25 558.941 l -6924.06 558.852 l -6836.88 558.781 l -6749.69 558.77 l -6662.5 558.813 l -6575.31 558.902 l -6488.13 559.039 l -6400.94 559.188 l -6313.75 559.359 l -6226.56 559.527 l -6139.38 559.66 l -6138.94 559.66 l -6052.19 559.781 l -5965 559.824 l -5877.81 559.781 l -5790.93 559.66 l -5790.63 559.66 l -5703.44 559.527 l -5616.25 559.359 l -5529.06 559.188 l -5441.88 559.039 l -5354.69 558.902 l -5267.5 558.813 l -5180.31 558.77 l -5093.13 558.781 l -5005.94 558.852 l -4918.75 558.941 l -4831.56 559.031 l -4744.38 559.09 l -4657.19 559.09 l -4570 559.047 l -4482.81 558.953 l -4395.63 558.879 l -f -/DeviceRGB {} cs -[1 0.875 0] sc -4291.91 559.66 m -4308.44 559.27 l -4395.63 558.879 l -4482.81 558.953 l -4570 559.047 l -4657.19 559.09 l -4744.38 559.09 l -4831.56 559.031 l -4918.75 558.941 l -5005.94 558.852 l -5093.13 558.781 l -5180.31 558.77 l -5267.5 558.813 l -5354.69 558.902 l -5441.88 559.039 l -5529.06 559.188 l -5616.25 559.359 l -5703.44 559.527 l -5790.63 559.66 l -5790.93 559.66 l -5877.81 559.781 l -5965 559.824 l -6052.19 559.781 l -6138.94 559.66 l -6139.38 559.66 l -6226.56 559.527 l -6313.75 559.359 l -6400.94 559.188 l -6488.13 559.039 l -6575.31 558.902 l -6662.5 558.813 l -6749.69 558.77 l -6836.88 558.781 l -6924.06 558.852 l -7011.25 558.941 l -7098.44 559.031 l -7185.63 559.09 l -7272.81 559.09 l -7360 559.047 l -7447.19 558.953 l -7534.38 558.879 l -7621.56 559.27 l -7638.07 559.66 l -7690.73 562.48 l -7708.75 563.531 l -7730.28 565.293 l -7754.24 568.105 l -7756.39 570.926 l -7741.71 573.738 l -7721.38 576.559 l -7708.75 577.578 l -7676.57 579.371 l -7621.56 580.66 l -7534.38 581.133 l -7447.19 581.328 l -7360 581.566 l -7272.81 581.867 l -7185.67 582.191 l -7185.63 582.191 l -7098.44 582.582 l -7011.25 583.051 l -6924.06 583.594 l -6836.88 584.133 l -6749.69 584.645 l -6691.28 585.004 l -6662.5 585.309 l -6575.31 586.219 l -6488.13 586.953 l -6400.94 587.582 l -6365.46 587.824 l -6313.75 588.227 l -6226.56 588.762 l -6139.38 589.129 l -6052.19 589.344 l -5965 589.422 l -5877.81 589.344 l -5790.63 589.129 l -5703.44 588.762 l -5616.25 588.227 l -5564.61 587.824 l -5529.06 587.582 l -5441.88 586.953 l -5354.69 586.219 l -5267.5 585.309 l -5238.75 585.004 l -5180.31 584.645 l -5093.13 584.133 l -5005.94 583.594 l -4918.75 583.059 l -4831.56 582.582 l -4744.46 582.191 l -4744.38 582.191 l -4657.19 581.867 l -4570 581.566 l -4482.81 581.328 l -4395.63 581.133 l -4308.44 580.66 l -4253.45 579.371 l -4221.25 577.578 l -4208.64 576.559 l -4188.3 573.738 l -4173.59 570.926 l -4175.75 568.105 l -4199.7 565.293 l -4221.25 563.531 l -4239.24 562.48 l -4291.91 559.66 l -h -4395.63 559.309 m -4324.32 559.66 l -4308.44 559.789 l -4253.27 562.48 l -4221.25 564.348 l -4209.73 565.293 l -4183.14 568.105 l -4180.73 570.926 l -4197.05 573.738 l -4219.68 576.559 l -4221.25 576.684 l -4269.45 579.371 l -4308.44 580.285 l -4395.63 580.758 l -4482.81 580.895 l -4570 581.043 l -4657.19 581.262 l -4744.38 581.547 l -4831.56 581.859 l -4915.31 582.191 l -4918.75 582.207 l -5005.94 582.805 l -5093.13 583.441 l -5180.31 584.035 l -5267.5 584.598 l -5325.71 585.004 l -5354.69 585.324 l -5441.88 586.148 l -5529.06 586.816 l -5616.25 587.395 l -5686.24 587.824 l -5703.44 587.934 l -5790.63 588.332 l -5877.81 588.566 l -5965 588.648 l -6052.19 588.566 l -6139.38 588.332 l -6226.56 587.934 l -6243.81 587.824 l -6313.75 587.395 l -6400.94 586.816 l -6488.13 586.148 l -6575.31 585.316 l -6604.25 585.004 l -6662.5 584.598 l -6749.69 584.035 l -6836.88 583.441 l -6924.06 582.805 l -7011.25 582.207 l -7014.29 582.191 l -7098.44 581.859 l -7185.63 581.547 l -7272.81 581.262 l -7360 581.043 l -7447.19 580.895 l -7534.38 580.758 l -7621.56 580.285 l -7660.57 579.371 l -7708.75 576.684 l -7710.35 576.559 l -7732.95 573.738 l -7749.25 570.926 l -7746.85 568.105 l -7720.25 565.293 l -7708.75 564.355 l -7676.71 562.48 l -7621.56 559.789 l -7605.6 559.66 l -7534.38 559.309 l -7447.19 559.359 l -7360 559.441 l -7272.81 559.488 l -7185.63 559.488 l -7098.44 559.441 l -7011.25 559.359 l -6924.06 559.277 l -6836.88 559.227 l -6749.69 559.211 l -6662.5 559.246 l -6575.31 559.344 l -6488.13 559.473 l -6400.94 559.637 l -6389.73 559.66 l -6313.75 559.914 l -6226.56 560.156 l -6139.38 560.336 l -6052.19 560.441 l -5965 560.477 l -5877.81 560.441 l -5790.63 560.336 l -5703.44 560.156 l -5616.25 559.914 l -5540.24 559.66 l -5529.06 559.637 l -5441.88 559.473 l -5354.69 559.344 l -5267.5 559.246 l -5180.31 559.211 l -5093.13 559.227 l -5005.94 559.277 l -4918.75 559.359 l -4831.56 559.441 l -4744.38 559.488 l -4657.19 559.488 l -4570 559.441 l -4482.81 559.359 l -f -/DeviceRGB {} cs -[1 0.7793 0] sc -4324.32 559.66 m -4395.63 559.309 l -4482.81 559.359 l -4570 559.441 l -4657.19 559.488 l -4744.38 559.488 l -4831.56 559.441 l -4918.75 559.359 l -5005.94 559.277 l -5093.13 559.227 l -5180.31 559.211 l -5267.5 559.246 l -5354.69 559.344 l -5441.88 559.473 l -5529.06 559.637 l -5540.24 559.66 l -5616.25 559.914 l -5703.44 560.156 l -5790.63 560.336 l -5877.81 560.441 l -5965 560.477 l -6052.19 560.441 l -6139.38 560.336 l -6226.56 560.156 l -6313.75 559.914 l -6389.73 559.66 l -6400.94 559.637 l -6488.13 559.473 l -6575.31 559.344 l -6662.5 559.246 l -6749.69 559.211 l -6836.88 559.227 l -6924.06 559.277 l -7011.25 559.359 l -7098.44 559.441 l -7185.63 559.488 l -7272.81 559.488 l -7360 559.441 l -7447.19 559.359 l -7534.38 559.309 l -7605.6 559.66 l -7621.56 559.789 l -7676.71 562.48 l -7708.75 564.355 l -7720.25 565.293 l -7746.85 568.105 l -7749.25 570.926 l -7732.95 573.738 l -7710.35 576.559 l -7708.75 576.684 l -7660.57 579.371 l -7621.56 580.285 l -7534.38 580.758 l -7447.19 580.895 l -7360 581.043 l -7272.81 581.262 l -7185.63 581.547 l -7098.44 581.859 l -7014.29 582.191 l -7011.25 582.207 l -6924.06 582.805 l -6836.88 583.441 l -6749.69 584.035 l -6662.5 584.598 l -6604.25 585.004 l -6575.31 585.316 l -6488.13 586.148 l -6400.94 586.816 l -6313.75 587.395 l -6243.81 587.824 l -6226.56 587.934 l -6139.38 588.332 l -6052.19 588.566 l -5965 588.648 l -5877.81 588.566 l -5790.63 588.332 l -5703.44 587.934 l -5686.24 587.824 l -5616.25 587.395 l -5529.06 586.816 l -5441.88 586.148 l -5354.69 585.324 l -5325.71 585.004 l -5267.5 584.598 l -5180.31 584.035 l -5093.13 583.441 l -5005.94 582.805 l -4918.75 582.207 l -4915.31 582.191 l -4831.56 581.859 l -4744.38 581.547 l -4657.19 581.262 l -4570 581.043 l -4482.81 580.895 l -4395.63 580.758 l -4308.44 580.285 l -4269.45 579.371 l -4221.25 576.684 l -4219.68 576.559 l -4197.05 573.738 l -4180.73 570.926 l -4183.14 568.105 l -4209.73 565.293 l -4221.25 564.348 l -4253.27 562.48 l -4308.44 559.789 l -4324.32 559.66 l -h -5093.13 559.66 m -5091.79 559.66 l -5005.94 559.742 l -4918.75 559.816 l -4831.56 559.863 l -4744.38 559.879 l -4657.19 559.879 l -4570 559.84 l -4482.81 559.789 l -4395.63 559.742 l -4308.44 560.469 l -4267.3 562.48 l -4221.25 565.172 l -4219.77 565.293 l -4190.52 568.105 l -4187.88 570.926 l -4205.82 573.738 l -4221.25 575.637 l -4230.7 576.559 l -4285.43 579.371 l -4308.44 579.91 l -4395.63 580.391 l -4482.81 580.457 l -4570 580.523 l -4657.19 580.652 l -4744.38 580.895 l -4831.56 581.23 l -4918.75 581.621 l -5005.94 582.07 l -5024.76 582.191 l -5093.13 582.754 l -5180.31 583.426 l -5267.5 584.027 l -5354.69 584.629 l -5406.96 585.004 l -5441.88 585.355 l -5529.06 586.055 l -5616.25 586.621 l -5703.44 587.102 l -5790.63 587.508 l -5877.81 587.785 l -5911.97 587.824 l -5965 587.867 l -6017.92 587.824 l -6052.19 587.785 l -6139.38 587.508 l -6226.56 587.102 l -6313.75 586.621 l -6400.94 586.055 l -6488.13 585.348 l -6522.97 585.004 l -6575.31 584.629 l -6662.5 584.027 l -6749.69 583.426 l -6836.88 582.754 l -6905.19 582.191 l -6924.06 582.07 l -7011.25 581.621 l -7098.44 581.23 l -7185.63 580.895 l -7272.81 580.652 l -7360 580.523 l -7447.19 580.457 l -7534.38 580.391 l -7621.56 579.91 l -7644.57 579.371 l -7699.32 576.559 l -7708.75 575.637 l -7724.18 573.738 l -7742.11 570.926 l -7739.46 568.105 l -7710.21 565.293 l -7708.75 565.172 l -7662.68 562.48 l -7621.56 560.469 l -7534.38 559.742 l -7447.19 559.789 l -7360 559.84 l -7272.81 559.879 l -7185.63 559.887 l -7098.44 559.863 l -7011.25 559.816 l -6924.06 559.742 l -6838.44 559.66 l -6836.88 559.66 l -6749.69 559.652 l -6727.08 559.66 l -6662.5 559.727 l -6575.31 559.914 l -6488.13 560.156 l -6400.94 560.418 l -6313.75 560.656 l -6226.56 560.852 l -6139.38 561.004 l -6052.19 561.102 l -5965 561.129 l -5877.81 561.102 l -5790.63 561.004 l -5703.44 560.852 l -5616.25 560.656 l -5529.06 560.418 l -5441.88 560.156 l -5354.69 559.914 l -5267.5 559.727 l -5203.14 559.66 l -5180.31 559.652 l -f -/DeviceRGB {} cs -[1 0.6933 0] sc -5091.79 559.66 m -5093.13 559.66 l -5093.13 559.66 l -5091.79 559.66 l -h -5093.13 559.66 m -5093.13 559.66 l -5180.31 559.652 l -5203.14 559.66 l -5267.5 559.727 l -5354.69 559.914 l -5441.88 560.156 l -5529.06 560.418 l -5616.25 560.656 l -5703.44 560.852 l -5790.63 561.004 l -5877.81 561.102 l -5965 561.129 l -6052.19 561.102 l -6139.38 561.004 l -6226.56 560.852 l -6313.75 560.656 l -6400.94 560.418 l -6488.13 560.156 l -6575.31 559.914 l -6662.5 559.727 l -6727.08 559.66 l -6749.69 559.652 l -6836.88 559.66 l -6836.88 559.66 l -6838.44 559.66 l -6836.88 559.66 l -6836.88 559.66 l -6838.44 559.66 l -6924.06 559.742 l -7011.25 559.816 l -7098.44 559.863 l -7185.63 559.887 l -7272.81 559.879 l -7360 559.84 l -7447.19 559.789 l -7534.38 559.742 l -7621.56 560.469 l -7662.68 562.48 l -7708.75 565.172 l -7710.21 565.293 l -7739.46 568.105 l -7742.11 570.926 l -7724.18 573.738 l -7708.75 575.637 l -7699.32 576.559 l -7644.57 579.371 l -7621.56 579.91 l -7534.38 580.391 l -7447.19 580.457 l -7360 580.523 l -7272.81 580.652 l -7185.63 580.895 l -7098.44 581.23 l -7011.25 581.621 l -6924.06 582.07 l -6905.19 582.191 l -6836.88 582.754 l -6749.69 583.426 l -6662.5 584.027 l -6575.31 584.629 l -6522.97 585.004 l -6488.13 585.348 l -6400.94 586.055 l -6313.75 586.621 l -6226.56 587.102 l -6139.38 587.508 l -6052.19 587.785 l -6017.92 587.824 l -5965 587.867 l -5911.97 587.824 l -5877.81 587.785 l -5790.63 587.508 l -5703.44 587.102 l -5616.25 586.621 l -5529.06 586.055 l -5441.88 585.355 l -5406.96 585.004 l -5354.69 584.629 l -5267.5 584.027 l -5180.31 583.426 l -5093.13 582.754 l -5024.76 582.191 l -5005.94 582.07 l -4918.75 581.621 l -4831.56 581.23 l -4744.38 580.895 l -4657.19 580.652 l -4570 580.523 l -4482.81 580.457 l -4395.63 580.391 l -4308.44 579.91 l -4285.43 579.371 l -4230.7 576.559 l -4221.25 575.637 l -4205.82 573.738 l -4187.88 570.926 l -4190.52 568.105 l -4219.77 565.293 l -4221.25 565.172 l -4267.3 562.48 l -4308.44 560.469 l -4395.63 559.742 l -4482.81 559.789 l -4570 559.84 l -4657.19 559.879 l -4744.38 559.879 l -4831.56 559.863 l -4918.75 559.816 l -5005.94 559.742 l -5091.79 559.66 l -5093.13 559.66 l -h -4308.44 561.152 m -4281.32 562.48 l -4229.72 565.293 l -4221.25 565.895 l -4197.9 568.105 l -4195.02 570.926 l -4214.58 573.738 l -4221.25 574.555 l -4241.73 576.559 l -4301.43 579.371 l -4308.44 579.535 l -4395.63 580.023 l -4482.81 580.031 l -4570 580 l -4657.19 580.055 l -4744.38 580.246 l -4831.56 580.602 l -4918.75 581.043 l -5005.94 581.531 l -5093.13 582.086 l -5106.66 582.191 l -5180.31 582.82 l -5267.5 583.457 l -5354.69 584.043 l -5441.88 584.637 l -5494.71 585.004 l -5529.06 585.289 l -5616.25 585.844 l -5703.44 586.277 l -5790.63 586.621 l -5877.81 586.848 l -5965 586.922 l -6052.19 586.848 l -6139.38 586.621 l -6226.56 586.277 l -6313.75 585.844 l -6400.94 585.289 l -6435.27 585.004 l -6488.13 584.637 l -6575.31 584.043 l -6662.5 583.457 l -6749.69 582.82 l -6823.41 582.191 l -6836.88 582.086 l -6924.06 581.531 l -7011.25 581.043 l -7098.44 580.602 l -7185.63 580.246 l -7272.81 580.055 l -7360 580 l -7447.19 580.031 l -7534.38 580.023 l -7621.56 579.535 l -7628.57 579.371 l -7688.3 576.559 l -7708.75 574.563 l -7715.43 573.738 l -7734.97 570.926 l -7732.07 568.105 l -7708.75 565.895 l -7700.26 565.293 l -7648.65 562.48 l -7621.56 561.16 l -7534.38 560.289 l -7447.19 560.246 l -7360 560.246 l -7272.81 560.254 l -7185.63 560.273 l -7098.44 560.305 l -7011.25 560.359 l -6924.06 560.418 l -6836.88 560.484 l -6749.69 560.559 l -6662.5 560.672 l -6575.31 560.828 l -6488.13 561.02 l -6400.94 561.211 l -6313.75 561.395 l -6226.56 561.559 l -6139.38 561.68 l -6052.19 561.754 l -5965 561.781 l -5877.81 561.754 l -5790.63 561.68 l -5703.44 561.559 l -5616.25 561.395 l -5529.06 561.211 l -5441.88 561.02 l -5354.69 560.828 l -5267.5 560.672 l -5180.31 560.559 l -5093.13 560.484 l -5005.94 560.418 l -4918.75 560.359 l -4831.56 560.305 l -4744.38 560.273 l -4657.19 560.254 l -4570 560.246 l -4482.81 560.246 l -4395.63 560.289 l -f -/DeviceRGB {} cs -[1 0.6035 0] sc -4281.32 562.48 m -4308.44 561.152 l -4395.63 560.289 l -4482.81 560.246 l -4570 560.246 l -4657.19 560.254 l -4744.38 560.273 l -4831.56 560.305 l -4918.75 560.359 l -5005.94 560.418 l -5093.13 560.484 l -5180.31 560.559 l -5267.5 560.672 l -5354.69 560.828 l -5441.88 561.02 l -5529.06 561.211 l -5616.25 561.395 l -5703.44 561.559 l -5790.63 561.68 l -5877.81 561.754 l -5965 561.781 l -6052.19 561.754 l -6139.38 561.68 l -6226.56 561.559 l -6313.75 561.395 l -6400.94 561.211 l -6488.13 561.02 l -6575.31 560.828 l -6662.5 560.672 l -6749.69 560.559 l -6836.88 560.484 l -6924.06 560.418 l -7011.25 560.359 l -7098.44 560.305 l -7185.63 560.273 l -7272.81 560.254 l -7360 560.246 l -7447.19 560.246 l -7534.38 560.289 l -7621.56 561.16 l -7648.65 562.48 l -7700.26 565.293 l -7708.75 565.895 l -7732.07 568.105 l -7734.97 570.926 l -7715.43 573.738 l -7708.75 574.563 l -7688.3 576.559 l -7628.57 579.371 l -7621.56 579.535 l -7534.38 580.023 l -7447.19 580.031 l -7360 580 l -7272.81 580.055 l -7185.63 580.246 l -7098.44 580.602 l -7011.25 581.043 l -6924.06 581.531 l -6836.88 582.086 l -6823.41 582.191 l -6749.69 582.82 l -6662.5 583.457 l -6575.31 584.043 l -6488.13 584.637 l -6435.27 585.004 l -6400.94 585.289 l -6313.75 585.844 l -6226.56 586.277 l -6139.38 586.621 l -6052.19 586.848 l -5965 586.922 l -5877.81 586.848 l -5790.63 586.621 l -5703.44 586.277 l -5616.25 585.844 l -5529.06 585.289 l -5494.71 585.004 l -5441.88 584.637 l -5354.69 584.043 l -5267.5 583.457 l -5180.31 582.82 l -5106.66 582.191 l -5093.13 582.086 l -5005.94 581.531 l -4918.75 581.043 l -4831.56 580.602 l -4744.38 580.246 l -4657.19 580.055 l -4570 580 l -4482.81 580.031 l -4395.63 580.023 l -4308.44 579.535 l -4301.43 579.371 l -4241.73 576.559 l -4221.25 574.555 l -4214.58 573.738 l -4195.02 570.926 l -4197.9 568.105 l -4221.25 565.895 l -4229.72 565.293 l -4281.32 562.48 l -h -4308.44 561.836 m -4295.35 562.48 l -4239.65 565.293 l -4221.25 566.59 l -4205.29 568.105 l -4202.16 570.926 l -4221.25 573.512 l -4223.31 573.738 l -4252.75 576.559 l -4308.44 579.094 l -4346.03 579.371 l -4395.63 579.648 l -4482.81 579.594 l -4570 579.484 l -4657.19 579.445 l -4744.38 579.602 l -4831.56 579.969 l -4918.75 580.465 l -5005.94 580.992 l -5093.13 581.547 l -5177.9 582.191 l -5180.31 582.211 l -5267.5 582.887 l -5354.69 583.449 l -5441.88 583.984 l -5529.06 584.523 l -5607.32 585.004 l -5616.25 585.063 l -5703.44 585.453 l -5790.63 585.73 l -5877.81 585.91 l -5965 585.969 l -6052.19 585.91 l -6139.38 585.73 l -6226.56 585.453 l -6313.75 585.063 l -6322.78 585.004 l -6400.94 584.523 l -6488.13 583.984 l -6575.31 583.449 l -6662.5 582.887 l -6749.69 582.211 l -6752.17 582.191 l -6836.88 581.547 l -6924.06 580.992 l -7011.25 580.465 l -7098.44 579.969 l -7185.63 579.602 l -7272.81 579.445 l -7360 579.484 l -7447.19 579.594 l -7534.38 579.648 l -7583.96 579.371 l -7621.56 579.094 l -7677.28 576.559 l -7706.7 573.738 l -7708.75 573.512 l -7727.83 570.926 l -7724.69 568.105 l -7708.75 566.598 l -7690.32 565.293 l -7634.63 562.48 l -7621.56 561.844 l -7534.38 560.836 l -7447.19 560.711 l -7360 560.648 l -7272.81 560.637 l -7185.63 560.664 l -7098.44 560.746 l -7011.25 560.898 l -6924.06 561.102 l -6836.88 561.309 l -6749.69 561.484 l -6662.5 561.625 l -6575.31 561.746 l -6488.13 561.871 l -6400.94 562.008 l -6313.75 562.137 l -6226.56 562.254 l -6139.38 562.352 l -6052.19 562.414 l -5965 562.434 l -5877.81 562.414 l -5790.63 562.352 l -5703.44 562.254 l -5616.25 562.137 l -5529.06 562.008 l -5441.88 561.871 l -5354.69 561.746 l -5267.5 561.625 l -5180.31 561.484 l -5093.13 561.309 l -5005.94 561.102 l -4918.75 560.898 l -4831.56 560.746 l -4744.38 560.664 l -4657.19 560.637 l -4570 560.648 l -4482.81 560.711 l -4395.63 560.836 l -f -/DeviceRGB {} cs -[1 0.5098 0] sc -4295.35 562.48 m -4308.44 561.836 l -4395.63 560.836 l -4482.81 560.711 l -4570 560.648 l -4657.19 560.637 l -4744.38 560.664 l -4831.56 560.746 l -4918.75 560.898 l -5005.94 561.102 l -5093.13 561.309 l -5180.31 561.484 l -5267.5 561.625 l -5354.69 561.746 l -5441.88 561.871 l -5529.06 562.008 l -5616.25 562.137 l -5703.44 562.254 l -5790.63 562.352 l -5877.81 562.414 l -5965 562.434 l -6052.19 562.414 l -6139.38 562.352 l -6226.56 562.254 l -6313.75 562.137 l -6400.94 562.008 l -6488.13 561.871 l -6575.31 561.746 l -6662.5 561.625 l -6749.69 561.484 l -6836.88 561.309 l -6924.06 561.102 l -7011.25 560.898 l -7098.44 560.746 l -7185.63 560.664 l -7272.81 560.637 l -7360 560.648 l -7447.19 560.711 l -7534.38 560.836 l -7621.56 561.844 l -7634.63 562.48 l -7690.32 565.293 l -7708.75 566.598 l -7724.69 568.105 l -7727.83 570.926 l -7708.75 573.512 l -7706.7 573.738 l -7677.28 576.559 l -7621.56 579.094 l -7583.96 579.371 l -7534.38 579.648 l -7447.19 579.594 l -7360 579.484 l -7272.81 579.445 l -7185.63 579.602 l -7098.44 579.969 l -7011.25 580.465 l -6924.06 580.992 l -6836.88 581.547 l -6752.17 582.191 l -6749.69 582.211 l -6662.5 582.887 l -6575.31 583.449 l -6488.13 583.984 l -6400.94 584.523 l -6322.78 585.004 l -6313.75 585.063 l -6226.56 585.453 l -6139.38 585.73 l -6052.19 585.91 l -5965 585.969 l -5877.81 585.91 l -5790.63 585.73 l -5703.44 585.453 l -5616.25 585.063 l -5607.32 585.004 l -5529.06 584.523 l -5441.88 583.984 l -5354.69 583.449 l -5267.5 582.887 l -5180.31 582.211 l -5177.9 582.191 l -5093.13 581.547 l -5005.94 580.992 l -4918.75 580.465 l -4831.56 579.969 l -4744.38 579.602 l -4657.19 579.445 l -4570 579.484 l -4482.81 579.594 l -4395.63 579.648 l -4346.03 579.371 l -4308.44 579.094 l -4252.75 576.559 l -4223.31 573.738 l -4221.25 573.512 l -4202.16 570.926 l -4205.29 568.105 l -4221.25 566.59 l -4239.65 565.293 l -4295.35 562.48 l -h -4395.63 561.387 m -4311.26 562.48 l -4308.44 562.512 l -4249.59 565.293 l -4221.25 567.297 l -4212.68 568.105 l -4209.3 570.926 l -4221.25 572.547 l -4231.92 573.738 l -4263.77 576.559 l -4308.44 578.59 l -4395.63 579.258 l -4482.81 579.145 l -4570 578.996 l -4657.19 578.926 l -4744.38 579.023 l -4831.56 579.34 l -4836.23 579.371 l -4918.75 579.887 l -5005.94 580.449 l -5093.13 580.996 l -5180.31 581.598 l -5251.09 582.191 l -5267.5 582.316 l -5354.69 582.867 l -5441.88 583.328 l -5529.06 583.75 l -5616.25 584.148 l -5703.44 584.5 l -5790.63 584.777 l -5877.81 584.957 l -5950.82 585.004 l -5965 585.012 l -5979.11 585.004 l -6052.19 584.957 l -6139.38 584.777 l -6226.56 584.5 l -6313.75 584.148 l -6400.94 583.75 l -6488.13 583.328 l -6575.31 582.867 l -6662.5 582.316 l -6678.92 582.191 l -6749.69 581.598 l -6836.88 580.996 l -6924.06 580.449 l -7011.25 579.887 l -7093.72 579.371 l -7098.44 579.34 l -7185.63 579.023 l -7272.81 578.926 l -7360 578.996 l -7447.19 579.145 l -7534.38 579.258 l -7621.56 578.59 l -7666.25 576.559 l -7698.09 573.738 l -7708.75 572.547 l -7720.7 570.926 l -7717.3 568.105 l -7708.75 567.297 l -7680.39 565.293 l -7621.56 562.512 l -7618.68 562.48 l -7534.38 561.387 l -7447.19 561.176 l -7360 561.055 l -7272.81 561.012 l -7185.63 561.055 l -7098.44 561.191 l -7011.25 561.438 l -6924.06 561.773 l -6836.88 562.137 l -6749.69 562.414 l -6712.95 562.48 l -6662.5 562.602 l -6575.31 562.766 l -6488.13 562.93 l -6400.94 563.102 l -6313.75 563.277 l -6226.56 563.434 l -6139.38 563.559 l -6052.19 563.641 l -5965 563.664 l -5877.81 563.641 l -5790.63 563.559 l -5703.44 563.434 l -5616.25 563.277 l -5529.06 563.102 l -5441.88 562.93 l -5354.69 562.766 l -5267.5 562.602 l -5216.97 562.48 l -5180.31 562.414 l -5093.13 562.137 l -5005.94 561.773 l -4918.75 561.438 l -4831.56 561.191 l -4744.38 561.055 l -4657.19 561.012 l -4570 561.055 l -4482.81 561.176 l -f -/DeviceRGB {} cs -[1 0.4241 0] sc -4311.26 562.48 m -4395.63 561.387 l -4482.81 561.176 l -4570 561.055 l -4657.19 561.012 l -4744.38 561.055 l -4831.56 561.191 l -4918.75 561.438 l -5005.94 561.773 l -5093.13 562.137 l -5180.31 562.414 l -5216.97 562.48 l -5267.5 562.602 l -5354.69 562.766 l -5441.88 562.93 l -5529.06 563.102 l -5616.25 563.277 l -5703.44 563.434 l -5790.63 563.559 l -5877.81 563.641 l -5965 563.664 l -6052.19 563.641 l -6139.38 563.559 l -6226.56 563.434 l -6313.75 563.277 l -6400.94 563.102 l -6488.13 562.93 l -6575.31 562.766 l -6662.5 562.602 l -6712.95 562.48 l -6749.69 562.414 l -6836.88 562.137 l -6924.06 561.773 l -7011.25 561.438 l -7098.44 561.191 l -7185.63 561.055 l -7272.81 561.012 l -7360 561.055 l -7447.19 561.176 l -7534.38 561.387 l -7618.68 562.48 l -7621.56 562.512 l -7680.39 565.293 l -7708.75 567.297 l -7717.3 568.105 l -7720.7 570.926 l -7708.75 572.547 l -7698.09 573.738 l -7666.25 576.559 l -7621.56 578.59 l -7534.38 579.258 l -7447.19 579.145 l -7360 578.996 l -7272.81 578.926 l -7185.63 579.023 l -7098.44 579.34 l -7093.72 579.371 l -7011.25 579.887 l -6924.06 580.449 l -6836.88 580.996 l -6749.69 581.598 l -6678.92 582.191 l -6662.5 582.316 l -6575.31 582.867 l -6488.13 583.328 l -6400.94 583.75 l -6313.75 584.148 l -6226.56 584.5 l -6139.38 584.777 l -6052.19 584.957 l -5979.11 585.004 l -5965 585.012 l -5950.82 585.004 l -5877.81 584.957 l -5790.63 584.777 l -5703.44 584.5 l -5616.25 584.148 l -5529.06 583.75 l -5441.88 583.328 l -5354.69 582.867 l -5267.5 582.316 l -5251.09 582.191 l -5180.31 581.598 l -5093.13 580.996 l -5005.94 580.449 l -4918.75 579.887 l -4836.23 579.371 l -4831.56 579.34 l -4744.38 579.023 l -4657.19 578.926 l -4570 578.996 l -4482.81 579.145 l -4395.63 579.258 l -4308.44 578.59 l -4263.77 576.559 l -4231.92 573.738 l -4221.25 572.547 l -4209.3 570.926 l -4212.68 568.105 l -4221.25 567.297 l -4249.59 565.293 l -4308.44 562.512 l -4311.26 562.48 l -h -4395.63 561.926 m -4353.27 562.48 l -4308.44 562.977 l -4259.52 565.293 l -4221.25 567.992 l -4220.07 568.105 l -4216.43 570.926 l -4221.25 571.578 l -4240.54 573.738 l -4274.8 576.559 l -4308.44 578.086 l -4395.63 578.801 l -4482.81 578.688 l -4570 578.516 l -4657.19 578.426 l -4744.38 578.492 l -4831.56 578.762 l -4918.75 579.297 l -4927.63 579.371 l -5005.94 579.91 l -5093.13 580.457 l -5180.31 580.984 l -5267.5 581.59 l -5339.88 582.191 l -5354.69 582.281 l -5441.88 582.676 l -5529.06 582.984 l -5616.25 583.227 l -5703.44 583.406 l -5790.63 583.52 l -5877.81 583.578 l -5965 583.594 l -6052.19 583.578 l -6139.38 583.52 l -6226.56 583.398 l -6313.75 583.227 l -6400.94 582.984 l -6488.13 582.676 l -6575.31 582.281 l -6590.1 582.191 l -6662.5 581.59 l -6749.69 580.984 l -6836.88 580.457 l -6924.06 579.91 l -7002.3 579.371 l -7011.25 579.297 l -7098.44 578.762 l -7185.63 578.492 l -7272.81 578.426 l -7360 578.516 l -7447.19 578.688 l -7534.38 578.801 l -7621.56 578.086 l -7655.23 576.559 l -7689.47 573.738 l -7708.75 571.578 l -7713.56 570.926 l -7709.91 568.105 l -7708.75 568 l -7670.46 565.293 l -7621.56 562.984 l -7576.68 562.48 l -7534.38 561.926 l -7447.19 561.641 l -7360 561.461 l -7272.81 561.395 l -7185.63 561.445 l -7098.44 561.633 l -7011.25 561.977 l -6924.06 562.457 l -6919.5 562.48 l -6836.88 562.922 l -6749.69 563.379 l -6662.5 563.832 l -6575.31 564.207 l -6488.13 564.477 l -6400.94 564.641 l -6313.75 564.754 l -6226.56 564.836 l -6139.38 564.895 l -6052.19 564.934 l -5965 564.949 l -5877.81 564.934 l -5790.63 564.895 l -5703.44 564.836 l -5616.25 564.754 l -5529.06 564.641 l -5441.88 564.477 l -5354.69 564.207 l -5267.5 563.832 l -5180.31 563.379 l -5093.13 562.922 l -5010.49 562.48 l -5005.94 562.457 l -4918.75 561.977 l -4831.56 561.633 l -4744.38 561.445 l -4657.19 561.395 l -4570 561.461 l -4482.81 561.641 l -f -/DeviceRGB {} cs -[1 0.333 0] sc -4353.27 562.48 m -4395.63 561.926 l -4482.81 561.641 l -4570 561.461 l -4657.19 561.395 l -4744.38 561.445 l -4831.56 561.633 l -4918.75 561.977 l -5005.94 562.457 l -5010.49 562.48 l -5093.13 562.922 l -5180.31 563.379 l -5267.5 563.832 l -5354.69 564.207 l -5441.88 564.477 l -5529.06 564.641 l -5616.25 564.754 l -5703.44 564.836 l -5790.63 564.895 l -5877.81 564.934 l -5965 564.949 l -6052.19 564.934 l -6139.38 564.895 l -6226.56 564.836 l -6313.75 564.754 l -6400.94 564.641 l -6488.13 564.477 l -6575.31 564.207 l -6662.5 563.832 l -6749.69 563.379 l -6836.88 562.922 l -6919.5 562.48 l -6924.06 562.457 l -7011.25 561.977 l -7098.44 561.633 l -7185.63 561.445 l -7272.81 561.395 l -7360 561.461 l -7447.19 561.641 l -7534.38 561.926 l -7576.68 562.48 l -7621.56 562.984 l -7670.46 565.293 l -7708.75 568 l -7709.91 568.105 l -7713.56 570.926 l -7708.75 571.578 l -7689.47 573.738 l -7655.23 576.559 l -7621.56 578.086 l -7534.38 578.801 l -7447.19 578.688 l -7360 578.516 l -7272.81 578.426 l -7185.63 578.492 l -7098.44 578.762 l -7011.25 579.297 l -7002.3 579.371 l -6924.06 579.91 l -6836.88 580.457 l -6749.69 580.984 l -6662.5 581.59 l -6590.1 582.191 l -6575.31 582.281 l -6488.13 582.676 l -6400.94 582.984 l -6313.75 583.227 l -6226.56 583.398 l -6139.38 583.52 l -6052.19 583.578 l -5965 583.594 l -5877.81 583.578 l -5790.63 583.52 l -5703.44 583.406 l -5616.25 583.227 l -5529.06 582.984 l -5441.88 582.676 l -5354.69 582.281 l -5339.88 582.191 l -5267.5 581.59 l -5180.31 580.984 l -5093.13 580.457 l -5005.94 579.91 l -4927.63 579.371 l -4918.75 579.297 l -4831.56 578.762 l -4744.38 578.492 l -4657.19 578.426 l -4570 578.516 l -4482.81 578.688 l -4395.63 578.801 l -4308.44 578.086 l -4274.8 576.559 l -4240.54 573.738 l -4221.25 571.578 l -4216.43 570.926 l -4220.07 568.105 l -4221.25 567.992 l -4259.52 565.293 l -4308.44 562.977 l -4353.27 562.48 l -h -4395.63 562.473 m -4395.27 562.48 l -4308.44 563.449 l -4269.45 565.293 l -4227.54 568.105 l -4223.56 570.926 l -4249.15 573.738 l -4285.82 576.559 l -4308.44 577.586 l -4395.63 578.352 l -4482.81 578.223 l -4570 578.035 l -4657.19 577.922 l -4744.38 577.961 l -4831.56 578.184 l -4918.75 578.605 l -5005.94 579.371 l -5006.45 579.371 l -5093.13 579.91 l -5180.31 580.375 l -5267.5 580.809 l -5354.69 581.273 l -5441.88 581.777 l -5518.16 582.191 l -5529.06 582.219 l -5616.25 582.305 l -5703.44 582.305 l -5790.63 582.25 l -5877.81 582.191 l -5896.07 582.191 l -5965 581.559 l -6034.66 582.191 l -6052.19 582.191 l -6139.38 582.25 l -6226.56 582.305 l -6313.75 582.305 l -6400.94 582.211 l -6411.42 582.191 l -6488.13 581.777 l -6575.31 581.273 l -6662.5 580.809 l -6749.69 580.375 l -6836.88 579.91 l -6923.5 579.371 l -6924.06 579.371 l -7011.25 578.605 l -7098.44 578.184 l -7185.63 577.961 l -7272.81 577.922 l -7360 578.035 l -7447.19 578.223 l -7534.38 578.352 l -7621.56 577.586 l -7644.21 576.559 l -7680.86 573.738 l -7706.43 570.926 l -7702.43 568.105 l -7660.52 565.293 l -7621.56 563.449 l -7534.69 562.48 l -7534.38 562.473 l -7447.19 562.098 l -7360 561.863 l -7272.81 561.766 l -7185.63 561.836 l -7098.44 562.074 l -7018.07 562.48 l -7011.25 562.52 l -6924.06 563.086 l -6836.88 563.68 l -6749.69 564.355 l -6662.5 565.059 l -6624.48 565.293 l -6575.31 565.457 l -6488.13 565.66 l -6400.94 565.797 l -6313.75 565.887 l -6226.56 565.938 l -6139.38 565.977 l -6052.19 565.996 l -5965 566.004 l -5877.81 565.996 l -5790.63 565.977 l -5703.44 565.938 l -5616.25 565.887 l -5529.06 565.797 l -5441.88 565.66 l -5354.69 565.457 l -5305.49 565.293 l -5267.5 565.059 l -5180.31 564.355 l -5093.13 563.688 l -5005.94 563.086 l -4918.75 562.52 l -4911.96 562.48 l -4831.56 562.074 l -4744.38 561.836 l -4657.19 561.766 l -4570 561.863 l -4482.81 562.098 l -4395.63 562.473 l -h -5578.98 576.559 m -5616.25 576.355 l -5703.44 575.926 l -5790.63 575.551 l -5877.81 575.313 l -5965 575.223 l -6052.19 575.313 l -6139.38 575.551 l -6226.56 575.926 l -6313.75 576.363 l -6350.71 576.559 l -6313.75 576.977 l -6226.56 577.871 l -6139.38 578.59 l -6052.19 579.055 l -5965 579.215 l -5877.81 579.047 l -5790.63 578.59 l -5703.44 577.871 l -5616.25 576.977 l -f -/DeviceRGB {} cs -[1 0.2471 0] sc -4395.27 562.48 m -4395.63 562.473 l -4482.81 562.098 l -4570 561.863 l -4657.19 561.766 l -4744.38 561.836 l -4831.56 562.074 l -4911.96 562.48 l -4918.75 562.52 l -5005.94 563.086 l -5093.13 563.688 l -5180.31 564.355 l -5267.5 565.059 l -5305.49 565.293 l -5354.69 565.457 l -5441.88 565.66 l -5529.06 565.797 l -5616.25 565.887 l -5703.44 565.938 l -5790.63 565.977 l -5877.81 565.996 l -5965 566.004 l -6052.19 565.996 l -6139.38 565.977 l -6226.56 565.938 l -6313.75 565.887 l -6400.94 565.797 l -6488.13 565.66 l -6575.31 565.457 l -6624.48 565.293 l -6662.5 565.059 l -6749.69 564.355 l -6836.88 563.68 l -6924.06 563.086 l -7011.25 562.52 l -7018.07 562.48 l -7098.44 562.074 l -7185.63 561.836 l -7272.81 561.766 l -7360 561.863 l -7447.19 562.098 l -7534.38 562.473 l -7534.69 562.48 l -7621.56 563.449 l -7660.52 565.293 l -7702.43 568.105 l -7706.43 570.926 l -7680.86 573.738 l -7644.21 576.559 l -7621.56 577.586 l -7534.38 578.352 l -7447.19 578.223 l -7360 578.035 l -7272.81 577.922 l -7185.63 577.961 l -7098.44 578.184 l -7011.25 578.605 l -6924.06 579.371 l -6923.5 579.371 l -6836.88 579.91 l -6749.69 580.375 l -6662.5 580.809 l -6575.31 581.273 l -6488.13 581.777 l -6411.42 582.191 l -6400.94 582.211 l -6313.75 582.305 l -6226.56 582.305 l -6139.38 582.25 l -6052.19 582.191 l -6034.66 582.191 l -5965 581.559 l -5896.07 582.191 l -5877.81 582.191 l -5790.63 582.25 l -5703.44 582.305 l -5616.25 582.305 l -5529.06 582.219 l -5518.16 582.191 l -5441.88 581.777 l -5354.69 581.273 l -5267.5 580.809 l -5180.31 580.375 l -5093.13 579.91 l -5006.45 579.371 l -5005.94 579.371 l -4918.75 578.605 l -4831.56 578.184 l -4744.38 577.961 l -4657.19 577.922 l -4570 578.035 l -4482.81 578.223 l -4395.63 578.352 l -4308.44 577.586 l -4285.82 576.559 l -4249.15 573.738 l -4223.56 570.926 l -4227.54 568.105 l -4269.45 565.293 l -4308.44 563.449 l -4395.27 562.48 l -h -4570 562.27 m -4506.63 562.48 l -4482.81 562.57 l -4395.63 562.914 l -4308.44 563.922 l -4279.38 565.293 l -4235.04 568.105 l -4230.68 570.926 l -4257.77 573.738 l -4296.84 576.559 l -4308.44 577.082 l -4395.63 577.895 l -4482.81 577.766 l -4570 577.555 l -4657.19 577.414 l -4744.38 577.426 l -4831.56 577.602 l -4918.75 577.914 l -5005.94 578.41 l -5093.13 579.355 l -5094.48 579.371 l -5180.31 579.762 l -5267.5 580.039 l -5354.69 580.195 l -5441.88 580.137 l -5529.06 579.664 l -5556.52 579.371 l -5529.06 579.039 l -5441.88 577.945 l -5354.69 576.602 l -5352.62 576.559 l -5354.69 576.543 l -5441.88 575.941 l -5529.06 575.418 l -5616.25 574.887 l -5703.44 574.359 l -5790.63 573.926 l -5850.69 573.738 l -5877.81 573.676 l -5965 573.617 l -6052.19 573.676 l -6079.48 573.738 l -6139.38 573.926 l -6226.56 574.359 l -6313.75 574.887 l -6400.94 575.418 l -6488.13 575.941 l -6575.31 576.543 l -6577.36 576.559 l -6575.31 576.602 l -6488.13 577.945 l -6400.94 579.039 l -6373.77 579.371 l -6400.94 579.656 l -6488.13 580.137 l -6575.31 580.195 l -6662.5 580.039 l -6749.69 579.762 l -6835.3 579.371 l -6836.88 579.355 l -6924.06 578.41 l -7011.25 577.922 l -7098.44 577.602 l -7185.63 577.426 l -7272.81 577.414 l -7360 577.555 l -7447.19 577.766 l -7534.38 577.895 l -7621.56 577.082 l -7633.19 576.559 l -7672.24 573.738 l -7699.31 570.926 l -7694.95 568.105 l -7650.59 565.293 l -7621.56 563.922 l -7534.38 562.914 l -7447.19 562.57 l -7423.34 562.48 l -7360 562.27 l -7272.81 562.148 l -7185.63 562.227 l -7109.46 562.48 l -7098.44 562.531 l -7011.25 563.094 l -6924.06 563.719 l -6836.88 564.445 l -6752.51 565.293 l -6749.69 565.316 l -6662.5 565.766 l -6575.31 566.141 l -6488.13 566.449 l -6400.94 566.672 l -6313.75 566.816 l -6226.56 566.906 l -6139.38 566.949 l -6052.19 566.973 l -5965 566.98 l -5877.81 566.973 l -5790.63 566.949 l -5703.44 566.898 l -5616.25 566.816 l -5529.06 566.672 l -5441.88 566.449 l -5354.69 566.141 l -5267.5 565.766 l -5180.31 565.316 l -5177.52 565.293 l -5093.13 564.445 l -5005.94 563.719 l -4918.75 563.094 l -4831.56 562.531 l -4820.52 562.48 l -4744.38 562.227 l -4657.19 562.148 l -4570 562.27 l -h -5616.25 576.355 m -5578.98 576.559 l -5616.25 576.977 l -5703.44 577.871 l -5790.63 578.59 l -5877.81 579.047 l -5965 579.215 l -6052.19 579.055 l -6139.38 578.59 l -6226.56 577.871 l -6313.75 576.977 l -6350.71 576.559 l -6313.75 576.363 l -6226.56 575.926 l -6139.38 575.551 l -6052.19 575.313 l -5965 575.223 l -5877.81 575.313 l -5790.63 575.551 l -5703.44 575.926 l -f -/DeviceRGB {} cs -[1 0.1531 0] sc -4506.63 562.48 m -4570 562.27 l -4657.19 562.148 l -4744.38 562.227 l -4820.52 562.48 l -4831.56 562.531 l -4918.75 563.094 l -5005.94 563.719 l -5093.13 564.445 l -5177.52 565.293 l -5180.31 565.316 l -5267.5 565.766 l -5354.69 566.141 l -5441.88 566.449 l -5529.06 566.672 l -5616.25 566.816 l -5703.44 566.898 l -5790.63 566.949 l -5877.81 566.973 l -5965 566.98 l -6052.19 566.973 l -6139.38 566.949 l -6226.56 566.906 l -6313.75 566.816 l -6400.94 566.672 l -6488.13 566.449 l -6575.31 566.141 l -6662.5 565.766 l -6749.69 565.316 l -6752.51 565.293 l -6836.88 564.445 l -6924.06 563.719 l -7011.25 563.094 l -7098.44 562.531 l -7109.46 562.48 l -7185.63 562.227 l -7272.81 562.148 l -7360 562.27 l -7423.34 562.48 l -7447.19 562.57 l -7534.38 562.914 l -7621.56 563.922 l -7650.59 565.293 l -7694.95 568.105 l -7699.31 570.926 l -7672.24 573.738 l -7633.19 576.559 l -7621.56 577.082 l -7534.38 577.895 l -7447.19 577.766 l -7360 577.555 l -7272.81 577.414 l -7185.63 577.426 l -7098.44 577.602 l -7011.25 577.922 l -6924.06 578.41 l -6836.88 579.355 l -6835.3 579.371 l -6749.69 579.762 l -6662.5 580.039 l -6575.31 580.195 l -6488.13 580.137 l -6400.94 579.656 l -6373.77 579.371 l -6400.94 579.039 l -6488.13 577.945 l -6575.31 576.602 l -6577.36 576.559 l -6575.31 576.543 l -6488.13 575.941 l -6400.94 575.418 l -6313.75 574.887 l -6226.56 574.359 l -6139.38 573.926 l -6079.48 573.738 l -6052.19 573.676 l -5965 573.617 l -5877.81 573.676 l -5850.69 573.738 l -5790.63 573.926 l -5703.44 574.359 l -5616.25 574.887 l -5529.06 575.418 l -5441.88 575.941 l -5354.69 576.543 l -5352.62 576.559 l -5354.69 576.602 l -5441.88 577.945 l -5529.06 579.039 l -5556.52 579.371 l -5529.06 579.664 l -5441.88 580.137 l -5354.69 580.195 l -5267.5 580.039 l -5180.31 579.762 l -5094.48 579.371 l -5093.13 579.355 l -5005.94 578.41 l -4918.75 577.914 l -4831.56 577.602 l -4744.38 577.426 l -4657.19 577.414 l -4570 577.555 l -4482.81 577.766 l -4395.63 577.895 l -4308.44 577.082 l -4296.84 576.559 l -4257.77 573.738 l -4230.68 570.926 l -4235.04 568.105 l -4279.38 565.293 l -4308.44 563.922 l -4395.63 562.914 l -4482.81 562.57 l -4506.63 562.48 l -h -4308.44 564.387 m -4289.31 565.293 l -4242.54 568.105 l -4237.79 570.926 l -4266.38 573.738 l -4307.87 576.559 l -4308.44 576.582 l -4395.63 577.441 l -4482.81 577.301 l -4570 577.074 l -4657.19 576.91 l -4744.38 576.895 l -4831.56 577.023 l -4918.75 577.234 l -5005.94 577.449 l -5093.13 577.609 l -5180.31 577.074 l -5192.81 576.559 l -5267.5 575.816 l -5354.69 575.148 l -5441.88 574.594 l -5529.06 574.031 l -5570.46 573.738 l -5616.25 573.453 l -5703.44 572.973 l -5790.63 572.652 l -5877.81 572.477 l -5965 572.426 l -6052.19 572.477 l -6139.38 572.652 l -6226.56 572.973 l -6313.75 573.453 l -6359.43 573.738 l -6400.94 574.031 l -6488.13 574.594 l -6575.31 575.148 l -6662.5 575.816 l -6737.29 576.559 l -6749.69 577.066 l -6836.88 577.609 l -6924.06 577.449 l -7011.25 577.234 l -7098.44 577.023 l -7185.63 576.895 l -7272.81 576.91 l -7360 577.074 l -7447.19 577.309 l -7534.38 577.441 l -7621.56 576.582 l -7622.16 576.559 l -7663.63 573.738 l -7692.2 570.926 l -7687.45 568.105 l -7640.66 565.293 l -7621.56 564.395 l -7534.38 563.363 l -7447.19 563.051 l -7360 562.742 l -7272.81 562.555 l -7185.63 562.684 l -7098.44 563.102 l -7011.25 563.672 l -6924.06 564.355 l -6836.88 565.211 l -6828.59 565.293 l -6749.69 565.84 l -6662.5 566.352 l -6575.31 566.824 l -6488.13 567.234 l -6400.94 567.551 l -6313.75 567.746 l -6226.56 567.867 l -6139.38 567.926 l -6052.19 567.957 l -5965 567.965 l -5877.81 567.957 l -5790.63 567.926 l -5703.44 567.867 l -5616.25 567.746 l -5529.06 567.551 l -5441.88 567.234 l -5354.69 566.824 l -5267.5 566.352 l -5180.31 565.84 l -5101.4 565.293 l -5093.13 565.211 l -5005.94 564.355 l -4918.75 563.672 l -4831.56 563.102 l -4744.38 562.684 l -4657.19 562.555 l -4570 562.742 l -4482.81 563.051 l -4395.63 563.363 l -f -/DeviceRGB {} cs -[1 0.071 0] sc -4289.31 565.293 m -4308.44 564.387 l -4395.63 563.363 l -4482.81 563.051 l -4570 562.742 l -4657.19 562.555 l -4744.38 562.684 l -4831.56 563.102 l -4918.75 563.672 l -5005.94 564.355 l -5093.13 565.211 l -5101.4 565.293 l -5180.31 565.84 l -5267.5 566.352 l -5354.69 566.824 l -5441.88 567.234 l -5529.06 567.551 l -5616.25 567.746 l -5703.44 567.867 l -5790.63 567.926 l -5877.81 567.957 l -5965 567.965 l -6052.19 567.957 l -6139.38 567.926 l -6226.56 567.867 l -6313.75 567.746 l -6400.94 567.551 l -6488.13 567.234 l -6575.31 566.824 l -6662.5 566.352 l -6749.69 565.84 l -6828.59 565.293 l -6836.88 565.211 l -6924.06 564.355 l -7011.25 563.672 l -7098.44 563.102 l -7185.63 562.684 l -7272.81 562.555 l -7360 562.742 l -7447.19 563.051 l -7534.38 563.363 l -7621.56 564.395 l -7640.66 565.293 l -7687.45 568.105 l -7692.2 570.926 l -7663.63 573.738 l -7622.16 576.559 l -7621.56 576.582 l -7534.38 577.441 l -7447.19 577.309 l -7360 577.074 l -7272.81 576.91 l -7185.63 576.895 l -7098.44 577.023 l -7011.25 577.234 l -6924.06 577.449 l -6836.88 577.609 l -6749.69 577.066 l -6737.29 576.559 l -6662.5 575.816 l -6575.31 575.148 l -6488.13 574.594 l -6400.94 574.031 l -6359.43 573.738 l -6313.75 573.453 l -6226.56 572.973 l -6139.38 572.652 l -6052.19 572.477 l -5965 572.426 l -5877.81 572.477 l -5790.63 572.652 l -5703.44 572.973 l -5616.25 573.453 l -5570.46 573.738 l -5529.06 574.031 l -5441.88 574.594 l -5354.69 575.148 l -5267.5 575.816 l -5192.81 576.559 l -5180.31 577.074 l -5093.13 577.609 l -5005.94 577.449 l -4918.75 577.234 l -4831.56 577.023 l -4744.38 576.895 l -4657.19 576.91 l -4570 577.074 l -4482.81 577.301 l -4395.63 577.441 l -4308.44 576.582 l -4307.87 576.559 l -4266.38 573.738 l -4237.79 570.926 l -4242.54 568.105 l -4289.31 565.293 l -h -4308.44 564.859 m -4299.25 565.293 l -4250.04 568.105 l -4244.91 570.926 l -4275 573.738 l -4308.44 576.004 l -4352.16 576.559 l -4395.63 576.984 l -4482.81 576.844 l -4570 576.594 l -4589.06 576.559 l -4657.19 576.438 l -4744.38 576.395 l -4831.56 576.445 l -4918.75 576.543 l -5005.94 576.484 l -5093.13 575.965 l -5180.31 575.082 l -5267.5 574.309 l -5354.69 573.762 l -5357.67 573.738 l -5441.88 573.371 l -5529.06 572.801 l -5616.25 572.184 l -5703.44 571.707 l -5790.63 571.422 l -5877.81 571.285 l -5965 571.238 l -6052.19 571.285 l -6139.38 571.422 l -6226.56 571.707 l -6313.75 572.184 l -6400.94 572.801 l -6488.13 573.371 l -6572.52 573.738 l -6575.31 573.762 l -6662.5 574.316 l -6749.69 575.082 l -6836.88 575.965 l -6924.06 576.484 l -7011.25 576.543 l -7098.44 576.445 l -7185.63 576.395 l -7272.81 576.438 l -7340.9 576.559 l -7360 576.594 l -7447.19 576.844 l -7534.38 576.984 l -7577.97 576.559 l -7621.56 576.004 l -7655.02 573.738 l -7685.09 570.926 l -7679.95 568.105 l -7630.73 565.293 l -7621.56 564.859 l -7534.38 563.809 l -7447.19 563.531 l -7360 563.277 l -7272.81 563.141 l -7185.63 563.277 l -7098.44 563.68 l -7011.25 564.25 l -6924.06 564.984 l -6893.26 565.293 l -6836.88 565.75 l -6749.69 566.367 l -6662.5 566.941 l -6575.31 567.504 l -6488.13 568.023 l -6468.29 568.105 l -6400.94 568.629 l -6313.75 569.184 l -6226.56 569.648 l -6139.38 569.988 l -6052.19 570.191 l -5965 570.25 l -5877.81 570.191 l -5790.63 569.988 l -5703.44 569.648 l -5616.25 569.184 l -5529.06 568.629 l -5461.7 568.105 l -5441.88 568.023 l -5354.69 567.504 l -5267.5 566.941 l -5180.31 566.367 l -5093.13 565.75 l -5036.67 565.293 l -5005.94 564.984 l -4918.75 564.25 l -4831.56 563.68 l -4744.38 563.277 l -4657.19 563.141 l -4570 563.277 l -4482.81 563.531 l -4395.63 563.809 l -f -/DeviceRGB {} cs -[0.9766 0 0] sc -4299.25 565.293 m -4308.44 564.859 l -4395.63 563.809 l -4482.81 563.531 l -4570 563.277 l -4657.19 563.141 l -4744.38 563.277 l -4831.56 563.68 l -4918.75 564.25 l -5005.94 564.984 l -5036.67 565.293 l -5093.13 565.75 l -5180.31 566.367 l -5267.5 566.941 l -5354.69 567.504 l -5441.88 568.023 l -5461.7 568.105 l -5529.06 568.629 l -5616.25 569.184 l -5703.44 569.648 l -5790.63 569.988 l -5877.81 570.191 l -5965 570.25 l -6052.19 570.191 l -6139.38 569.988 l -6226.56 569.648 l -6313.75 569.184 l -6400.94 568.629 l -6468.29 568.105 l -6488.13 568.023 l -6575.31 567.504 l -6662.5 566.941 l -6749.69 566.367 l -6836.88 565.75 l -6893.26 565.293 l -6924.06 564.984 l -7011.25 564.25 l -7098.44 563.68 l -7185.63 563.277 l -7272.81 563.141 l -7360 563.277 l -7447.19 563.531 l -7534.38 563.809 l -7621.56 564.859 l -7630.73 565.293 l -7679.95 568.105 l -7685.09 570.926 l -7655.02 573.738 l -7621.56 576.004 l -7577.97 576.559 l -7534.38 576.984 l -7447.19 576.844 l -7360 576.594 l -7340.9 576.559 l -7272.81 576.438 l -7185.63 576.395 l -7098.44 576.445 l -7011.25 576.543 l -6924.06 576.484 l -6836.88 575.965 l -6749.69 575.082 l -6662.5 574.316 l -6575.31 573.762 l -6572.52 573.738 l -6488.13 573.371 l -6400.94 572.801 l -6313.75 572.184 l -6226.56 571.707 l -6139.38 571.422 l -6052.19 571.285 l -5965 571.238 l -5877.81 571.285 l -5790.63 571.422 l -5703.44 571.707 l -5616.25 572.184 l -5529.06 572.801 l -5441.88 573.371 l -5357.67 573.738 l -5354.69 573.762 l -5267.5 574.309 l -5180.31 575.082 l -5093.13 575.965 l -5005.94 576.484 l -4918.75 576.543 l -4831.56 576.445 l -4744.38 576.395 l -4657.19 576.438 l -4589.06 576.559 l -4570 576.594 l -4482.81 576.844 l -4395.63 576.984 l -4352.16 576.559 l -4308.44 576.004 l -4275 573.738 l -4244.91 570.926 l -4250.04 568.105 l -4299.25 565.293 l -h -4395.63 564.25 m -4311.14 565.293 l -4308.44 565.324 l -4257.54 568.105 l -4252.02 570.926 l -4283.61 573.738 l -4308.44 575.418 l -4395.63 576.527 l -4482.81 576.395 l -4570 576.191 l -4657.19 576.039 l -4744.38 575.949 l -4831.56 575.891 l -4918.75 575.762 l -5005.94 575.352 l -5093.13 574.465 l -5157.55 573.738 l -5180.31 573.625 l -5267.5 573.297 l -5354.69 572.914 l -5441.88 572.352 l -5529.06 571.621 l -5615.59 570.926 l -5529.06 570.07 l -5441.88 569.199 l -5354.69 568.246 l -5345.27 568.105 l -5267.5 567.527 l -5180.31 566.891 l -5093.13 566.262 l -5005.94 565.57 l -4971.9 565.293 l -4918.75 564.828 l -4831.56 564.25 l -4744.38 563.859 l -4657.19 563.719 l -4570 563.816 l -4482.81 564.02 l -4395.63 564.25 l -h -7011.25 564.828 m -6958.01 565.293 l -6924.06 565.57 l -6836.88 566.262 l -6749.69 566.891 l -6662.5 567.527 l -6584.71 568.105 l -6575.31 568.246 l -6488.13 569.199 l -6400.94 570.07 l -6314.38 570.926 l -6400.94 571.621 l -6488.13 572.352 l -6575.31 572.914 l -6662.5 573.297 l -6749.69 573.633 l -6772.21 573.738 l -6836.88 574.465 l -6924.06 575.352 l -7011.25 575.762 l -7098.44 575.891 l -7185.63 575.949 l -7272.81 576.039 l -7360 576.191 l -7447.19 576.395 l -7534.38 576.527 l -7621.56 575.426 l -7646.4 573.738 l -7677.97 570.926 l -7672.45 568.105 l -7621.56 565.324 l -7618.78 565.293 l -7534.38 564.25 l -7447.19 564.02 l -7360 563.816 l -7272.81 563.719 l -7185.63 563.859 l -7098.44 564.25 l -f -/DeviceRGB {} cs -[0.8945 0 0] sc -4311.14 565.293 m -4395.63 564.25 l -4482.81 564.02 l -4570 563.816 l -4657.19 563.719 l -4744.38 563.859 l -4831.56 564.25 l -4918.75 564.828 l -4971.9 565.293 l -5005.94 565.57 l -5093.13 566.262 l -5180.31 566.891 l -5267.5 567.527 l -5345.27 568.105 l -5354.69 568.246 l -5441.88 569.199 l -5529.06 570.07 l -5615.59 570.926 l -5529.06 571.621 l -5441.88 572.352 l -5354.69 572.914 l -5267.5 573.297 l -5180.31 573.625 l -5157.55 573.738 l -5093.13 574.465 l -5005.94 575.352 l -4918.75 575.762 l -4831.56 575.891 l -4744.38 575.949 l -4657.19 576.039 l -4570 576.191 l -4482.81 576.395 l -4395.63 576.527 l -4308.44 575.418 l -4283.61 573.738 l -4252.02 570.926 l -4257.54 568.105 l -4308.44 565.324 l -4311.14 565.293 l -h -4395.63 564.691 m -4347.18 565.293 l -4308.44 565.734 l -4265.03 568.105 l -4259.13 570.926 l -4292.22 573.738 l -4308.44 574.84 l -4395.63 576.047 l -4482.81 575.957 l -4570 575.785 l -4657.19 575.645 l -4744.38 575.508 l -4831.56 575.336 l -4918.75 574.984 l -5005.94 574.219 l -5044.94 573.738 l -5093.13 573.398 l -5180.31 572.973 l -5267.5 572.574 l -5354.69 572.074 l -5441.88 571.336 l -5485.27 570.926 l -5441.88 570.43 l -5354.69 569.379 l -5267.5 568.121 l -5267.07 568.105 l -5180.31 567.414 l -5093.13 566.77 l -5005.94 566.117 l -4918.75 565.414 l -4901.74 565.293 l -4831.56 564.828 l -4744.38 564.453 l -4657.19 564.297 l -4570 564.348 l -4482.81 564.496 l -4395.63 564.691 l -h -6958.01 565.293 m -7011.25 564.828 l -7098.44 564.25 l -7185.63 563.859 l -7272.81 563.719 l -7360 563.816 l -7447.19 564.02 l -7534.38 564.25 l -7618.78 565.293 l -7621.56 565.324 l -7672.45 568.105 l -7677.97 570.926 l -7646.4 573.738 l -7621.56 575.426 l -7534.38 576.527 l -7447.19 576.395 l -7360 576.191 l -7272.81 576.039 l -7185.63 575.949 l -7098.44 575.891 l -7011.25 575.762 l -6924.06 575.352 l -6836.88 574.465 l -6772.21 573.738 l -6749.69 573.633 l -6662.5 573.297 l -6575.31 572.914 l -6488.13 572.352 l -6400.94 571.621 l -6314.38 570.926 l -6400.94 570.07 l -6488.13 569.199 l -6575.31 568.246 l -6584.71 568.105 l -6662.5 567.527 l -6749.69 566.891 l -6836.88 566.262 l -6924.06 565.57 l -6958.01 565.293 l -h -7098.44 564.828 m -7028.16 565.293 l -7011.25 565.414 l -6924.06 566.117 l -6836.88 566.77 l -6749.69 567.414 l -6662.94 568.105 l -6662.5 568.121 l -6575.31 569.379 l -6488.13 570.43 l -6444.73 570.926 l -6488.13 571.336 l -6575.31 572.074 l -6662.5 572.574 l -6749.69 572.973 l -6836.88 573.398 l -6885.02 573.738 l -6924.06 574.219 l -7011.25 574.984 l -7098.44 575.336 l -7185.63 575.508 l -7272.81 575.645 l -7360 575.785 l -7447.19 575.957 l -7534.38 576.047 l -7621.56 574.84 l -7637.79 573.738 l -7670.86 570.926 l -7664.96 568.105 l -7621.56 565.734 l -7582.77 565.293 l -7534.38 564.691 l -7447.19 564.496 l -7360 564.348 l -7272.81 564.297 l -7185.63 564.453 l -f -/DeviceRGB {} cs -[0.8008 0 0] sc -4347.18 565.293 m -4395.63 564.691 l -4482.81 564.496 l -4570 564.348 l -4657.19 564.297 l -4744.38 564.453 l -4831.56 564.828 l -4901.74 565.293 l -4918.75 565.414 l -5005.94 566.117 l -5093.13 566.77 l -5180.31 567.414 l -5267.07 568.105 l -5267.5 568.121 l -5354.69 569.379 l -5441.88 570.43 l -5485.27 570.926 l -5441.88 571.336 l -5354.69 572.074 l -5267.5 572.574 l -5180.31 572.973 l -5093.13 573.398 l -5044.94 573.738 l -5005.94 574.219 l -4918.75 574.984 l -4831.56 575.336 l -4744.38 575.508 l -4657.19 575.645 l -4570 575.785 l -4482.81 575.957 l -4395.63 576.047 l -4308.44 574.84 l -4292.22 573.738 l -4259.13 570.926 l -4265.03 568.105 l -4308.44 565.734 l -4347.18 565.293 l -h -4395.63 565.145 m -4383.21 565.293 l -4308.44 566.141 l -4272.53 568.105 l -4266.24 570.926 l -4300.83 573.738 l -4308.44 574.254 l -4395.63 575.559 l -4482.81 575.523 l -4570 575.387 l -4657.19 575.238 l -4744.38 575.066 l -4831.56 574.781 l -4918.75 574.203 l -4962.89 573.738 l -5005.94 573.332 l -5093.13 572.746 l -5180.31 572.313 l -5267.5 571.863 l -5354.69 571.234 l -5387.78 570.926 l -5354.69 570.512 l -5267.5 569.336 l -5201.54 568.105 l -5180.31 567.941 l -5093.13 567.281 l -5005.94 566.664 l -4918.75 566.035 l -4831.56 565.43 l -4804.6 565.293 l -4744.38 565.047 l -4657.19 564.879 l -4570 564.887 l -4482.81 564.977 l -4395.63 565.145 l -h -7028.16 565.293 m -7098.44 564.828 l -7185.63 564.453 l -7272.81 564.297 l -7360 564.348 l -7447.19 564.496 l -7534.38 564.691 l -7582.77 565.293 l -7621.56 565.734 l -7664.96 568.105 l -7670.86 570.926 l -7637.79 573.738 l -7621.56 574.84 l -7534.38 576.047 l -7447.19 575.957 l -7360 575.785 l -7272.81 575.645 l -7185.63 575.508 l -7098.44 575.336 l -7011.25 574.984 l -6924.06 574.219 l -6885.02 573.738 l -6836.88 573.398 l -6749.69 572.973 l -6662.5 572.574 l -6575.31 572.074 l -6488.13 571.336 l -6444.73 570.926 l -6488.13 570.43 l -6575.31 569.379 l -6662.5 568.121 l -6662.94 568.105 l -6749.69 567.414 l -6836.88 566.77 l -6924.06 566.117 l -7011.25 565.414 l -7028.16 565.293 l -h -7185.63 565.039 m -7125.35 565.293 l -7098.44 565.43 l -7011.25 566.035 l -6924.06 566.664 l -6836.88 567.281 l -6749.69 567.941 l -6728.54 568.105 l -6662.5 569.336 l -6575.31 570.512 l -6542.22 570.926 l -6575.31 571.234 l -6662.5 571.863 l -6749.69 572.313 l -6836.88 572.746 l -6924.06 573.332 l -6967.12 573.738 l -7011.25 574.203 l -7098.44 574.781 l -7185.63 575.066 l -7272.81 575.238 l -7360 575.387 l -7447.19 575.523 l -7534.38 575.559 l -7621.56 574.254 l -7629.18 573.738 l -7663.74 570.926 l -7657.46 568.105 l -7621.56 566.148 l -7546.77 565.293 l -7534.38 565.145 l -7447.19 564.977 l -7360 564.887 l -7272.81 564.879 l -f -/DeviceRGB {} cs -[0.7188 0 0] sc -4383.21 565.293 m -4395.63 565.145 l -4482.81 564.977 l -4570 564.887 l -4657.19 564.879 l -4744.38 565.047 l -4804.6 565.293 l -4831.56 565.43 l -4918.75 566.035 l -5005.94 566.664 l -5093.13 567.281 l -5180.31 567.941 l -5201.54 568.105 l -5267.5 569.336 l -5354.69 570.512 l -5387.78 570.926 l -5354.69 571.234 l -5267.5 571.863 l -5180.31 572.313 l -5093.13 572.746 l -5005.94 573.332 l -4962.89 573.738 l -4918.75 574.203 l -4831.56 574.781 l -4744.38 575.066 l -4657.19 575.238 l -4570 575.387 l -4482.81 575.523 l -4395.63 575.559 l -4308.44 574.254 l -4300.83 573.738 l -4266.24 570.926 l -4272.53 568.105 l -4308.44 566.141 l -4383.21 565.293 l -h -7125.35 565.293 m -7185.63 565.039 l -7272.81 564.879 l -7360 564.887 l -7447.19 564.977 l -7534.38 565.145 l -7546.77 565.293 l -7621.56 566.148 l -7657.46 568.105 l -7663.74 570.926 l -7629.18 573.738 l -7621.56 574.254 l -7534.38 575.559 l -7447.19 575.523 l -7360 575.387 l -7272.81 575.238 l -7185.63 575.066 l -7098.44 574.781 l -7011.25 574.203 l -6967.12 573.738 l -6924.06 573.332 l -6836.88 572.746 l -6749.69 572.313 l -6662.5 571.863 l -6575.31 571.234 l -6542.22 570.926 l -6575.31 570.512 l -6662.5 569.336 l -6728.54 568.105 l -6749.69 567.941 l -6836.88 567.281 l -6924.06 566.664 l -7011.25 566.035 l -7098.44 565.43 l -7125.35 565.293 l -h -4308.44 566.551 m -4280.03 568.105 l -4273.35 570.926 l -4308.44 573.676 l -4311.98 573.738 l -4395.63 575.082 l -4482.81 575.086 l -4570 574.984 l -4657.19 574.84 l -4744.38 574.621 l -4831.56 574.227 l -4891.14 573.738 l -4918.75 573.422 l -5005.94 572.629 l -5093.13 572.094 l -5180.31 571.66 l -5267.5 571.141 l -5295.93 570.926 l -5267.5 570.551 l -5180.31 569.172 l -5134.69 568.105 l -5093.13 567.789 l -5005.94 567.211 l -4918.75 566.648 l -4831.56 566.117 l -4744.38 565.707 l -4657.19 565.488 l -4570 565.434 l -4482.81 565.465 l -4395.63 565.563 l -4308.44 566.551 l -h -6836.88 567.797 m -6795.42 568.105 l -6749.69 569.172 l -6662.5 570.551 l -6634.1 570.926 l -6662.5 571.141 l -6749.69 571.66 l -6836.88 572.094 l -6924.06 572.629 l -7011.25 573.422 l -7038.85 573.738 l -7098.44 574.227 l -7185.63 574.621 l -7272.81 574.84 l -7360 574.984 l -7447.19 575.086 l -7534.38 575.082 l -7618.05 573.738 l -7621.56 573.676 l -7656.63 570.926 l -7649.96 568.105 l -7621.56 566.551 l -7534.38 565.563 l -7447.19 565.465 l -7360 565.434 l -7272.81 565.488 l -7185.63 565.707 l -7098.44 566.117 l -7011.25 566.648 l -6924.06 567.211 l -f -/DeviceRGB {} cs -[0.623 0 0] sc -4280.03 568.105 m -4308.44 566.551 l -4395.63 565.563 l -4482.81 565.465 l -4570 565.434 l -4657.19 565.488 l -4744.38 565.707 l -4831.56 566.117 l -4918.75 566.648 l -5005.94 567.211 l -5093.13 567.789 l -5134.69 568.105 l -5180.31 569.172 l -5267.5 570.551 l -5295.93 570.926 l -5267.5 571.141 l -5180.31 571.66 l -5093.13 572.094 l -5005.94 572.629 l -4918.75 573.422 l -4891.14 573.738 l -4831.56 574.227 l -4744.38 574.621 l -4657.19 574.84 l -4570 574.984 l -4482.81 575.086 l -4395.63 575.082 l -4311.98 573.738 l -4308.44 573.676 l -4273.35 570.926 l -4280.03 568.105 l -h -4308.44 566.965 m -4287.52 568.105 l -4280.47 570.926 l -4308.44 573.113 l -4342.29 573.738 l -4395.63 574.594 l -4482.81 574.652 l -4570 574.586 l -4657.19 574.441 l -4744.38 574.18 l -4821.41 573.738 l -4831.56 573.625 l -4918.75 572.621 l -5005.94 571.922 l -5093.13 571.441 l -5180.31 571 l -5192.94 570.926 l -5180.31 570.738 l -5093.13 569.035 l -5060.57 568.105 l -5005.94 567.762 l -4918.75 567.273 l -4831.56 566.816 l -4744.38 566.426 l -4657.19 566.164 l -4570 566.012 l -4482.81 565.938 l -4395.63 565.969 l -4308.44 566.965 l -h -6795.42 568.105 m -6836.88 567.797 l -6924.06 567.211 l -7011.25 566.648 l -7098.44 566.117 l -7185.63 565.707 l -7272.81 565.488 l -7360 565.434 l -7447.19 565.465 l -7534.38 565.563 l -7621.56 566.551 l -7649.96 568.105 l -7656.63 570.926 l -7621.56 573.676 l -7618.05 573.738 l -7534.38 575.082 l -7447.19 575.086 l -7360 574.984 l -7272.81 574.84 l -7185.63 574.621 l -7098.44 574.227 l -7038.85 573.738 l -7011.25 573.422 l -6924.06 572.629 l -6836.88 572.094 l -6749.69 571.66 l -6662.5 571.141 l -6634.1 570.926 l -6662.5 570.551 l -6749.69 569.172 l -6795.42 568.105 l -h -6924.06 567.762 m -6869.54 568.105 l -6836.88 569.035 l -6749.69 570.738 l -6737.06 570.926 l -6749.69 571 l -6836.88 571.441 l -6924.06 571.922 l -7011.25 572.621 l -7098.44 573.625 l -7108.58 573.738 l -7185.63 574.18 l -7272.81 574.441 l -7360 574.586 l -7447.19 574.652 l -7534.38 574.594 l -7587.73 573.738 l -7621.56 573.113 l -7649.52 570.926 l -7642.46 568.105 l -7621.56 566.965 l -7534.38 565.969 l -7447.19 565.938 l -7360 566.012 l -7272.81 566.164 l -7185.63 566.426 l -7098.44 566.816 l -7011.25 567.266 l -f -/DeviceRGB {} cs -[0.541 0 0] sc -4287.52 568.105 m -4308.44 566.965 l -4395.63 565.969 l -4482.81 565.938 l -4570 566.012 l -4657.19 566.164 l -4744.38 566.426 l -4831.56 566.816 l -4918.75 567.273 l -5005.94 567.762 l -5060.57 568.105 l -5093.13 569.035 l -5180.31 570.738 l -5192.94 570.926 l -5180.31 571 l -5093.13 571.441 l -5005.94 571.922 l -4918.75 572.621 l -4831.56 573.625 l -4821.41 573.738 l -4744.38 574.18 l -4657.19 574.441 l -4570 574.586 l -4482.81 574.652 l -4395.63 574.594 l -4342.29 573.738 l -4308.44 573.113 l -4280.47 570.926 l -4287.52 568.105 l -h -4308.44 567.379 m -4295.02 568.105 l -4287.58 570.926 l -4308.44 572.559 l -4372.59 573.738 l -4395.63 574.105 l -4482.81 574.219 l -4570 574.18 l -4657.19 574.047 l -4743.69 573.738 l -4744.38 573.738 l -4831.56 572.719 l -4918.75 571.824 l -5005.94 571.219 l -5063.55 570.926 l -5005.94 569.402 l -4962.45 568.105 l -4918.75 567.887 l -4831.56 567.504 l -4744.38 567.152 l -4657.19 566.832 l -4570 566.59 l -4482.81 566.418 l -4395.63 566.371 l -4308.44 567.379 l -h -6869.54 568.105 m -6924.06 567.762 l -7011.25 567.266 l -7098.44 566.816 l -7185.63 566.426 l -7272.81 566.164 l -7360 566.012 l -7447.19 565.938 l -7534.38 565.969 l -7621.56 566.965 l -7642.46 568.105 l -7649.52 570.926 l -7621.56 573.113 l -7587.73 573.738 l -7534.38 574.594 l -7447.19 574.652 l -7360 574.586 l -7272.81 574.441 l -7185.63 574.18 l -7108.58 573.738 l -7098.44 573.625 l -7011.25 572.621 l -6924.06 571.922 l -6836.88 571.441 l -6749.69 571 l -6737.06 570.926 l -6749.69 570.738 l -6836.88 569.035 l -6869.54 568.105 l -h -7011.25 567.887 m -6967.53 568.105 l -6924.06 569.41 l -6866.43 570.926 l -6924.06 571.219 l -7011.25 571.824 l -7098.44 572.719 l -7185.63 573.738 l -7186.35 573.738 l -7272.81 574.047 l -7360 574.18 l -7447.19 574.219 l -7534.38 574.105 l -7557.41 573.738 l -7621.56 572.559 l -7642.41 570.926 l -7634.97 568.105 l -7621.56 567.379 l -7534.38 566.371 l -7447.19 566.418 l -7360 566.59 l -7272.81 566.836 l -7185.63 567.152 l -7098.44 567.504 l -f -/DeviceRGB {} cs -[0.447 0 0] sc -4295.02 568.105 m -4308.44 567.379 l -4395.63 566.371 l -4482.81 566.418 l -4570 566.59 l -4657.19 566.832 l -4744.38 567.152 l -4831.56 567.504 l -4918.75 567.887 l -4962.45 568.105 l -5005.94 569.402 l -5063.55 570.926 l -5005.94 571.219 l -4918.75 571.824 l -4831.56 572.719 l -4744.38 573.738 l -4743.69 573.738 l -4657.19 574.047 l -4570 574.18 l -4482.81 574.219 l -4395.63 574.105 l -4372.59 573.738 l -4308.44 572.559 l -4287.58 570.926 l -4295.02 568.105 l -h -4308.44 567.781 m -4302.52 568.105 l -4294.7 570.926 l -4308.44 572.004 l -4395.63 573.609 l -4457.11 573.738 l -4482.81 573.781 l -4570 573.781 l -4595.08 573.738 l -4657.19 573.535 l -4744.38 572.793 l -4831.56 571.816 l -4918.75 571.031 l -4934.61 570.926 l -4918.75 570.453 l -4831.56 568.449 l -4805.99 568.105 l -4744.38 567.871 l -4657.19 567.504 l -4570 567.168 l -4482.81 566.898 l -4395.63 566.777 l -4308.44 567.781 l -h -6967.53 568.105 m -7011.25 567.887 l -7098.44 567.504 l -7185.63 567.152 l -7272.81 566.836 l -7360 566.59 l -7447.19 566.418 l -7534.38 566.371 l -7621.56 567.379 l -7634.97 568.105 l -7642.41 570.926 l -7621.56 572.559 l -7557.41 573.738 l -7534.38 574.105 l -7447.19 574.219 l -7360 574.18 l -7272.81 574.047 l -7186.35 573.738 l -7185.63 573.738 l -7098.44 572.719 l -7011.25 571.824 l -6924.06 571.219 l -6866.43 570.926 l -6924.06 569.41 l -6967.53 568.105 l -h -7185.63 567.871 m -7124.11 568.105 l -7098.44 568.449 l -7011.25 570.461 l -6995.64 570.926 l -7011.25 571.023 l -7098.44 571.816 l -7185.63 572.793 l -7272.81 573.535 l -7334.86 573.738 l -7360 573.781 l -7447.19 573.781 l -7472.91 573.738 l -7534.38 573.609 l -7621.56 572.004 l -7635.3 570.926 l -7627.47 568.105 l -7621.56 567.781 l -7534.38 566.777 l -7447.19 566.898 l -7360 567.168 l -7272.81 567.504 l -f -/DeviceRGB {} cs -[0.3611 0 0] sc -4302.52 568.105 m -4308.44 567.781 l -4395.63 566.777 l -4482.81 566.898 l -4570 567.168 l -4657.19 567.504 l -4744.38 567.871 l -4805.99 568.105 l -4831.56 568.449 l -4918.75 570.453 l -4934.61 570.926 l -4918.75 571.031 l -4831.56 571.816 l -4744.38 572.793 l -4657.19 573.535 l -4595.08 573.738 l -4570 573.781 l -4482.81 573.781 l -4457.11 573.738 l -4395.63 573.609 l -4308.44 572.004 l -4294.7 570.926 l -4302.52 568.105 l -h -4395.63 567.191 m -4315.85 568.105 l -4308.44 568.629 l -4301.81 570.926 l -4308.44 571.441 l -4395.63 573.078 l -4482.81 573.191 l -4570 573.086 l -4657.19 572.672 l -4744.38 571.848 l -4830.67 570.926 l -4744.38 569.254 l -4657.19 568.246 l -4644.57 568.105 l -4570 567.738 l -4482.81 567.371 l -4395.63 567.191 l -h -7124.11 568.105 m -7185.63 567.871 l -7272.81 567.504 l -7360 567.168 l -7447.19 566.898 l -7534.38 566.777 l -7621.56 567.781 l -7627.47 568.105 l -7635.3 570.926 l -7621.56 572.004 l -7534.38 573.609 l -7472.91 573.738 l -7447.19 573.781 l -7360 573.781 l -7334.86 573.738 l -7272.81 573.535 l -7185.63 572.793 l -7098.44 571.816 l -7011.25 571.023 l -6995.64 570.926 l -7011.25 570.461 l -7098.44 568.449 l -7124.11 568.105 l -h -7360 567.738 m -7285.51 568.105 l -7272.81 568.254 l -7185.63 569.254 l -7099.4 570.926 l -7185.63 571.848 l -7272.81 572.672 l -7360 573.086 l -7447.19 573.191 l -7534.38 573.078 l -7621.56 571.441 l -7628.19 570.926 l -7621.56 568.629 l -7614.13 568.105 l -7534.38 567.191 l -7447.19 567.371 l -f -/DeviceRGB {} cs -[0.271 0 0] sc -4315.85 568.105 m -4395.63 567.191 l -4482.81 567.371 l -4570 567.738 l -4644.57 568.105 l -4657.19 568.246 l -4744.38 569.254 l -4830.67 570.926 l -4744.38 571.848 l -4657.19 572.672 l -4570 573.086 l -4482.81 573.191 l -4395.63 573.078 l -4308.44 571.441 l -4301.81 570.926 l -4308.44 568.629 l -4315.85 568.105 l -h -4395.63 567.594 m -4351.09 568.105 l -4310.37 570.926 l -4395.63 572.539 l -4482.81 572.582 l -4570 572.359 l -4657.19 571.801 l -4742.88 570.926 l -4657.19 569.574 l -4570 568.547 l -4534.98 568.105 l -4482.81 567.852 l -4395.63 567.594 l -h -7285.51 568.105 m -7360 567.738 l -7447.19 567.371 l -7534.38 567.191 l -7614.13 568.105 l -7621.56 568.629 l -7628.19 570.926 l -7621.56 571.441 l -7534.38 573.078 l -7447.19 573.191 l -7360 573.086 l -7272.81 572.672 l -7185.63 571.848 l -7099.4 570.926 l -7185.63 569.254 l -7272.81 568.254 l -7285.51 568.105 l -h -7447.19 567.852 m -7395.01 568.105 l -7360 568.547 l -7272.81 569.574 l -7187.06 570.926 l -7272.81 571.801 l -7360 572.359 l -7447.19 572.582 l -7534.38 572.539 l -7619.59 570.926 l -7578.91 568.105 l -7534.38 567.594 l -f -/DeviceRGB {} cs -[0.176 0 0] sc -4351.09 568.105 m -4395.63 567.594 l -4482.81 567.852 l -4534.98 568.105 l -4570 568.547 l -4657.19 569.574 l -4742.88 570.926 l -4657.19 571.801 l -4570 572.359 l -4482.81 572.582 l -4395.63 572.539 l -4310.37 570.926 l -4351.09 568.105 l -h -4395.63 568 m -4386.32 568.105 l -4338.79 570.926 l -4395.63 571.996 l -4482.81 571.977 l -4570 571.629 l -4657.19 570.941 l -4658.81 570.926 l -4657.19 570.895 l -4570 569.754 l -4482.81 568.699 l -4427.48 568.105 l -4395.63 568 l -h -7395.01 568.105 m -7447.19 567.852 l -7534.38 567.594 l -7578.91 568.105 l -7619.59 570.926 l -7534.38 572.539 l -7447.19 572.582 l -7360 572.359 l -7272.81 571.801 l -7187.06 570.926 l -7272.81 569.574 l -7360 568.547 l -7395.01 568.105 l -h -7534.38 568 m -7502.43 568.105 l -7447.19 568.699 l -7360 569.754 l -7272.81 570.895 l -7271.16 570.926 l -7272.81 570.941 l -7360 571.629 l -7447.19 571.977 l -7534.38 571.996 l -7591.16 570.926 l -7543.7 568.105 l -f -/DeviceRGB {} cs -[0.0901 0 0] sc -4386.32 568.105 m -4395.63 568 l -4427.48 568.105 l -4482.81 568.699 l -4570 569.754 l -4657.19 570.895 l -4658.81 570.926 l -4657.19 570.941 l -4570 571.629 l -4482.81 571.977 l -4395.63 571.996 l -4338.79 570.926 l -4386.32 568.105 l -h -7502.43 568.105 m -7534.38 568 l -7543.7 568.105 l -7591.16 570.926 l -7534.38 571.996 l -7447.19 571.977 l -7360 571.629 l -7272.81 570.941 l -7271.16 570.926 l -7272.81 570.895 l -7360 569.754 l -7447.19 568.699 l -7502.43 568.105 l -h -4395.63 569.305 m -4367.21 570.926 l -4395.63 571.465 l -4482.81 571.367 l -4566.82 570.926 l -4482.81 569.988 l -4395.63 569.305 l -h -7447.19 569.988 m -7363.31 570.926 l -7447.19 571.367 l -7534.38 571.465 l -7562.75 570.926 l -7534.38 569.305 l -f -/DeviceRGB {} cs -[0.008 0 0] sc -4367.21 570.926 m -4395.63 569.305 l -4482.81 569.988 l -4566.82 570.926 l -4482.81 571.367 l -4395.63 571.465 l -4367.21 570.926 l -h -7363.31 570.926 m -7447.19 569.988 l -7534.38 569.305 l -7562.75 570.926 l -7534.38 571.465 l -7447.19 571.367 l -f -[60 15 30 15] 0 d -15 w -2 j -/DeviceGray {} CS -[0] SC -2726.25 332.5 m -2739.06 332.547 l -2826.25 332.875 l -2913.44 333.219 l -3000.63 333.59 l -3087.81 333.969 l -3175 334.375 l -3262.19 334.805 l -3349.38 335.246 l -3436.56 335.719 l -3523.75 336.207 l -3610.94 336.715 l -3698.13 337.246 l -3785.31 337.801 l -3872.5 338.371 l -3959.69 338.973 l -4046.88 339.586 l -4134.06 340.227 l -4221.25 340.879 l -4308.44 341.547 l -4395.63 342.227 l -4482.81 342.918 l -4570 343.613 l -4657.19 344.32 l -4744.38 345.023 l -4831.56 345.715 l -4918.75 346.398 l -5005.94 347.066 l -5093.13 347.703 l -5180.31 348.309 l -5267.5 348.879 l -5354.69 349.406 l -5441.88 349.879 l -5529.06 350.289 l -5616.25 350.637 l -5703.44 350.914 l -5790.63 351.113 l -5877.81 351.234 l -5965 351.273 l -6052.19 351.234 l -6139.38 351.113 l -6226.56 350.914 l -6313.75 350.637 l -6400.94 350.289 l -6488.13 349.879 l -6575.31 349.406 l -6662.5 348.879 l -6749.69 348.309 l -6836.88 347.703 l -6924.06 347.066 l -7011.25 346.398 l -7098.44 345.715 l -7185.63 345.023 l -7272.81 344.32 l -7360 343.613 l -7447.19 342.918 l -7534.38 342.227 l -7621.56 341.547 l -7708.75 340.879 l -7795.94 340.227 l -7883.13 339.586 l -7970.31 338.973 l -8057.5 338.371 l -8144.69 337.801 l -8231.88 337.246 l -8319.06 336.715 l -8406.25 336.207 l -8493.44 335.719 l -8580.63 335.246 l -8667.81 334.805 l -8755 334.375 l -8842.19 333.969 l -8929.38 333.59 l -9016.56 333.219 l -9103.75 332.875 l -9190.94 332.547 l -9203.75 332.5 l -S -385 1692.23 m -472.188 1692.52 l -559.375 1693.38 l -646.563 1694.82 l -733.75 1696.85 l -820.938 1699.46 l -908.125 1702.66 l -995.313 1706.47 l -1082.5 1710.89 l -1169.69 1715.93 l -1256.88 1721.61 l -1344.06 1727.93 l -1431.25 1734.92 l -1518.44 1742.59 l -1605.63 1750.96 l -1692.81 1760.06 l -1752.78 1766.8 l -1780 1769.52 l -1867.19 1778.83 l -1954.38 1788.84 l -2041.56 1799.58 l -2128.75 1811.07 l -2215.94 1823.35 l -2303.13 1836.43 l -2390.31 1850.36 l -2477.5 1865.16 l -2564.69 1880.88 l -2651.88 1897.55 l -2739.06 1915.2 l -2826.25 1933.87 l -2913.44 1953.6 l -2922.78 1955.79 l -3000.63 1972.42 l -3087.81 1992.03 l -3175 2012.7 l -3262.19 2034.47 l -3349.38 2057.37 l -3436.56 2081.43 l -3523.75 2106.67 l -3610.94 2133.12 l -3648.27 2144.78 l -3698.13 2159.27 l -3785.31 2185.44 l -3872.5 2212.75 l -3959.69 2241.18 l -4046.88 2270.7 l -4134.06 2301.3 l -4221.25 2332.89 l -4223.65 2333.76 l -4308.44 2362.79 l -4395.63 2393.4 l -4482.81 2424.7 l -4570 2456.53 l -4657.19 2488.73 l -4744.38 2521.09 l -4748.98 2522.75 l -4831.56 2551.2 l -4918.75 2580.89 l -5005.94 2610.05 l -5093.13 2638.34 l -5180.31 2665.44 l -5267.5 2691 l -5344.08 2711.74 l -5354.69 2714.49 l -5441.88 2734.62 l -5529.06 2752.32 l -5616.25 2767.29 l -5703.44 2779.24 l -5790.63 2787.95 l -5877.81 2793.25 l -5965 2795.03 l -6052.19 2793.25 l -6139.38 2787.95 l -6226.56 2779.24 l -6313.75 2767.29 l -6400.94 2752.32 l -6488.13 2734.62 l -6575.31 2714.49 l -6585.92 2711.74 l -6662.5 2691 l -6749.69 2665.44 l -6836.88 2638.34 l -6924.06 2610.05 l -7011.25 2580.89 l -7098.44 2551.2 l -7181.02 2522.75 l -7185.63 2521.09 l -7272.81 2488.73 l -7360 2456.53 l -7447.19 2424.7 l -7534.38 2393.4 l -7621.56 2362.79 l -7706.35 2333.76 l -7708.75 2332.89 l -7795.94 2301.3 l -7883.13 2270.7 l -7970.31 2241.18 l -8057.5 2212.75 l -8144.69 2185.44 l -8231.88 2159.27 l -8281.73 2144.78 l -8319.06 2133.12 l -8406.25 2106.67 l -8493.44 2081.43 l -8580.63 2057.37 l -8667.81 2034.47 l -8755 2012.7 l -8842.19 1992.03 l -8929.38 1972.42 l -9007.22 1955.79 l -9016.56 1953.6 l -9103.75 1933.87 l -9190.94 1915.2 l -9278.13 1897.55 l -9365.31 1880.88 l -9452.5 1865.16 l -9539.69 1850.36 l -9626.88 1836.43 l -9714.06 1823.35 l -9801.25 1811.07 l -9888.44 1799.58 l -9975.63 1788.84 l -10062.8 1778.83 l -10150 1769.52 l -10177.2 1766.8 l -10237.2 1760.06 l -10324.4 1750.96 l -10411.6 1742.59 l -10498.8 1734.92 l -10585.9 1727.93 l -10673.1 1721.61 l -10760.3 1715.93 l -10847.5 1710.89 l -10934.7 1706.47 l -11021.9 1702.66 l -11109.1 1699.46 l -11196.3 1696.85 l -11283.4 1694.82 l -11370.6 1693.38 l -11457.8 1692.52 l -11545 1692.23 l -S -385 2267.49 m -472.188 2267.9 l -559.375 2269.12 l -646.563 2271.16 l -733.75 2274.03 l -820.938 2277.73 l -908.125 2282.27 l -995.313 2287.67 l -1082.5 2293.93 l -1169.69 2301.08 l -1256.88 2309.13 l -1344.06 2318.1 l -1431.25 2328.02 l -1477.39 2333.76 l -1518.44 2338.45 l -1605.63 2349.26 l -1692.81 2361 l -1780 2373.72 l -1867.19 2387.46 l -1954.38 2402.23 l -2041.56 2418.09 l -2128.75 2435.07 l -2215.94 2453.22 l -2303.13 2472.6 l -2390.31 2493.24 l -2477.5 2515.21 l -2506.05 2522.75 l -2564.69 2537.25 l -2651.88 2559.98 l -2739.06 2584.09 l -2826.25 2609.66 l -2913.44 2636.73 l -3000.63 2665.38 l -3087.81 2695.67 l -3132.2 2711.74 l -3175 2726.45 l -3262.19 2757.68 l -3349.38 2790.64 l -3436.56 2825.37 l -3523.75 2861.93 l -3610.94 2900.37 l -3611.73 2900.73 l -3698.13 2938.05 l -3785.31 2977.58 l -3872.5 3019 l -3959.69 3062.33 l -4013.17 3089.72 l -4046.88 3106.49 l -4134.06 3150.81 l -4221.25 3196.9 l -4308.44 3244.68 l -4369.18 3278.7 l -4395.63 3293.24 l -4482.81 3341.44 l -4570 3390.88 l -4657.19 3441.32 l -4702.87 3467.69 l -4744.38 3491.4 l -4831.56 3540.75 l -4918.75 3590.13 l -5005.94 3639.05 l -5038.61 3656.67 l -5093.13 3685.97 l -5180.31 3730.85 l -5267.5 3773.64 l -5354.69 3813.68 l -5431.16 3845.66 l -5441.88 3850.14 l -5529.06 3881.82 l -5616.25 3908.83 l -5703.44 3930.55 l -5790.63 3946.47 l -5877.81 3956.18 l -5965 3959.46 l -6052.19 3956.18 l -6139.38 3946.47 l -6226.56 3930.55 l -6313.75 3908.83 l -6400.94 3881.82 l -6488.13 3850.14 l -6498.84 3845.66 l -6575.31 3813.68 l -6662.5 3773.64 l -6749.69 3730.85 l -6836.88 3685.97 l -6891.39 3656.67 l -6924.06 3639.05 l -7011.25 3590.13 l -7098.44 3540.75 l -7185.63 3491.4 l -7227.13 3467.69 l -7272.81 3441.32 l -7360 3390.88 l -7447.19 3341.44 l -7534.38 3293.24 l -7560.82 3278.7 l -7621.56 3244.68 l -7708.75 3196.9 l -7795.94 3150.81 l -7883.13 3106.49 l -7916.83 3089.72 l -7970.31 3062.33 l -8057.5 3019 l -8144.69 2977.58 l -8231.88 2938.05 l -8318.27 2900.73 l -8319.06 2900.37 l -8406.25 2861.93 l -8493.44 2825.37 l -8580.63 2790.64 l -8667.81 2757.68 l -8755 2726.45 l -8797.8 2711.74 l -8842.19 2695.67 l -8929.38 2665.38 l -9016.56 2636.73 l -9103.75 2609.66 l -9190.94 2584.09 l -9278.13 2559.98 l -9365.31 2537.25 l -9423.96 2522.75 l -9452.5 2515.21 l -9539.69 2493.24 l -9626.88 2472.6 l -9714.06 2453.22 l -9801.25 2435.07 l -9888.44 2418.09 l -9975.63 2402.23 l -10062.8 2387.46 l -10150 2373.72 l -10237.2 2361 l -10324.4 2349.26 l -10411.6 2338.45 l -10452.6 2333.76 l -10498.8 2328.02 l -10585.9 2318.1 l -10673.1 2309.13 l -10760.3 2301.08 l -10847.5 2293.93 l -10934.7 2287.67 l -11021.9 2282.27 l -11109.1 2277.73 l -11196.3 2274.03 l -11283.4 2271.16 l -11370.6 2269.12 l -11457.8 2267.9 l -11545 2267.49 l -S -385 2706.43 m -472.188 2706.95 l -559.375 2708.48 l -646.563 2711.05 l -663.211 2711.74 l -733.75 2714.43 l -820.938 2718.71 l -908.125 2723.96 l -995.313 2730.2 l -1082.5 2737.46 l -1169.69 2745.74 l -1256.88 2755.07 l -1344.06 2765.47 l -1431.25 2776.98 l -1518.44 2789.63 l -1605.63 2803.45 l -1692.81 2818.49 l -1780 2834.77 l -1867.19 2852.36 l -1954.38 2871.3 l -2041.56 2891.64 l -2078.27 2900.73 l -2128.75 2912.51 l -2215.94 2934.12 l -2303.13 2957.21 l -2390.31 2981.86 l -2477.5 3008.12 l -2564.69 3036.07 l -2651.88 3065.79 l -2718.3 3089.72 l -2739.06 3096.85 l -2826.25 3128.12 l -2913.44 3161.3 l -3000.63 3196.5 l -3087.81 3233.79 l -3175 3273.27 l -3186.62 3278.7 l -3262.19 3312.83 l -3349.38 3354.34 l -3436.56 3398.22 l -3523.75 3444.58 l -3565.64 3467.69 l -3610.94 3492.09 l -3698.13 3540.86 l -3785.31 3592.29 l -3872.5 3646.42 l -3888.68 3656.67 l -3959.69 3701.06 l -4046.88 3757.94 l -4134.06 3817.59 l -4174.11 3845.66 l -4221.25 3878.55 l -4308.44 3941.03 l -4395.63 4006.13 l -4433.26 4034.65 l -4482.81 4072.36 l -4570 4139.95 l -4657.19 4209.64 l -4674.82 4223.64 l -4744.38 4279.59 l -4831.56 4350.63 l -4907.09 4412.63 l -4918.75 4422.4 l -5005.94 4493.46 l -5093.13 4564.22 l -5140.82 4601.61 l -5180.31 4633.5 l -5267.5 4700.43 l -5354.69 4764.08 l -5394.49 4790.6 l -5441.88 4823.32 l -5529.06 4876.88 l -5616.25 4923.19 l -5703.44 4960.88 l -5762.24 4979.59 l -5790.63 4988.93 l -5877.81 5006.43 l -5965 5012.33 l -6052.19 5006.43 l -6139.38 4988.93 l -6167.76 4979.59 l -6226.56 4960.88 l -6313.75 4923.19 l -6400.94 4876.88 l -6488.13 4823.32 l -6535.51 4790.6 l -6575.31 4764.08 l -6662.5 4700.43 l -6749.69 4633.5 l -6789.18 4601.61 l -6836.88 4564.22 l -6924.06 4493.46 l -7011.25 4422.4 l -7022.91 4412.63 l -7098.44 4350.63 l -7185.63 4279.59 l -7255.18 4223.64 l -7272.81 4209.64 l -7360 4139.95 l -7447.19 4072.36 l -7496.74 4034.65 l -7534.38 4006.13 l -7621.56 3941.03 l -7708.75 3878.55 l -7755.89 3845.66 l -7795.94 3817.59 l -7883.13 3757.94 l -7970.31 3701.06 l -8041.32 3656.67 l -8057.5 3646.42 l -8144.69 3592.29 l -8231.88 3540.86 l -8319.06 3492.09 l -8364.36 3467.69 l -8406.25 3444.58 l -8493.44 3398.22 l -8580.63 3354.34 l -8667.81 3312.83 l -8743.38 3278.7 l -8755 3273.27 l -8842.19 3233.79 l -8929.38 3196.5 l -9016.56 3161.3 l -9103.75 3128.12 l -9190.94 3096.85 l -9211.7 3089.72 l -9278.13 3065.79 l -9365.31 3036.07 l -9452.5 3008.12 l -9539.69 2981.86 l -9626.88 2957.21 l -9714.06 2934.12 l -9801.25 2912.51 l -9851.73 2900.73 l -9888.44 2891.64 l -9975.63 2871.3 l -10062.8 2852.36 l -10150 2834.77 l -10237.2 2818.49 l -10324.4 2803.45 l -10411.6 2789.63 l -10498.8 2776.98 l -10585.9 2765.47 l -10673.1 2755.07 l -10760.3 2745.74 l -10847.5 2737.46 l -10934.7 2730.2 l -11021.9 2723.96 l -11109.1 2718.71 l -11196.3 2714.43 l -11266.8 2711.74 l -11283.4 2711.05 l -11370.6 2708.48 l -11457.8 2706.95 l -11545 2706.43 l -S -385 3071.41 m -472.188 3072 l -559.375 3073.77 l -646.563 3076.71 l -733.75 3080.84 l -820.938 3086.17 l -868.164 3089.72 l -908.125 3092.51 l -995.313 3099.75 l -1082.5 3108.14 l -1169.69 3117.74 l -1256.88 3128.55 l -1344.06 3140.61 l -1431.25 3153.96 l -1518.44 3168.65 l -1605.63 3184.69 l -1692.81 3202.16 l -1780 3221.09 l -1867.19 3241.55 l -1954.38 3263.6 l -2010.29 3278.7 l -2041.56 3286.73 l -2128.75 3310.48 l -2215.94 3335.93 l -2303.13 3363.14 l -2390.31 3392.21 l -2477.5 3423.23 l -2564.69 3456.29 l -2593.38 3467.69 l -2651.88 3490.05 l -2739.06 3525.24 l -2826.25 3562.68 l -2913.44 3602.49 l -3000.63 3644.78 l -3024.22 3656.67 l -3087.81 3687.84 l -3175 3732.89 l -3262.19 3780.69 l -3349.38 3831.41 l -3373.05 3845.66 l -3436.56 3883.19 l -3523.75 3937.35 l -3610.94 3994.77 l -3668.83 4034.65 l -3698.13 4054.62 l -3785.31 4116.13 l -3872.5 4181.24 l -3927 4223.64 l -3959.69 4249.04 l -4046.88 4318.98 l -4134.06 4392.84 l -4156.91 4412.63 l -4221.25 4468.82 l -4308.44 4548.23 l -4365.05 4601.61 l -4395.63 4630.95 l -4482.81 4716.41 l -4555.63 4790.6 l -4570 4805.65 l -4657.19 4897.53 l -4732.45 4979.59 l -4744.38 4993.1 l -4831.56 5091.5 l -4898.46 5168.57 l -4918.75 5193.14 l -5005.94 5297.64 l -5056.1 5357.56 l -5093.13 5404.71 l -5180.31 5513.76 l -5207.55 5546.55 l -5267.5 5624.72 l -5354.69 5734.78 l -5355.34 5735.54 l -5441.88 5845.88 l -5508.52 5924.52 l -5529.06 5951.82 l -5616.25 6052.56 l -5679.24 6113.52 l -5703.44 6140.56 l -5790.63 6213.46 l -5877.81 6259.59 l -5965 6275.38 l -6052.19 6259.59 l -6139.38 6213.46 l -6226.56 6140.56 l -6250.76 6113.52 l -6313.75 6052.56 l -6400.94 5951.82 l -6421.48 5924.52 l -6488.13 5845.88 l -6574.66 5735.54 l -6575.31 5734.78 l -6662.5 5624.72 l -6722.46 5546.55 l -6749.69 5513.76 l -6836.88 5404.71 l -6873.9 5357.56 l -6924.06 5297.64 l -7011.25 5193.14 l -7031.54 5168.57 l -7098.44 5091.5 l -7185.63 4993.1 l -7197.55 4979.59 l -7272.81 4897.53 l -7360 4805.65 l -7374.37 4790.6 l -7447.19 4716.41 l -7534.38 4630.95 l -7564.95 4601.61 l -7621.56 4548.23 l -7708.75 4468.82 l -7773.09 4412.63 l -7795.94 4392.84 l -7883.13 4318.98 l -7970.31 4249.04 l -8003 4223.64 l -8057.5 4181.24 l -8144.69 4116.13 l -8231.88 4054.62 l -8261.17 4034.65 l -8319.06 3994.77 l -8406.25 3937.35 l -8493.44 3883.19 l -8556.95 3845.66 l -8580.63 3831.41 l -8667.81 3780.69 l -8755 3732.89 l -8842.19 3687.84 l -8905.78 3656.67 l -8929.38 3644.78 l -9016.56 3602.49 l -9103.75 3562.68 l -9190.94 3525.24 l -9278.13 3490.05 l -9336.63 3467.69 l -9365.31 3456.29 l -9452.5 3423.23 l -9539.69 3392.21 l -9626.88 3363.14 l -9714.06 3335.93 l -9801.25 3310.48 l -9888.44 3286.73 l -9919.71 3278.7 l -9975.63 3263.6 l -10062.8 3241.55 l -10150 3221.09 l -10237.2 3202.16 l -10324.4 3184.69 l -10411.6 3168.65 l -10498.8 3153.96 l -10585.9 3140.61 l -10673.1 3128.55 l -10760.3 3117.74 l -10847.5 3108.14 l -10934.7 3099.75 l -11021.9 3092.51 l -11061.8 3089.72 l -11109.1 3086.17 l -11196.3 3080.84 l -11283.4 3076.71 l -11370.6 3073.77 l -11457.8 3072 l -11545 3071.41 l -S -385 3389.73 m -472.188 3390.38 l -559.375 3392.3 l -646.563 3395.52 l -733.75 3400.05 l -820.938 3405.89 l -908.125 3413.05 l -995.313 3421.57 l -1082.5 3431.47 l -1169.69 3442.78 l -1256.88 3455.53 l -1331.52 3467.69 l -1344.06 3469.62 l -1431.25 3484.37 l -1518.44 3500.58 l -1605.63 3518.33 l -1692.81 3537.65 l -1780 3558.6 l -1867.19 3581.27 l -1954.38 3605.71 l -2041.56 3632 l -2117.92 3656.67 l -2128.75 3660.02 l -2215.94 3688.5 l -2303.13 3718.98 l -2390.31 3751.59 l -2477.5 3786.41 l -2564.69 3823.59 l -2613.77 3845.66 l -2651.88 3862.25 l -2739.06 3902.19 l -2826.25 3944.75 l -2913.44 3990.09 l -2994.12 4034.65 l -3000.63 4038.16 l -3087.81 4086.94 l -3175 4138.87 l -3262.19 4194.14 l -3306.64 4223.64 l -3349.38 4251.59 l -3436.56 4311.32 l -3523.75 4374.89 l -3573.2 4412.63 l -3610.94 4441.28 l -3698.13 4510.32 l -3785.31 4583.8 l -3805.8 4601.61 l -3872.5 4659.84 l -3959.69 4740.12 l -4012.12 4790.6 l -4046.88 4824.49 l -4134.06 4912.73 l -4196.96 4979.59 l -4221.25 5005.98 l -4308.44 5103.59 l -4364.01 5168.57 l -4395.63 5206.8 l -4482.81 5315.53 l -4515.6 5357.56 l -4570 5430.57 l -4653.07 5546.55 l -4657.19 5552.64 l -4744.38 5682.66 l -4779 5735.54 l -4831.56 5822.04 l -4892.7 5924.52 l -4918.75 5972.38 l -4994.85 6113.52 l -5005.94 6136.52 l -5085.93 6302.5 l -S -6844.07 6302.5 m -6924.06 6136.52 l -6935.15 6113.52 l -7011.25 5972.38 l -7037.3 5924.52 l -7098.44 5822.04 l -7151 5735.54 l -7185.63 5682.66 l -7272.81 5552.64 l -7276.93 5546.55 l -7360 5430.57 l -7414.4 5357.56 l -7447.19 5315.53 l -7534.38 5206.8 l -7565.99 5168.57 l -7621.56 5103.59 l -7708.75 5005.98 l -7733.04 4979.59 l -7795.94 4912.73 l -7883.13 4824.49 l -7917.88 4790.6 l -7970.31 4740.12 l -8057.5 4659.84 l -8124.19 4601.61 l -8144.69 4583.8 l -8231.88 4510.32 l -8319.06 4441.28 l -8356.8 4412.63 l -8406.25 4374.89 l -8493.44 4311.32 l -8580.63 4251.59 l -8623.36 4223.64 l -8667.81 4194.14 l -8755 4138.87 l -8842.19 4086.94 l -8929.38 4038.16 l -8935.88 4034.65 l -9016.56 3990.09 l -9103.75 3944.75 l -9190.94 3902.19 l -9278.13 3862.25 l -9316.23 3845.66 l -9365.31 3823.59 l -9452.5 3786.41 l -9539.69 3751.59 l -9626.88 3718.98 l -9714.06 3688.5 l -9801.25 3660.02 l -9812.08 3656.67 l -9888.44 3632 l -9975.63 3605.71 l -10062.8 3581.27 l -10150 3558.6 l -10237.2 3537.65 l -10324.4 3518.33 l -10411.6 3500.58 l -10498.8 3484.37 l -10585.9 3469.62 l -10598.5 3467.69 l -10673.1 3455.53 l -10760.3 3442.78 l -10847.5 3431.47 l -10934.7 3421.57 l -11021.9 3413.05 l -11109.1 3405.89 l -11196.3 3400.05 l -11283.4 3395.52 l -11370.6 3392.3 l -11457.8 3390.38 l -11545 3389.73 l -S -385 3677 m -472.188 3677.68 l -559.375 3679.73 l -646.563 3683.16 l -733.75 3687.97 l -820.938 3694.18 l -908.125 3701.82 l -995.313 3710.88 l -1082.5 3721.43 l -1169.69 3733.48 l -1256.88 3747.06 l -1344.06 3762.23 l -1431.25 3779.04 l -1518.44 3797.53 l -1605.63 3817.76 l -1692.81 3839.79 l -1714.43 3845.66 l -1780 3862.67 l -1867.19 3887.06 l -1954.38 3913.38 l -2041.56 3941.73 l -2128.75 3972.19 l -2215.94 4004.88 l -2290.27 4034.65 l -2303.13 4039.62 l -2390.31 4075.1 l -2477.5 4113.05 l -2564.69 4153.62 l -2651.88 4196.94 l -2702.75 4223.64 l -2739.06 4242.21 l -2826.25 4289.12 l -2913.44 4339.18 l -3000.63 4392.59 l -3031.88 4412.63 l -3087.81 4447.89 l -3175 4505.92 l -3262.19 4567.86 l -3307.46 4601.61 l -3349.38 4632.62 l -3436.56 4700.29 l -3523.75 4772.59 l -3544.7 4790.6 l -3610.94 4847.64 l -3698.13 4927.23 l -3752.62 4979.59 l -3785.31 5011.29 l -3872.5 5099.55 l -3936.91 5168.57 l -3959.69 5193.44 l -4046.88 5292.21 l -4101.61 5357.56 l -4134.06 5397.43 l -4221.25 5509.19 l -4249.35 5546.55 l -4308.44 5628.39 l -4382 5735.54 l -4395.63 5756.43 l -4482.81 5894.34 l -4501.32 5924.52 l -4570 6044.49 l -4608.2 6113.52 l -4657.19 6209.82 l -4703.07 6302.5 l -S -7226.94 6302.5 m -7272.81 6209.82 l -7321.8 6113.52 l -7360 6044.49 l -7428.68 5924.52 l -7447.19 5894.34 l -7534.38 5756.43 l -7548 5735.54 l -7621.56 5628.39 l -7680.65 5546.55 l -7708.75 5509.19 l -7795.94 5397.43 l -7828.39 5357.56 l -7883.13 5292.21 l -7970.31 5193.44 l -7993.09 5168.57 l -8057.5 5099.55 l -8144.69 5011.29 l -8177.38 4979.59 l -8231.88 4927.23 l -8319.06 4847.64 l -8385.3 4790.6 l -8406.25 4772.59 l -8493.44 4700.29 l -8580.63 4632.62 l -8622.54 4601.61 l -8667.81 4567.86 l -8755 4505.92 l -8842.19 4447.89 l -8898.13 4412.63 l -8929.38 4392.59 l -9016.56 4339.18 l -9103.75 4289.12 l -9190.94 4242.21 l -9227.25 4223.64 l -9278.13 4196.94 l -9365.31 4153.62 l -9452.5 4113.05 l -9539.69 4075.1 l -9626.88 4039.62 l -9639.73 4034.65 l -9714.06 4004.88 l -9801.25 3972.19 l -9888.44 3941.73 l -9975.63 3913.38 l -10062.8 3887.06 l -10150 3862.67 l -10215.6 3845.66 l -10237.2 3839.79 l -10324.4 3817.76 l -10411.6 3797.53 l -10498.8 3779.04 l -10585.9 3762.23 l -10673.1 3747.06 l -10760.3 3733.48 l -10847.5 3721.43 l -10934.7 3710.88 l -11021.9 3701.82 l -11109.1 3694.18 l -11196.3 3687.97 l -11283.4 3683.16 l -11370.6 3679.73 l -11457.8 3677.68 l -11545 3677 l -S -385 3937.3 m -472.188 3938.06 l -559.375 3940.33 l -646.563 3944.13 l -733.75 3949.46 l -820.938 3956.35 l -908.125 3964.81 l -995.313 3974.87 l -1082.5 3986.56 l -1169.69 3999.93 l -1256.88 4015 l -1344.06 4031.84 l -1357.32 4034.65 l -1431.25 4049.61 l -1518.44 4068.98 l -1605.63 4090.2 l -1692.81 4113.34 l -1780 4138.46 l -1867.19 4165.67 l -1954.38 4195.05 l -2033.26 4223.64 l -2041.56 4226.54 l -2128.75 4258.8 l -2215.94 4293.45 l -2303.13 4330.62 l -2390.31 4370.46 l -2476.52 4412.63 l -2477.5 4413.09 l -2564.69 4456.5 l -2651.88 4502.93 l -2739.06 4552.61 l -2819.7 4601.61 l -2826.25 4605.51 l -2913.44 4659.7 l -3000.63 4717.66 l -3087.81 4779.64 l -3102.63 4790.6 l -3175 4843.64 l -3262.19 4911.67 l -3343.67 4979.59 l -3349.38 4984.34 l -3436.56 5059.47 l -3523.75 5140.08 l -3553.26 5168.57 l -3610.94 5224.68 l -3698.13 5314.62 l -3737.79 5357.56 l -3785.31 5409.85 l -3872.5 5511.23 l -3901.59 5546.55 l -3959.69 5618.96 l -4046.88 5734.73 l -4047.48 5735.54 l -4134.06 5858.18 l -4178.39 5924.52 l -4221.25 5991.85 l -4294.92 6113.52 l -4308.44 6137.2 l -4395.63 6296.65 l -4398.73 6302.5 l -S -7531.28 6302.5 m -7534.38 6296.65 l -7621.56 6137.2 l -7635.08 6113.52 l -7708.75 5991.85 l -7751.61 5924.52 l -7795.94 5858.18 l -7882.53 5735.54 l -7883.13 5734.73 l -7970.31 5618.96 l -8028.41 5546.55 l -8057.5 5511.23 l -8144.69 5409.85 l -8192.21 5357.56 l -8231.88 5314.62 l -8319.06 5224.68 l -8376.74 5168.57 l -8406.25 5140.08 l -8493.44 5059.47 l -8580.63 4984.34 l -8586.33 4979.59 l -8667.81 4911.67 l -8755 4843.64 l -8827.38 4790.6 l -8842.19 4779.64 l -8929.38 4717.66 l -9016.56 4659.7 l -9103.75 4605.51 l -9110.3 4601.61 l -9190.94 4552.61 l -9278.13 4502.93 l -9365.31 4456.5 l -9452.5 4413.09 l -9453.48 4412.63 l -9539.69 4370.46 l -9626.88 4330.62 l -9714.06 4293.45 l -9801.25 4258.8 l -9888.44 4226.54 l -9896.74 4223.64 l -9975.63 4195.05 l -10062.8 4165.67 l -10150 4138.46 l -10237.2 4113.34 l -10324.4 4090.2 l -10411.6 4068.98 l -10498.8 4049.61 l -10572.7 4034.65 l -10585.9 4031.84 l -10673.1 4015 l -10760.3 3999.93 l -10847.5 3986.56 l -10934.7 3974.87 l -11021.9 3964.81 l -11109.1 3956.35 l -11196.3 3949.46 l -11283.4 3944.13 l -11370.6 3940.33 l -11457.8 3938.06 l -11545 3937.3 l -S -385 4178.84 m -472.188 4179.67 l -559.375 4182.14 l -646.563 4186.28 l -733.75 4192.07 l -820.938 4199.57 l -908.125 4208.78 l -995.313 4219.73 l -1022.23 4223.64 l -1082.5 4231.98 l -1169.69 4245.72 l -1256.88 4261.25 l -1344.06 4278.59 l -1431.25 4297.82 l -1518.44 4319 l -1605.63 4342.2 l -1692.81 4367.49 l -1780 4394.98 l -1831.99 4412.63 l -1867.19 4424.13 l -1954.38 4454.66 l -2041.56 4487.58 l -2128.75 4523.03 l -2215.94 4561.14 l -2302.2 4601.61 l -2303.13 4602.04 l -2390.31 4643.82 l -2477.5 4688.62 l -2564.69 4736.64 l -2651.88 4788.07 l -2655.98 4790.6 l -2739.06 4840.8 l -2826.25 4897.16 l -2913.44 4957.55 l -2943.75 4979.59 l -3000.63 5020.48 l -3087.81 5086.99 l -3175 5158.34 l -3187.03 5168.57 l -3262.19 5232.41 l -3349.38 5311.62 l -3397.25 5357.56 l -3436.56 5395.47 l -3523.75 5484.15 l -3581.49 5546.55 l -3610.94 5578.81 l -3698.13 5679.16 l -3744.42 5735.54 l -3785.31 5786.51 l -3872.5 5901.6 l -3889.16 5924.52 l -3959.69 6024.93 l -4018.29 6113.52 l -4046.88 6158.66 l -4133.06 6302.5 l -S -7796.94 6302.5 m -7883.13 6158.66 l -7911.71 6113.52 l -7970.31 6024.93 l -8040.84 5924.52 l -8057.5 5901.6 l -8144.69 5786.51 l -8185.58 5735.54 l -8231.88 5679.16 l -8319.06 5578.81 l -8348.51 5546.55 l -8406.25 5484.15 l -8493.44 5395.47 l -8532.74 5357.56 l -8580.63 5311.62 l -8667.81 5232.41 l -8742.97 5168.57 l -8755 5158.34 l -8842.19 5086.99 l -8929.38 5020.48 l -8986.25 4979.59 l -9016.56 4957.55 l -9103.75 4897.16 l -9190.94 4840.8 l -9274.02 4790.6 l -9278.13 4788.07 l -9365.31 4736.64 l -9452.5 4688.62 l -9539.69 4643.82 l -9626.88 4602.04 l -9627.81 4601.61 l -9714.06 4561.14 l -9801.25 4523.03 l -9888.44 4487.58 l -9975.63 4454.66 l -10062.8 4424.13 l -10098 4412.63 l -10150 4394.98 l -10237.2 4367.49 l -10324.4 4342.2 l -10411.6 4319 l -10498.8 4297.82 l -10585.9 4278.59 l -10673.1 4261.25 l -10760.3 4245.72 l -10847.5 4231.98 l -10907.8 4223.64 l -10934.7 4219.73 l -11021.9 4208.78 l -11109.1 4199.57 l -11196.3 4192.07 l -11283.4 4186.28 l -11370.6 4182.14 l -11457.8 4179.67 l -11545 4178.84 l -S -385 4404.25 m -472.188 4405.14 l -559.375 4407.79 l -646.563 4412.22 l -652.262 4412.63 l -733.75 4418.13 l -820.938 4425.75 l -908.125 4435.1 l -995.313 4446.22 l -1082.5 4459.16 l -1169.69 4473.96 l -1256.88 4490.66 l -1344.06 4509.34 l -1431.25 4530.04 l -1518.44 4552.85 l -1605.63 4577.84 l -1681.73 4601.61 l -1692.81 4604.94 l -1780 4633.1 l -1867.19 4663.63 l -1954.38 4696.65 l -2041.56 4732.3 l -2128.75 4770.7 l -2171.2 4790.6 l -2215.94 4811 l -2303.13 4853.31 l -2390.31 4898.77 l -2477.5 4947.57 l -2531.36 4979.59 l -2564.69 4999.02 l -2651.88 5052.71 l -2739.06 5110.32 l -2821.39 5168.57 l -2826.25 5171.97 l -2913.44 5235.59 l -3000.63 5303.94 l -3064.87 5357.56 l -3087.81 5376.63 l -3175 5452.67 l -3262.19 5534.55 l -3274.46 5546.55 l -3349.38 5620.23 l -3436.56 5712.34 l -3457.55 5735.54 l -3523.75 5809.68 l -3610.94 5914.49 l -3618.97 5924.52 l -3698.13 6025.73 l -3762.26 6113.52 l -3785.31 6146.06 l -3872.5 6275.79 l -3889.64 6302.5 l -S -8040.36 6302.5 m -8057.5 6275.79 l -8144.69 6146.06 l -8167.74 6113.52 l -8231.88 6025.73 l -8311.02 5924.52 l -8319.06 5914.49 l -8406.25 5809.68 l -8472.45 5735.54 l -8493.44 5712.34 l -8580.63 5620.23 l -8655.54 5546.55 l -8667.81 5534.55 l -8755 5452.67 l -8842.19 5376.63 l -8865.13 5357.56 l -8929.38 5303.94 l -9016.56 5235.59 l -9103.75 5171.97 l -9108.62 5168.57 l -9190.94 5110.32 l -9278.13 5052.71 l -9365.31 4999.02 l -9398.64 4979.59 l -9452.5 4947.57 l -9539.69 4898.77 l -9626.88 4853.31 l -9714.06 4811 l -9758.8 4790.6 l -9801.25 4770.7 l -9888.44 4732.3 l -9975.63 4696.65 l -10062.8 4663.63 l -10150 4633.1 l -10237.2 4604.94 l -10248.3 4601.61 l -10324.4 4577.84 l -10411.6 4552.85 l -10498.8 4530.04 l -10585.9 4509.34 l -10673.1 4490.66 l -10760.3 4473.96 l -10847.5 4459.16 l -10934.7 4446.22 l -11021.9 4435.1 l -11109.1 4425.75 l -11196.3 4418.13 l -11277.7 4412.63 l -11283.4 4412.22 l -11370.6 4407.79 l -11457.8 4405.14 l -11545 4404.25 l -S -385 4614.93 m -472.188 4615.82 l -559.375 4618.49 l -646.563 4622.94 l -733.75 4629.21 l -820.938 4637.3 l -908.125 4647.24 l -995.313 4659.08 l -1082.5 4672.84 l -1169.69 4688.58 l -1256.88 4706.37 l -1344.06 4726.25 l -1431.25 4748.29 l -1518.44 4772.59 l -1577.63 4790.6 l -1605.63 4798.81 l -1692.81 4826.46 l -1780 4856.55 l -1867.19 4889.18 l -1954.38 4924.52 l -2041.56 4962.67 l -2077.84 4979.59 l -2128.75 5002.68 l -2215.94 5044.94 l -2303.13 5090.42 l -2390.31 5139.32 l -2439.4 5168.57 l -2477.5 5190.84 l -2564.69 5244.86 l -2651.88 5302.89 l -2728.58 5357.56 l -2739.06 5364.94 l -2826.25 5429.26 l -2913.44 5498.46 l -2970.42 5546.55 l -3000.63 5571.93 l -3087.81 5649.18 l -3175 5732.51 l -3178.05 5735.54 l -3262.19 5819.55 l -3349.38 5913.65 l -3359.04 5924.52 l -3436.56 6012.9 l -3518.37 6113.52 l -3523.75 6120.26 l -3610.94 6234.4 l -3659.63 6302.5 l -S -8270.38 6302.5 m -8319.06 6234.4 l -8406.25 6120.26 l -8411.63 6113.52 l -8493.44 6012.9 l -8570.96 5924.52 l -8580.63 5913.65 l -8667.81 5819.55 l -8751.95 5735.54 l -8755 5732.51 l -8842.19 5649.18 l -8929.38 5571.93 l -8959.58 5546.55 l -9016.56 5498.46 l -9103.75 5429.26 l -9190.94 5364.94 l -9201.42 5357.56 l -9278.13 5302.89 l -9365.31 5244.86 l -9452.5 5190.84 l -9490.6 5168.57 l -9539.69 5139.32 l -9626.88 5090.42 l -9714.06 5044.94 l -9801.25 5002.68 l -9852.16 4979.59 l -9888.44 4962.67 l -9975.63 4924.52 l -10062.8 4889.18 l -10150 4856.55 l -10237.2 4826.46 l -10324.4 4798.81 l -10352.4 4790.6 l -10411.6 4772.59 l -10498.8 4748.29 l -10585.9 4726.25 l -10673.1 4706.37 l -10760.3 4688.58 l -10847.5 4672.84 l -10934.7 4659.08 l -11021.9 4647.24 l -11109.1 4637.3 l -11196.3 4629.21 l -11283.4 4622.94 l -11370.6 4618.49 l -11457.8 4615.82 l -11545 4614.93 l -S -385 4813.64 m -472.188 4814.58 l -559.375 4817.39 l -646.563 4822.09 l -733.75 4828.69 l -820.938 4837.22 l -908.125 4847.7 l -995.313 4860.17 l -1082.5 4874.68 l -1169.69 4891.29 l -1256.88 4910.04 l -1344.06 4931.02 l -1431.25 4954.29 l -1517.21 4979.59 l -1518.44 4979.93 l -1605.63 5006.73 l -1692.81 5035.99 l -1780 5067.85 l -1867.19 5102.44 l -1954.38 5139.89 l -2016.5 5168.57 l -2041.56 5179.83 l -2128.75 5221.53 l -2215.94 5266.5 l -2303.13 5314.93 l -2374.73 5357.56 l -2390.31 5366.65 l -2477.5 5420.34 l -2564.69 5478.13 l -2651.88 5540.3 l -2660.25 5546.55 l -2739.06 5604.78 l -2826.25 5673.98 l -2898.64 5735.54 l -2913.44 5748.06 l -3000.63 5825.54 l -3087.81 5909.23 l -3103.03 5924.52 l -3175 5997.21 l -3262.19 6092 l -3281.04 6113.52 l -3349.38 6192.48 l -3436.56 6301.18 l -3437.57 6302.5 l -S -8492.43 6302.5 m -8493.44 6301.18 l -8580.63 6192.48 l -8648.96 6113.52 l -8667.81 6092 l -8755 5997.21 l -8826.97 5924.52 l -8842.19 5909.23 l -8929.38 5825.54 l -9016.56 5748.06 l -9031.36 5735.54 l -9103.75 5673.98 l -9190.94 5604.78 l -9269.75 5546.55 l -9278.13 5540.3 l -9365.31 5478.13 l -9452.5 5420.34 l -9539.69 5366.65 l -9555.27 5357.56 l -9626.88 5314.93 l -9714.06 5266.5 l -9801.25 5221.53 l -9888.44 5179.83 l -9913.5 5168.57 l -9975.63 5139.89 l -10062.8 5102.44 l -10150 5067.85 l -10237.2 5035.99 l -10324.4 5006.73 l -10411.6 4979.93 l -10412.8 4979.59 l -10498.8 4954.29 l -10585.9 4931.02 l -10673.1 4910.04 l -10760.3 4891.29 l -10847.5 4874.68 l -10934.7 4860.17 l -11021.9 4847.7 l -11109.1 4837.22 l -11196.3 4828.69 l -11283.4 4822.09 l -11370.6 4817.39 l -11457.8 4814.58 l -11545 4813.64 l -S -385 5002.24 m -472.188 5003.21 l -559.375 5006.16 l -646.563 5011.07 l -733.75 5017.98 l -820.938 5026.89 l -908.125 5037.86 l -995.313 5050.91 l -1082.5 5066.1 l -1169.69 5083.49 l -1256.88 5103.13 l -1344.06 5125.11 l -1431.25 5149.5 l -1493.3 5168.57 l -1518.44 5176.03 l -1605.63 5204.16 l -1692.81 5234.91 l -1780 5268.4 l -1867.19 5304.78 l -1954.38 5344.2 l -1982.07 5357.56 l -2041.56 5385.53 l -2128.75 5429.54 l -2215.94 5477.03 l -2303.13 5528.23 l -2332.57 5546.55 l -2390.31 5581.84 l -2477.5 5638.79 l -2564.69 5700.14 l -2612 5735.54 l -2651.88 5765.04 l -2739.06 5833.51 l -2826.25 5907.4 l -2845.48 5924.52 l -2913.44 5984.88 l -3000.63 6068.02 l -3045.54 6113.52 l -3087.81 6156.53 l -3175 6250.93 l -3219.76 6302.5 l -S -8710.24 6302.5 m -8755 6250.93 l -8842.19 6156.53 l -8884.46 6113.52 l -8929.38 6068.02 l -9016.56 5984.88 l -9084.52 5924.52 l -9103.75 5907.4 l -9190.94 5833.51 l -9278.13 5765.04 l -9318 5735.54 l -9365.31 5700.14 l -9452.5 5638.79 l -9539.69 5581.84 l -9597.43 5546.55 l -9626.88 5528.23 l -9714.06 5477.03 l -9801.25 5429.54 l -9888.44 5385.53 l -9947.93 5357.56 l -9975.63 5344.2 l -10062.8 5304.78 l -10150 5268.4 l -10237.2 5234.91 l -10324.4 5204.16 l -10411.6 5176.03 l -10436.7 5168.57 l -10498.8 5149.5 l -10585.9 5125.11 l -10673.1 5103.13 l -10760.3 5083.49 l -10847.5 5066.1 l -10934.7 5050.91 l -11021.9 5037.86 l -11109.1 5026.89 l -11196.3 5017.98 l -11283.4 5011.07 l -11370.6 5006.16 l -11457.8 5003.21 l -11545 5002.24 l -S -385 5181.9 m -472.188 5182.92 l -559.375 5185.98 l -646.563 5191.08 l -733.75 5198.26 l -820.938 5207.54 l -908.125 5218.94 l -995.313 5232.52 l -1082.5 5248.32 l -1169.69 5266.41 l -1256.88 5286.87 l -1344.06 5309.75 l -1431.25 5335.16 l -1501.11 5357.56 l -1518.44 5362.93 l -1605.63 5392.29 l -1692.81 5424.4 l -1780 5459.39 l -1867.19 5497.42 l -1954.38 5538.66 l -1970.04 5546.55 l -2041.56 5581.68 l -2128.75 5627.84 l -2215.94 5677.68 l -2303.13 5731.47 l -2309.38 5735.54 l -2390.31 5787.27 l -2477.5 5847.29 l -2564.69 5912.03 l -2580.67 5924.52 l -2651.88 5979.67 l -2739.06 6052.21 l -2807.73 6113.52 l -2826.25 6129.98 l -2913.44 6211.78 l -3000.63 6300.42 l -3002.58 6302.5 l -S -8927.42 6302.5 m -8929.38 6300.42 l -9016.56 6211.78 l -9103.75 6129.98 l -9122.27 6113.52 l -9190.94 6052.21 l -9278.13 5979.67 l -9349.33 5924.52 l -9365.31 5912.03 l -9452.5 5847.29 l -9539.69 5787.27 l -9620.62 5735.54 l -9626.88 5731.47 l -9714.06 5677.68 l -9801.25 5627.84 l -9888.44 5581.68 l -9959.96 5546.55 l -9975.63 5538.66 l -10062.8 5497.42 l -10150 5459.39 l -10237.2 5424.4 l -10324.4 5392.29 l -10411.6 5362.93 l -10428.9 5357.56 l -10498.8 5335.16 l -10585.9 5309.75 l -10673.1 5286.87 l -10760.3 5266.41 l -10847.5 5248.32 l -10934.7 5232.52 l -11021.9 5218.94 l -11109.1 5207.54 l -11196.3 5198.26 l -11283.4 5191.08 l -11370.6 5185.98 l -11457.8 5182.92 l -11545 5181.9 l -S -385 5353.46 m -472.188 5354.57 l -550.719 5357.56 l -559.375 5357.88 l -646.563 5363.16 l -733.75 5370.58 l -820.938 5380.18 l -908.125 5391.98 l -995.313 5406.03 l -1082.5 5422.39 l -1169.69 5441.12 l -1256.88 5462.3 l -1344.06 5486 l -1431.25 5512.34 l -1518.44 5541.41 l -1532.64 5546.55 l -1605.63 5572.13 l -1692.81 5605.48 l -1780 5641.85 l -1867.19 5681.4 l -1954.38 5724.32 l -1975.74 5735.54 l -2041.56 5769.29 l -2128.75 5817.43 l -2215.94 5869.48 l -2301.35 5924.52 l -2303.13 5925.65 l -2390.31 5983.89 l -2477.5 6046.82 l -2563.11 6113.52 l -2564.69 6114.73 l -2651.88 6185.38 l -2739.06 6261.82 l -2782.68 6302.5 l -S -9147.32 6302.5 m -9190.94 6261.82 l -9278.13 6185.38 l -9365.31 6114.73 l -9366.89 6113.52 l -9452.5 6046.82 l -9539.69 5983.89 l -9626.88 5925.65 l -9628.65 5924.52 l -9714.06 5869.48 l -9801.25 5817.43 l -9888.44 5769.29 l -9954.26 5735.54 l -9975.63 5724.32 l -10062.8 5681.4 l -10150 5641.85 l -10237.2 5605.48 l -10324.4 5572.13 l -10397.4 5546.55 l -10411.6 5541.41 l -10498.8 5512.34 l -10585.9 5486 l -10673.1 5462.3 l -10760.3 5441.12 l -10847.5 5422.39 l -10934.7 5406.03 l -11021.9 5391.98 l -11109.1 5380.18 l -11196.3 5370.58 l -11283.4 5363.16 l -11370.6 5357.88 l -11379.3 5357.56 l -11457.8 5354.57 l -11545 5353.46 l -S -385 5517.04 m -472.188 5518.17 l -559.375 5521.59 l -646.563 5527.3 l -733.75 5535.32 l -820.938 5545.68 l -826.887 5546.55 l -908.125 5557.88 l -995.313 5572.36 l -1082.5 5589.22 l -1169.69 5608.52 l -1256.88 5630.37 l -1344.06 5654.82 l -1431.25 5682 l -1518.44 5712 l -1580.92 5735.54 l -1605.63 5744.56 l -1692.81 5779.05 l -1780 5816.68 l -1867.19 5857.63 l -1954.38 5902.1 l -1995.4 5924.52 l -2041.56 5949.21 l -2128.75 5999.2 l -2215.94 6053.3 l -2303.13 6111.8 l -2305.55 6113.52 l -2390.31 6172.58 l -2477.5 6238.24 l -2556.62 6302.5 l -S -9373.38 6302.5 m -9452.5 6238.24 l -9539.69 6172.58 l -9624.45 6113.52 l -9626.88 6111.8 l -9714.06 6053.3 l -9801.25 5999.2 l -9888.44 5949.21 l -9934.6 5924.52 l -9975.63 5902.1 l -10062.8 5857.63 l -10150 5816.68 l -10237.2 5779.05 l -10324.4 5744.56 l -10349.1 5735.54 l -10411.6 5712 l -10498.8 5682 l -10585.9 5654.82 l -10673.1 5630.37 l -10760.3 5608.52 l -10847.5 5589.22 l -10934.7 5572.36 l -11021.9 5557.88 l -11103.1 5546.55 l -11109.1 5545.68 l -11196.3 5535.32 l -11283.4 5527.3 l -11370.6 5521.59 l -11457.8 5518.17 l -11545 5517.04 l -S -385 5674.14 m -472.188 5675.3 l -559.375 5678.8 l -646.563 5684.65 l -733.75 5692.88 l -820.938 5703.5 l -908.125 5716.58 l -995.313 5732.15 l -1011.71 5735.54 l -1082.5 5749.62 l -1169.69 5769.44 l -1256.88 5791.87 l -1344.06 5817 l -1431.25 5844.93 l -1518.44 5875.8 l -1605.63 5909.72 l -1640.71 5924.52 l -1692.81 5945.89 l -1780 5984.68 l -1867.19 6026.91 l -1954.38 6072.8 l -2025.95 6113.52 l -2041.56 6122.21 l -2128.75 6173.92 l -2215.94 6229.93 l -2303.13 6290.55 l -2319.36 6302.5 l -S -9610.64 6302.5 m -9626.88 6290.55 l -9714.06 6229.93 l -9801.25 6173.92 l -9888.44 6122.21 l -9904.05 6113.52 l -9975.63 6072.8 l -10062.8 6026.91 l -10150 5984.68 l -10237.2 5945.89 l -10289.3 5924.52 l -10324.4 5909.72 l -10411.6 5875.8 l -10498.8 5844.93 l -10585.9 5817 l -10673.1 5791.87 l -10760.3 5769.44 l -10847.5 5749.62 l -10918.3 5735.54 l -10934.7 5732.15 l -11021.9 5716.58 l -11109.1 5703.5 l -11196.3 5692.88 l -11283.4 5684.65 l -11370.6 5678.8 l -11457.8 5675.3 l -11545 5674.14 l -S -385 5825.49 m -472.188 5826.68 l -559.375 5830.25 l -646.563 5836.23 l -733.75 5844.64 l -820.938 5855.5 l -908.125 5868.86 l -995.313 5884.78 l -1082.5 5903.33 l -1169.51 5924.52 l -1169.69 5924.57 l -1256.88 5947.52 l -1344.06 5973.26 l -1431.25 6001.88 l -1518.44 6033.5 l -1605.63 6068.3 l -1692.81 6106.41 l -1707.92 6113.52 l -1780 6146.55 l -1867.19 6189.96 l -1954.38 6237.16 l -2041.56 6288.4 l -2064.07 6302.5 l -S -9865.93 6302.5 m -9888.44 6288.4 l -9975.63 6237.16 l -10062.8 6189.96 l -10150 6146.55 l -10222.1 6113.52 l -10237.2 6106.41 l -10324.4 6068.3 l -10411.6 6033.5 l -10498.8 6001.88 l -10585.9 5973.26 l -10673.1 5947.52 l -10760.3 5924.57 l -10760.5 5924.52 l -10847.5 5903.33 l -10934.7 5884.78 l -11021.9 5868.86 l -11109.1 5855.5 l -11196.3 5844.64 l -11283.4 5836.23 l -11370.6 5830.25 l -11457.8 5826.68 l -11545 5825.49 l -S -385 5971.76 m -472.188 5972.96 l -559.375 5976.61 l -646.563 5982.7 l -733.75 5991.26 l -820.938 6002.33 l -908.125 6015.94 l -995.313 6032.17 l -1082.5 6051.08 l -1169.69 6072.75 l -1256.88 6097.26 l -1308.69 6113.52 l -1344.06 6124.25 l -1431.25 6153.47 l -1518.44 6185.79 l -1605.63 6221.36 l -1692.81 6260.34 l -1779.13 6302.5 l -S -10150.9 6302.5 m -10237.2 6260.34 l -10324.4 6221.36 l -10411.6 6185.79 l -10498.8 6153.47 l -10585.9 6124.25 l -10621.3 6113.52 l -10673.1 6097.26 l -10760.3 6072.75 l -10847.5 6051.08 l -10934.7 6032.17 l -11021.9 6015.94 l -11109.1 6002.33 l -11196.3 5991.26 l -11283.4 5982.7 l -11370.6 5976.61 l -11457.8 5972.96 l -11545 5971.76 l -S -385 6113.52 m -472.188 6114.75 l -559.375 6118.44 l -646.563 6124.63 l -733.75 6133.33 l -820.938 6144.57 l -908.125 6158.41 l -995.313 6174.9 l -1082.5 6194.13 l -1169.69 6216.17 l -1256.88 6241.11 l -1344.06 6269.07 l -1431.25 6300.19 l -1437.18 6302.5 l -S -10492.8 6302.5 m -10498.8 6300.19 l -10585.9 6269.07 l -10673.1 6241.11 l -10760.3 6216.17 l -10847.5 6194.13 l -10934.7 6174.9 l -11021.9 6158.41 l -11109.1 6144.57 l -11196.3 6133.33 l -11283.4 6124.63 l -11370.6 6118.44 l -11457.8 6114.75 l -11545 6113.52 l -11545 6113.52 l -S -385 6113.52 m -385 6113.52 l -S -[] 0 d -1 j -11545 332.5 m -385 332.5 l -S -385 6302.5 m -11545 6302.5 l -S -[7.5 22.5] 0 d -5.0025 w -2 j -/DeviceGray {} CS -[0.873] SC -733.75 332.5 m -733.75 6302.5 l -S -2477.5 332.5 m -2477.5 6302.5 l -S -4221.25 332.5 m -4221.25 6302.5 l -S -5965 332.5 m -5965 6302.5 l -S -7708.75 332.5 m -7708.75 6302.5 l -S -9452.5 332.5 m -9452.5 6302.5 l -S -11196.3 332.5 m -11196.3 6302.5 l -S -11545 1045.9 m -385 1045.9 l -S -11545 1796.84 m -385 1796.84 l -S -11545 2547.78 m -385 2547.78 l -S -11545 3298.73 m -385 3298.73 l -S -11545 4049.67 m -385 4049.67 l -S -11545 4800.61 m -385 4800.61 l -S -11545 5551.55 m -385 5551.55 l -S -[] 0 d -2 J -1 j -/DeviceGray {} CS -[0.1489] SC -385 332.5 m -11545 332.5 l -S -385 6302.5 m -11545 6302.5 l -S -733.75 332.5 m -733.75 444.102 l -S -2477.5 332.5 m -2477.5 444.102 l -S -4221.25 332.5 m -4221.25 444.102 l -S -5965 332.5 m -5965 444.102 l -S -7708.75 332.5 m -7708.75 444.102 l -S -9452.5 332.5 m -9452.5 444.102 l -S -11196.3 332.5 m -11196.3 444.102 l -S -733.75 6302.5 m -733.75 6190.9 l -S -2477.5 6302.5 m -2477.5 6190.9 l -S -4221.25 6302.5 m -4221.25 6190.9 l -S -5965 6302.5 m -5965 6190.9 l -S -7708.75 6302.5 m -7708.75 6190.9 l -S -9452.5 6302.5 m -9452.5 6190.9 l -S -11196.3 6302.5 m -11196.3 6190.9 l -S -/DeviceGray {} cs -[0.1489] sc -q -[10 0 0 10 0 0] cm -[1 0 0 1 0 0] Tm -0 0 Td -[1 0 0 1 63.25 19.5] Tm -0 0 Td -/F7_0 9.99975 Tf -(-300) -[3.329917 -0 -5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --15436.9 TJm -(-200) -[3.329917 -0 -5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --15436.9 TJm -(-100) -[3.329917 -0 -5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --16149.5 TJm -(0) -[5.559861 -0] Tj -699 0 Td -(100) -[5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --15769.9 TJm -(200) -[5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --15769.9 TJm -(300) -[5.559861 -0 -5.559861 -0 -5.559861 -0] Tj -516.375 -14.5 Td -/F7_0 11.0002 Tf -(z [mm]) -[5.5001 -0 -3.058056 -0 -3.058056 -0 -9.163167 -0 -9.163167 -0 -3.058056 -0] Tj -Q -385 332.5 m -385 6302.5 l -S -11545 332.5 m -11545 6302.5 l -S -385 1045.9 m -496.602 1045.9 l -S -385 1796.84 m -496.602 1796.84 l -S -385 2547.78 m -496.602 2547.78 l -S -385 3298.73 m -496.602 3298.73 l -S -385 4049.67 m -496.602 4049.67 l -S -385 4800.61 m -496.602 4800.61 l -S -385 5551.55 m -496.602 5551.55 l -S -11545 1045.9 m -11433.4 1045.9 l -S -11545 1796.84 m -11433.4 1796.84 l -S -11545 2547.78 m -11433.4 2547.78 l -S -11545 3298.73 m -11433.4 3298.73 l -S -11545 4049.67 m -11433.4 4049.67 l -S -11545 4800.61 m -11433.4 4800.61 l -S -11545 5551.55 m -11433.4 5551.55 l -S -q -[10 0 0 10 0 0] cm -[1 0 0 1 0 0] Tm -0 0 Td -[1 0 0 1 23.25 101.214] Tm -0 0 Td -/F7_0 9.99975 Tf -(20) -[5.559861 -0 -5.559861 -0] Tj -0 75.0945 Td -(40) -[5.559861 -0 -5.559861 -0] Tj -0 150.189 Td -(60) -[5.559861 -0 -5.559861 -0] Tj -0 225.2831 Td -(80) -[5.559861 -0 -5.559861 -0] Tj --6 300.3776 Td -(100) -[5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --6 375.4717 Td -(120) -[5.559861 -0 -5.559861 -0 -5.559861 -0] Tj --6 450.5662 Td -(140) -[5.559861 -0 -5.559861 -0 -5.559861 -0] Tj -[0 1 -1 0 11.25 315.625] Tm -0 0 Td -/F7_0 11.0002 Tf -(r [mm]) -[3.663067 -0 -3.058056 -0 -3.058056 -0 -9.163167 -0 -9.163167 -0 -3.058056 -0] Tj -Q -Q -Q -showpage -%%PageTrailer -pdfEndPage -%%Trailer -end -%%DocumentSuppliedResources: -%%+ font YILPYX+Helvetica -%%EOF diff --git a/matlab/stable_13_finefluid_dens.pdf b/matlab/stable_13_finefluid_dens.pdf deleted file mode 100644 index dbc6fc8..0000000 Binary files a/matlab/stable_13_finefluid_dens.pdf and /dev/null differ diff --git a/matlab/stable_13_finefluid_dens.png b/matlab/stable_13_finefluid_dens.png deleted file mode 100644 index 94e14d3..0000000 Binary files a/matlab/stable_13_finefluid_dens.png and /dev/null differ diff --git a/matlab/twostream_solution.m b/matlab/twostream_solution.m deleted file mode 100644 index a199a69..0000000 --- a/matlab/twostream_solution.m +++ /dev/null @@ -1,147 +0,0 @@ -clear all -close all -%% - -L=2*pi; % spatial length of the system -DT=.1; % time step -NT=1000; % number of time steps -NG=128; % number of grid points -N=2; % number of particles -WP=1; % plasma frequency (in normalized units) -QM=-1; % charge of the particles (electrons) -V0=0.0; % mean velocity -VT=0.0; % thermal velocity -XP1=1; % pertubation of positions -Q=WP^2/(QM*N/L); % electron charge in normalized units -rho_back=-Q*N/L; % background charge density (ions) -dx=L/NG; % size of the grid cells - -%% initial loading for the 2 Stream instability -xp=transpose(linspace(0,L-L/N,N)); -vp=VT*randn(N,1); -pm=transpose([1:N]);pm=1-2*mod(pm,2); -vp=vp+pm.*V0; - -% Perturbation -xp=xp+XP1*(L/N)*pm.*rand(N,1); -p=1:N;p=[p p]; -un=ones(NG-1,1); -Poisson=spdiags([un -2*un un],[-1 0 1],NG-1,NG-1); - -%% Prepare Diagnostics -time = 0:DT:(NT-1)*DT; -Phi=0; mat=0; Eg=0; -NFFT = 2^nextpow2(NG); -k = (2*pi/dx)/2*linspace(0,1,NFFT/2+1); -dv=V0/10; vlim=4*V0; vbin=-vlim:dv:vlim; NV=length(vbin); -mom = zeros(1,NT); -E_kin = zeros(1,NT); -E_pot = zeros(1,NT); -E_the = zeros(1,NT); -dens = zeros(NG,NT); -es_pot = zeros(NG,NT); -es_fld = zeros(NG,NT); -phi_fft = zeros(NG,NT); -vdf = zeros(NV,NT); - -%% Main computational cycle -for it=1:NT - - %-----DIAGNOSTICS----- - - %total momentum - - mom(it) = sum(vp); - E_kin(it) = 0.5*mean(vp.^2)*WP^2/QM^2; - E_pot(it) = 0.5*sum(Eg.^2)/NG; - E_the(it) = 0.5*mean((vp-mean(vp)).^2)*WP^2/QM^2; - dens(:,it) = sum(mat)/dx; - es_pot(:,it) = Phi; - es_fld(:,it) = Eg; - vdf(:,it) = histc(vp,vbin); - phi_fft(:,it) = fft(Phi,NFFT)/NG; - - %--------------------- - - % update xp and apply boundary conditions (bc) - xp=mod(xp+vp*DT,L); - - % project particles to grid - g1=floor(xp/dx); - g=[g1;g1+1]; - % compute what fraction of the particle size that lies on the two nearest cells - fraz1=1-abs(xp/dx-g1); - fraz=[fraz1;1-fraz1]; - - % apply bc on the projection - out=(g<1);g(out)=g(out)+NG; - out=(g>NG);g(out)=g(out)-NG; - % use represention with a sparse matrix to save up memory - mat=sparse(p,g,fraz,N,NG); - rho=transpose(full((Q/dx)*sum(mat))+rho_back); % charge density - - % computing fields - Phi=Poisson\(-rho(1:NG-1)*dx^2);Phi=[Phi;0]; - Eg=([Phi(NG); Phi(1:NG-1)]-[Phi(2:NG);Phi(1)])/(2*dx); - - % projection q->p and update of vp - vp=vp+mat*QM*Eg*DT; - - % plot phase space particle dynamics - scatter(xp,vp,'.') - %ylim([-V0*3 V0*3]); - xlabel('X') - ylabel('V') - pause(0.01) - - -end - -%% -figure; -plot(time,mom) -xlabel('time') -ylabel('momentum') - -figure; -hold on -plot(time,E_kin,'k') -plot(time,E_pot,'r') -plot(time,E_the,'m') -plot(time,E_kin+E_pot,'b') -xlabel('time') -ylabel('Energy') - -X=[0:dx:L-L/NG]; -figure -surfc(time,X,dens(:,:)); shading interp; colorbar; -xlabel('time') -ylabel('X') -title('density') - -figure -surfc(time,X,es_pot(:,:)); shading interp; colorbar; -xlabel('time') -ylabel('X') -title('ES potential') - - -figure -surfc(time,X,es_fld(:,:)); shading interp; colorbar; -xlabel('time') -ylabel('X') -title('ES field') - - -figure -surfc(time,k,abs(phi_fft(1:NFFT/2+1,:))); shading interp; colorbar; -xlabel('time') -ylabel('k') -title('ES potential (Fourier harmonics)') - - -figure -surfc(time,vbin,vdf); shading interp; colorbar; -xlabel('time') -ylabel('V') -title('f(v)')