Index: /issm/trunk/src/c/Container/Loads.cpp
===================================================================
--- /issm/trunk/src/c/Container/Loads.cpp	(revision 4457)
+++ /issm/trunk/src/c/Container/Loads.cpp	(revision 4458)
@@ -43,66 +43,4 @@
 
 /*Numerics:*/
-/*FUNCTION Loads::MeltingIsPresent{{{1*/
-int   Loads::MeltingIsPresent(){
-
-	int i;
-	int found=0;
-	int mpi_found=0;
-
-	for(i=0;i<this->Size();i++){
-		Object* object=(Object*)this->GetObjectByOffset(i);
-		if (object->Enum()==PengridEnum){
-			found=1;
-			break;
-		}
-	}
-	
-	#ifdef _PARALLEL_
-	MPI_Reduce (&found,&mpi_found,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
-	MPI_Bcast(&mpi_found,1,MPI_INT,0,MPI_COMM_WORLD);                
-	found=mpi_found;
-	#endif
-
-	return found;
-}
-/*}}}*/
-/*FUNCTION Loads::MeltingConstraints{{{1*/
-void  Loads::MeltingConstraints(int* pconverged, int* pnum_unstable_constraints){
-
-	int i;
-
-	int unstable=0;
-	int num_unstable_constraints=0;
-	int converged=0;
-	int sum_num_unstable_constraints=0;
-
-	num_unstable_constraints=0;	
-
-	/*Enforce constraints: */
-	for(i=0;i<this->Size();i++){
-		Object* object=(Object*)this->GetObjectByOffset(i);
-		if(object->Enum()==PengridEnum){
-
-			Pengrid* pengrid=(Pengrid*)object;
-			pengrid->PenaltyConstrain(&unstable);
-			num_unstable_constraints+=unstable;
-		}
-	}
-
-	#ifdef _PARALLEL_
-	MPI_Reduce (&num_unstable_constraints,&sum_num_unstable_constraints,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
-	MPI_Bcast(&sum_num_unstable_constraints,1,MPI_INT,0,MPI_COMM_WORLD);                
-	num_unstable_constraints=sum_num_unstable_constraints;
-	#endif
-
-	/*Have we converged? : */
-	if (num_unstable_constraints==0) converged=1;
-	else converged=0;
-
-	/*Assign output pointers: */
-	*pconverged=converged;
-	*pnum_unstable_constraints=num_unstable_constraints;
-}
-/*}}}*/
 /*FUNCTION Loads::NumberOfLoads{{{1*/
 int Loads::NumberOfLoads(void){
Index: /issm/trunk/src/c/Container/Loads.h
===================================================================
--- /issm/trunk/src/c/Container/Loads.h	(revision 4457)
+++ /issm/trunk/src/c/Container/Loads.h	(revision 4458)
@@ -26,6 +26,4 @@
 		/*}}}*/
 		/*numerics: {{{1*/
-		int   MeltingIsPresent();
-		void  MeltingConstraints(int* pconverged, int* pnum_unstable_constraints);
 		int   NumberOfLoads(void);
 		void  OutputRifts(Vec riftproperties);
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4457)
+++ /issm/trunk/src/c/Makefile.am	(revision 4458)
@@ -526,6 +526,8 @@
 					./modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp\
 					./modules/PenaltyConstraintsx/PenaltyConstraintsx.h\
+					./modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h\
 					./modules/PenaltyConstraintsx/RiftConstraints.cpp\
-					./modules/PenaltyConstraintsx/RiftConstraints.h\
+					./modules/PenaltyConstraintsx/MeltingConstraints.cpp\
+					./modules/PenaltyConstraintsx/MeltingIsPresent.cpp\
 					./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp\
 					./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h\
@@ -1067,6 +1069,8 @@
 					./modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp\
 					./modules/PenaltyConstraintsx/PenaltyConstraintsx.h\
+					./modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h\
 					./modules/PenaltyConstraintsx/RiftConstraints.cpp\
-					./modules/PenaltyConstraintsx/RiftConstraints.h\
+					./modules/PenaltyConstraintsx/MeltingConstraints.cpp\
+					./modules/PenaltyConstraintsx/MeltingIsPresent.cpp\
 					./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp\
 					./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h\
Index: /issm/trunk/src/c/modules/PenaltyConstraintsx/MeltingConstraints.cpp
===================================================================
--- /issm/trunk/src/c/modules/PenaltyConstraintsx/MeltingConstraints.cpp	(revision 4458)
+++ /issm/trunk/src/c/modules/PenaltyConstraintsx/MeltingConstraints.cpp	(revision 4458)
@@ -0,0 +1,51 @@
+/*!\file:  MeltingConstraints.cpp
+ * \brief  melting rate constraints
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./PenaltyConstraintsLocal.h"
+
+void  MeltingConstraints(Loads* loads, int* pconverged, int* pnum_unstable_constraints,int analysis_type){
+
+	int i;
+
+	int unstable=0;
+	int num_unstable_constraints=0;
+	int converged=0;
+	int sum_num_unstable_constraints=0;
+
+	num_unstable_constraints=0;	
+
+	/*Enforce constraints: */
+	for(i=0;i<loads->Size();i++){
+		Object* object=(Object*)loads->GetObjectByOffset(i);
+		Load* load=(Load*)object;
+		if(load->InAnalysis(analysis_type)){
+			if(object->Enum()==PengridEnum){
+
+				Pengrid* pengrid=(Pengrid*)object;
+				pengrid->PenaltyConstrain(&unstable);
+				num_unstable_constraints+=unstable;
+			}
+		}
+	}
+
+	#ifdef _PARALLEL_
+	MPI_Reduce (&num_unstable_constraints,&sum_num_unstable_constraints,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
+	MPI_Bcast(&sum_num_unstable_constraints,1,MPI_INT,0,MPI_COMM_WORLD);                
+	num_unstable_constraints=sum_num_unstable_constraints;
+	#endif
+
+	/*Have we converged? : */
+	if (num_unstable_constraints==0) converged=1;
+	else converged=0;
+
+	/*Assign output pointers: */
+	*pconverged=converged;
+	*pnum_unstable_constraints=num_unstable_constraints;
+}
Index: /issm/trunk/src/c/modules/PenaltyConstraintsx/MeltingIsPresent.cpp
===================================================================
--- /issm/trunk/src/c/modules/PenaltyConstraintsx/MeltingIsPresent.cpp	(revision 4458)
+++ /issm/trunk/src/c/modules/PenaltyConstraintsx/MeltingIsPresent.cpp	(revision 4458)
@@ -0,0 +1,37 @@
+/*!\file:  MeltingIsPresent.cpp
+ * \brief
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./PenaltyConstraintsLocal.h"
+
+int MeltingIsPresent(Loads* loads,int analysis_type){
+
+	int i;
+	int found=0;
+	int mpi_found=0;
+
+	for(i=0;i<loads->Size();i++){
+		Object* object=(Object*)loads->GetObjectByOffset(i);
+		Load* load=(Load*)object;
+		if(load->InAnalysis(analysis_type)){
+			if (object->Enum()==PengridEnum){
+				found=1;
+				break;
+			}
+		}
+	}
+	
+	#ifdef _PARALLEL_
+	MPI_Reduce (&found,&mpi_found,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
+	MPI_Bcast(&mpi_found,1,MPI_INT,0,MPI_COMM_WORLD);                
+	found=mpi_found;
+	#endif
+
+	return found;
+}
Index: /issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h
===================================================================
--- /issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h	(revision 4458)
+++ /issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h	(revision 4458)
@@ -0,0 +1,29 @@
+/*!\file:  PenaltyConstraintsLocal.h
+ * \brief local header files
+ */ 
+
+#ifndef _PENALTYCONSTRAINTSLOCAL_H
+#define _PENALTYCONSTRAINTSLOCAL_H
+
+#include "../../Container/Container.h"
+#include "../../objects/objects.h"
+
+/*melting: */
+void  MeltingConstraints(Loads* loads, int* pconverged, int* pnum_unstable_constraints,int analysis_type);
+int   MeltingIsPresent(Loads* loads,int analysis_type);
+
+/*rifts: */
+int   RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int analysis_type);
+int   RiftIsPresent(Loads* loads,int analysis_type);
+int   IsPreStable(Loads* loads);
+int   SetPreStable(Loads* loads);
+int   PreConstrain(int* pnum_unstable_constraints,Loads* loads);
+int   Constrain(int* pnum_unstable_constraints,Loads* loads);
+void  FreezeConstraints(Loads* loads);
+int   MaxPenetrationInInputs(Loads* loads);
+int   PotentialUnstableConstraints(Loads* loads);
+int   IsMaterialStable(Loads* loads);
+int   IsFrozen(Loads* loads);
+
+#endif  /* _PENALTYCONSTRAINTSX_H */
+
Index: /issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp	(revision 4457)
+++ /issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp	(revision 4458)
@@ -4,5 +4,5 @@
 
 #include "./PenaltyConstraintsx.h"
-#include "./RiftConstraints.h"
+#include "./PenaltyConstraintsLocal.h"
 #include "../../shared/shared.h"
 #include "../../include/include.h"
@@ -20,5 +20,6 @@
 	int converged=0;
 	int num_unstable_constraints=0;
-	int min_mechanical_constraints=0;
+	int min_mechanical_constraints=0; 
+	int analysis_type;
 
 	/*recover parameters: */
@@ -32,9 +33,9 @@
 	/*Do we have penalties linked to rifts? In this case, run our special rifts penalty 
 	 * management routine, otherwise, skip : */
-	if (RiftIsPresent(loads)){
-		RiftConstraints(&converged,&num_unstable_constraints,loads,min_mechanical_constraints);
+	if (RiftIsPresent(loads,analysis_type)){
+		RiftConstraints(&converged,&num_unstable_constraints,loads,min_mechanical_constraints,analysis_type);
 	}
-	else if(loads->MeltingIsPresent()){
-		loads->MeltingConstraints(&converged,&num_unstable_constraints);
+	else if(MeltingIsPresent(loads,analysis_type)){
+		MeltingConstraints(loads,&converged,&num_unstable_constraints,analysis_type);
 	}
 	else{
Index: /issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.cpp
===================================================================
--- /issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.cpp	(revision 4457)
+++ /issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.cpp	(revision 4458)
@@ -3,5 +3,5 @@
  */
 
-#include "./RiftConstraints.h"
+#include "./PenaltyConstraintsLocal.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
 #include "../../include/include.h"
@@ -10,5 +10,5 @@
 #define _ZIGZAGCOUNTER_
 
-int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints){
+int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int analysis_type){
 
 	int num_unstable_constraints=0;
@@ -16,4 +16,5 @@
 	int potential;
 	extern int my_rank;
+	ISSMERROR(" check analysis_type across all routine!");
 
 	Constrain(&num_unstable_constraints,loads);
@@ -66,5 +67,5 @@
 }
 
-int RiftIsPresent(Loads* loads){
+int RiftIsPresent(Loads* loads,int analysis_type){
 
 
@@ -76,8 +77,10 @@
 	/*go though loads, and figure out if one of the loads is a Riftfront: */
 	for (i=0;i<loads->Size();i++){
-
-		if(RiftfrontEnum==loads->GetEnum(i)){
-			found=1;
-			break;
+		Load* load=(Load*)loads->GetObjectByOffset(i);
+		if(load->InAnalysis(analysis_type)){
+			if(RiftfrontEnum==loads->GetEnum(i)){
+				found=1;
+				break;
+			}
 		}
 	}
Index: sm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.h
===================================================================
--- /issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.h	(revision 4457)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/*!\file RiftConstraints.h
- * \brief: manage penalties for rifts 
- */
-
-
-#ifndef _RIFTCONSTRAINTS_H_
-#define _RIFTCONSTRAINTS_H_
-
-#include "../../objects/objects.h"
-#include "../../Container/Container.h"
-
-int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints);
-
-int RiftIsPresent(Loads* loads);
-
-int IsPreStable(Loads* loads);
-
-int SetPreStable(Loads* loads);
-
-int PreConstrain(int* pnum_unstable_constraints,Loads* loads);
-
-int Constrain(int* pnum_unstable_constraints,Loads* loads);
-
-void FreezeConstraints(Loads* loads);
-
-int MaxPenetrationInInputs(Loads* loads);
-
-int PotentialUnstableConstraints(Loads* loads);
-
-int IsMaterialStable(Loads* loads);
-
-int IsFrozen(Loads* loads);
-#endif
