Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9285)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9286)
@@ -550,5 +550,6 @@
 	QmuRheologyBEnum,
 	HydrologyWaterVxEnum,
-	HydrologyWaterVyEnum
+	HydrologyWaterVyEnum,
+	SpcDynamicEnum
 };
 
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 9285)
+++ /issm/trunk/src/c/Makefile.am	(revision 9286)
@@ -233,4 +233,6 @@
 					./objects/Constraints/SpcStatic.cpp\
 					./objects/Constraints/SpcStatic.h\
+					./objects/Constraints/SpcDynamic.cpp\
+					./objects/Constraints/SpcDynamic.h\
 					./objects/Constraints/SpcTransient.cpp\
 					./objects/Constraints/SpcTransient.h\
@@ -927,4 +929,6 @@
 					./objects/Constraints/SpcStatic.cpp\
 					./objects/Constraints/SpcStatic.h\
+					./objects/Constraints/SpcDynamic.cpp\
+					./objects/Constraints/SpcDynamic.h\
 					./objects/Constraints/SpcTransient.cpp\
 					./objects/Constraints/SpcTransient.h\
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9285)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9286)
@@ -493,4 +493,5 @@
 		case HydrologyWaterVxEnum : return "HydrologyWaterVx";
 		case HydrologyWaterVyEnum : return "HydrologyWaterVy";
+		case SpcDynamicEnum : return "SpcDynamic";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9285)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9286)
@@ -491,4 +491,5 @@
 	else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
 	else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
+	else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
 	else _error_("Enum %s not found",name);
 
