diff --git a/crpptbx/JET/gdat_jet.m b/crpptbx/JET/gdat_jet.m index 89c06ab89f7ad88efc450c3e76b710a58aca86f5..d394cce211fcd961fdd1b9d64c46380df39ad2dc 100644 --- a/crpptbx/JET/gdat_jet.m +++ b/crpptbx/JET/gdat_jet.m @@ -664,66 +664,45 @@ elseif strcmp(mapping_for_jet.method,'switchcase') else gdat_data.gdat_params.zshift = zshift; end - gdat_data.gdat_params.zshift = zshift; - for itime=1:length(time) - time_eff = time(itime); - % use read_results updated to effectively obtain an eqdsk with sign correct with COCOS=2 - [fnames_readresults]=read_results_for_chease(shot,time_eff,liuqe_version,3,[],[],[],zshift,0,1); - if isempty(fnames_readresults) - if gdat_params.nverbose>=1; - warning(['could not create eqdsk file from read_results_for_chease with data_request= ' data_request_eff]); - end - return - end - eqdskval=read_eqdsk(fnames_readresults{4},7,0,[],[],1); % LIUQE is 17 but read_results divided psi by 2pi thus 7 - for i=1:length(fnames_readresults) - unix(['rm ' fnames_readresults{i}]); - end - % transform to cocos=2 since read_results originally assumed it was cocos=2 - cocos_in = 2; - [eqdsk_cocos_in, eqdsk_cocosout_IpB0pos,cocos_inout]=eqdsk_cocos_transform(eqdskval,[7 cocos_in]); - fnamefull = fullfile(['/tmp/' getenv('USER')],['EQDSK_' num2str(shot) 't' num2str(time_eff,'%.4f')]); - % We still write COCOS=2 case, since closer to standard (in /tmp) - write_eqdsk(fnamefull,eqdsk_cocos_in,cocos_in,[],[],[],1); - % Now gdat_jet should return the convention from LIUQE which is COCOS=17, except if specified in option - % create standard filename name from shot, time_eff (cocos will be added by write_eqdsk) - cocos_out = 17; - if isfield(gdat_data.gdat_params,'cocos') && ~isempty(gdat_data.gdat_params.cocos) - cocos_out = gdat_data.gdat_params.cocos; - else - gdat_data.gdat_params.cocos = cocos_out; - end - [eqdsk_cocosout, eqdsk_cocosout_IpB0pos,cocos_inout]=eqdsk_cocos_transform(eqdsk_cocos_in,[cocos_in cocos_out]); - % for several times, use array of structure for eqdsks, - % cannot use it for psi(R,Z) in .data and .x since R, Z might be different at different times, - % so project psi(R,Z) on Rmesh, Zmesh of 1st time - if length(time) > 1 - gdat_data.eqdsk{itime} = write_eqdsk(fnamefull,eqdsk_cocosout,cocos_out); + if abs(zshift-1) <= 1e-6 + zshift_eff = -99; + else + zshift_eff = zshift; + end + [efitdata,eqd]=geteqdskJET(shot,time,[],[],[],zshift_eff); + if length(time) > 1 + gdat_data.eqdsk = eqd; + for itime=1:length(time) if itime==1 gdat_data.data(:,:,itime) = gdat_data.eqdsk{itime}.psi; gdat_data.dim{1} = gdat_data.eqdsk{itime}.rmesh; gdat_data.dim{2} = gdat_data.eqdsk{itime}.zmesh; else + % for several times, use array of structure for eqdsks, + % cannot use it for psi(R,Z) in .data and .x since R, Z might be different at different times, + % so project psi(R,Z) on Rmesh, Zmesh of 1st time xx=repmat(reshape(gdat_data.dim{1},length(gdat_data.dim{1}),1),1,size(gdat_data.eqdsk{itime}.psi,2)); yy=repmat(reshape(gdat_data.dim{2},1,length(gdat_data.dim{2})),size(gdat_data.eqdsk{itime}.psi,1),1); aa = interpos2Dcartesian(gdat_data.eqdsk{itime}.rmesh,gdat_data.eqdsk{itime}.zmesh ... ,gdat_data.eqdsk{itime}.psi,xx,yy,-1,-1); gdat_data.data(:,:,itime) = aa; end - else - gdat_data.eqdsk = write_eqdsk(fnamefull,eqdsk_cocosout,cocos_out); - gdat_data.data = gdat_data.eqdsk.psi; - gdat_data.dim{1} = gdat_data.eqdsk.rmesh; - gdat_data.dim{2} = gdat_data.eqdsk.zmesh; end + else + gdat_data.eqdsk = eqd{1}; + gdat_data.data = gdat_data.eqdsk.psi; + gdat_data.dim{1} = gdat_data.eqdsk.rmesh; + gdat_data.dim{2} = gdat_data.eqdsk.zmesh; end gdat_data.dim{3} = gdat_data.t; gdat_data.x = gdat_data.dim(1:2); - gdat_data.data_fullpath=['psi(R,Z) and eqdsk from read_eqdsk from LIUQE' num2str(liuqe_version) ';zshift=' num2str(zshift)]; + gdat_data.data_fullpath=['psi(R,Z) and eqdsk from geteqdskJET from efit ; zshift=' num2str(zshift)]; gdat_data.units = 'T m^2'; gdat_data.dimunits = {'m','m','s'}; gdat_data.request_description = ['data=psi, x=(R,Z), eqdsk contains eqdsk structure with which ' ... 'plot_eqdsk, write_eqdsk, read_eqdsk can be used']; + % data loaded to create eqdsks, can be used in geteqdskJET for other times to avoid to reload all + gdat_data.efitdata = efitdata; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'mhd'} diff --git a/crpptbx/JET/jet_help_parameters.m b/crpptbx/JET/jet_help_parameters.m index 2167c5fc34ca10a4e283eb899803589a07df34ef..f4dbe90cdcf2c9aa0de03f9518bf8ba96c016dbe 100644 --- a/crpptbx/JET/jet_help_parameters.m +++ b/crpptbx/JET/jet_help_parameters.m @@ -31,7 +31,7 @@ help_struct_all = struct(... % $$$ ' good value' char(10) ... % $$$ 'cxrs: if numeric, default for all cases, if structure, default for non given fields']; help_struct_all.time = 'time(s) value(s) if relevant, for example eqdsk is provided by default only for time=1.0s'; -% $$$ help_struct_all.zshift = 'vertical shift of equilibrium, either for eqdsk (1 to shift to zaxis=0) or for mapping measurements on to rho surfaces [m]'; +help_struct_all.zshift = 'vertical shift of equilibrium, either for eqdsk (1 or -99 to shift to zaxis=0) or for mapping measurements on to rho surfaces [m]'; help_struct_all.cocos = ['cocos value desired in output, uses eqdsk_cocos_transform. Note should use latter if a specific Ip and/or B0 sign' ... 'is wanted. See O. Sauter et al Comput. Phys. Commun. 184 (2013) 293']; % $$$ help_struct_all.edge = '0 (default), 1 to get edge Thomson values';