diff --git a/crpptbx/README b/crpptbx/README index b7886074523a7d9220bb7e8bb41aa7406ab54596..e57b290540c3f45b8a35033724f832c966c74a69 100644 --- a/crpptbx/README +++ b/crpptbx/README @@ -19,3 +19,7 @@ The specificity of a given machine are in "help loadNEWMACHINEdata" Thus the head comments of these functions should be correctly updated and self-explanatory + +2015/09/17 tag the version before copying new gdat in crpptbx_new to the crpptbx case and removing loadTCVdata + note that AUG will not work for a while, but will be repaired next week.... + svn cp https://crppsvn.epfl.ch/repos/TCV/gdat/trunk https://crppsvn.epfl.ch/repos/TCV/gdat/tags/gdat_v3_9 -m"last version before changing to new gdat with machine_mapping file, first TCV is modified" diff --git a/crpptbx_new/TCV/gdat_tcv.m b/crpptbx_new/TCV/gdat_tcv.m index 8e07dd683609b458c47c6c213631893d97b034b9..269a3fb267f4063d1e9cd217304970e5da76d21f 100644 --- a/crpptbx_new/TCV/gdat_tcv.m +++ b/crpptbx_new/TCV/gdat_tcv.m @@ -58,6 +58,7 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_tcv(shot,data_req varargout{1}=cell(1,1); error_status=1; +nverbose = 1; % construct default parameters structure gdat_params.data_request = ''; @@ -298,7 +299,7 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi') aatmp=eval(eval_expr); end if isempty(aatmp.data) || isempty(aatmp.dim) % || ischar(aatmp.data) (to add?) - warning(['problems loading data for ' eval_expr ' for data_request= ' data_request_eff]) + if (nverbose>=3); warning(['problems loading data for ' eval_expr ' for data_request= ' data_request_eff]); end return end gdat_data.data = aatmp.data; @@ -349,23 +350,23 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi') % end of method "tdi" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -elseif strcmp(mapping_for_tcv.method,'function') - % 2nd: method="function" - % assume expression contains function to call and which returns a structure +elseif strcmp(mapping_for_tcv.method,'expression') + % 2nd: method="expression" + % assume expression contains function to call and which returns a structure into variable gdat_tmp % we copy the structure, to make sure default nodes are defined and to avoid if return is an closed object like tdi - % eval_expr = ['aatmp=' mapping_for_tcv.expression ';']; - aatmp = eval(mapping_for_tcv.expression); - if isempty(aatmp) || (~isstruct(aatmp) & ~isobject(aatmp)) + % eval_expr = [mapping_for_tcv.expression ';']; + eval([mapping_for_tcv.expression ';']); + if isempty(gdat_tmp) || (~isstruct(gdat_tmp) & ~isobject(gdat_tmp)) warning(['function expression does not return a structure: ' mapping_for_tcv.expression]) error_status=801; return end - tmp_fieldnames = fieldnames(aatmp); - if sum(strcmp(tmp_fieldnames,'data'))==0 % note: cannot do isfield since aatmp might be an object + tmp_fieldnames = fieldnames(gdat_tmp); + if sum(strcmp(tmp_fieldnames,'data'))==0 % note: cannot do isfield since gdat_tmp might be an object warning(['function does not return a child name ''data'' for ' data_request_eff]) end for i=1:length(tmp_fieldnames) - gdat_data.(tmp_fieldnames{i}) = aatmp.(tmp_fieldnames{i}); + gdat_data.(tmp_fieldnames{i}) = gdat_tmp.(tmp_fieldnames{i}); end % add .t and .x in case only dim is provided % do not allow shifting of timedim since should be treated in the relevant function @@ -623,10 +624,16 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') case {'ne','te'} % ne or Te from Thomson data on raw z mesh vs (z,t) - nodenameeff=['\results::thomson:' data_request_eff]; + edge_str_ = ''; + edge_str_dot = ''; + if isfield(gdat_data.gdat_params,'edge') && ~isempty(gdat_data.gdat_params.edge) && ... + gdat_data.gdat_params.edge>0 + edge_str_ = '_edge'; + edge_str_dot = '.edge'; + end + nodenameeff=['\results::thomson' edge_str_dot ':' data_request_eff]; tracetdi=tdi(nodenameeff); - tracestd=tdi(['\results::thomson:' data_request_eff ':error_bar']); - trace_fir_rat=tdi('\results::thomson:fir_thom_rat'); + tracestd=tdi(['\results::thomson' edge_str_dot ':' data_request_eff ':error_bar']); gdat_data.data=tracetdi.data'; % Thomson data as (t,z) gdat_data.error_bar=tracestd.data'; gdat_data.data_fullpath=[nodenameeff]; @@ -645,7 +652,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') return end if strcmp(data_request_eff(1:2),'ne') - tracefirrat_data = get_fir_thom_rat_data(shot,'thomson',time); + tracefirrat_data = get_fir_thom_rat_data(shot,['thomson' edge_str_],time); gdat_data.data_abs = gdat_data.data * diag(tracefirrat_data); gdat_data.error_bar_abs = gdat_data.error_bar * diag(tracefirrat_data); gdat_data.firrat=tracefirrat_data; @@ -675,25 +682,31 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' data_request_eff]) return end - edge_str_col = ''; + zshift = 0.; + if isfield(gdat_data.gdat_params,'zshift') && ~isempty(gdat_data.gdat_params.zshift) + zshift = gdat_data.gdat_params.zshift; + else + gdat_data.gdat_params.zshift = zshift; + end + edge_str_ = ''; edge_str_dot = ''; if isfield(gdat_data.gdat_params,'edge') && ~isempty(gdat_data.gdat_params.edge) && ... gdat_data.gdat_params.edge>0 - edge_str_col = ':edge'; - edge_str_dot = ':edge'; + edge_str_ = '_edge'; + edge_str_dot = '.edge'; end % if nete_rho, do first ne, then Te later (so fir stuff already done) if strcmp(data_request_eff,'ne_rho') || strcmp(data_request_eff,'nete_rho') - nodenameeff=['\results::thomson' edge_str_col ':ne']; + nodenameeff=['\results::thomson' edge_str_dot ':ne']; tracetdi=tdi(nodenameeff); - nodenameeff=['\results::thomson' edge_str_col ':ne; error_bar ; fir_thom_rat; (ne,std)*fir_thom_rat']; - tracestd=tdi(['\results::thomson' edge_str_col ':ne:error_bar']); - tracefirrat_data = get_fir_thom_rat_data(shot,'thomson',time); + nodenameeff=['\results::thomson' edge_str_dot ':ne; error_bar ; fir_thom_rat; (ne,std)*fir_thom_rat']; + tracestd=tdi(['\results::thomson' edge_str_dot ':ne:error_bar']); + tracefirrat_data = get_fir_thom_rat_data(shot,['thomson' edge_str_],time); else - nodenameeff=['\results::thomson' edge_str_col ':te']; + nodenameeff=['\results::thomson' edge_str_dot ':te']; tracetdi=tdi(nodenameeff); - nodenameeff=['\results::thomson' edge_str_col ':te; error_bar']; - tracestd=tdi(['\results::thomson' edge_str_col ':te:error_bar']); + nodenameeff=['\results::thomson' edge_str_dot ':te; error_bar']; + tracestd=tdi(['\results::thomson' edge_str_dot ':te:error_bar']); end gdat_data.data=tracetdi.data'; % Thomson data as (t,z) gdat_data.error_bar=tracestd.data'; @@ -708,6 +721,32 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') % construct rho mesh psi_max=tdi(['\results::thomson' edge_str_dot ':psi_max' substr_liuqe]); psiscatvol=tdi(['\results::thomson' edge_str_dot ':psiscatvol' substr_liuqe]); + if abs(zshift)>1e-5 + % calculate new psiscatvol + psitdi=tdi(['\results::psi' substr_liuqe]); + rmesh=psitdi.dim{1}; + zmesh=psitdi.dim{2}; + zthom=mdsdata('dim_of(\thomson:te,1)'); + zeffshift=zshift; + % set zeffshift time array same as psitdi + switch length(zeffshift) + case 1 + zeffshift=zeffshift * ones(size(psitdi.dim{3})); + case length(psitdi.dim{3}) + % ok + case length(psiscatvol.dim{1}) + zeffshift=interp1(psiscatvol.dim{1},zeffshift,psitdi.dim{3}); + otherwise + disp(' bad time dimension for zshift') + disp(['it should be 1 or ' num2str(length(psiscatvol.dim{1})) ' or ' num2str(length(psitdi.dim{3}))]) + end + for it=1:length(psiscatvol.dim{1}) + itpsitdi=iround(psitdi.dim{3},psiscatvol.dim{1}(it)); + psirz=psitdi.data(:,:,itpsitdi); + psiscatvol0=griddata(rmesh,zmesh,psirz',0.9*ones(size(zthom)),zthom-zeffshift(itpsitdi)); + psiscatvol.data(it,:)=psiscatvol0; + end + end if ~isempty(psiscatvol.data) && ~ischar(psiscatvol.data) && ~isempty(psi_max.data) && ~ischar(psi_max.data) for ir=1:length(psiscatvol.dim{2}) rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))'; @@ -722,24 +761,106 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if any(strcmp(fieldnames(tracetdi),'units')) gdat_data.units=tracetdi.units; end + %%%%%%%%%%% add fitted profiles if 'fit'>=1 + if isfield(gdat_data.gdat_params,'fit') && ~isempty(gdat_data.gdat_params.fit) && ... + gdat_data.gdat_params.fit>0 + % default is from proffit:avg_time + def_proffit = '\results::proffit.avg_time'; + if isfield(gdat_data.gdat_params,'fit_type') && ~isempty(gdat_data.gdat_params.fit_type) + if strcmp(gdat_data.gdat_params.fit_type,'local') + def_proffit = '\results::proffit.local_time'; + else + gdat_data.gdat_params.fit_type = 'avg'; + end + else + gdat_data.gdat_params.fit_type = 'avg'; + end + if strcmp(data_request_eff(1:2),'ne') + nodenameeff = [def_proffit ':neft_abs']; % do first ne if nete asked for + elseif strcmp(data_request_eff(1:2),'te') + nodenameeff = [def_proffit ':teft']; + else + disp(['should not be here: data_request_eff, data_request_eff(1:2)= ',data_request_eff, data_request_eff(1:2)]); + end + if isfield(gdat_data.gdat_params,'trialindx') && ~isempty(gdat_data.gdat_params.trialindx) && ... + gdat_data.gdat_params.trialindx>=0 + nodenameeff=[nodenameeff ':trial']; + trialindx = gdat_data.gdat_params.trialindx; + else + gdat_data.gdat_params.trialindx = []; + trialindx = []; + end + tracetdi=tdi(nodenameeff); + if isempty(trialindx) + gdat_data.fit.data = tracetdi.data; + else + if ~isempty(tracetdi.data) && size(tracetdi.data,3)>=trialindx+1 + gdat_data.fit.data = tracetdi.data(:,:,trialindx+1); + else + gdat_data.fit.data = []; + gdat_data.fit.data_fullpath = [nodenameeff ' with trialindx=' num2str(trialindx) ' is empty']; + return + end + end + gdat_data.fit.x=tracetdi.dim{1}; + gdat_data.fit.t=tracetdi.dim{2}; + if mapping_for_tcv.timedim~=2 | mapping_for_tcv.gdat_timedim~=2 + disp(['unexpected timedim in fit: data_request_eff= ' data_request_eff ... + ', mapping_for_tcv.timedim= ' mapping_for_tcv.timedim ... + ', mapping_for_tcv.gdat_timedim= ' mapping_for_tcv.gdat_timedim]); + end + gdat_data.dim=tracetdi.dim(1:2); + gdat_data.dimunits=tracetdi.dimunits(1:2); + if any(strcmp(fieldnames(tracetdi),'units')) + gdat_data.fit.units=tracetdi.units; + end + gdat_data.fit.data_fullpath = nodenameeff; + % do te as well if nete asked for + if strcmp(data_request_eff(1:4),'nete') + gdat_data.fit.ne.data = gdat_data.fit.data; + gdat_data.fit.ne.units = gdat_data.fit.units; + nodenameeff = [def_proffit ':teft']; + if ~isempty(trialindx); nodenameeff=[nodenameeff ':trial']; end + tracetdi=tdi(nodenameeff); + if isempty(trialindx) + gdat_data.fit.te.data = tracetdi.data; + else + if ~isempty(tracetdi.data) && size(tracetdi.data,3)>=trialindx+1 + gdat_data.fit.te.data = tracetdi.data(:,:,trialindx+1); + else + return + end + end + if any(strcmp(fieldnames(tracetdi),'units')) + gdat_data.fit.te.units=tracetdi.units; + end + % construct pe=1.6022e-19*ne*te + gdat_data.fit.data = 1.6022e-19.*gdat_data.fit.ne.data .* gdat_data.fit.te.data; + gdat_data.fit.units = 'N/m^2; 1.6022e-19 ne Te'; + gdat_data.fit.data_fullpath = [gdat_data.fit.data_fullpath ' ; ' nodenameeff ' and pe in data']; + end + else + gdat_data.gdat_params.fit = 0; + end + %%%%%%%%%%% % if nete_rho, copy data as .ne, get .te and put pe=e ne Te in data: - if strcmp(data_request_eff,'nete_rho') + if strcmp(data_request_eff(1:4),'nete') gdat_data.ne.data = gdat_data.data_abs; gdat_data.ne.error_bar = gdat_data.error_bar_abs; gdat_data.ne.firrat=gdat_data.firrat; gdat_data.ne.units = 'm^{-3}'; gdat_data = rmfield(gdat_data,{'firrat','data_abs','error_bar_abs'}); % - nodenameeff=['\results::thomson' edge_str_col ':te']; + nodenameeff=['\results::thomson' edge_str_dot ':te']; tracetdi=tdi(nodenameeff); - nodenameeff=['\results::thomson' edge_str_col ':te; error_bar']; - tracestd=tdi(['\results::thomson' edge_str_col ':te:error_bar']); + nodenameeff=['\results::thomson' edge_str_dot ':te; error_bar']; + tracestd=tdi(['\results::thomson' edge_str_dot ':te:error_bar']); gdat_data.te.data=tracetdi.data'; gdat_data.te.error_bar=tracestd.data'; gdat_data.te.units = tracetdi.units; gdat_data.data_fullpath=['pe=1.6e-19*ne*Te in data, .ne, .te from \results::thomson' ... - edge_str_col ':ne and te and projected on rhopol\_norm']; - gdat_data.units='N/m^2'; + edge_str_dot ':ne and te and projected on rhopol\_norm']; + gdat_data.units='N/m^2; 1.6022e-19 ne Te'; gdat_data.data = 1.6022e-19 .* gdat_data.ne.data .* gdat_data.te.data; gdat_data.error_bar = 1.6022e-19 .* (gdat_data.ne.data .* gdat_data.te.error_bar ... + gdat_data.te.data .* gdat_data.ne.error_bar); @@ -907,12 +1028,66 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.data_fullpath='sqrt(\results::psitbx:vol/vol_edge)'; gdat_data.request_description = 'sqrt(volume(rho)/volume(edge))'; else - disp(['should not be here in vol cases with data_request = ' data_request]); + disp(['should not be here in vol cases with data_request = ' data_request_eff]); return end end gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim}; + case {'sxr'} + % sxr from Xtomo by default or dmpx if 'camera','dmpx' is provided + + case {'profnerho','profterho'} + % for backward compatibility but corresponds to ne_rho with param.fit_type='auto' (TCV special) + % + nodenameeff=['\results::THOMSON.PROFILES.AUTO:' data_request_eff(5:6)]; + nodenameeff_vers = [nodenameeff ':version_num']; + avers = tdi(nodenameeff_vers); + if avers.data==0 + % may be because nodes not yet filled in, so call once a node + ab=tdi(nodenameeff); + avers = tdi(nodenameeff_vers); + end + if avers.data>0 + tracetdi=tdi(nodenameeff); + if avers.data < 2.99 + % for earlier version the bug made it to have logically (rho,t) + gdat_data.data=tracetdi.data; + if ~isempty(tracetdi.dim) && ~ischar(tracetdi.data) + gdat_data.x=tracetdi.dim{1}; + gdat_data.t=tracetdi.dim{2}; + error_status=0; + else + error_status=2; + gdat_data.x=[]; + gdat_data.t=[]; + end + else + gdat_data.data=tracetdi.data'; % error in dimensions for autofits + if ~isempty(tracetdi.dim) && ~ischar(tracetdi.data) + if nverbose>=3; disp('assumes dim{2} for x in THOMSON.PROFILES.AUTO'); end + gdat_data.x=tracetdi.dim{2}; + gdat_data.t=tracetdi.dim{1}; + error_status=0; + else + gdat_data.x=[]; + gdat_data.t=[]; + error_status=2; + end + end + else + tracetdi=avers; + gdat_data.x=[]; + gdat_data.t=[]; + end + gdat_data.dim=[{gdat_data.x};{gdat_data.t}]; + gdat_data.dimunits=[{'sqrt(psi\_norm)'} ; {'time [s]'}]; + if ~isempty(gdat_data.t) && any(strcmp(fieldnames(tracetdi),'units')) + gdat_data.units=tracetdi.units; + end + gdat_data.request_description = 'quick autofits within thomson nodes, using version'; + gdat_data.fullpath = ['Thomson autfits from ' nodenameeff]; + otherwise warning(['switchcase= ' data_request_eff ' not known in gdat_tcv']) error_status=901; @@ -972,9 +1147,17 @@ if strcmp(maintracename_eff,'thomson') end end elseif strcmp(maintracename_eff,'thomson_edge') - tracefirrat=tdi('\results::thomson_edge:fir_thom_rat'); - if isempty(tracefirrat.data) || ischar(tracefirrat.data) - disp('problem with \results::thomson_edge:fir_thom_rat: empty') + if shot>=23801 + tracefirrat=tdi('\results::thomson.profiles.auto:fir_thom_rat'); %time base not same!! + if isempty(tracefirrat.data) || ischar(tracefirrat.data) + disp('problem with \results::thomson.profiles.auto:fir_thom_rat: empty, use thomson:fir_thom_rat') + tracefirrat=tdi('\results::thomson:fir_thom_rat'); + end + else + tracefirrat=tdi('\results::thomson_edge:fir_thom_rat'); + if isempty(tracefirrat.data) || ischar(tracefirrat.data) + disp('problem with \results::thomson_edge:fir_thom_rat: empty') + end end else disp('bad input in get_fir_thom_rat_data') diff --git a/crpptbx_new/TCV/tcv_requests_mapping.m b/crpptbx_new/TCV/tcv_requests_mapping.m index ddbae25b6861b81698edfd01f56a1b97e0af3996..94fe43f84ec911e3a1ac24f2eb73dcf8a9b20ad6 100644 --- a/crpptbx_new/TCV/tcv_requests_mapping.m +++ b/crpptbx_new/TCV/tcv_requests_mapping.m @@ -1,4 +1,7 @@ function mapping = tcv_requests_mapping(data_request) +% +% Information pre-defined for gdat_tcv, you can add cases here to match official cases in gdat_tcv, allowing backward compatibility +% % Defaults mapping = struct(... @@ -23,7 +26,7 @@ mapping.label = data_request; % method = 'tdi' and then expression is the string within tdi (usual case when there is a direct link to an existing signal) % with tdi, if expression cell array, call tdi(cell{1},cell{2},...) % method = 'tdiliuqe': same as tdi but adds "_2" or "_3" if 'liuqe',2 or 3 is asked for in options -% method = 'function', then expression is the funtion to call which should return a structure, which fields are copied to gdat_data +% method = 'expression', then expression is executed and it should provide the structure gdat_tmp, which fields are copied to gdat_data % method = 'switchcase', then there will be a specific case within gdat_tcv (usual case when not directly a signal) % % label is used for plotting @@ -62,7 +65,7 @@ switch lower(data_request) mapping.timedim = 1; mapping.method = 'tdiliuqe'; mapping.expression = '\results::delta_edge'; - % mapping.method = 'function'; + % mapping.method = 'expression'; % mapping.expression = ['tdi(''\results::q_psi'');']; % for tests case 'delta_bottom' mapping.timedim = 1; @@ -123,6 +126,12 @@ switch lower(data_request) mapping.timedim = 2; mapping.label = 'ne'; mapping.method = 'switchcase'; + case 'neft' + mapping.timedim = 2; + mapping.label = 'ne'; + mapping.method = 'expression'; + mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''ne_rho''; ' ... + 'params_eff.fit=1;params_eff.fit_type=''avg'';gdat_tmp=gdat_tcv([],params_eff);']; case 'nete_rho' mapping.timedim = 2; mapping.label = 'ne and Te'; @@ -158,6 +167,10 @@ switch lower(data_request) mapping.timedim = 2; mapping.label = 'q'; mapping.method = 'switchcase'; + case 'r_contour' + mapping.timedim = 1; + mapping.method = 'tdiliuqe'; + mapping.expression = '\results::r_contour'; case 'rgeom' mapping.timedim = 1; mapping.label = 'Rgeom'; @@ -190,6 +203,12 @@ switch lower(data_request) mapping.timedim = 2; mapping.label = 'Te'; mapping.method = 'switchcase'; + case 'teft' + mapping.timedim = 2; + mapping.label = 'ne'; + mapping.method = 'expression'; + mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''te_rho''; ' ... + 'params_eff.fit=1;params_eff.fit_type=''avg'';gdat_tmp=gdat_tcv([],params_eff);']; case 'ti' mapping.timedim = 2; mapping.label = 'Ti'; @@ -211,6 +230,10 @@ switch lower(data_request) mapping.label = 'Volume(\rho)'; mapping.method = 'switchcase'; % mapping.expression = '\results::psitbx:vol'; (if exists for liuqe2 and 3 as well) + case 'z_contour' + mapping.timedim = 1; + mapping.method = 'tdiliuqe'; + mapping.expression = '\results::z_contour'; case 'zeff' mapping.timedim = 1; mapping.label = 'zeff from Ip-Ibs'; @@ -225,8 +248,19 @@ switch lower(data_request) mapping.label = 'Zmagaxis'; mapping.method = 'tdiliuqe'; mapping.expression = '\results::z_axis'; + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % extra TCV cases (not necessarily in official data_request name list) + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % + case {'profnerho','profterho'} + mapping.timedim = 1; + mapping.label = data_request; + mapping.method = 'switchcase'; + mapping.expression = ''; + % $$$ case '' -% $$$ mapping.label = ''; +% $$$ mapping.timedim = 1; +% $$$ mapping.label = data_request; % $$$ mapping.method = 'tdi'; % $$$ mapping.expression = ''; otherwise diff --git a/crpptbx_new/demos/html/gdat_tutorial.html b/crpptbx_new/demos/html/gdat_tutorial.html index dfdd8d7f25a7f4532d1af6e240690e498173b817..8e200f0afc0693f822849b5c29ab99018875d5e5 100644 --- a/crpptbx_new/demos/html/gdat_tutorial.html +++ b/crpptbx_new/demos/html/gdat_tutorial.html @@ -6,7 +6,7 @@ <!-- This HTML was auto-generated from MATLAB code. To make changes, update the MATLAB code and republish this document. - --><title>gdat_tutorial</title><meta name="generator" content="MATLAB 8.3"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2015-08-27"><meta name="DC.source" content="gdat_tutorial.m"><style type="text/css"> + --><title>gdat_tutorial</title><meta name="generator" content="MATLAB 8.3"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2015-09-15"><meta name="DC.source" content="gdat_tutorial.m"><style type="text/css"> html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outine:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0} html { min-height:100%; margin-bottom:1px; } @@ -275,12 +275,6 @@ time_eff = 1 - read_results_for_chease for shot with LIUQE values for shot = 48836 -wrote /tmp/sauter/EXPEQ_48836t1.0000 -wrote /tmp/sauter/EXPEQ_PP48836t1.0000 -wrote /tmp/sauter/eqdsk.48836t1.0000 -wrote /tmp/sauter/eqdsksigns.48836t1.0000 -wrote /tmp/sauter/EXPEQsigns_48836t1.0000 do not calculate BR, BZ, Bphi, etc Wrote /tmp/sauter/EQDSK_48836t1.0000_COCOS02 Wrote /tmp/sauter/EQDSK_48836t1.0000_COCOS02_IpB0positive diff --git a/crpptbx_new/demos/html/gdat_tutorial_01.png b/crpptbx_new/demos/html/gdat_tutorial_01.png index 985836879c50dee0278900357ef6b53d31116613..f69c2d1cabfb6258b925873a22b0988751534ad2 100644 Binary files a/crpptbx_new/demos/html/gdat_tutorial_01.png and b/crpptbx_new/demos/html/gdat_tutorial_01.png differ diff --git a/crpptbx_new/demos/html/gdat_tutorial_02.png b/crpptbx_new/demos/html/gdat_tutorial_02.png index b3ae183037a80a2ccb4d13c245148fd893c62348..43d6b88d41ba44d533b7685fc87cf3de78e0d3ad 100644 Binary files a/crpptbx_new/demos/html/gdat_tutorial_02.png and b/crpptbx_new/demos/html/gdat_tutorial_02.png differ