Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 3641)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 3642)
@@ -87,5 +87,9 @@
 	LoadEnum,
 	IcefrontEnum,
+	SegmentIcefrontEnum,
+	QuadIceFrontEnum,
 	RiftfrontEnum,
+	SegmentRiftfrontEnum,
+	QuadRiftFrontEnum,
 	PenpairEnum,
 	PengridEnum,
@@ -175,5 +179,11 @@
 	NodeOnIceSheetEnum,
 	ResetPenaltiesEnum,
-	MeltingOffsetEnum
+	MeltingOffsetEnum,
+	TypeEnum,
+	FrictionEnum,
+	FractionIncrementEnum,
+	ConvergedEnum,
+	SegmentOnIceShelfEnum,
+	FillEnum
 	/*}}}*/
 
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 3641)
+++ /issm/trunk/src/c/Makefile.am	(revision 3642)
@@ -55,6 +55,4 @@
 					./objects/DofIndexing.h\
 					./objects/DofIndexing.cpp\
-					./objects/NodeProperties.h\
-					./objects/NodeProperties.cpp\
 					./objects/Node.h\
 					./objects/Node.cpp\
@@ -468,6 +466,4 @@
 					./objects/DofIndexing.h\
 					./objects/DofIndexing.cpp\
-					./objects/NodeProperties.h\
-					./objects/NodeProperties.cpp\
 					./objects/Node.h\
 					./objects/Node.cpp\
