Index: /issm/trunk/src/mex/InputControlConstrain/InputControlConstrain.cpp
===================================================================
--- /issm/trunk/src/mex/InputControlConstrain/InputControlConstrain.cpp	(revision 4097)
+++ /issm/trunk/src/mex/InputControlConstrain/InputControlConstrain.cpp	(revision 4098)
@@ -1,52 +1,68 @@
-/*\file ControlConstrain.c
- *\brief: constrain updated parameters during inverse control run
- */
+/*\file InputControlConstrain.c
+*\brief: update elements properties using an input  vector
+*/
 
-#include "./ControlConstrain.h"
+#include "./InputControlConstrain.h"
 
 void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){
 
-	/*diverse: */
-	int   noerr=1;
+/*diverse: */
+int         noerr             = 1;
 
-	/*input datasets: */
-	double*  p_g=NULL;
-	double   cm_min;
-	double   cm_max;
-	int      control_type=NULL;
-	int      gsize;
-	Parameters* parameters=NULL;
+/*input datasets: */
+DataSet    *elements          = NULL;
+DataSet    *nodes             = NULL;
+DataSet    *vertices          = NULL;
+DataSet    *loads             = NULL;
+DataSet    *materials         = NULL;
+Parameters *parameters        = NULL;
+int         control_type;
+double      cm_min;
+double      cm_max;
 
-	/*Boot module: */
-	MODULEBOOT();
+/*Boot module: */
+MODULEBOOT();
 
-	/*checks on arguments on the matlab side: */
-	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&ControlConstrainUsage);
+/*checks on arguments on the matlab side: */
+CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InputControlConstrainUsage);
 
-	/*Input datasets: */
-	FetchData(&p_g,&gsize,PG);
-	FetchParams(&parameters,PARAMETERS);
+/*Input datasets: */
+FetchData(&elements,ELEMENTSIN);
+FetchData(&nodes,NODESIN);
+FetchData(&vertices,VERTICESIN);
+FetchData(&loads,LOADSIN);
+FetchData(&materials,MATERIALSIN);
+FetchParams(&parameters,PARAMETERSIN);
+FetchData(&control_type,CONTROLTYPE);
+FetchData(&cm_min,CMMIN);
+FetchData(&cm_max,CMMAX);
 
-	parameters->FindParam(&cm_min,CmMinEnum);
-	parameters->FindParam(&cm_max,CmMaxEnum);
-	parameters->FindParam(&control_type,ControlTypeEnum);
+/*call "x" code layer*/
+InputControlConstrainx(elements,nodes,vertices,loads, materials,parameters,control_type,cm_min,cm_max);
 
-	/*!Call core code: */
-	ControlConstrainx(p_g,gsize,cm_min,cm_max,control_type);
+/*write output datasets: */
+WriteData(ELEMENTS,elements);
+WriteData(NODES,nodes);
+WriteData(VERTICES,vertices);
+WriteData(LOADS,loads);
+WriteData(MATERIALS,materials);
+WriteParams(PARAMETERS,parameters);
 
-	/*write output : */
-	WriteData(PGOUT,p_g,gsize);
+/*Free ressources: */
+delete elements;
+delete nodes;
+delete vertices;
+delete loads;
+delete materials;
+delete parameters;
 
-	/*Free ressources: */
-	delete parameters;
-
-	/*end module: */
-	MODULEEND();
+/*end module: */
+MODULEEND();
 }
 
-void ControlConstrainUsage(void)
+void InputControlConstrainUsage(void)
 {
 	_printf_("\n");
-	_printf_("   usage: [p_g] = %s(p_g,parameters);\n",__FUNCT__);
+	_printf_("   usage: [elements,nodes,vertices,loads,materials,parameters] = %s(elements,nodes,vertices,loads,materials,parameters,control_type,cm_min,cm_max);\n",__FUNCT__);
 	_printf_("\n");
 }
Index: /issm/trunk/src/mex/InputControlConstrain/InputControlConstrain.h
===================================================================
--- /issm/trunk/src/mex/InputControlConstrain/InputControlConstrain.h	(revision 4097)
+++ /issm/trunk/src/mex/InputControlConstrain/InputControlConstrain.h	(revision 4098)
@@ -1,12 +1,11 @@
 /*
-	ControlConstrain.h
+	InputControlConstrain.h
 */
 
-
-#ifndef _CONTROLCONSTRAIN_H
-#define _CONTROLCONSTRAIN_H
+#ifndef _INPUTCONTROLCONSTRAIN_H
+#define _INPUTCONTROLCONSTRAIN_H
 
 /* local prototypes: */
-void ControlConstrainUsage(void);
+void InputControlConstrainUsage(void);
 
 #include "../../c/modules/modules.h"
@@ -16,22 +15,31 @@
 
 #undef __FUNCT__ 
-#define __FUNCT__  "ControlConstrain"
+#define __FUNCT__  "InputControlConstrain"
 
 /* serial input macros: */
-#define PG (mxArray*)prhs[0]
-#define PARAMETERS (mxArray*)prhs[1]
+#define ELEMENTSIN (mxArray*)prhs[0]
+#define NODESIN (mxArray*)prhs[1]
+#define VERTICESIN (mxArray*)prhs[2]
+#define LOADSIN (mxArray*)prhs[3]
+#define MATERIALSIN (mxArray*)prhs[4]
+#define PARAMETERSIN (mxArray*)prhs[5]
+#define CONTROLTYPE (mxArray*)prhs[6]
+#define CMMIN (mxArray*)prhs[7]
+#define CMMAX (mxArray*)prhs[8]
 
 /* serial output macros: */
-#define PGOUT (mxArray**)&plhs[0]
+#define ELEMENTS (mxArray**)&plhs[0]
+#define NODES (mxArray**)&plhs[1]
+#define VERTICES (mxArray**)&plhs[2]
+#define LOADS (mxArray**)&plhs[3]
+#define MATERIALS (mxArray**)&plhs[4]
+#define PARAMETERS (mxArray**)&plhs[5]
 
 /* serial arg counts: */
 #undef NLHS
-#define NLHS  1
+#define NLHS  6
 #undef NRHS
-#define NRHS  2
+#define NRHS  9
 
+#endif  /* _INPUTCONTROLCONSTRAIN_H */
 
-#endif  /* _CONTROLCONSTRAIN_H */
-
-
-
Index: /issm/trunk/src/mex/InputDepthAverage/InputDepthAverage.cpp
===================================================================
--- /issm/trunk/src/mex/InputDepthAverage/InputDepthAverage.cpp	(revision 4097)
+++ /issm/trunk/src/mex/InputDepthAverage/InputDepthAverage.cpp	(revision 4098)
@@ -62,5 +62,5 @@
 {
 	_printf_("\n");
-	_printf_("   usage: [elements,nodes,vertices,loads,materials,parameters] = %s(elements,nodes,vertices,loads,materials,parameters,name_enum);\n",__FUNCT__);
+	_printf_("   usage: [elements,nodes,vertices,loads,materials,parameters] = %s(elements,nodes,vertices,loads,materials,parameters,enum_type,average_enum_type);\n",__FUNCT__);
 	_printf_("\n");
 }
