Index: /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.cpp	(revision 3903)
+++ /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.cpp	(revision 3903)
@@ -0,0 +1,20 @@
+/*!\file ExtrudeInputx
+ * \brief: average field throfieldh thickness
+ */
+
+#include "./ExtrudeInputx.h"
+
+#include "../shared/shared.h"
+#include "../include/include.h"
+#include "../toolkits/toolkits.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+
+void ExtrudeInputx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,int enum_type){
+
+	/*First, get elements*/
+	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	/*Then extrude vertically the new inputs*/
+	elements->InputExtrude(enum_type);
+
+}
Index: /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.h
===================================================================
--- /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.h	(revision 3903)
+++ /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.h	(revision 3903)
@@ -0,0 +1,14 @@
+/*!\file:  ExtrudeInputx.h
+ * \brief header file for averaging a field throfieldh thickness
+ */ 
+
+#ifndef _EXTRUDEINPUTX_H
+#define _EXTRUDEINPUTX_H
+
+#include "../DataSet/DataSet.h"
+
+/* local prototypes: */
+void ExtrudeInputx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,int enum_type);
+
+#endif  /* _EXTRUDEINPUTX_H */
+
Index: /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp	(revision 3903)
+++ /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp	(revision 3903)
@@ -0,0 +1,62 @@
+/*!\file FieldAverageOntoVerticesx
+ * \brief: average field throfieldh thickness
+ */
+
+#include "./FieldAverageOntoVerticesx.h"
+
+#include "../shared/shared.h"
+#include "../include/include.h"
+#include "../toolkits/toolkits.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+
+void FieldAverageOntoVerticesx(Vec* pfield, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters){
+
+	extern int my_rank;
+
+	/*Intermediary*/
+	int     numberofvertices,found;
+	Vec     connectivity=NULL;
+	Vec     fieldsum=NULL;
+	double* field_serial=NULL;
+
+	/*Output*/
+	Vec field=NULL;
+
+	/*Initialize intermediary*/
+	found=parameters->FindParam(&numberofvertices,NumberOfVerticesEnum);
+	connectivity=NewVec(numberofvertices);
+	fieldsum    =NewVec(numberofvertices);
+
+	/*First, get elements and nodes configured: */
+	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+	nodes->Configure(elements,loads, nodes,vertices, materials,parameters);
+	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	/*Serialize field: */
+	VecToMPISerial(&field_serial,*pfield);
+
+	/*Compute summ of connectivity and summ of values: */
+	nodes->FieldAverageOntoVertices(fieldsum,connectivity,field_serial);
+
+	/*Assemble vectors: */
+	VecAssemblyBegin(connectivity);
+	VecAssemblyEnd(connectivity);
+	VecAssemblyBegin(fieldsum);
+	VecAssemblyEnd(fieldsum);
+
+	/*Initialize output*/
+	field=NewVec(numberofvertices);
+
+	/*Create Field = Fieldsum./connectivity */
+	VecPointwiseDivide(field,fieldsum,connectivity);
+
+	/*Assign output pointer*/
+	VecFree(pfield);
+	*pfield=field;
+
+	/*Free ressources:*/
+	xfree((void**)&field_serial);
+	VecFree(&connectivity);
+	VecFree(&fieldsum);
+
+}
Index: /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.h
===================================================================
--- /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.h	(revision 3903)
+++ /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.h	(revision 3903)
@@ -0,0 +1,13 @@
+/*!\file:  FieldAverageOntoVerticesx.h
+ * \brief header file for averaging a field throfieldh thickness
+ */ 
+
+#ifndef _FIELDAVERAGEVERTICESX_H
+#define _FIELDAVERAGEVERTICESX_H
+
+#include "../DataSet/DataSet.h"
+
+/* local prototypes: */
+void FieldAverageOntoVerticesx(Vec* field, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters);
+
+#endif  /* _FIELDDEPTHAVERAGEX_H */
Index: /issm/trunk/src/c/modules/FieldExtrudex/FieldExtrudex.cpp
===================================================================
--- /issm/trunk/src/c/modules/FieldExtrudex/FieldExtrudex.cpp	(revision 3903)
+++ /issm/trunk/src/c/modules/FieldExtrudex/FieldExtrudex.cpp	(revision 3903)
@@ -0,0 +1,44 @@
+/*!\file FieldExtrudex
+ * \brief: vertical velocity extrusion
+ */
+
+#include "./FieldExtrudex.h"
+
+#include "../shared/shared.h"
+#include "../include/include.h"
+#include "../toolkits/toolkits.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+
+void FieldExtrudex( Vec field, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,char* field_name,int collapse){
+
+	double* field_serial=NULL;
+
+	/*First, get elements and nodes configured: */
+	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+	nodes->Configure(elements,loads, nodes,vertices, materials,parameters);
+	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	/*Serialize field: */
+	VecToMPISerial(&field_serial,field);
+
+	/*ok, is the extrusion dependent upon elements or just nodes? If collapse is 1, it means we only want 
+	 * to extrude the field on elemenets that are collapsed (element operation). If collapse is 0, it means 
+	 * we want to extrude field on every node (node operation): */
+
+	if(collapse){
+		/*Extrude field vertically: */
+		elements->FieldExtrude(field,field_serial,field_name,collapse);
+	}
+	else{
+		/*Extrude field vertically: */
+		nodes->FieldExtrude(field,field_serial,field_name,collapse);
+	}
+
+	/*Assemble vector: */
+	VecAssemblyBegin(field);
+	VecAssemblyEnd(field);
+
+	/*Free ressources:*/
+	xfree((void**)&field_serial);
+
+}
Index: /issm/trunk/src/c/modules/FieldExtrudex/FieldExtrudex.h
===================================================================
--- /issm/trunk/src/c/modules/FieldExtrudex/FieldExtrudex.h	(revision 3903)
+++ /issm/trunk/src/c/modules/FieldExtrudex/FieldExtrudex.h	(revision 3903)
@@ -0,0 +1,14 @@
+/*!\file:  FieldExtrudex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _FIELDEXTRUDEX_H
+#define _FIELDEXTRUDEX_H
+
+#include "../DataSet/DataSet.h"
+
+/* local prototypes: */
+void FieldExtrudex( Vec field, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,char* field_name, int collapse);
+
+#endif  /* _FIELDEXTRUDEX_H */
+
