From efacc5f5ab2e0e5bb49ef0aff575ed3435553792 Mon Sep 17 00:00:00 2001
From: galperti <cristian.galperti@epfl.ch>
Date: Tue, 9 Jun 2020 13:40:59 +0200
Subject: [PATCH] tolerate params whose mdsopen fails

---
 code/classes/SCDclass_mdspar.m | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/code/classes/SCDclass_mdspar.m b/code/classes/SCDclass_mdspar.m
index b47951a..abf225e 100644
--- a/code/classes/SCDclass_mdspar.m
+++ b/code/classes/SCDclass_mdspar.m
@@ -103,7 +103,7 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
     
     % Not abstract methods common to all child classes
     methods
-        function mdsconnect(obj, shot)
+        function obj = mdsconnect(obj, shot)
             assert(~~exist('mdsconnect','file'),...
                 'SCD:NoMDS','mdsconnect not found, are the mds matlab tools installed?')
            mdsconnect(obj.mdsserver);
@@ -117,8 +117,26 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
               localshot = shot;
            end
            s=mdsopen(obj.mdstree, localshot);
-           str=sprintf('SCDclass_mdsparam (%s), failed opening MDS+ tree', obj.modelparam);
-           assert(s==localshot, str);
+           openok=true;
+           if isempty(s)
+               openok=false;
+           end
+           if openok 
+               if ~isnumeric(s) || s~=localshot
+                    openok=false;
+               end
+           end
+           if openok
+               if s~=localshot
+                   openok=false;
+               end
+           end
+           if ~openok    
+               warning('SCDclass_mdspar:MDSerror','MDS+ tree open error for parameter %s. Actualization skipped.',obj.modelparam);
+             obj.actualizable=false;
+           end
+           %str=sprintf('SCDclass_mdsparam (%s), failed opening MDS+ tree', obj.modelparam);
+           %assert(s==localshot, str);
         end
         
         function obj=setactualizecmds(obj, shot)
@@ -134,11 +152,11 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
         function obj=preactualizecommon(obj, shot)
            if(~obj.unlinked)            
                % Opening the tree
-               obj.mdsconnect(shot);
-               % Checking if data can be retrieved, updating get command
+               obj=obj.mdsconnect(shot);
+               if ~obj.actualizable, return; end
+               % Checking if data can be retrieved, updating get command               
                [obj, obj.value]=obj.getdata(shot);
                if ~obj.actualizable, return; end
-               
                obj=obj.setactualizecmds(shot);
            end
         end
-- 
GitLab