Index: /issm/trunk-jpl/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Node.cpp	(revision 12534)
+++ /issm/trunk-jpl/src/c/objects/Node.cpp	(revision 12535)
@@ -57,20 +57,50 @@
 	//intialize inputs, and add as many inputs per element as requested: 
 	this->inputs=new Inputs();
-	if (iomodel->Data(MeshVertexonbedEnum))
+	if (iomodel->Data(MeshVertexonbedEnum)) {
+#ifndef _HAVE_ADOLC_
 	 this->inputs->AddInput(new BoolInput(MeshVertexonbedEnum,(IssmBool)iomodel->Data(MeshVertexonbedEnum)[io_index]));
-	if (iomodel->Data(MeshVertexonsurfaceEnum))
+#else
+	 this->inputs->AddInput(new BoolInput(MeshVertexonbedEnum,(IssmBool)((iomodel->Data(MeshVertexonbedEnum)[io_index]).getValue())));
+#endif
+	}
+	if (iomodel->Data(MeshVertexonsurfaceEnum)) {
+#ifndef _HAVE_ADOLC_
 	 this->inputs->AddInput(new BoolInput(MeshVertexonsurfaceEnum,(IssmBool)iomodel->Data(MeshVertexonsurfaceEnum)[io_index]));
-	if (iomodel->Data(MaskVertexonfloatingiceEnum))
+#else
+	 this->inputs->AddInput(new BoolInput(MeshVertexonsurfaceEnum,(IssmBool)((iomodel->Data(MeshVertexonsurfaceEnum)[io_index]).getValue())));
+#endif
+	}
+	if (iomodel->Data(MaskVertexonfloatingiceEnum)) {
+#ifndef _HAVE_ADOLC_
 	 this->inputs->AddInput(new BoolInput(MaskVertexonfloatingiceEnum,(IssmBool)iomodel->Data(MaskVertexonfloatingiceEnum)[io_index]));
-	if (iomodel->Data(MaskVertexongroundediceEnum))
-	 this->inputs->AddInput(new BoolInput(MaskVertexongroundediceEnum,(IssmBool)iomodel->Data(MaskVertexongroundediceEnum)[io_index]));
-	if (analysis_type==DiagnosticHorizAnalysisEnum)
+#else
+	 this->inputs->AddInput(new BoolInput(MaskVertexonfloatingiceEnum,(IssmBool)((iomodel->Data(MaskVertexonfloatingiceEnum)[io_index]).getValue())));
+#endif
+	}
+	if (iomodel->Data(MaskVertexongroundediceEnum)) {
+#ifndef _HAVE_ADOLC_
+	  this->inputs->AddInput(new BoolInput(MaskVertexongroundediceEnum,(IssmBool)iomodel->Data(MaskVertexongroundediceEnum)[io_index]));
+#else
+	  this->inputs->AddInput(new BoolInput(MaskVertexongroundediceEnum,(IssmBool)((iomodel->Data(MaskVertexongroundediceEnum)[io_index]).getValue())));
+#endif
+	}
+	if (analysis_type==DiagnosticHorizAnalysisEnum) {
+#ifndef _HAVE_ADOLC_
 	 this->inputs->AddInput(new IntInput(ApproximationEnum,(IssmInt)iomodel->Data(FlowequationVertexEquationEnum)[io_index]));
-	
+#else
+	 this->inputs->AddInput(new IntInput(ApproximationEnum,(IssmInt)((iomodel->Data(FlowequationVertexEquationEnum)[io_index]).getValue())));
+#endif
+	}
 	/*set single point constraints: */
 
 	/*spc all nodes on water*/
 	if (!iomodel->Data(MaskVertexonwaterEnum)) _error2_("iomodel->nodeonwater is NULL");
-	if (iomodel->Data(MaskVertexonwaterEnum)[io_index]){
+	IssmBool maskVertexOnWater;
+#ifndef _HAVE_ADOLC_
+	maskVertexOnWater=iomodel->Data(MaskVertexonwaterEnum)[io_index];
+#else
+        maskVertexOnWater=(IssmBool)((iomodel->Data(MaskVertexonwaterEnum)[io_index]).getValue());
+#endif
+	if (maskVertexOnWater){
 		for(k=1;k<=gsize;k++){
 			this->FreezeDof(k);
@@ -117,5 +147,9 @@
 		if (!iomodel->Data(FlowequationVertexEquationEnum)) _error2_("iomodel->vertices_type is NULL");
 		/*Constrain all nodes that are not Hutter*/
-		if (!iomodel->Data(FlowequationVertexEquationEnum)[io_index]==HutterApproximationEnum){
+#ifndef _HAVE_ADOLC_
+		if (!(iomodel->Data(FlowequationVertexEquationEnum)[io_index]==HutterApproximationEnum)){
+#else
+		if (!((iomodel->Data(FlowequationVertexEquationEnum)[io_index]).getValue()==HutterApproximationEnum)){
+#endif
 			for(k=1;k<=gsize;k++){
 				this->FreezeDof(k);
@@ -135,5 +169,11 @@
 			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbedEnum));
-			if (!iomodel->Data(MeshVertexonbedEnum)[io_index]){
+		        IssmBool meshVertexOnBed;
+#ifndef _HAVE_ADOLC_
+		        meshVertexOnBed=iomodel->Data(MeshVertexonbedEnum)[io_index];
+#else
+                        meshVertexOnBed=(IssmBool)((iomodel->Data(MeshVertexonbedEnum)[io_index]).getValue());
+#endif
+			if (!meshVertexOnBed){
 				for(k=1;k<=gsize;k++){
 					this->FreezeDof(k);
