From 90e3c5d8a7893f6d88435bda3cd676b6e49a34ab Mon Sep 17 00:00:00 2001
From: galperti <cristian.galperti@epfl.ch>
Date: Thu, 23 Jun 2022 16:59:19 +0200
Subject: [PATCH] first matlab -> MDS -> matlab round trip ok on scdds shot 2

---
 algos/template/algoobj_template.m | 14 +++++++-------
 classes/SCDclass_algo.m           | 18 ++++++++++++++++++
 classes/SCDclass_mdspar.m         | 13 +++++++++----
 3 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/algos/template/algoobj_template.m b/algos/template/algoobj_template.m
index 5094e17..21cb5f2 100644
--- a/algos/template/algoobj_template.m
+++ b/algos/template/algoobj_template.m
@@ -13,15 +13,15 @@ obj=obj.addfpinitfcn('algo_template_loadfp','algo_template_fp');
 obj=obj.addtunparamstruct('algo_template_tp', @()algo_template_loadtp(), false);
 
 %% Tunable parameters
-parshot=-1;
+parshot=2;
 mdsserver='scd.epfl.ch';
 mdstree  ='scdds';
-obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.kb1','enable'          ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot)); 
-obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.ks1','gain'            ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot)); 
-obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.ks2','refmodel.gain'   ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
-obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.kv1','rowvect'         ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
-obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.kv2','colvect'         ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
-obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.km1','matrix'          ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
+obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.enable'        ,'enable'          ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot)); 
+obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.gain'          ,'gain'            ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot)); 
+obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.refmodel.gain' ,'refmodel.gain'   ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
+obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.rowvect'       ,'rowvect'         ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
+obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.colvect'       ,'colvect'         ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
+obj=obj.addparameter(SCDclass_mdsparnumeric('template.params.matrix'        ,'matrix'          ,'srcsrv',mdsserver,'srctree',mdstree,'shot',parshot));
 
 %% 2nd tunable parameters structure/parameters
 % obj=obj.addtunparamstruct('algo_template_tp2', @()algo_template_loadtp(), false);
diff --git a/classes/SCDclass_algo.m b/classes/SCDclass_algo.m
index ed5c226..fc753f7 100644
--- a/classes/SCDclass_algo.m
+++ b/classes/SCDclass_algo.m
@@ -805,6 +805,24 @@ classdef SCDclass_algo
        function load(obj)
          load_system(obj.modelname);
        end
+       
+       function updatemds(obj, shot)
+            %if shot~=-1
+            %    error('SCDclass_expcode:updatemds','update permitted only on the model shot');
+            %end
+            
+%             % first update algorithm tunparams default locally
+%             for ii=1:numel(obj.algonamelist)
+%                if strcmp(algo, obj.algonamelist{ii})
+%                    obj.algos{ii}.updatetemplatetp();
+%                end
+%             end
+%             % then update mds
+            obj.mdscontainer.modeltogenerate=obj.modelname;
+            obj.mdscontainer.autopopulateMDSparams(shot);         
+            obj.mdscontainer.autopopulateMDSwavegens(shot);
+        end
+       
     end
     
     methods(Static,Hidden=true)
diff --git a/classes/SCDclass_mdspar.m b/classes/SCDclass_mdspar.m
index e6c43ab..722fdbe 100644
--- a/classes/SCDclass_mdspar.m
+++ b/classes/SCDclass_mdspar.m
@@ -357,22 +357,27 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
             retval=mdsput(node, writeval, 'x');
             if isnumeric(retval)
                 if ~rem(retval,2)
-                    warning('SCDclass_mdspar:MDSerror','Error writing node build_param.');
+                    warning('SCDclass_mdspar:MDSerror','Error writing node build_param. %s',mdsdata('GetMsg($1)',retval));
                 end
             else
-                warning('SCDclass_mdspar:MDSerror','Error writing node build_param.');
+                warning('SCDclass_mdspar:MDSerror','Error writing node build_param. %s',retval);
+                
             end
             
             retval=mdsput(nodecom, obj.mdshelpstr);
             if isnumeric(retval)
                 if ~rem(retval,2)
-                    warning('SCDclass_mdspar:MDSerror','Error writing node comment.');
+                    warning('SCDclass_mdspar:MDSerror','Error writing node comment. %s',mdsdata('GetMsg($1)',retval));
                 end
             else
-                warning('SCDclass_mdspar:MDSerror','Error writing node comment.');
+                warning('SCDclass_mdspar:MDSerror','Error writing node comment. %s',retval);
             end
             
             writeval=obj.casttomds(val);
+            
+            % logical type conversion
+            if islogical(writeval), writeval=uint8(writeval); end
+           
             mdsput(nodeval, writeval);
             checkval=mdsvalueraw(nodeval);
             if ~any(writeval==checkval)
-- 
GitLab