Index: /issm/trunk/src/m/solutions/dakota/qmuroot.m
===================================================================
--- /issm/trunk/src/m/solutions/dakota/qmuroot.m	(revision 2157)
+++ /issm/trunk/src/m/solutions/dakota/qmuroot.m	(revision 2157)
@@ -0,0 +1,13 @@
+function root=qmuroot(string)
+%QMUROOT - return root of a distributed descriptor
+
+root='';
+found=0;
+for i=1:length(string),
+	if ((49<=double(string(i))) && (double(string(i)<=57)))
+		break;
+	else
+		root=[root string(i)];
+	end
+end
+
Index: /issm/trunk/src/m/solutions/dakota/setupdesign/QmuSetupDesign.m
===================================================================
--- /issm/trunk/src/m/solutions/dakota/setupdesign/QmuSetupDesign.m	(revision 2156)
+++ /issm/trunk/src/m/solutions/dakota/setupdesign/QmuSetupDesign.m	(revision 2157)
@@ -33,4 +33,12 @@
 	dvar=setupdrag(dvar,variables,params,varargin{:});
 
+elseif strncmpi(descriptor,'drag_node',9)
+
+	dvar=setupdrag_node(dvar,variables,params,varargin{:});
+
+elseif strncmpi(descriptor,'thickness_node',14)
+
+	dvar=setupthickness_node(dvar,variables,params,varargin{:});
+
 elseif strcmpi(descriptor,'riftsfriction')
 
Index: /issm/trunk/src/m/solutions/dakota/setupdesign/setupdrag_node.m
===================================================================
--- /issm/trunk/src/m/solutions/dakota/setupdesign/setupdrag_node.m	(revision 2157)
+++ /issm/trunk/src/m/solutions/dakota/setupdesign/setupdrag_node.m	(revision 2157)
@@ -0,0 +1,35 @@
+function dvar=setupdrag_node(dvar,variables,params,varargin)
+
+for i=1:length(varargin)
+    if strcmp(class(varargin{i}),'model')
+        md=varargin{i};
+        break;
+    end
+end
+
+%first, recover  id of node: 
+descriptor=variables.descriptor();
+node=descriptor(10:end);
+
+%this variable we are trying to setup for qmu analysis is shadowing 
+%a variable in another pool of distributed variables. Ex: drag_node2 should 
+%owershadow the drag2 parameter. So go through the dvars, and figure out 
+%if the drag was already distributed. If not, error out. It so, then 
+%plug drag_nodei variable into the i'th variable of the distributed drag.
+
+
+found=0;
+for i=1:numel(dvar),
+	if strcmpi(dvar(i).descriptor,['drag' num2str(node)]),
+		found=i;
+		break;
+	end
+end
+if found==0,
+	error('setupdrag_node error message: could not find distributed drag parameters!');
+end
+
+%overshadow dvar(found) variable.
+variables.descriptor=['drag' num2str(node)];
+dvar(found)=variables;
+
Index: /issm/trunk/src/m/solutions/dakota/setupdesign/setupthickness_node.m
===================================================================
--- /issm/trunk/src/m/solutions/dakota/setupdesign/setupthickness_node.m	(revision 2157)
+++ /issm/trunk/src/m/solutions/dakota/setupdesign/setupthickness_node.m	(revision 2157)
@@ -0,0 +1,34 @@
+function dvar=setupthickness_node(dvar,variables,params,varargin)
+
+for i=1:length(varargin)
+    if strcmp(class(varargin{i}),'model')
+        md=varargin{i};
+        break;
+    end
+end
+
+%first, recover  id of node: 
+descriptor=variables.descriptor();
+node=descriptor(15:end);
+
+%this variable we are trying to setup for qmu analysis is shadowing 
+%a variable in another pool of distributed variables. Ex: thickness_node2 should 
+%owershadow the thickness2 parameter. So go through the dvars, and figure out 
+%if the thickness was already distributed. If not, error out. It so, then 
+%plug thickness_nodei variable into the i'th variable of the distributed thickness.
+
+
+found=0;
+for i=1:numel(dvar),
+	if strcmpi(dvar(i).descriptor,['thickness' num2str(node)]),
+		found=i;
+		break;
+	end
+end
+if found==0,
+	error('setupthickness_node error message: could not find distributed thickness parameters!');
+end
+
+%overshadow dvar(found) variable.
+variables.descriptor=['thickness' num2str(node)];
+dvar(found)=variables;