Index: /issm/trunk/src/c/objects/Constraints/SpcDynamic.cpp
===================================================================
--- /issm/trunk/src/c/objects/Constraints/SpcDynamic.cpp	(revision 9286)
+++ /issm/trunk/src/c/objects/Constraints/SpcDynamic.cpp	(revision 9286)
@@ -0,0 +1,188 @@
+/*!\file SpcDynamic.c
+ * \brief: implementation of the SpcDynamic object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "stdio.h"
+#include <string.h>
+#include "../../include/include.h"
+#include "../../shared/shared.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../Container/Container.h"
+#include "../objects.h"
+
+/*SpcDynamic constructors and destructor*/
+/*FUNCTION SpcDynamic::SpcDynamic(){{{1*/
+SpcDynamic::SpcDynamic(){
+	return;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::SpcDynamic(int spc_sid,int spc_nodeid,...){{{1*/
+SpcDynamic::SpcDynamic(int spc_sid,int spc_nodeid, int spc_dof,double spc_value,int spc_analysis_type){
+
+	sid=spc_sid;
+	nodeid=spc_nodeid;
+	dof=spc_dof;
+	value=spc_value;
+	analysis_type=spc_analysis_type;
+
+	return;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::~SpcDynamic{{{1*/
+SpcDynamic::~SpcDynamic(){
+	return;
+}
+/*}}}1*/
+		
+/*Object virtual functions definitions:*/
+/*FUNCTION SpcDynamic::Echo {{{1*/
+void SpcDynamic::Echo(void){
+
+	printf("SpcDynamic:\n");
+	printf("   sid: %i\n",sid);
+	printf("   nodeid: %i\n",nodeid);
+	printf("   dof: %i\n",dof);
+	printf("   value: %g\n",value);
+	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	return;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::DeepEcho {{{1*/
+void SpcDynamic::DeepEcho(void){
+
+	printf("SpcDynamic:\n");
+	printf("   sid: %i\n",sid);
+	printf("   nodeid: %i\n",nodeid);
+	printf("   dof: %i\n",dof);
+	printf("   value: %g\n",value);
+	printf("   analysis_type: %s\n",EnumToStringx(analysis_type));
+	return;
+}		
+/*}}}1*/
+/*FUNCTION SpcDynamic::Id {{{1*/
+int    SpcDynamic::Id(void){ return sid; }
+/*}}}1*/
+/*FUNCTION SpcDynamic::MyRank {{{1*/
+int    SpcDynamic::MyRank(void){ 
+	extern int my_rank;
+	return my_rank; 
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::Marshall {{{1*/
+void  SpcDynamic::Marshall(char** pmarshalled_dataset){
+
+	char* marshalled_dataset=NULL;
+	int   enum_type=0;
+
+	/*recover marshalled_dataset: */
+	marshalled_dataset=*pmarshalled_dataset;
+
+	/*get enum type of SpcDynamic: */
+	enum_type=SpcDynamicEnum;
+	
+	/*marshall enum: */
+	memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);
+	
+	/*marshall SpcDynamic data: */
+	memcpy(marshalled_dataset,&sid,sizeof(sid));marshalled_dataset+=sizeof(sid);
+	memcpy(marshalled_dataset,&nodeid,sizeof(nodeid));marshalled_dataset+=sizeof(nodeid);
+	memcpy(marshalled_dataset,&dof,sizeof(dof));marshalled_dataset+=sizeof(dof);
+	memcpy(marshalled_dataset,&value,sizeof(value));marshalled_dataset+=sizeof(value);
+	memcpy(marshalled_dataset,&analysis_type,sizeof(analysis_type));marshalled_dataset+=sizeof(analysis_type);
+
+	*pmarshalled_dataset=marshalled_dataset;
+	return;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::MarshallSize {{{1*/
+int   SpcDynamic::MarshallSize(){
+
+	return sizeof(sid)
+		+sizeof(nodeid)
+		+sizeof(dof)
+		+sizeof(value)
+		+sizeof(analysis_type)
+		+sizeof(int); //sizeof(int) for enum type
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::Demarshall {{{1*/
+void  SpcDynamic::Demarshall(char** pmarshalled_dataset){
+
+	char* marshalled_dataset=NULL;
+
+	/*recover marshalled_dataset: */
+	marshalled_dataset=*pmarshalled_dataset;
+
+	/*this time, no need to get enum type, the pointer directly points to the beginning of the 
+	 *object data (thanks to DataSet::Demarshall):*/
+
+	memcpy(&sid,marshalled_dataset,sizeof(sid));marshalled_dataset+=sizeof(sid);
+	memcpy(&nodeid,marshalled_dataset,sizeof(nodeid));marshalled_dataset+=sizeof(nodeid);
+	memcpy(&dof,marshalled_dataset,sizeof(dof));marshalled_dataset+=sizeof(dof);
+	memcpy(&value,marshalled_dataset,sizeof(value));marshalled_dataset+=sizeof(value);
+	memcpy(&analysis_type,marshalled_dataset,sizeof(analysis_type));marshalled_dataset+=sizeof(analysis_type);
+
+	/*return: */
+	*pmarshalled_dataset=marshalled_dataset;
+	return;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::Enum {{{1*/
+int SpcDynamic::Enum(void){
+
+	return SpcDynamicEnum;
+
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::copy {{{1*/
+Object* SpcDynamic::copy() {
+	return new SpcDynamic(*this); 
+}
+/*}}}1*/
+
+/*Constraint virtual functions definitions: */
+/*FUNCTION SpcDynamic::InAnalysis{{{1*/
+bool SpcDynamic::InAnalysis(int in_analysis_type){
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+/*FUNCTION SpcDynamic::ConstrainNode{{{1*/
+void SpcDynamic::ConstrainNode(Nodes* nodes,Parameters* parameters){
+
+	Node* node=NULL;
+
+	/*Chase through nodes and find the node to which this SpcDynamic applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(node){ //in case the spc is dealing with a node on another cpu
+		node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+
+/*SpcDynamic functions*/
+/*FUNCTION SpcDynamic::GetDof {{{1*/
+int SpcDynamic::GetDof(){
+	return dof;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::GetNodeId {{{1*/
+int   SpcDynamic::GetNodeId(){
+	
+	return nodeid;
+}
+/*}}}1*/
+/*FUNCTION SpcDynamic::GetValue {{{1*/
+double SpcDynamic::GetValue(){
+	_assert_(!isnan(value));
+	return value;
+}
+/*}}}1*/
Index: /issm/trunk/src/c/objects/Constraints/SpcDynamic.h
===================================================================
--- /issm/trunk/src/c/objects/Constraints/SpcDynamic.h	(revision 9286)
+++ /issm/trunk/src/c/objects/Constraints/SpcDynamic.h	(revision 9286)
@@ -0,0 +1,53 @@
+/*!\file SpcDynamic.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCDynamic_H_
+#define _SPCDynamic_H_
+
+/*Headers:*/
+/*{{{1*/
+#include "../Object.h"
+class DataSet;
+/*}}}*/
+
+class SpcDynamic: public Constraint{
+
+	private: 
+		int	sid; /*! id, to track it*/
+		int	nodeid; /*!node id*/
+		int dof; /*!component*/
+		double value; /*value*/
+		int analysis_type;
+
+	public:
+
+		/*SpcDynamic constructors, destructors:{{{1*/
+		SpcDynamic();
+		SpcDynamic(int sid,int nodeid, int dof,double value,int analysis_type);
+		~SpcDynamic();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{1 */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   MyRank();
+		void  Marshall(char** pmarshalled_dataset);
+		int   MarshallSize();
+		void  Demarshall(char** pmarshalled_dataset);
+		int   Enum();
+		Object* copy();
+		/*}}}*/
+		/*Constraint virtual functions definitions: {{{1*/
+		void   ConstrainNode(Nodes* nodes,Parameters* parameters);
+		bool   InAnalysis(int analysis_type);
+		/*}}}*/
+		/*SpcDynamic management:{{{1 */
+		int    GetNodeId();
+		int    GetDof();
+		double GetValue();
+		/*}}}*/
+
+};
+
+#endif  /* _SPCStatic_H_*/
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 9285)
+++ /issm/trunk/src/c/objects/objects.h	(revision 9286)
@@ -23,4 +23,5 @@
 #include "./Constraints/SpcStatic.h"
 #include "./Constraints/SpcTransient.h"
+#include "./Constraints/SpcDynamic.h"
 
 /*Gauss*/
Index: /issm/trunk/src/m/enum/SpcDynamicEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcDynamicEnum.m	(revision 9286)
+++ /issm/trunk/src/m/enum/SpcDynamicEnum.m	(revision 9286)
@@ -0,0 +1,11 @@
+function macro=SpcDynamicEnum()
+%SPCDYNAMICENUM - Enum of SpcDynamic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=SpcDynamicEnum()
+
+macro=StringToEnum('SpcDynamic');
