Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 17861)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 17862)
@@ -284,6 +284,10 @@
 					./modules/OutputResultsx/OutputResultsx.h\
 					./modules/OutputResultsx/OutputResultsx.cpp\
+					./modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h\
+					./modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp\
 					./modules/InputDuplicatex/InputDuplicatex.h\
 					./modules/InputDuplicatex/InputDuplicatex.cpp\
+					./modules/InputExtrudex/InputExtrudex.h\
+					./modules/InputExtrudex/InputExtrudex.cpp\
 					./modules/InputScalex/InputScalex.h\
 					./modules/InputScalex/InputScalex.cpp\
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 17862)
@@ -658,4 +658,11 @@
 	}
 }/*}}}*/
+void  Element::InputDuplicate(int original_enum,int new_enum){/*{{{*/
+
+	/*Call inputs method*/
+	if (IsInput(original_enum)) inputs->DuplicateInput(original_enum,new_enum);
+
+}
+/*}}}*/
 void Element::InputUpdateFromConstant(int constant, int name){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 17862)
@@ -97,4 +97,5 @@
 		void       InputChangeName(int enum_type,int enum_type_old);
 		void       InputCreate(IssmDouble* vector,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code);
+		void       InputDuplicate(int original_enum,int new_enum);
 		void       InputUpdateFromConstant(IssmDouble constant, int name);
 		void       InputUpdateFromConstant(int constant, int name);
@@ -208,5 +209,5 @@
 
 		virtual void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0;
-		virtual void   InputDuplicate(int original_enum,int new_enum)=0;
+		virtual void   InputExtrude(int input_enum)=0;
 		virtual void   InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum)=0;
 		virtual void   InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17862)
@@ -1356,12 +1356,4 @@
 	/*Finally, add to inputs*/
 	this->inputs->AddInput((Input*)depth_averaged_input);
-}
-/*}}}*/
-/*FUNCTION Penta::InputDuplicate{{{*/
-void  Penta::InputDuplicate(int original_enum,int new_enum){
-
-	/*Call inputs method*/
-	if (IsInput(original_enum)) inputs->DuplicateInput(original_enum,new_enum);
-
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17862)
@@ -87,5 +87,4 @@
 
 		void   InputDepthAverageAtBase(int enum_type,int average_enum_type);
-		void   InputDuplicate(int original_enum,int new_enum);
 		void   InputScale(int enum_type,IssmDouble scale_factor);
 		int    NumberofNodesVelocity(void);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 17862)
@@ -133,5 +133,5 @@
 		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
-		void        InputDuplicate(int original_enum,int new_enum){_error_("not implemented yet");};
+		void        InputExtrude(int enum_type){_error_("not implemented"); /*For penta only*/};
 		void        InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};
 		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 17862)
@@ -138,5 +138,5 @@
 		void        GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
-		void        InputDuplicate(int original_enum,int new_enum){_error_("not implemented yet");};
+		void        InputExtrude(int enum_type){_error_("not implemented"); /*For penta only*/};
 		void        InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};
 		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17862)
@@ -1031,13 +1031,4 @@
 	/*Add new input to current element*/
 	this->inputs->AddInput((Input*)newinput);
-}
-/*}}}*/
-/*FUNCTION Tria::InputDuplicate{{{*/
-void  Tria::InputDuplicate(int original_enum,int new_enum){
-
-	/*Call inputs method*/
-	if (IsInput(original_enum)) {
-		inputs->DuplicateInput(original_enum,new_enum);
-	}
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 17861)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 17862)
@@ -88,5 +88,5 @@
 		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type);
-		void        InputDuplicate(int original_enum,int new_enum);
+		void        InputExtrude(int enum_type){_error_("not implemented"); /*For penta only*/};
 		void        InputScale(int enum_type,IssmDouble scale_factor);
 		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp	(revision 17862)
+++ /issm/trunk-jpl/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp	(revision 17862)
@@ -0,0 +1,15 @@
+/*!\file InputDepthAverageAtBasex
+ * \brief: extrude input
+ */
+
+#include "./InputDepthAverageAtBasex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputDepthAverageAtBasex(FemModel* femmodel,int original_enum, int new_enum){
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputDepthAverageAtBase(original_enum,new_enum);
+	}
+}
Index: /issm/trunk-jpl/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h	(revision 17862)
+++ /issm/trunk-jpl/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h	(revision 17862)
@@ -0,0 +1,13 @@
+/*!\file:  InputDepthAverageAtBasex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTDEPTHAVERAGEATBASEX_H
+#define _INPUTDEPTHAVERAGEATBASEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputDepthAverageAtBasex(FemModel* femmodel,int reinitialized_enum, int original_enum);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/trunk-jpl/src/c/modules/InputExtrudex/InputExtrudex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputExtrudex/InputExtrudex.cpp	(revision 17862)
+++ /issm/trunk-jpl/src/c/modules/InputExtrudex/InputExtrudex.cpp	(revision 17862)
@@ -0,0 +1,15 @@
+/*!\file InputExtrudex
+ * \brief: extrude input
+ */
+
+#include "./InputExtrudex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputExtrudex(FemModel* femmodel,int input_enum){
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->InputExtrude(input_enum);
+	}
+}
Index: /issm/trunk-jpl/src/c/modules/InputExtrudex/InputExtrudex.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputExtrudex/InputExtrudex.h	(revision 17862)
+++ /issm/trunk-jpl/src/c/modules/InputExtrudex/InputExtrudex.h	(revision 17862)
@@ -0,0 +1,13 @@
+/*!\file:  InputExtrudex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTEXTRUDEX_H
+#define _INPUTEXTRUDEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputExtrudex(FemModel* femmodel,int input_enum);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/trunk-jpl/src/c/modules/modules.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/modules.h	(revision 17861)
+++ /issm/trunk-jpl/src/c/modules/modules.h	(revision 17862)
@@ -37,5 +37,7 @@
 #include "./HoleFillerx/HoleFillerx.h"
 #include "./InputControlUpdatex/InputControlUpdatex.h"
+#include "./InputDepthAverageAtBasex/InputDepthAverageAtBasex.h"
 #include "./InputDuplicatex/InputDuplicatex.h"
+#include "./InputExtrudex/InputExtrudex.h"
 #include "./InputScalex/InputScalex.h"
 #include "./InterpFromMesh2dx/InterpFromMesh2dx.h"
