Index: /issm/trunk-jpl/src/c/Container/Elements.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Elements.cpp	(revision 13789)
+++ /issm/trunk-jpl/src/c/Container/Elements.cpp	(revision 13790)
@@ -46,5 +46,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		element=(Element*)(*object);
+		element=dynamic_cast<Element*>((*object));
 		element->Configure(elements,loads,nodes,materials,parameters);
 
@@ -58,5 +58,5 @@
 	//Process results to be output in the correct units
 	for(int i=0;i<this->Size();i++){
-		Element* element=(Element*)this->GetObjectByOffset(i);
+		Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));
 		element->ProcessResultsUnits();
 	}
@@ -67,5 +67,5 @@
 
 	for (int i=0;i<this->Size();i++){
-		Element* element=(Element*)this->GetObjectByOffset(i);
+		Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));
 		element->DeleteResults();
 	}
@@ -116,5 +116,5 @@
 	for(i=0;i<this->Size();i++){
 
-		Element* element=(Element*)this->GetObjectByOffset(i);
+		Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));
 		element->PatchSize(&element_numrows,&element_numvertices,&element_numnodes);
 
@@ -141,5 +141,5 @@
 	count=0;
 	for(i=0;i<this->Size();i++){
-		Element* element=(Element*)this->GetObjectByOffset(i);
+		Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));
 		element->PatchFill(&count,patch);
 	}
@@ -156,5 +156,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		element=(Element*)(*object);
+		element=dynamic_cast<Element*>((*object));
 		element->SetCurrentConfiguration(elements,loads,nodes,materials,parameters);
 
@@ -208,5 +208,5 @@
 		if(my_rank==minrank){
 			if(this->Size()==0) _error_("Cannot write results because there is no element??");
-			Element* element=(Element*)this->GetObjectByOffset(0);
+			Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(0));
 			element->ListResultsInfo(&resultsenums,&resultssizes,&resultstimes,&resultssteps,&numberofresults);
 		}
@@ -240,5 +240,5 @@
 
 			for(int j=0;j<this->Size();j++){
-				Element* element=(Element*)this->GetObjectByOffset(j);
+				Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(j));
 				element->GetVectorFromResults(vector,i,resultsenums[i],resultssizes[i]);
 			}
@@ -314,5 +314,5 @@
 
 	for(int i=0;i<this->Size();i++){
-		Element* element=(Element*)this->GetObjectByOffset(i);
+		Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));
 		element->InputDuplicate(input_enum,output_enum);
 	}
Index: /issm/trunk-jpl/src/c/Container/Nodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Nodes.cpp	(revision 13789)
+++ /issm/trunk-jpl/src/c/Container/Nodes.cpp	(revision 13790)
@@ -46,5 +46,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		node=(Node*)(*object);
+		node=dynamic_cast<Node*>(*object);
 		node->Configure(nodes,vertices);
 
@@ -76,5 +76,5 @@
 	/*Go through objects, and distribute dofs locally, from 0 to numberofdofsperobject*/
 	for (i=0;i<this->Size();i++){
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Check that this node corresponds to our analysis currently being carried out: */
@@ -105,5 +105,5 @@
 	for (i=0;i<this->Size();i++){
 		/*Check that this node corresponds to our analysis currently being carried out: */
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 		if (node->InAnalysis(analysis_type)){
 			node->OffsetDofs(dofcount,setenum);
@@ -122,5 +122,5 @@
 
 	for (i=0;i<this->Size();i++){
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 		if (node->InAnalysis(analysis_type)){
 			node->ShowTrueDofs(truedofs,maxdofspernode,setenum);//give maxdofspernode, column size, so that nodes can index into truedofs
@@ -136,5 +136,5 @@
 	/* Now every cpu knows the true dofs of everyone else that is not a clone*/
 	for (i=0;i<this->Size();i++){
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 		if (node->InAnalysis(analysis_type)){
 			node->UpdateCloneDofs(alltruedofs,maxdofspernode,setenum);
@@ -185,5 +185,5 @@
 	for(i=0;i<this->Size();i++){
 
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Check that this node corresponds to our analysis currently being carried out: */
@@ -212,5 +212,5 @@
 	for(i=0;i<this->Size();i++){
 
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Check that this node corresponds to our analysis currently being carried out: */
@@ -242,5 +242,5 @@
 	for(i=0;i<this->Size();i++){
 
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Check that this node corresponds to our analysis currently being carried out: */
@@ -277,5 +277,5 @@
 	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
 	for(i=0;i<this->Size();i++){
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Ok, this object is a node, ask it to plug values into partition: */
@@ -304,5 +304,5 @@
 	for(i=0;i<this->Size();i++){
 
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Check that this node corresponds to our analysis currently being carried out: */
@@ -344,5 +344,5 @@
 	for(int i=0;i<this->Size();i++){
 
-		Node* node=(Node*)this->GetObjectByOffset(i);
+		Node* node=dynamic_cast<Node*>(this->GetObjectByOffset(i));
 
 		/*Check that this node corresponds to our analysis currently being carried out: */
@@ -363,5 +363,5 @@
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 
-		node=(Node*)(*object);
+		node=dynamic_cast<Node*>(*object);
 		node->SetCurrentConfiguration(nodes,vertices);
 
Index: /issm/trunk-jpl/src/c/Container/Options.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Options.h	(revision 13789)
+++ /issm/trunk-jpl/src/c/Container/Options.h	(revision 13790)
@@ -99,9 +99,6 @@
 	else{
 		/*Make a copy*/
-		char* outstring=NULL;
-		int   stringsize;
-
-		stringsize=strlen(default_value)+1;
-		outstring=xNew<char>(stringsize);
+		int   stringsize=strlen(default_value)+1;
+		char* outstring=xNew<char>(stringsize);
 		xMemCpy<char>(outstring,default_value,stringsize);
 		*pvalue=outstring;
