Index: /issm/trunk-jpl/src/c/classes/Nodalvalue.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Nodalvalue.h	(revision 20038)
+++ /issm/trunk-jpl/src/c/classes/Nodalvalue.h	(revision 20038)
@@ -0,0 +1,117 @@
+/*!\file Nodalvalue.h
+ * \brief: header file for Nodalvalue object
+ */
+
+#ifndef _NODALVALUE_H_
+#define _NODALVALUE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/Inputs/Input.h"
+#include "../classes/gauss/Gauss.h"
+/*}}}*/
+
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Nodalvalue: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		int         model_enum;
+		int         node;
+		
+		/*Nodalvalue constructors, destructors :*/
+		Nodalvalue(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->model_enum = UNDEF;
+			this->node = -1;
+
+		}
+		/*}}}*/
+		Nodalvalue(char* in_name, int in_definitionenum, int in_model_enum, int in_node){/*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->model_enum=in_model_enum;
+			this->node=in_node;
+		}
+		/*}}}*/
+		~Nodalvalue(){/*{{{*/
+			if(this->name)xDelete(this->name);
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		void Echo(void){/*{{{*/
+			_printf_(" Nodalvalue: " << name << " " << this->definitionenum << "\n");
+			_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+			_printf_("    node: " << node << "\n");
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return NodalvalueEnum;
+		}
+		/*}}}*/
+		Object* copy() {/*{{{*/
+			Nodalvalue* mf = new Nodalvalue(this->name,this->definitionenum, this->model_enum,this->node);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+			
+			 /*output:*/
+			 IssmDouble value;
+
+			 /*set index, which will be used by the NodalValue module: */
+			 femmodel->parameters->SetParam(node,IndexEnum);
+
+			 /*call Nodalvalue:*/
+			 NodalValuex(&value, model_enum, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, 
+					 femmodel->materials, femmodel->parameters);
+
+			 /*done:*/
+			 return value;
+		 }
+		 /*}}}*/
+};
+
+#endif  /* _NODALVALUE_H_ */
Index: /issm/trunk-jpl/src/c/classes/classes.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/classes.h	(revision 20037)
+++ /issm/trunk-jpl/src/c/classes/classes.h	(revision 20038)
@@ -19,4 +19,5 @@
 #include "./Massfluxatgate.h"
 #include "./Misfit.h"
+#include "./Nodalvalue.h"
 #include "./Masscon.h"
 #include "./Massconaxpby.h"
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 20037)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 20038)
@@ -123,4 +123,38 @@
 				/*}}}*/
 			}
+			else if (output_definition_enums[i]==NodalvalueEnum){
+				/*Deal with nodal values: {{{*/
+				
+				/*nodal value variables: */
+				int          numnodalvalues;
+				char**       nodalvalue_name_s             = NULL;    
+				int*         nodalvalue_definitionenums_s             = NULL;    
+				int*         nodalvalue_model_enum_s        = NULL;
+				int*         nodalvalue_node_s = NULL;
+
+				/*Fetch name, model_enum, etc ... (see src/m/classes/nodalvalue.m): */
+				iomodel->FetchMultipleData(&nodalvalue_name_s,&numnodalvalues,NodalvalueNameEnum);
+				iomodel->FetchMultipleData(&nodalvalue_definitionenums_s,&numnodalvalues,NodalvalueDefinitionenumEnum);
+				iomodel->FetchMultipleData(&nodalvalue_model_enum_s,&numnodalvalues,NodalvalueModelEnumEnum);
+				iomodel->FetchMultipleData(&nodalvalue_node_s,&numnodalvalues,NodalvalueNodeEnum);
+
+				for(j=0;j<numnodalvalues;j++){
+
+					/*First create a nodalvalue object for that specific enum (nodalvalue_model_enum_s[j]):*/
+					output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],nodalvalue_definitionenums_s[j],nodalvalue_model_enum_s[j],nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
+				}
+					
+				/*Free ressources:*/
+				for(j=0;j<numnodalvalues;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+					string = nodalvalue_name_s[j];    xDelete<char>(string);
+				}
+				xDelete<char*>(nodalvalue_name_s);
+				xDelete<int>(nodalvalue_model_enum_s);
+				xDelete<int>(nodalvalue_definitionenums_s);
+				xDelete<int>(nodalvalue_node_s);
+				/*}}}*/
+			}
 			else if (output_definition_enums[i]==MassconEnum){
 				/*Deal with masscons: {{{*/
Index: /issm/trunk-jpl/src/c/modules/NodalValuex/NodalValuex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 20037)
+++ /issm/trunk-jpl/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 20038)
@@ -12,5 +12,5 @@
 	IssmDouble value;
 	int        index;