Index: /issm/trunk/src/c/objects/Numericalflux.cpp
===================================================================
--- /issm/trunk/src/c/objects/Numericalflux.cpp	(revision 3641)
+++ /issm/trunk/src/c/objects/Numericalflux.cpp	(revision 3642)
@@ -22,46 +22,82 @@
 /*FUNCTION Numericalflux::Numericalflux(){{{1*/
 Numericalflux::Numericalflux(){
-	return;
-}
-/*}}}*/
-/*FUNCTION Numericalflux::Numericalflux(char numericalflux_type[NUMERICALFLUXSTRING],int numericalflux_fill...){{{1*/
-Numericalflux::Numericalflux(int numericalflux_id,char numericalflux_type[NUMERICALFLUXSTRING], int numericalflux_node_ids[MAX_NUMERICALFLUX_NODES],int numericalflux_element_id, double numericalflux_h[MAX_NUMERICALFLUX_NODES]){
-
-	int i;
-	
-	strcpy(type,numericalflux_type);
+	this->inputs=NULL;
+	this->parameters=NULL;
+}
+/*}}}*/
+/*FUNCTION Numericalflux::Numericalflux(int numericalflux_id,int* numericalflux_node_ids,...){{{1*/
+Numericalflux::Numericalflux(int numericalflux_id,int* numericalflux_node_ids,int numnodes,int* numericalflux_element_ids, int numelements):
+	hnodes(numericalflux_node_ids,numnodes),
+	helements(numericalflux_element_ids,numelements)
+{
+
 	id=numericalflux_id;
-
-	element_id=numericalflux_element_id;
-	element_offset=UNDEF;
-	element=NULL;
-
-	for(i=0;i<MAX_NUMERICALFLUX_NODES;i++){
-		node_ids[i]=numericalflux_node_ids[i];
-		node_offsets[i]=UNDEF;
-		nodes[i]=NULL;
-		h[i]=numericalflux_h[i];
-	}
-
-	return;
+	this->parameters=NULL;
+	this->inputs=new Inputs();
+}
+/*}}}*/
+/*FUNCTION Numericalflux::Numericalflux(int id, Hook* hnodes, Hook* helements, DataSet* parameters, Inputs* numericalflux_inputs) {{{1*/
+Numericalflux::Numericalflux(int numericalflux_id,Hook* numericalflux_hnodes, Hook* numericalflux_helements, Parameters* numericalflux_parameters, Inputs* numericalflux_inputs):
+	hnodes(numericalflux_hnodes),
+	helements(numericalflux_helements)
+{
+
+	/*all the initialization has been done by the initializer, just fill in the id: */
+	this->id=numericalflux_id;
+	if(numericalflux_inputs){
+		this->inputs=(Inputs*)numericalflux_inputs->Copy();
+	}
+	else{
+		this->inputs=new Inputs();
+	}
+	/*point parameters: */
+	this->parameters=numericalflux_parameters;
 }
 /*}}}*/
 /*FUNCTION Numericalflux::~Numericalflux(){{{1*/
 Numericalflux::~Numericalflux(){
-	return;
+	delete inputs;
+	this->parameters=NULL;
+}
+/*}}}*/
+
+/*Object marshall*/
+/*FUNCTION Numericalflux::Configure {{{1*/
+void  Numericalflux::Configure(DataSet* elementsin,DataSet* loadsin,DataSet* nodesin,DataSet* verticesin,DataSet* materialsin,Parameters* parametersin){
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes.configure(nodesin);
+	helements.configure(elementsin);
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
 }
 /*}}}*/
 /*FUNCTION Numericalflux::copy {{{1*/
 Object* Numericalflux::copy() {
-	return new Numericalflux(*this); 
-}
-/*}}}*/
-
-/*Object marshall*/
+	return new Numericalflux(this->id,&this->hnodes,&this->helements,this->parameters,this->inputs);
+}
+/*}}}*/
+/*FUNCTION Numericalflux::DeepEcho {{{1*/
+void Numericalflux::DeepEcho(void){
+
+	printf("Numericalflux:\n");
+	printf("   id: %i\n",id);
+	hnodes.DeepEcho();
+	helements.DeepEcho();
+	printf("   parameters\n");
+	parameters->DeepEcho();
+	printf("   inputs\n");
+	inputs->DeepEcho();
+	
+}		
+/*}}}*/
 /*FUNCTION Numericalflux::Demarshall {{{1*/
 void  Numericalflux::Demarshall(char** pmarshalled_dataset){
 
-	int i;
 	char* marshalled_dataset=NULL;
+	int   i;
 
 	/*recover marshalled_dataset: */
@@ -71,16 +107,15 @@
 	 *object data (thanks to DataSet::Demarshall):*/
 
-	memcpy(&type,marshalled_dataset,sizeof(type));marshalled_dataset+=sizeof(type);
 	memcpy(&id,marshalled_dataset,sizeof(id));marshalled_dataset+=sizeof(id);
 
-	memcpy(&element_id,marshalled_dataset,sizeof(element_id));marshalled_dataset+=sizeof(element_id);
-	memcpy(&element_offset,marshalled_dataset,sizeof(element_offset));marshalled_dataset+=sizeof(element_offset);
-	element=NULL;
+	/*demarshall hooks: */
+	hnodes.Demarshall(&marshalled_dataset);
+	helements.Demarshall(&marshalled_dataset);
 	
-	memcpy(&node_ids,marshalled_dataset,sizeof(node_ids));marshalled_dataset+=sizeof(node_ids);
-	memcpy(&node_offsets,marshalled_dataset,sizeof(node_offsets));marshalled_dataset+=sizeof(node_offsets);
-	for(i=0;i<MAX_NUMERICALFLUX_NODES;i++)nodes[i]=NULL;
-
-	memcpy(&h,marshalled_dataset,sizeof(h));marshalled_dataset+=sizeof(h);
+	/*demarshall inputs: */
+	inputs=(Inputs*)DataSetDemarshallRaw(&marshalled_dataset); 
+
+	/*parameters: may not exist even yet, so let Configure handle it: */
+	this->parameters=NULL;
 
 	/*return: */
@@ -89,4 +124,16 @@
 }
 /*}}}*/
