From 0c887baf19cc57f95f2f7bd8ceed92099ff7d0da Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Mon, 25 Mar 2019 10:34:06 +0000 Subject: [PATCH] further tests from epfl to ipp, use startmds server on sxaug31, see help gdat_aug git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11635 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/AUG/gdat_aug.m | 5 ++ crpptbx/AUG/geteqdskAUG.m | 12 ++--- crpptbx/AUG/rdaAUG_eff.m | 109 +++++++++++++++++++++++--------------- 3 files changed, 76 insertions(+), 50 deletions(-) diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m index 61bf5d64..bb7f7210 100644 --- a/crpptbx/AUG/gdat_aug.m +++ b/crpptbx/AUG/gdat_aug.m @@ -65,6 +65,11 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_aug(shot,data_req % >> mdsconnect('localhost:8001') % >> mdsvalue('1+2') % should return 3 if correctly connected % +% [Problems with mds server for integers, temporary fix, start an mds server on sxaug31 (or 32++?) thus need 2 other sessions: +% 1) in one unix session do: ssh osauter@gate1.aug.ipp.mpg.de ; then connect to sxaug31: ssh -X sxaug31; then execute startmds and leave window +% 2) in another unix session connect to mds server through gate1: ssh -losauter -L 8002:sxaug31.aug.ipp.mpg.de:8001 gate1.aug.ipp.mpg.de +% 3) in your local session in matlab do: >> mdsconnect('localhost:8002') (and verify with >> mdsvalue('1+2') + % % Comments for local developer: % This gdat is just a "header routine" calling the gdat for the specific machine gdat_`machine`.m which can be called diff --git a/crpptbx/AUG/geteqdskAUG.m b/crpptbx/AUG/geteqdskAUG.m index 3ca27016..cfae4314 100644 --- a/crpptbx/AUG/geteqdskAUG.m +++ b/crpptbx/AUG/geteqdskAUG.m @@ -16,12 +16,12 @@ function [eqdskAUG, equil_all_t, equil_t_index]=geteqdskAUG(shot,time,zshift,var % -if ~exist('shot') || isempty(shot); +if ~exist('shot') || isempty(shot); disp('requires a shot or equil structure from gdat(shot,''equil'',...) in geteqdskAUG') return end -if ~exist('time'); +if ~exist('time'); time_eff = 2.0; else time_eff = time; @@ -58,7 +58,7 @@ else end if isnumeric(shot) - equil=gdat(shot,'equil','equil',equil_source,'extra_arg_sf2sig',extra_arg_sf2sig); + equil=gdat_aug(shot,'equil','equil',equil_source,'extra_arg_sf2sig',extra_arg_sf2sig); else equil = shot; shot = equil.shot; @@ -108,7 +108,7 @@ eqdsk.ind1=1; psisign = sign(eqdsk.psimesh(end)-eqdsk.psimesh(1)); [dum1,dum2,dum3,F2_05]=interpos(psisign.*eqdsk.psimesh,eqdsk.FFprime,-0.01); -b0=gdat(shot,'b0'); +b0=gdat_aug(shot,'b0'); [zz itb0]=min(abs(b0.t-time_eff)); eqdsk.b0 = b0.data(itb0); eqdsk.r0 = 1.65; @@ -116,10 +116,10 @@ fedge=eqdsk.r0.*eqdsk.b0; F2 = psisign.*2.*F2_05 + fedge.^2; eqdsk.F = sqrt(F2)*sign(eqdsk.b0); -rmag=gdat(shot,'rmag','source',equilpar_source,'extra_arg_sf2sig',extra_arg_sf2sig); +rmag=gdat_aug(shot,'rmag','source',equilpar_source,'extra_arg_sf2sig',extra_arg_sf2sig); [zz itrmag]=min(abs(rmag.t-time_eff)); eqdsk.raxis = rmag.data(itrmag); -zmag=gdat(shot,'zmag','source',equilpar_source,'extra_arg_sf2sig',extra_arg_sf2sig); +zmag=gdat_aug(shot,'zmag','source',equilpar_source,'extra_arg_sf2sig',extra_arg_sf2sig); eqdsk.zaxis = zmag.data(itrmag) - eqdsk.zshift; % get plasma boundary diff --git a/crpptbx/AUG/rdaAUG_eff.m b/crpptbx/AUG/rdaAUG_eff.m index 0e76eeef..d1a0d91f 100644 --- a/crpptbx/AUG/rdaAUG_eff.m +++ b/crpptbx/AUG/rdaAUG_eff.m @@ -125,22 +125,30 @@ if usemdsplus % $$$ mdsconnect('localhost'); % $$$ end + % extract if need raw + ij=strfind(extra_arg_sf2sig,'raw'); + ask_raw = ''; + if ~isempty(ij) + ask_raw = '"raw"'; + end % extract edition number if provided as '-ed',value in extra_arg_sf2sig ij=strfind(extra_arg_sf2sig,'-ed'); ed_number = ''; if ~isempty(ij) ed_number = num2str(sscanf(extra_arg_sf2sig(ij+5:end),'%d')); end + if isempty(time_int) + tstart = ''; + tend = ''; + else + tstart = num2str(time_int(1)); + tend = num2str(time_int(2)); + end user=getenv('USER'); if isempty(param_name) && isempty(param_set_name) && ~area_base && ~time_base - % use augdiag - if nargin>=5 & ~isempty(varargin{1}) - eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' sigtype '","' shotfile_exp ... - '",' ed_number ',' num2str(varargin{1}(1),'%.14f') ',' num2str(varargin{1}(end),'%.14f') ')'');']); - else - eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augdiag(' num2str(shot) ',"' diagname '","' sigtype '","' shotfile_exp ... - '",' ed_number ',,,_oshot' user diagname ',_oed' user diagname ')'');']); - end + % use augsignal to get effective layout as in ISIS and sf2sig, for example for EQI/PFM + eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augsignal(' num2str(shot) ',"' diagname '","' sigtype '","' shotfile_exp ... + '",' ed_number ',' tstart ',' tend ',_oshot' user diagname ',_oed' user diagname ',' ask_raw ')'');']); elseif isempty(param_set_name) && ~area_base && ~time_base % use augparam eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augparam(' num2str(shot) ',"' diagname '","' sigtype '","' param_name '"' ... @@ -154,7 +162,7 @@ if usemdsplus % area-base or time-base, can only get dim_of at this stage area_time_base_name = area_base_name; area_time_base_dimof = area_base_dimof; - if ~isempty(time_base_name); + if ~isempty(time_base_name); area_time_base_name = time_base_name; area_time_base_dimof = time_base_dimof; end @@ -197,13 +205,20 @@ if usemdsplus switch nbofdim case 1 adata.data=reshape(adata.data,1,length(adata.data)); - eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',0)'');']); + idim0 = 0; + eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',' num2str(idim0) ')'');']); + if numel(time) ~= numel(adata.data) + idim0 = 1; + eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',' num2str(idim0) ')'');']); + if numel(time) ~= numel(adata.data) + warning(['problem with dim for: ' diagname ', ' sigtype]) + end + end time = reshape(time,1,length(time)); x=[]; adata.dim = {time}; - eval(['tunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',0))'');']); + eval(['tunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',' num2str(idim0) '))'');']); adata.dimunits = {tunits}; - case 2 adata.data = adata.data'; did_transpose = 1; @@ -217,33 +232,33 @@ if usemdsplus eval(['tunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',0))'');']); adata.dimunits = {xunits, tunits}; - case 3 - eval(['x=mdsvalue(''dim_of(_rdaeff' user diagname ',0)'');']); - if prod(size(x))==length(x); x = reshape(x,1,length(x)); end - eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',1)'');']); - time = reshape(time,1,length(time)); - disp('3rd dimension in hsig!!!!!!!!!!!!!!!!!!!!!!!!!') - eval(['hsig=mdsvalue(''dim_of(_rdaeff' user diagname ',2)'');']); - if prod(size(hsig))==length(hsig); hsig = reshape(hsig,1,length(hsig)); end - adata.dim = {x, time, hsig}; - eval(['xunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',0))'');']); - eval(['tunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',1))'');']); - eval(['hsigunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',2))'');']); - adata.dimunits = {xunits, tunits, hsigunits}; - [zz,itime] = max(size(adata.data)); - for i=1:nbofdim - if strcmp(adata.dimunits{i},'s'); itime = i; end - end - ix = min(setdiff([1:2],itime)); - ihsig = setdiff([1:nbofdim],[ix itime]) - x = adata.dim{ix}; - time = adata.dim{itime}; - hsig = adata.dim{ihsig}; - adata.dim = {x, time, hsig}; - xunits = adata.dimunits{ix}; - tunits = adata.dimunits{itime}; - hsigunits = adata.dimunits{ihsig}; - adata.dimunits = {xunits, tunits, hsigunits}; +% $$$ case 3 +% $$$ eval(['x=mdsvalue(''dim_of(_rdaeff' user diagname ',0)'');']); +% $$$ if prod(size(x))==length(x); x = reshape(x,1,length(x)); end +% $$$ eval(['time=mdsvalue(''dim_of(_rdaeff' user diagname ',1)'');']); +% $$$ time = reshape(time,1,length(time)); +% $$$ disp('3rd dimension in hsig!!!!!!!!!!!!!!!!!!!!!!!!!') +% $$$ eval(['hsig=mdsvalue(''dim_of(_rdaeff' user diagname ',2)'');']); +% $$$ if prod(size(hsig))==length(hsig); hsig = reshape(hsig,1,length(hsig)); end +% $$$ adata.dim = {x, time, hsig}; +% $$$ eval(['xunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',0))'');']); +% $$$ eval(['tunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',1))'');']); +% $$$ eval(['hsigunits=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',2))'');']); +% $$$ adata.dimunits = {xunits, tunits, hsigunits}; +% $$$ [zz,itime] = max(size(adata.data)); +% $$$ for i=1:nbofdim +% $$$ if strcmp(adata.dimunits{i},'s'); itime = i; end +% $$$ end +% $$$ ix = min(setdiff([1:2],itime)); +% $$$ ihsig = setdiff([1:nbofdim],[ix itime]) +% $$$ x = adata.dim{ix}; +% $$$ time = adata.dim{itime}; +% $$$ hsig = adata.dim{ihsig}; +% $$$ adata.dim = {x, time, hsig}; +% $$$ xunits = adata.dimunits{ix}; +% $$$ tunits = adata.dimunits{itime}; +% $$$ hsigunits = adata.dimunits{ihsig}; +% $$$ adata.dimunits = {xunits, tunits, hsigunits}; otherwise itime = 1; % default @@ -251,8 +266,10 @@ if usemdsplus eval(['dimarray=mdsvalue(''dim_of(_rdaeff' user diagname ',' num2str(i-1) ')'');']); if prod(size(dimarray)) == length(dimarray) eval(['adata.dim{' num2str(i) '}=reshape(dimarray,1,length(dimarray));']); + else + eval(['adata.dim{' num2str(i) '} = dimarray;']); end - eval(['adata.dimunits{' num2str(i) '}=mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',' num2str(i-1) '))'');']); + eval(['adata.dimunits{' num2str(i) '}=deblank(mdsvalue(''units_of(dim_of(_rdaeff' user diagname ',' num2str(i-1) '))''));']); if strcmp(adata.dimunits{i},'s'); itime = i; end end x = adata.dim{min(setdiff([1:2],itime))}; @@ -263,8 +280,7 @@ if usemdsplus adata.t=time; adata.x=x; adata.hsig=hsig; - eval(['adata.units=mdsvalue(''units_of(_rdaeff' user diagname ')'');']); - adata.units=deblank(adata.units); + eval(['adata.units=deblank(mdsvalue(''units_of(_rdaeff' user diagname ')''));']); %mdsdisconnect; % $$$ if ~unix('test -d /home/duval/mdsplus') % $$$ rmpath('/home/duval/mdsplus') @@ -289,8 +305,13 @@ else end else try - [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[time_int(1);time_int(end)],'-exp',shotfile_exp); - adata.data = adata.value; % at this stage keep both but try to work only on .data (for adata which can be from sf2.. or mds) + if ~isempty(extra_arg_sf2sig) && ~strcmp(extra_arg_sf2sig,'[]') + eval(['[adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[' num2str(time_int(1)) ';' num2str(time_int(2)) ... + '] ,''-exp'',shotfile_exp,' extra_arg_sf2sig ');']); + else + [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[time_int(1);time_int(end)],'-exp',shotfile_exp); + end + adata.data = adata.value; % at this stage keep both but try to work only on .data (for adata which can be from sf2.. or mds) catch ME throw(ME) end -- GitLab