-	int        found,sumfound,cpu_found;
+	int        found,sumfound,cpu_found,cpu;
 
 	/*retrieve element we are interested in: */
@@ -19,4 +19,7 @@
 	/*This is the vertex id for which we want to collect the data. Go through elements, and for each 
 	 *element, figure out  if they hold the vertex, and the data. If so, return it: */
+	cpu_found=-1;
+	found=0;
+	
 	for(int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
@@ -30,9 +33,9 @@
 	/*Broadcast whether we found the element: */
 	ISSM_MPI_Allreduce(&found,&sumfound,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
-	if(!sumfound)_error_("could not find element with vertex with id" << index << " to compute nodal value " << EnumToStringx(natureofdataenum));
+	if(!sumfound)_error_("could not find element with vertex with id " << index << " to compute nodal value " << EnumToStringx(natureofdataenum));
 
 	/*Broadcast and plug into response: */
-	ISSM_MPI_Allreduce ( &cpu_found,&cpu_found,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
-	ISSM_MPI_Bcast(&value,1,ISSM_MPI_DOUBLE,cpu_found,IssmComm::GetComm()); 
+	ISSM_MPI_Allreduce ( &cpu_found,&cpu,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&value,1,ISSM_MPI_DOUBLE,cpu,IssmComm::GetComm()); 
 
 	*pnodalvalue=value;
Index: /issm/trunk-jpl/src/c/modules/modules.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/modules.h	(revision 20037)
+++ /issm/trunk-jpl/src/c/modules/modules.h	(revision 20038)
@@ -21,4 +21,5 @@
 #include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"
 #include "./Damagex/Damagex.h"
+#include "./DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h"
 #include "./DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
 #include "./ExpToLevelSetx/ExpToLevelSetx.h"
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 20037)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 20038)
@@ -896,4 +896,9 @@
 	MassfluxatgateDefinitionenumEnum,
 	MassfluxatgateSegmentsEnum,
+	NodalvalueEnum,
+	NodalvalueNameEnum,
+	NodalvalueDefinitionenumEnum,
+	NodalvalueModelEnumEnum,
+	NodalvalueNodeEnum,
 	MisfitNameEnum,
 	MisfitDefinitionenumEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 20037)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 20038)
@@ -876,4 +876,9 @@
 		case MassfluxatgateDefinitionenumEnum : return "MassfluxatgateDefinitionenum";
 		case MassfluxatgateSegmentsEnum : return "MassfluxatgateSegments";
+		case NodalvalueEnum : return "Nodalvalue";
+		case NodalvalueNameEnum : return "NodalvalueName";
+		case NodalvalueDefinitionenumEnum : return "NodalvalueDefinitionenum";
+		case NodalvalueModelEnumEnum : return "NodalvalueModelEnum";
+		case NodalvalueNodeEnum : return "NodalvalueNode";
 		case MisfitNameEnum : return "MisfitName";
 		case MisfitDefinitionenumEnum : return "MisfitDefinitionenum";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 20037)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 20038)
@@ -897,4 +897,9 @@
 	      else if (strcmp(name,"MassfluxatgateDefinitionenum")==0) return MassfluxatgateDefinitionenumEnum;
 	      else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum;
+	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+	      else if (strcmp(name,"NodalvalueName")==0) return NodalvalueNameEnum;
+	      else if (strcmp(name,"NodalvalueDefinitionenum")==0) return NodalvalueDefinitionenumEnum;
+	      else if (strcmp(name,"NodalvalueModelEnum")==0) return NodalvalueModelEnumEnum;
+	      else if (strcmp(name,"NodalvalueNode")==0) return NodalvalueNodeEnum;
 	      else if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
 	      else if (strcmp(name,"MisfitDefinitionenum")==0) return MisfitDefinitionenumEnum;