+/*FUNCTION Numericalflux::Echo {{{1*/
+void Numericalflux::Echo(void){
+	this->DeepEcho();
+}
+/*}}}*/
+/*FUNCTION Numericalflux::Enum {{{1*/
+int Numericalflux::Enum(void){
+
+	return NumericalfluxEnum;
+
+}
+/*}}}*/
 /*FUNCTION Numericalflux::Marshall {{{1*/
 void  Numericalflux::Marshall(char** pmarshalled_dataset){
@@ -94,4 +141,6 @@
 	char* marshalled_dataset=NULL;
 	int   enum_type=0;
+	char* marshalled_inputs=NULL;
+	int   marshalled_inputs_size;
 
 	/*recover marshalled_dataset: */
@@ -100,19 +149,24 @@
 	/*get enum type of Numericalflux: */
 	enum_type=NumericalfluxEnum;
-	
+
 	/*marshall enum: */
 	memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
-	
+
 	/*marshall Numericalflux data: */
-	memcpy(marshalled_dataset,&type,sizeof(type));marshalled_dataset+=sizeof(type);
 	memcpy(marshalled_dataset,&id,sizeof(id));marshalled_dataset+=sizeof(id);
-	
-	memcpy(marshalled_dataset,&element_id,sizeof(element_id));marshalled_dataset+=sizeof(element_id);
-	memcpy(marshalled_dataset,&element_offset,sizeof(element_offset));marshalled_dataset+=sizeof(element_offset);
-
-	memcpy(marshalled_dataset,&node_ids,sizeof(node_ids));marshalled_dataset+=sizeof(node_ids);
-	memcpy(marshalled_dataset,&node_offsets,sizeof(node_offsets));marshalled_dataset+=sizeof(node_offsets);
-
-	memcpy(marshalled_dataset,&h,sizeof(h));marshalled_dataset+=sizeof(h);
+
+	/*Marshall hooks: */
+	hnodes.Marshall(&marshalled_dataset);
+	helements.Marshall(&marshalled_dataset);
+
+	/*Marshall inputs: */
+	marshalled_inputs_size=inputs->MarshallSize();
+	marshalled_inputs=inputs->Marshall();
+	memcpy(marshalled_dataset,marshalled_inputs,marshalled_inputs_size*sizeof(char));
+	marshalled_dataset+=marshalled_inputs_size;
+
+	/*parameters: don't do anything about it. parameters are marshalled somewhere else!*/
+
+	xfree((void**)&marshalled_inputs);
 
 	*pmarshalled_dataset=marshalled_dataset;
@@ -123,55 +177,36 @@
 int   Numericalflux::MarshallSize(){
 
-	return sizeof(type)+
-		sizeof(id)+
-		sizeof(element_id)+
-		sizeof(element_offset)+
-		sizeof(node_ids)+
-		sizeof(node_offsets)+
-		sizeof(h)+
-		sizeof(int); //sizeof(int) for enum type
+	return sizeof(id)
+		+hnodes.MarshallSize()
+		+helements.MarshallSize()
+		+inputs->MarshallSize()
+		+sizeof(int); //sizeof(int) for enum type
+}
+/*}}}*/
+/*FUNCTION Numericalflux::MyRank {{{1*/
+int    Numericalflux::MyRank(void){ 
+	extern int my_rank;
+	return my_rank; 
 }
 /*}}}*/
 
 /*Object functions*/
-/*FUNCTION Numericalflux::Configure {{{1*/
-void  Numericalflux::Configure(void* pelementsin,void* pnodesin,void* pmaterialsin){
-
-	DataSet* elementsin=NULL;
-	DataSet* nodesin=NULL;
-
-	/*Recover pointers :*/
-	elementsin=(DataSet*)pelementsin;
-	nodesin=(DataSet*)pnodesin;
-	
-	/*Link this load with its nodes: */
+/*FUNCTION Numericalflux::CreateKMatrix {{{1*/
+void  Numericalflux::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
+
 	if (strcmp(type,"internal")==0){
-		ResolvePointers((Object**)nodes,node_ids,node_offsets,4,nodesin);
+
+		CreateKMatrixInternal(Kgg,inputs,analysis_type,sub_analysis_type);
 	}
 	else if (strcmp(type,"boundary")==0){
-		ResolvePointers((Object**)nodes,node_ids,node_offsets,2,nodesin);
+
+		CreateKMatrixBoundary(Kgg,inputs,analysis_type,sub_analysis_type);
 	}
 	else ISSMERROR("type not supported yet");
-	ResolvePointers((Object**)&element,&element_id,&element_offset,1,elementsin);
-
-}
-/*}}}*/
-/*FUNCTION Numericalflux::CreateKMatrix {{{1*/
-void  Numericalflux::CreateKMatrix(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type){
-
-	if (strcmp(type,"internal")==0){
-
-		CreateKMatrixInternal(Kgg,inputs,analysis_type,sub_analysis_type);
-	}
-	else if (strcmp(type,"boundary")==0){
-
-		CreateKMatrixBoundary(Kgg,inputs,analysis_type,sub_analysis_type);
-	}
-	else ISSMERROR("type not supported yet");
 
 }
 /*}}}*/
 /*FUNCTION Numericalflux::CreateKMatrixInternal {{{1*/
-void  Numericalflux::CreateKMatrixInternal(Mat Kgg,void* vinputs,int analysis_type,int sub_analysis_type){
+void  Numericalflux::CreateKMatrixInternal(Mat Kgg,int analysis_type,int sub_analysis_type){
 
 	/* local declarations */
@@ -290,5 +325,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::CreateKMatrixBoundary {{{1*/
-void  Numericalflux::CreateKMatrixBoundary(Mat Kgg,void* vinputs,int analysis_type,int sub_analysis_type){
+void  Numericalflux::CreateKMatrixBoundary(Mat Kgg,int analysis_type,int sub_analysis_type){
 
 	/* local declarations */
@@ -409,5 +444,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::CreatePVector {{{1*/
-void  Numericalflux::CreatePVector(Vec pg, void* inputs, int analysis_type,int sub_analysis_type){
+void  Numericalflux::CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type){
 
 	if (strcmp(type,"internal")==0){
@@ -424,5 +459,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::CreatePVectorInternal{{{1*/
-void  Numericalflux::CreatePVectorInternal(Vec pg,void* inputs,int analysis_type,int sub_analysis_type){
+void  Numericalflux::CreatePVectorInternal(Vec pg,int analysis_type,int sub_analysis_type){
 
 	/*Nothing added to PVector*/
@@ -432,5 +467,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::CreatePVectorBoundary{{{1*/
-void  Numericalflux::CreatePVectorBoundary(Vec pg,void* vinputs,int analysis_type,int sub_analysis_type){
+void  Numericalflux::CreatePVectorBoundary(Vec pg,int analysis_type,int sub_analysis_type){
 
 	/* local declarations */
@@ -545,69 +580,7 @@
 }
 /*}}}*/
-/*FUNCTION Numericalflux::DeepEcho {{{1*/
-void Numericalflux::DeepEcho(void){
-
-	int i;
-	
-	printf("Numericalflux:\n");
-	printf("   type: %s\n",type);
-	printf("   id: %i\n",id);
-	
-	printf("   element_id=%i\n",element_id);
-	printf("   element_offset=%i\n",element_offset);
-	if(element)element->Echo();
-	if (strcmp(type,"internal")==0){
-		printf("   node_ids=[%i,%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2],node_ids[3]);
-		printf("   node_offsets=[%i,%i,%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2],node_offsets[3]);
-		for(i=0;i<4;i++){
-			if(nodes[i])nodes[i]->Echo();
-		}
-		printf("   h=[%i,%i,%i,%i]\n",h[0],h[1],h[2],h[3]);
-	}
-	else{
-		printf("   node_ids=[%i,%i]\n",node_ids[0],node_ids[1]);
-		printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1]);
-		for(i=0;i<2;i++){
-			if(nodes[i])nodes[i]->Echo();
-		}
-		printf("   h=[%i,%i]\n",h[0],h[1]);
-	}
-	return;
-}		
-/*}}}*/
 /*FUNCTION Numericalflux::DistributeNumDofs {{{1*/
 void  Numericalflux::DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type){
 	return;
-}
-/*}}}*/
-/*FUNCTION Numericalflux::Echo {{{1*/
-void Numericalflux::Echo(void){
-
-	printf("Numericalflux:\n");
-	printf("   type: %s\n",type);
-	printf("   id: %i\n",id);
-
-	printf("   element_id=%i\n",element_id);
-	printf("   element_offset=%i]\n",element_offset);
-
-	if (strcmp(type,"internal")==0){
-		printf("   node_ids=[%i,%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2],node_ids[3]);
-		printf("   node_offsets=[%i,%i,%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2],node_offsets[3]);
-		printf("   h=[%g,%g,%g,%g]\n",h[0],h[1],h[2],h[3]);
-	}
-	else{
-		printf("   node_ids=[%i,%i]\n",node_ids[0],node_ids[1]);
-		printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1]);
-		printf("   h=[%g,%g]\n",h[0],h[1]);
-	}
-
-	return;
-}
-/*}}}*/
-/*FUNCTION Numericalflux::Enum {{{1*/
-int Numericalflux::Enum(void){
-
-	return NumericalfluxEnum;
-
 }
 /*}}}*/
@@ -753,12 +726,6 @@
 }
 /*}}}*/
-/*FUNCTION Numericalflux::MyRank {{{1*/
-int    Numericalflux::MyRank(void){ 
-	extern int my_rank;
-	return my_rank; 
-}
-/*}}}*/
 /*FUNCTION Numericalflux::PenaltyCreateKMatrix {{{1*/
-void  Numericalflux::PenaltyCreateKMatrix(Mat Kgg,void* inputs,double kmax,int analysis_type,int sub_analysis_type){
+void  Numericalflux::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
 
 	/*No stiffness loads applied, do nothing: */
@@ -768,5 +735,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::PenaltyCreatePVector{{{1*/
-void  Numericalflux::PenaltyCreatePVector(Vec pg,void* inputs,double kmax,int analysis_type,int sub_analysis_type){
+void  Numericalflux::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){
 
 	/*No penalty loads applied, do nothing: */
@@ -775,8 +742,2 @@
 }
 /*}}}*/
-/*FUNCTION Numericalflux::UpdateFromInputs {{{1*/
-void  Numericalflux::UpdateFromInputs(void* vinputs){
-
-	/*Do nothing FOR NOW...*/
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Numericalflux.h
===================================================================
--- /issm/trunk/src/c/objects/Numericalflux.h	(revision 3641)
+++ /issm/trunk/src/c/objects/Numericalflux.h	(revision 3642)
@@ -10,53 +10,41 @@
 #include "./Load.h"
 #include "./Matpar.h"
-#include "./Element.h"
-#include "./Node.h"
-class Element;
-
-#define NUMERICALFLUXSTRING 20    //max string length
-#define MAX_NUMERICALFLUX_NODES 4 //max number of grids for a certain load
-#define MAX_NUMERICALFLUX_ELEMS 2 //max number of elements for a certain load
+#include "./Hook.h"
 /*}}}*/
 
 class Numericalflux: public Load {
 
-	private: 
-		/*Type of numerical flux*/
-		int  id;
-		char type[NUMERICALFLUXSTRING];
-	
-		/*elements: */
-		Element* element;
-		int      element_id;
-		int      element_offset;
+	public: 
+		int         id;
 
-		/*nodes: */
-		Node* nodes[MAX_NUMERICALFLUX_NODES];
-		int   node_ids[MAX_NUMERICALFLUX_NODES];
-		int   node_offsets[MAX_NUMERICALFLUX_NODES];
+		Hook        helements;
+		Hook        hnodes;
+		Parameters *parameters;
+		Inputs     *inputs;
 
-		/*properties: */
-		double h[MAX_NUMERICALFLUX_NODES]; //thickness
 
-	public:
-
+		/*Constructors {{{1*/
 		Numericalflux();
-		Numericalflux(int numericalflux_id,char numericalflux_type[NUMERICALFLUXSTRING], int numericalflux_node_ids[MAX_NUMERICALFLUX_NODES],int numericalflux_element_id,double numericalflux_h[MAX_NUMERICALFLUX_NODES]);
+		Numericalflux(int numericalflux_id,int* numericalflux_node_ids,int numnodes, int* numericalflux_element_ids, int numelements);
+		Numericalflux(int numericalflux_id,Hook* numericalflux_hnodes, Hook* numericalflux_helements, Parameters* parameters, Inputs* numericalflux_inputs);
+		~Numericalflux();
+		/*}}}*/
+		/*Object management: {{{1*/
 		Object* copy();
-		~Numericalflux();
-
+		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* vertices,DataSet* materials,Parameters* parameters);
+		void  DeepEcho();
+		void  Demarshall(char** pmarshalled_dataset);
 		void  Echo();
-		void  DeepEcho();
+		int   Enum();
+		int   GetId(); 
+		char* GetName();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
-		char* GetName();
-		void  Demarshall(char** pmarshalled_dataset);
-		int   Enum();
-		int   GetId(); 
+		int   MyRank();
+		/*}}}*/
+		/*Numerics: {{{1*/
 		void  GetJacobianDeterminant(double* pJdet,double xyz_list[4][3], double gauss_coord);
 		void  GetNodalFunctions(double* l1l4, double gauss_coord);
-		int   MyRank();
 		void  DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type);
-		void  Configure(void* elements,void* nodes,void* materials);
 		void  GetB(double* B, double gauss_coord);
 		void  GetL(double* L, double gauss_coord,int numdof);
@@ -66,12 +54,13 @@
 		void  UpdateFromInputs(void* inputs);
 		
-		void  CreateKMatrix(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
-		void  CreateKMatrixInternal(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
-		void  CreateKMatrixBoundary(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
-		void  CreatePVector(Vec pg, void* inputs, int analysis_type,int sub_analysis_type);
-		void  CreatePVectorInternal(Vec pg,void* inputs,int analysis_type,int sub_analysis_type);
-		void  CreatePVectorBoundary(Vec pg,void* inputs,int analysis_type,int sub_analysis_type);
-		void  PenaltyCreateKMatrix(Mat Kgg,void* inputs,double kmax,int analysis_type,int sub_analysis_type);
-		void  PenaltyCreatePVector(Vec pg,void* inputs,double kmax,int analysis_type,int sub_analysis_type);
+		void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
+		void  CreateKMatrixInternal(Mat Kgg,int analysis_type,int sub_analysis_type);
+		void  CreateKMatrixBoundary(Mat Kgg,int analysis_type,int sub_analysis_type);
+		void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
+		void  CreatePVectorInternal(Vec pg,int analysis_type,int sub_analysis_type);
+		void  CreatePVectorBoundary(Vec pg,int analysis_type,int sub_analysis_type);
+		void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
+		void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type);
+		/*}}}*/
 
 };
Index: /issm/trunk/src/m/enum/AccumulationRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AccumulationRateEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/AccumulationRateEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=AccumulationRateEnum()
 
-macro=105;
+macro=112;
Index: /issm/trunk/src/m/enum/AdjointxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AdjointxEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/AdjointxEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=AdjointxEnum()
 
-macro=114;
+macro=125;
Index: /issm/trunk/src/m/enum/AdjointyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AdjointyEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/AdjointyEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=AdjointyEnum()
 
-macro=115;
+macro=126;
Index: /issm/trunk/src/m/enum/AirEnum.m
===================================================================
--- /issm/trunk/src/m/enum/AirEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/AirEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=AirEnum()
 
-macro=80;
+macro=87;
Index: /issm/trunk/src/m/enum/BedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BedEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/BedEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=BedEnum()
 
-macro=97;
+macro=104;
Index: /issm/trunk/src/m/enum/BoolInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BoolInputEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/BoolInputEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=BoolInputEnum()
 
-macro=67;
+macro=74;
Index: /issm/trunk/src/m/enum/DhDtEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DhDtEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DhDtEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DhDtEnum()
 
-macro=94;
+macro=101;
Index: /issm/trunk/src/m/enum/DofVecEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DofVecEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DofVecEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DofVecEnum()
 
-macro=74;
+macro=81;
Index: /issm/trunk/src/m/enum/DoubleInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleInputEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DoubleInputEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DoubleInputEnum()
 
-macro=69;
+macro=76;
Index: /issm/trunk/src/m/enum/DragCoefficientEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragCoefficientEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DragCoefficientEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DragCoefficientEnum()
 
-macro=98;
+macro=105;
Index: /issm/trunk/src/m/enum/DragPEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragPEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DragPEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DragPEnum()
 
-macro=99;
+macro=106;
Index: /issm/trunk/src/m/enum/DragQEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragQEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DragQEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DragQEnum()
 
-macro=100;
+macro=107;
Index: /issm/trunk/src/m/enum/DragTypeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragTypeEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/DragTypeEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=DragTypeEnum()
 
-macro=101;
+macro=108;
Index: /issm/trunk/src/m/enum/ElementOnBedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnBedEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ElementOnBedEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ElementOnBedEnum()
 
-macro=108;
+macro=115;
Index: /issm/trunk/src/m/enum/ElementOnIceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnIceShelfEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ElementOnIceShelfEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ElementOnIceShelfEnum()
 
-macro=107;
+macro=114;
Index: /issm/trunk/src/m/enum/ElementOnSurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnSurfaceEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ElementOnSurfaceEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ElementOnSurfaceEnum()
 
-macro=110;
+macro=117;
Index: /issm/trunk/src/m/enum/ElementOnWaterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementOnWaterEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ElementOnWaterEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ElementOnWaterEnum()
 
-macro=109;
+macro=116;
Index: /issm/trunk/src/m/enum/FitEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FitEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/FitEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=FitEnum()
 
-macro=113;
+macro=124;
Index: /issm/trunk/src/m/enum/GeographyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GeographyEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/GeographyEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=GeographyEnum()
 
-macro=75;
+macro=82;
Index: /issm/trunk/src/m/enum/GeothermalFluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GeothermalFluxEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/GeothermalFluxEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=GeothermalFluxEnum()
 
-macro=106;
+macro=113;
Index: /issm/trunk/src/m/enum/IceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/IceEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=IceEnum()
 
-macro=79;
+macro=86;
Index: /issm/trunk/src/m/enum/IceSheetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceSheetEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/IceSheetEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=IceSheetEnum()
 
-macro=76;
+macro=83;
Index: /issm/trunk/src/m/enum/IceShelfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IceShelfEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/IceShelfEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=IceShelfEnum()
 
-macro=77;
+macro=84;
Index: /issm/trunk/src/m/enum/InputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/InputEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/InputEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=InputEnum()
 
-macro=65;
+macro=69;
Index: /issm/trunk/src/m/enum/IntInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IntInputEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/IntInputEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=IntInputEnum()
 
-macro=68;
+macro=75;
Index: /issm/trunk/src/m/enum/MaterialEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaterialEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/MaterialEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=MaterialEnum()
 
-macro=61;
+macro=65;
Index: /issm/trunk/src/m/enum/MaticeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaticeEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/MaticeEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=MaticeEnum()
 
-macro=62;
+macro=66;
Index: /issm/trunk/src/m/enum/MatparEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MatparEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/MatparEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=MatparEnum()
 
-macro=63;
+macro=67;
Index: /issm/trunk/src/m/enum/MelangeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MelangeEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/MelangeEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=MelangeEnum()
 
-macro=81;
+macro=88;
Index: /issm/trunk/src/m/enum/MeltingRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeltingRateEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/MeltingRateEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=MeltingRateEnum()
 
-macro=104;
+macro=111;
Index: /issm/trunk/src/m/enum/NumericalfluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumericalfluxEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/NumericalfluxEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=NumericalfluxEnum()
 
-macro=60;
+macro=64;
Index: /issm/trunk/src/m/enum/NumparEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumparEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/NumparEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=NumparEnum()
 
-macro=64;
+macro=68;
Index: /issm/trunk/src/m/enum/ParamEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParamEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ParamEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ParamEnum()
 
-macro=70;
+macro=77;
Index: /issm/trunk/src/m/enum/PengridEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PengridEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/PengridEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=PengridEnum()
 
-macro=59;
+macro=63;
Index: /issm/trunk/src/m/enum/PenpairEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenpairEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/PenpairEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=PenpairEnum()
 
-macro=58;
+macro=62;
Index: /issm/trunk/src/m/enum/ResultEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ResultEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ResultEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ResultEnum()
 
-macro=71;
+macro=78;
Index: /issm/trunk/src/m/enum/RgbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RgbEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/RgbEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=RgbEnum()
 
-macro=72;
+macro=79;
Index: /issm/trunk/src/m/enum/RheologyBEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RheologyBEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/RheologyBEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=RheologyBEnum()
 
-macro=102;
+macro=109;
Index: /issm/trunk/src/m/enum/RheologyNEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RheologyNEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/RheologyNEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=RheologyNEnum()
 
-macro=103;
+macro=110;
Index: /issm/trunk/src/m/enum/RiftfrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RiftfrontEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/RiftfrontEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=RiftfrontEnum()
 
-macro=57;
+macro=59;
Index: /issm/trunk/src/m/enum/SpcEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/SpcEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=SpcEnum()
 
-macro=73;
+macro=80;
Index: /issm/trunk/src/m/enum/SurfaceAreaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceAreaEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/SurfaceAreaEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=SurfaceAreaEnum()
 
-macro=111;
+macro=118;
Index: /issm/trunk/src/m/enum/SurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/SurfaceEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=SurfaceEnum()
 
-macro=96;
+macro=103;
Index: /issm/trunk/src/m/enum/ThicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ThicknessEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/ThicknessEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=ThicknessEnum()
 
-macro=95;
+macro=102;
Index: /issm/trunk/src/m/enum/TriaVertexInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TriaVertexInputEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/TriaVertexInputEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=TriaVertexInputEnum()
 
-macro=66;
+macro=70;
Index: /issm/trunk/src/m/enum/VxAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxAverageEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VxAverageEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VxAverageEnum()
 
-macro=85;
+macro=92;
Index: /issm/trunk/src/m/enum/VxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VxEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VxEnum()
 
-macro=82;
+macro=89;
Index: /issm/trunk/src/m/enum/VxObsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxObsEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VxObsEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VxObsEnum()
 
-macro=88;
+macro=95;
Index: /issm/trunk/src/m/enum/VxOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VxOldEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VxOldEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VxOldEnum()
 
-macro=91;
+macro=98;
Index: /issm/trunk/src/m/enum/VyAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyAverageEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VyAverageEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VyAverageEnum()
 
-macro=86;
+macro=93;
Index: /issm/trunk/src/m/enum/VyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VyEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VyEnum()
 
-macro=83;
+macro=90;
Index: /issm/trunk/src/m/enum/VyObsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyObsEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VyObsEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VyObsEnum()
 
-macro=89;
+macro=96;
Index: /issm/trunk/src/m/enum/VyOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VyOldEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VyOldEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VyOldEnum()
 
-macro=92;
+macro=99;
Index: /issm/trunk/src/m/enum/VzAverageEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzAverageEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VzAverageEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VzAverageEnum()
 
-macro=87;
+macro=94;
Index: /issm/trunk/src/m/enum/VzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VzEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VzEnum()
 
-macro=84;
+macro=91;
Index: /issm/trunk/src/m/enum/VzObsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzObsEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VzObsEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VzObsEnum()
 
-macro=90;
+macro=97;
Index: /issm/trunk/src/m/enum/VzOldEnum.m
===================================================================
--- /issm/trunk/src/m/enum/VzOldEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/VzOldEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=VzOldEnum()
 
-macro=93;
+macro=100;
Index: /issm/trunk/src/m/enum/WaterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WaterEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/WaterEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=WaterEnum()
 
-macro=78;
+macro=85;
Index: /issm/trunk/src/m/enum/WeightsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WeightsEnum.m	(revision 3641)
+++ /issm/trunk/src/m/enum/WeightsEnum.m	(revision 3642)
@@ -7,3 +7,3 @@
 %      macro=WeightsEnum()
 
-macro=112;
+macro=123;
