Index: /issm/trunk/src/m/model/parameterization/parameterize.m
===================================================================
--- /issm/trunk/src/m/model/parameterization/parameterize.m	(revision 9180)
+++ /issm/trunk/src/m/model/parameterization/parameterize.m	(revision 9181)
@@ -73,5 +73,5 @@
 %Name and notes
 if isempty(md.name), 
-	[a,root,c,d]=fileparts(parametername);
+	[path,root,ext]=fileparts(parametername);
 	md.name=root; 
 end
Index: /issm/trunk/src/m/model/project3d.m
===================================================================
--- /issm/trunk/src/m/model/project3d.m	(revision 9180)
+++ /issm/trunk/src/m/model/project3d.m	(revision 9181)
@@ -1,8 +1,8 @@
-function projected_vector=project3d(md3d,varargin);
+function projected_vector=project3d(md,varargin);
 %PROJECT3D - vertically project a vector from 2d mesh
 %
 %   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
-%   This vector can be a node vector of size (md3d.numberofnodes2d,N/A) or an 
-%   element vector of size (md3d.numberofelements2d,N/A). 
+%   This vector can be a node vector of size (md.numberofnodes2d,N/A) or an 
+%   element vector of size (md.numberofelements2d,N/A). 
 %   arguments: 
 %      'vector': 2d vector
@@ -14,67 +14,67 @@
 %
 %   Egs:
-%      extruded_vector=project3d(md3d,'vector',vector2d,'type','node','layer',1,'padding',NaN);
-%      extruded_vector=project3d(md3d,'vector',vector2d,'type','element','padding',0);
-%      extruded_vector=project3d(md3d,'vector',vector2d,'type','node');
+%      extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN);
+%      extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0);
+%      extruded_vector=project3d(md,'vector',vector2d,'type','node');
 
-
+%some regular checks
 if nargin==0,
-	Project3dUsage;
-	error();
+	help project3d
+	error('bad usage');
+end
+if md.dim~=3
+	error('input model is not 3d');
 end
 
-options=pairoptions(varargin{:});
-
 %retrieve parameters from options.
-vector2d=getfieldvalue(options,'vector'); %mandatory
-type=getfieldvalue(options,'type'); %mandatory
-layer=getfieldvalue(options,'layer',0); %optional (do all layers otherwise)
-paddingvalue=getfieldvalue(options,'padding',0); %0 by default
+options      = pairoptions(varargin{:});
+vector2d     = getfieldvalue(options,'vector');     %mandatory
+type         = getfieldvalue(options,'type');       %mandatory
+layer        = getfieldvalue(options,'layer',0);    %optional (do all layers otherwise)
+paddingvalue = getfieldvalue(options,'padding',0);  %0 by default
 
 if strcmpi(type,'node'),
 
-	projected_vector=paddingvalue*ones(md3d.numberofnodes,size(vector2d,2));
-	
+	%Initialize 3d vector
+	if size(vector2d,1)==md.numberofnodes2d
+		projected_vector=paddingvalue*ones(md.numberofnodes,  size(vector2d,2));
+	elseif size(vector2d,1)==md.numberofnodes2d+1
+		projected_vector=paddingvalue*ones(md.numberofnodes+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
+
+	%Fill in
 	if layer==0,
-		for i=1:md3d.numlayers,
-			projected_vector(((i-1)*md3d.numberofnodes2d+1):(i*md3d.numberofnodes2d),:)=vector2d;
+		for i=1:md.numlayers,
+			projected_vector(((i-1)*md.numberofnodes2d+1):(i*md.numberofnodes2d),:)=vector2d;
 		end
 	else
-		projected_vector(((layer-1)*md3d.numberofnodes2d+1):(layer*md3d.numberofnodes2d),:)=vector2d;
+		projected_vector(((layer-1)*md.numberofnodes2d+1):(layer*md.numberofnodes2d),:)=vector2d;
 	end
 elseif strcmpi(type,'element'),
 
-	projected_vector=paddingvalue*ones(md3d.numberofelements,size(vector2d,2));
+	%Initialize 3d vector
+	if size(vector2d,1)==md.numberofelements2d
+		projected_vector=paddingvalue*ones(md.numberofelements,  size(vector2d,2));
+	elseif size(vector2d,1)==md.numberofelements2d+1
+		projected_vector=paddingvalue*ones(md.numberofelements+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
 
 	if layer==0,
-		for i=1:(md3d.numlayers-1),
-			projected_vector( ((i-1)*md3d.numberofelements2d+1):(i*md3d.numberofelements2d),:)=vector2d;
+		for i=1:(md.numlayers-1),
+			projected_vector( ((i-1)*md.numberofelements2d+1):(i*md.numberofelements2d),:)=vector2d;
 		end
 
 	else
-		projected_vector( ((layer-1)*md3d.numberofelements2d+1):(layer*md3d.numberofelements2d),:)=vector2d;
+		projected_vector( ((layer-1)*md.numberofelements2d+1):(layer*md.numberofelements2d),:)=vector2d;
 	end
 else
 	error('project3d error message: unknown projection type');
 end
-
-function Project3dUsage;
-
-disp('function projected_vector=project3d(md3d,varargin);');
-disp('PROJECT3D - vertically project a vector from 2d mesh...');
-disp('');
-disp('   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.');
-disp('   This vector can be a node vector of size (md3d.numberofnodes2d,N/A) or an ');
-disp('   element vector of size (md3d.numberofelements2d,N/A). ');
-disp('   arguments: ');
-disp('      ''vector'': 2d vector');
-disp('      ''type'': ''element'' or ''node''. ');
-disp('   options: ');
-disp('      ''layer'' a layer number where vector should keep its values. If not specified, all layers adopt the ');
-disp('             value of the 2d vector.');
-disp('      ''padding'': default to 0 (value adopted by other 3d layers not being projected0');
-disp('');
-disp('   Egs:');
-disp('      extruded_vector=project3d(md3d,''vector'',vector2d,''type'',''node'',''layer'',1,''padding'',NaN);');
-disp('      extruded_vector=project3d(md3d,''vector'',vector2d,''type'',''element'',''padding'',0);');
-disp('      extruded_vector=project3d(md3d,''vector'',vector2d,''type'',''node'');');
