classdef espic2dhdf5 %UNTITLED Summary of this class goes here % Detailed explanation goes here properties filename timestamp t0d t1d t2d it0 it1 it2 %% Physical constants vlight=299792458; qe=1.60217662E-19; me=9.109383E-31; eps_0=8.85418781762E-12; kb=1.38064852E-23; %% Run parameters dt nrun nlres nlsave nlclassical nlPhis nz nnr lz qsim msim nplasma potinn potout B0 Rcurv width n0 temp femorder ngauss plasmadim radii %% Frequencies omepe omece %% Normalizations tnorm rnorm bnorm enorm phinorm vnorm %% Grid data rgrid zgrid dz Vcell %% Magnetic field Br Bz Athet B %% Energies epot ekin etot eerr %% 2D time data N fluidUR fluidUZ fluidUTHET end methods function obj = espic2dhdf5(filename) filedata=dir(filename); obj.filename=filename; if (isempty(filedata)) error("File: ""%s"" doesn't exist",file) end obj.timestamp=filedata.date; obj.dt = h5readatt(obj.filename,'/data/input.00/','dt'); obj.nrun = h5readatt(obj.filename,'/data/input.00/','nrun'); obj.nlres = strcmp(h5readatt(obj.filename,'/data/input.00/','nlres'),'y'); obj.nlsave = strcmp(h5readatt(obj.filename,'/data/input.00/','nlsave'),'y'); obj.nlclassical =strcmp(h5readatt(obj.filename,'/data/input.00/','nlclassical'),'y'); obj.nlPhis =strcmp(h5readatt(obj.filename,'/data/input.00/','nlPhis'),'y'); obj.nz = h5readatt(obj.filename,'/data/input.00/','nz'); obj.nnr = h5read(obj.filename,'/data/input.00/nnr'); obj.lz = h5read(obj.filename,'/data/input.00/lz'); obj.qsim = h5readatt(obj.filename,'/data/input.00/','qsim'); obj.msim = h5readatt(obj.filename,'/data/input.00/','msim'); obj.nplasma = h5readatt(obj.filename,'/data/input.00/','nplasma'); obj.potinn = h5readatt(obj.filename,'/data/input.00/','potinn'); obj.potout = h5readatt(obj.filename,'/data/input.00/','potout'); obj.B0 = h5readatt(obj.filename,'/data/input.00/','B0'); obj.Rcurv = h5readatt(obj.filename,'/data/input.00/','Rcurv'); obj.width = h5readatt(obj.filename,'/data/input.00/','width'); obj.n0 = h5readatt(obj.filename,'/data/input.00/','n0'); obj.temp = h5readatt(obj.filename,'/data/input.00/','temp'); try obj.it0 = h5readatt(obj.filename,'/data/input.00/','it0d'); obj.it1 = h5readatt(obj.filename,'/data/input.00/','it2d'); obj.it2 = h5readatt(obj.filename,'/data/input.00/','itparts'); catch obj.it0 = h5readatt(obj.filename,'/data/input.00/','it0'); obj.it1 = h5readatt(obj.filename,'/data/input.00/','it1'); obj.it1 = h5readatt(obj.filename,'/data/input.00/','it2'); end obj.omepe=sqrt(abs(obj.n0)*obj.qe^2/(obj.me*obj.eps_0)); obj.omece=obj.qe*obj.B0/obj.me; % Normalizations obj.tnorm=1/obj.omepe; 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; % Grid data obj.rgrid= h5read(obj.filename, '/data/var1d/rgrid')*obj.rnorm; obj.zgrid= h5read(obj.filename, '/data/var1d/zgrid')*obj.rnorm; obj.dz=(obj.zgrid(end)-obj.zgrid(1))/double(obj.nz); obj.Vcell=(obj.zgrid(2:end)-obj.zgrid(1:end-1))*((obj.rgrid(2:end).^2-obj.rgrid(1:end-1).^2)*pi)'; Br = h5read(obj.filename,'/data/fields/Br')*obj.bnorm; obj.Br= reshape(Br,length(obj.zgrid),length(obj.rgrid)); Bz = h5read(obj.filename,'/data/fields/Bz')*obj.bnorm; obj.Bz= reshape(Bz,length(obj.zgrid),length(obj.rgrid)); try Atheta = h5read(obj.filename,'/data/fields/Athet')*obj.bnorm; obj.Athet= reshape(Atheta,length(obj.zgrid),length(obj.rgrid)); catch end obj.B=sqrt(obj.Bz.^2+obj.Br.^2); clear Br Bz obj.femorder = h5read(obj.filename,'/data/input.00/femorder'); obj.ngauss = h5read(obj.filename,'/data/input.00/ngauss'); obj.plasmadim = h5read(obj.filename,'/data/input.00/plasmadim'); obj.radii = h5read(obj.filename,'/data/input.00/radii'); obj.epot = h5read(obj.filename,'/data/var0d/epot'); obj.ekin = h5read(obj.filename,'/data/var0d/ekin'); obj.etot = h5read(obj.filename,'/data/var0d/etot'); obj.eerr = obj.etot-obj.etot(2); try obj.t2d = h5read(obj.filename,'/data/fields/time'); catch info=h5info(obj.filename,'/data/fields/partdensity'); obj.t2d=obj.dt*(0:info.Dataspace.Size(2)-1)*double(obj.it1); end obj.N=gridquantity(obj.filename, '/data/fields/partdensity', sum(obj.nnr), nz); end function changed=ischanged(obj) %ischanged Check if the file has been changed and some data %must be reloaded try filedata=dir(obj.filename); checkedtimestamp=filedata.date; if (max(checkedtimestamp > obj.timestamp) ) changed=true; return end changed=false; return catch changed=true; return end end end end