@@ -993,13 +998,13 @@
 	      else if (strcmp(name,"Seq")==0) return SeqEnum;
 	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
-	      else if (strcmp(name,"Mumps")==0) return MumpsEnum;
+         else stage=9;
+   }
+   if(stage==9){
+	      if (strcmp(name,"Mumps")==0) return MumpsEnum;
 	      else if (strcmp(name,"Gsl")==0) return GslEnum;
 	      else if (strcmp(name,"Option")==0) return OptionEnum;
 	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
 	      else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
-         else stage=9;
-   }
-   if(stage==9){
-	      if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
+	      else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
 	      else if (strcmp(name,"Cuffey")==0) return CuffeyEnum;
 	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
Index: /issm/trunk-jpl/src/m/classes/nodalvalue.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/nodalvalue.m	(revision 20038)
+++ /issm/trunk-jpl/src/m/classes/nodalvalue.m	(revision 20038)
@@ -0,0 +1,66 @@
+%NODALVALUE class definition
+%
+%   Usage:
+%      nodalvalue=nodalvalue();
+%      nodalvalue=nodalvalue('name','SealevelriseSNodalValue',...
+%                    'definitionenum',Outputdefinition1Enum, 
+%                    'model_enum',SealevelriseSEnum,...
+%                    'node',1);
+
+classdef nodalvalue
+	properties (SetAccess=public)
+		%nodalvalue
+		name              = '';
+		definitionenum   = NaN; %enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum
+		model_enum       = NaN; %enum for field that is being retrieved
+		node             = NaN; %for which node are we retrieving the value?
+	end
+	
+	methods
+		function self = nodalvalue(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionenum=getfieldvalue(options,'definitionenum');
+				self.model_enum=getfieldvalue(options,'model_enum');
+				self.node=getfieldvalue(options,'node',NaN);
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('nodalvalue error message: ''name'' field should be a string!');
+			end
+			md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum:Outputdefinition100Enum]);
+
+			md = checkfield(md,'fieldname','self.node','field',self.node,'values',[1:md.mesh.numberofvertices]);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Nodalvalue:\n'));
+
+			fielddisplay(self,'name','identifier for this nodalvalue response');
+			fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
+			fielddisplay(self,'model_enum','enum for field that is being retrieved');
+			fielddisplay(self,'node','vertex index at which we retrieve the value');
+
+		end % }}}
+		function md = marshall(self,md,fid) % {{{
+
+		WriteData(fid,'object',self,'fieldname','name','format','String');
+		WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer');
+		WriteData(fid,'object',self,'fieldname','model_enum','format','Integer');
+		WriteData(fid,'object',self,'fieldname','node','format','Integer');
+
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.js
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.js	(revision 20037)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.js	(revision 20038)
@@ -861,132 +861,137 @@
 function MassfluxatgateDefinitionenumEnum(){ return 857;}
 function MassfluxatgateSegmentsEnum(){ return 858;}
-function MisfitNameEnum(){ return 859;}
-function MisfitDefinitionenumEnum(){ return 860;}
-function MisfitModelEnum(){ return 861;}
-function MisfitObservationEnum(){ return 862;}
-function MisfitObservationEnum(){ return 863;}
-function MisfitLocalEnum(){ return 864;}
-function MisfitTimeinterpolationEnum(){ return 865;}
-function MisfitWeightsEnum(){ return 866;}
-function MisfitWeightsEnum(){ return 867;}
-function SurfaceObservationEnum(){ return 868;}
-function WeightsSurfaceObservationEnum(){ return 869;}
-function VxObsEnum(){ return 870;}
-function WeightsVxObsEnum(){ return 871;}
-function VyObsEnum(){ return 872;}
-function WeightsVyObsEnum(){ return 873;}
-function MinVelEnum(){ return 874;}
-function MaxVelEnum(){ return 875;}
-function MinVxEnum(){ return 876;}
-function MaxVxEnum(){ return 877;}
-function MaxAbsVxEnum(){ return 878;}
-function MinVyEnum(){ return 879;}
-function MaxVyEnum(){ return 880;}
-function MaxAbsVyEnum(){ return 881;}
-function MinVzEnum(){ return 882;}
-function MaxVzEnum(){ return 883;}
-function MaxAbsVzEnum(){ return 884;}
-function FloatingAreaEnum(){ return 885;}
-function GroundedAreaEnum(){ return 886;}
-function IceMassEnum(){ return 887;}
-function IceVolumeEnum(){ return 888;}
-function IceVolumeAboveFloatationEnum(){ return 889;}
-function TotalSmbEnum(){ return 890;}
-function AbsoluteEnum(){ return 891;}
-function IncrementalEnum(){ return 892;}
-function AugmentedLagrangianREnum(){ return 893;}
-function AugmentedLagrangianRhopEnum(){ return 894;}
-function AugmentedLagrangianRlambdaEnum(){ return 895;}
-function AugmentedLagrangianRholambdaEnum(){ return 896;}
-function AugmentedLagrangianThetaEnum(){ return 897;}
-function NoneEnum(){ return 898;}
-function AggressiveMigrationEnum(){ return 899;}
-function SoftMigrationEnum(){ return 900;}
-function SubelementMigrationEnum(){ return 901;}
-function SubelementMigration2Enum(){ return 902;}
-function ContactEnum(){ return 903;}
-function GroundingOnlyEnum(){ return 904;}
-function MaskGroundediceLevelsetEnum(){ return 905;}
-function GaussSegEnum(){ return 906;}
-function GaussTriaEnum(){ return 907;}
-function GaussTetraEnum(){ return 908;}
-function GaussPentaEnum(){ return 909;}
-function FSSolverEnum(){ return 910;}
-function AdjointEnum(){ return 911;}
-function ColinearEnum(){ return 912;}
-function ControlSteadyEnum(){ return 913;}
-function FsetEnum(){ return 914;}
-function Gradient1Enum(){ return 915;}
-function Gradient2Enum(){ return 916;}
-function Gradient3Enum(){ return 917;}
-function GradientEnum(){ return 918;}
-function GroundinglineMigrationEnum(){ return 919;}
-function GsetEnum(){ return 920;}
-function IndexEnum(){ return 921;}
-function IndexedEnum(){ return 922;}
-function IntersectEnum(){ return 923;}
-function NodalEnum(){ return 924;}
-function OldGradientEnum(){ return 925;}
-function OutputBufferPointerEnum(){ return 926;}
-function OutputBufferSizePointerEnum(){ return 927;}
-function OutputFilePointerEnum(){ return 928;}
-function ToolkitsFileNameEnum(){ return 929;}
-function RootPathEnum(){ return 930;}
-function OutputFileNameEnum(){ return 931;}
-function InputFileNameEnum(){ return 932;}
-function LockFileNameEnum(){ return 933;}
-function RestartFileNameEnum(){ return 934;}
-function ToolkitsOptionsAnalysesEnum(){ return 935;}
-function ToolkitsOptionsStringsEnum(){ return 936;}
-function QmuErrNameEnum(){ return 937;}
-function QmuInNameEnum(){ return 938;}
-function QmuOutNameEnum(){ return 939;}
-function RegularEnum(){ return 940;}
-function ScaledEnum(){ return 941;}
-function SeparateEnum(){ return 942;}
-function SsetEnum(){ return 943;}
-function VerboseEnum(){ return 944;}
-function TriangleInterpEnum(){ return 945;}
-function BilinearInterpEnum(){ return 946;}
-function NearestInterpEnum(){ return 947;}
-function XYEnum(){ return 948;}
-function XYZEnum(){ return 949;}
-function DenseEnum(){ return 950;}
-function MpiDenseEnum(){ return 951;}
-function MpiSparseEnum(){ return 952;}
-function SeqEnum(){ return 953;}
-function MpiEnum(){ return 954;}
-function MumpsEnum(){ return 955;}
-function GslEnum(){ return 956;}
-function OptionEnum(){ return 957;}
-function GenericOptionEnum(){ return 958;}
-function OptionCellEnum(){ return 959;}
-function OptionStructEnum(){ return 960;}
-function CuffeyEnum(){ return 961;}
-function PatersonEnum(){ return 962;}
-function ArrheniusEnum(){ return 963;}
-function LliboutryDuvalEnum(){ return 964;}
-function TransientIslevelsetEnum(){ return 965;}
-function SpcLevelsetEnum(){ return 966;}
-function ExtrapolationVariableEnum(){ return 967;}
-function IceMaskNodeActivationEnum(){ return 968;}
-function LevelsetfunctionSlopeXEnum(){ return 969;}
-function LevelsetfunctionSlopeYEnum(){ return 970;}
-function LevelsetfunctionPicardEnum(){ return 971;}
-function SealevelriseSolutionEnum(){ return 972;}
-function SealevelriseAnalysisEnum(){ return 973;}
-function SealevelriseSEnum(){ return 974;}
-function SealevelriseDeltathicknessEnum(){ return 975;}
-function SealevelriseMaxiterEnum(){ return 976;}
-function SealevelriseReltolEnum(){ return 977;}
-function SealevelriseAbstolEnum(){ return 978;}
-function SealevelriseLoveHEnum(){ return 979;}
-function SealevelriseLoveKEnum(){ return 980;}
-function SealevelriseRigidEnum(){ return 981;}
-function SealevelriseElasticEnum(){ return 982;}
-function SealevelriseEustaticEnum(){ return 983;}
-function SealevelriseGElasticEnum(){ return 984;}
-function SealevelriseDegaccEnum(){ return 985;}
-function SealevelriseRequestedOutputsEnum(){ return 986;}
-function SealevelriseNumRequestedOutputsEnum(){ return 987;}
-function MaximumNumberOfDefinitionsEnum(){ return 988;}
+function NodalvalueEnum(){ return 859;}
+function NodalvalueNameEnum(){ return 860;}
+function NodalvalueDefinitionenumEnum(){ return 861;}
+function NodalvalueModelEnum(){ return 862;}
+function NodalvalueNodeEnum(){ return 863;}
+function MisfitNameEnum(){ return 864;}
+function MisfitDefinitionenumEnum(){ return 865;}
+function MisfitModelEnum(){ return 866;}
+function MisfitObservationEnum(){ return 867;}
+function MisfitObservationEnum(){ return 868;}
+function MisfitLocalEnum(){ return 869;}
+function MisfitTimeinterpolationEnum(){ return 870;}
+function MisfitWeightsEnum(){ return 871;}
+function MisfitWeightsEnum(){ return 872;}
+function SurfaceObservationEnum(){ return 873;}
+function WeightsSurfaceObservationEnum(){ return 874;}
+function VxObsEnum(){ return 875;}
+function WeightsVxObsEnum(){ return 876;}
+function VyObsEnum(){ return 877;}
+function WeightsVyObsEnum(){ return 878;}
+function MinVelEnum(){ return 879;}
+function MaxVelEnum(){ return 880;}
+function MinVxEnum(){ return 881;}
+function MaxVxEnum(){ return 882;}
+function MaxAbsVxEnum(){ return 883;}
+function MinVyEnum(){ return 884;}
+function MaxVyEnum(){ return 885;}
+function MaxAbsVyEnum(){ return 886;}
+function MinVzEnum(){ return 887;}
+function MaxVzEnum(){ return 888;}
+function MaxAbsVzEnum(){ return 889;}
+function FloatingAreaEnum(){ return 890;}
+function GroundedAreaEnum(){ return 891;}
+function IceMassEnum(){ return 892;}
+function IceVolumeEnum(){ return 893;}
+function IceVolumeAboveFloatationEnum(){ return 894;}
+function TotalSmbEnum(){ return 895;}
+function AbsoluteEnum(){ return 896;}
+function IncrementalEnum(){ return 897;}
+function AugmentedLagrangianREnum(){ return 898;}
+function AugmentedLagrangianRhopEnum(){ return 899;}
+function AugmentedLagrangianRlambdaEnum(){ return 900;}
+function AugmentedLagrangianRholambdaEnum(){ return 901;}
+function AugmentedLagrangianThetaEnum(){ return 902;}
+function NoneEnum(){ return 903;}
+function AggressiveMigrationEnum(){ return 904;}
+function SoftMigrationEnum(){ return 905;}
+function SubelementMigrationEnum(){ return 906;}
+function SubelementMigration2Enum(){ return 907;}
+function ContactEnum(){ return 908;}
+function GroundingOnlyEnum(){ return 909;}
+function MaskGroundediceLevelsetEnum(){ return 910;}
+function GaussSegEnum(){ return 911;}
+function GaussTriaEnum(){ return 912;}
+function GaussTetraEnum(){ return 913;}
+function GaussPentaEnum(){ return 914;}
+function FSSolverEnum(){ return 915;}
+function AdjointEnum(){ return 916;}
+function ColinearEnum(){ return 917;}
+function ControlSteadyEnum(){ return 918;}
+function FsetEnum(){ return 919;}
+function Gradient1Enum(){ return 920;}
+function Gradient2Enum(){ return 921;}
+function Gradient3Enum(){ return 922;}
+function GradientEnum(){ return 923;}
+function GroundinglineMigrationEnum(){ return 924;}
+function GsetEnum(){ return 925;}
+function IndexEnum(){ return 926;}
+function IndexedEnum(){ return 927;}
+function IntersectEnum(){ return 928;}
+function NodalEnum(){ return 929;}
+function OldGradientEnum(){ return 930;}
+function OutputBufferPointerEnum(){ return 931;}
+function OutputBufferSizePointerEnum(){ return 932;}
+function OutputFilePointerEnum(){ return 933;}
+function ToolkitsFileNameEnum(){ return 934;}
+function RootPathEnum(){ return 935;}
+function OutputFileNameEnum(){ return 936;}
+function InputFileNameEnum(){ return 937;}
+function LockFileNameEnum(){ return 938;}
+function RestartFileNameEnum(){ return 939;}
+function ToolkitsOptionsAnalysesEnum(){ return 940;}
+function ToolkitsOptionsStringsEnum(){ return 941;}
+function QmuErrNameEnum(){ return 942;}
+function QmuInNameEnum(){ return 943;}
+function QmuOutNameEnum(){ return 944;}
+function RegularEnum(){ return 945;}
+function ScaledEnum(){ return 946;}
+function SeparateEnum(){ return 947;}
+function SsetEnum(){ return 948;}
+function VerboseEnum(){ return 949;}
+function TriangleInterpEnum(){ return 950;}
+function BilinearInterpEnum(){ return 951;}
+function NearestInterpEnum(){ return 952;}
+function XYEnum(){ return 953;}
+function XYZEnum(){ return 954;}
+function DenseEnum(){ return 955;}
+function MpiDenseEnum(){ return 956;}
+function MpiSparseEnum(){ return 957;}
+function SeqEnum(){ return 958;}
+function MpiEnum(){ return 959;}
+function MumpsEnum(){ return 960;}
+function GslEnum(){ return 961;}
+function OptionEnum(){ return 962;}
+function GenericOptionEnum(){ return 963;}
+function OptionCellEnum(){ return 964;}
+function OptionStructEnum(){ return 965;}
+function CuffeyEnum(){ return 966;}
+function PatersonEnum(){ return 967;}
+function ArrheniusEnum(){ return 968;}
+function LliboutryDuvalEnum(){ return 969;}
+function TransientIslevelsetEnum(){ return 970;}
+function SpcLevelsetEnum(){ return 971;}
+function ExtrapolationVariableEnum(){ return 972;}
+function IceMaskNodeActivationEnum(){ return 973;}
+function LevelsetfunctionSlopeXEnum(){ return 974;}
+function LevelsetfunctionSlopeYEnum(){ return 975;}
+function LevelsetfunctionPicardEnum(){ return 976;}
+function SealevelriseSolutionEnum(){ return 977;}
+function SealevelriseAnalysisEnum(){ return 978;}
+function SealevelriseSEnum(){ return 979;}
+function SealevelriseDeltathicknessEnum(){ return 980;}
+function SealevelriseMaxiterEnum(){ return 981;}
+function SealevelriseReltolEnum(){ return 982;}
+function SealevelriseAbstolEnum(){ return 983;}
+function SealevelriseLoveHEnum(){ return 984;}
+function SealevelriseLoveKEnum(){ return 985;}
+function SealevelriseRigidEnum(){ return 986;}
+function SealevelriseElasticEnum(){ return 987;}
+function SealevelriseEustaticEnum(){ return 988;}
+function SealevelriseGElasticEnum(){ return 989;}
+function SealevelriseDegaccEnum(){ return 990;}
+function SealevelriseRequestedOutputsEnum(){ return 991;}
+function SealevelriseNumRequestedOutputsEnum(){ return 992;}
+function MaximumNumberOfDefinitionsEnum(){ return 993;}
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 20037)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 20038)
@@ -868,4 +868,9 @@
 def MassfluxatgateDefinitionenumEnum(): return StringToEnum("MassfluxatgateDefinitionenum")[0]
 def MassfluxatgateSegmentsEnum(): return StringToEnum("MassfluxatgateSegments")[0]
+def NodalvalueEnum(): return StringToEnum("Nodalvalue")[0]
+def NodalvalueNameEnum(): return StringToEnum("NodalvalueName")[0]
+def NodalvalueDefinitionenumEnum(): return StringToEnum("NodalvalueDefinitionenum")[0]
+def NodalvalueModelEnumEnum(): return StringToEnum("NodalvalueModelEnum")[0]
+def NodalvalueNodeEnum(): return StringToEnum("NodalvalueNode")[0]
 def MisfitNameEnum(): return StringToEnum("MisfitName")[0]
 def MisfitDefinitionenumEnum(): return StringToEnum("MisfitDefinitionenum")[0]
Index: /issm/trunk-jpl/src/m/enum/NodalvalueDefinitionenumEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NodalvalueDefinitionenumEnum.m	(revision 20038)
+++ /issm/trunk-jpl/src/m/enum/NodalvalueDefinitionenumEnum.m	(revision 20038)
@@ -0,0 +1,11 @@
+function macro=NodalvalueDefinitionenumEnum()
+%NODALVALUEDEFINITIONENUMENUM - Enum of NodalvalueDefinitionenum
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueDefinitionenumEnum()
+
+macro=StringToEnum('NodalvalueDefinitionenum');
Index: /issm/trunk-jpl/src/m/enum/NodalvalueEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NodalvalueEnum.m	(revision 20038)
+++ /issm/trunk-jpl/src/m/enum/NodalvalueEnum.m	(revision 20038)
@@ -0,0 +1,11 @@
+function macro=NodalvalueEnum()
+%NODALVALUEENUM - Enum of Nodalvalue
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueEnum()
+
+macro=StringToEnum('Nodalvalue');
Index: /issm/trunk-jpl/src/m/enum/NodalvalueModelEnumEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NodalvalueModelEnumEnum.m	(revision 20038)
+++ /issm/trunk-jpl/src/m/enum/NodalvalueModelEnumEnum.m	(revision 20038)
@@ -0,0 +1,11 @@
+function macro=NodalvalueModelEnumEnum()
+%NODALVALUEMODELENUMENUM - Enum of NodalvalueModel
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueModelEnumEnum()
+
+macro=StringToEnum('NodalvalueModel');
Index: /issm/trunk-jpl/src/m/enum/NodalvalueNameEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NodalvalueNameEnum.m	(revision 20038)
+++ /issm/trunk-jpl/src/m/enum/NodalvalueNameEnum.m	(revision 20038)
@@ -0,0 +1,11 @@
+function macro=NodalvalueNameEnum()
+%NODALVALUENAMEENUM - Enum of NodalvalueName
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueNameEnum()
+
+macro=StringToEnum('NodalvalueName');
Index: /issm/trunk-jpl/src/m/enum/NodalvalueNodeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NodalvalueNodeEnum.m	(revision 20038)
+++ /issm/trunk-jpl/src/m/enum/NodalvalueNodeEnum.m	(revision 20038)
@@ -0,0 +1,11 @@
+function macro=NodalvalueNodeEnum()
+%NODALVALUENODEENUM - Enum of NodalvalueNode
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueNodeEnum()
+
+macro=StringToEnum('NodalvalueNode');
Index: /issm/trunk-jpl/src/m/plot/applyoptions.m
===================================================================
--- /issm/trunk-jpl/src/m/plot/applyoptions.m	(revision 20037)
+++ /issm/trunk-jpl/src/m/plot/applyoptions.m	(revision 20038)
@@ -97,4 +97,9 @@
 if exist(options,'basin');
 	basinzoom(options);
+end
+
+%Zoom
+if exist(options,'zoom');
+	zoom(getfieldvalue(options,'zoom',2));
 end
 
