Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9379)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9380)
@@ -551,5 +551,6 @@
 	HydrologyWaterVxEnum,
 	HydrologyWaterVyEnum,
-	SpcDynamicEnum
+	SpcDynamicEnum,
+	MaximumNumberOfEnums
 };
 
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9379)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9380)
@@ -494,4 +494,5 @@
 		case HydrologyWaterVyEnum : return "HydrologyWaterVy";
 		case SpcDynamicEnum : return "SpcDynamic";
+		case MaximumNumberOfEnums : return "MaximumNumberOfE";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9379)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9380)
@@ -492,4 +492,5 @@
 	else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
 	else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
+	else if (strcmp(name,"MaximumNumberOfE")==0) return MaximumNumberOfEnums;
 	else _error_("Enum %s not found",name);
 
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9379)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9380)
@@ -5184,9 +5184,9 @@
 
 	/*Control Inputs*/
-	if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){
+	if (control_analysis && iomodel->f(ControlTypeEnum)){
 		for(i=0;i<num_control_type;i++){
 			switch((int)iomodel->f(ControlTypeEnum)[i]){
 				case DhdtEnum:
-					if (iomodel->IsLoaded(DhdtEnum)){
+					if (iomodel->f(DhdtEnum)){
 						for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(DhdtEnum)[penta_vertex_ids[j]-1]/yts;
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
@@ -5196,5 +5196,5 @@
 					break;
 				case VxEnum:
-					if (iomodel->IsLoaded(VxEnum)){
+					if (iomodel->f(VxEnum)){
 						for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(VxEnum)[penta_vertex_ids[j]-1]/yts;
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
@@ -5204,5 +5204,5 @@
 					break;
 				case VyEnum:
-					if (iomodel->IsLoaded(VyEnum)){
+					if (iomodel->f(VyEnum)){
 						for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(VyEnum)[penta_vertex_ids[j]-1]/yts;
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts;
@@ -5212,5 +5212,5 @@
 					break;
 				case DragCoefficientEnum:
-					if (iomodel->IsLoaded(DragCoefficientEnum)){
+					if (iomodel->f(DragCoefficientEnum)){
 						for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(DragCoefficientEnum)[penta_vertex_ids[j]-1];
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i];
@@ -5228,5 +5228,5 @@
 
 	//Need to know the type of approximation for this element
-	if(iomodel->IsLoaded(ElementsTypeEnum)){
+	if(iomodel->f(ElementsTypeEnum)){
 		if (*(iomodel->f(ElementsTypeEnum)+index)==MacAyealApproximationEnum){
 			this->inputs->AddInput(new IntInput(ApproximationEnum,MacAyealApproximationEnum));
@@ -5259,5 +5259,5 @@
 
 	/*DatasetInputs*/
-	if (iomodel->IsLoaded(WeightsEnum)) {
+	if (iomodel->f(WeightsEnum)) {
 
 		/*Create inputs and add to DataSetInput*/
@@ -7569,5 +7569,5 @@
 			/*default vx,vy and vz: either observation or 0 */
 			if(!iomodel->f(VxEnum)){
-				if (iomodel->IsLoaded(VxObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[penta_vertex_ids[i]-1]/yts;
+				if (iomodel->f(VxObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[penta_vertex_ids[i]-1]/yts;
 				else                 for(i=0;i<6;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
@@ -7576,5 +7576,5 @@
 			}
 			if(!iomodel->f(VyEnum)){
-				if (iomodel->IsLoaded(VyObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[penta_vertex_ids[i]-1]/yts;
+				if (iomodel->f(VyObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[penta_vertex_ids[i]-1]/yts;
 				else                 for(i=0;i<6;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
@@ -7583,5 +7583,5 @@
 			}
 			if(!iomodel->f(VzEnum)){
-				if (iomodel->IsLoaded(VzObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[penta_vertex_ids[i]-1]/yts;
+				if (iomodel->f(VzObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[penta_vertex_ids[i]-1]/yts;
 				else                 for(i=0;i<6;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
@@ -7602,5 +7602,5 @@
 			if(*(iomodel->f(ElementsTypeEnum)+index)==PattynStokesApproximationEnum){
 				/*Create VzPattyn and VzStokes Enums*/
-				if(iomodel->IsLoaded(VzEnum) && iomodel->IsLoaded(NodeOnStokesEnum)){
+				if(iomodel->f(VzEnum) && iomodel->f(NodeOnStokesEnum)){
 					for(i=0;i<6;i++) nodeinputs[i]=iomodel->f(VzEnum)[penta_vertex_ids[i]-1]/yts*iomodel->f(NodeOnStokesEnum)[penta_vertex_ids[i]-1];
 					this->inputs->AddInput(new PentaVertexInput(VzStokesEnum,nodeinputs));
@@ -7616,5 +7616,5 @@
 			if(*(iomodel->f(ElementsTypeEnum)+index)==MacAyealStokesApproximationEnum){
 				/*Create VzMacAyeal and VzStokes Enums*/
-				if(iomodel->IsLoaded(VzEnum) && iomodel->IsLoaded(NodeOnStokesEnum)){
+				if(iomodel->f(VzEnum) && iomodel->f(NodeOnStokesEnum)){
 					for(i=0;i<6;i++) nodeinputs[i]=iomodel->f(VzEnum)[penta_vertex_ids[i]-1]/yts*iomodel->f(NodeOnStokesEnum)[penta_vertex_ids[i]-1];
 					this->inputs->AddInput(new PentaVertexInput(VzStokesEnum,nodeinputs));
@@ -7644,5 +7644,5 @@
 			this->inputs->AddInput(new PentaVertexInput(VyMeshEnum,nodeinputs));
 			this->inputs->AddInput(new PentaVertexInput(VzMeshEnum,nodeinputs));
-			if (iomodel->IsLoaded(TemperatureEnum) && iomodel->IsLoaded(WaterfractionEnum)) {
+			if (iomodel->f(TemperatureEnum) && iomodel->f(WaterfractionEnum)) {
 				for(i=0;i<6;i++){
 					if(iomodel->f(TemperatureEnum)[penta_vertex_ids[i]-1] < meltingpoint-beta*iomodel->f(PressureEnum)[penta_vertex_ids[i]-1]){
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9379)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9380)
@@ -3288,9 +3288,9 @@
 
 	/*Control Inputs*/
-	if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){
+	if (control_analysis && iomodel->f(ControlTypeEnum)){
 		for(i=0;i<num_control_type;i++){
 			switch((int)iomodel->f(ControlTypeEnum)[i]){
 				case DhdtEnum:
-					if (iomodel->IsLoaded(DhdtEnum)){
+					if (iomodel->f(DhdtEnum)){
 						for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(DhdtEnum)[tria_vertex_ids[j]-1]/yts;
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
@@ -3300,5 +3300,5 @@
 					break;
 				case VxEnum:
-					if (iomodel->IsLoaded(VxEnum)){
+					if (iomodel->f(VxEnum)){
 						for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(VxEnum)[tria_vertex_ids[j]-1]/yts;
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
@@ -3308,5 +3308,5 @@
 					break;
 				case VyEnum:
-					if (iomodel->IsLoaded(VyEnum)){
+					if (iomodel->f(VyEnum)){
 						for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(VyEnum)[tria_vertex_ids[j]-1]/yts;
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;
@@ -3316,5 +3316,5 @@
 					break;
 				case DragCoefficientEnum:
-					if (iomodel->IsLoaded(DragCoefficientEnum)){
+					if (iomodel->f(DragCoefficientEnum)){
 						for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(DragCoefficientEnum)[tria_vertex_ids[j]-1];
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
@@ -5272,5 +5272,5 @@
 			/*default vx,vy and vz: either observation or 0 */
 			if(!iomodel->f(VxEnum)){
-				if (iomodel->IsLoaded(VxObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[tria_vertex_ids[i]-1]/yts;
+				if (iomodel->f(VxObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[tria_vertex_ids[i]-1]/yts;
 				else                 for(i=0;i<3;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
@@ -5279,5 +5279,5 @@
 			}
 			if(!iomodel->f(VyEnum)){
-				if (iomodel->IsLoaded(VyObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[tria_vertex_ids[i]-1]/yts;
+				if (iomodel->f(VyObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[tria_vertex_ids[i]-1]/yts;
 				else                 for(i=0;i<3;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
@@ -5286,5 +5286,5 @@
 			}
 			if(!iomodel->f(VzEnum)){
-				if (iomodel->IsLoaded(VzObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[tria_vertex_ids[i]-1]/yts;
+				if (iomodel->f(VzObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[tria_vertex_ids[i]-1]/yts;
 				else                 for(i=0;i<3;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
Index: /issm/trunk/src/c/objects/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/IoModel.cpp	(revision 9379)
+++ /issm/trunk/src/c/objects/IoModel.cpp	(revision 9380)
@@ -24,4 +24,5 @@
 IoModel::IoModel(){
 	this->fid=NULL;
+	this->data=NULL;
 	this->constants=NULL;
 	
@@ -35,5 +36,4 @@
 	this->loadcounter=0;
 	this->constraintcounter=0;
-
 }
 /*}}}*/
@@ -49,5 +49,6 @@
 
 	/*Initialize data: */
-	this->data=new Parameters();
+	this->data=(double**)xmalloc(MaximumNumberOfEnums*sizeof(double*));
+	for(int i=0;i<MaximumNumberOfEnums;i++) this->data[i]=NULL;
 	
 	/*Initialize permanent data: */
@@ -69,5 +70,7 @@
 
 	delete this->constants;
-	delete this->data;
+
+	for(int i=0;i<MaximumNumberOfEnums;i++) xfree((void**)&this->data[i]);
+	xfree((void**)&this->data);
 
 	xfree((void**)&this->my_elements);
@@ -485,5 +488,8 @@
 	for(i=0; i<num; i++){
 		
-		dataenum=va_arg(ap, int); _assert_(this->data->Exist(dataenum)==false);
+		dataenum=va_arg(ap, int);
+		_assert_(dataenum<MaximumNumberOfEnums);
+		_assert_(!this->data[dataenum]);
+
 		this->FetchData(&matrix,&M,&N,dataenum);
 		if(M*N==0){
@@ -491,10 +497,6 @@
 		}
 
-
 		/*Add to this->data: */
-		this->data->AddObject(new DoubleMatParam(dataenum,matrix,M,N));
-		
-		/*Free ressources:*/
-		xfree((void**)&matrix);
+		this->data[dataenum]=matrix;
 	}
 	va_end(ap);
@@ -504,5 +506,4 @@
 /*FUNCTION IoModel::DeleteData(int num,...){{{1*/
 void  IoModel::DeleteData(int num,...){
-
 
 	va_list ap;
@@ -516,33 +517,14 @@
 	for(i = 0; i <num; i++){
 		dataenum=va_arg(ap, int);
-		parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum); 
-		if(parameter){
-			this->data->DeleteObject((Object*)parameter);
-		}
-		else{
-			/*do nothing, we did not find the data, but this is no reason to error out: */
-		}
+		_assert_(dataenum<MaximumNumberOfEnums);
+		xfree((void**)&this->data[dataenum]);
 	}
 	va_end(ap);
-
-}
-/*}}}*/
+} /*}}}*/
 /*FUNCTION IoModel::f(int dataenum){{{1*/
 double* IoModel::f(int dataenum){
 
-	DoubleMatParam* parameter=NULL;
-		
-	parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum);
-	if (parameter==NULL){
-		/*That might happen: initial velocity might be empty*/
-		return NULL;
-	}
-	return parameter->GetPointer();
-}
-/*}}}*/
-/*FUNCTION IoModel::IsLoaded(int dataenum){{{1*/
-bool IoModel::IsLoaded(int dataenum){
-
-	return this->data->Exist(dataenum);
+	_assert_(dataenum<MaximumNumberOfEnums);
+	return this->data[dataenum];
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/IoModel.h
===================================================================
--- /issm/trunk/src/c/objects/IoModel.h	(revision 9379)
+++ /issm/trunk/src/c/objects/IoModel.h	(revision 9380)
@@ -17,6 +17,6 @@
 
 	private: 
-		FILE* fid; //pointer to input file
-		Parameters *data;        //this dataset holds temporary data, memory intensive.
+		FILE    *fid; //pointer to input file
+		double **data;//this dataset holds temporary data, memory intensive.
 
 	public:
@@ -41,5 +41,4 @@
 		/*}}}*/
 		/*Input/Output:{{{1*/
-		bool  IsLoaded(int dataenum);
 		void  FetchData(bool*     pboolean,int data_enum);
 		void  FetchData(int*      pinteger,int data_enum);
Index: /issm/trunk/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 9379)
+++ /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 9380)
@@ -674,5 +674,5 @@
 
 		/*Get B*/
-		if (iomodel->IsLoaded(RheologyBEnum)) {
+		if (iomodel->f(RheologyBEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+i]-1)];
 			this->inputs->AddInput(new TriaVertexInput(RheologyBbarEnum,nodeinputs));
@@ -680,5 +680,5 @@
 
 		/*Get n*/
-		if (iomodel->IsLoaded(RheologyNEnum)) {
+		if (iomodel->f(RheologyNEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyNEnum)[index];
 			this->inputs->AddInput(new TriaVertexInput(RheologyNEnum,nodeinputs));
@@ -686,9 +686,9 @@
 
 		/*Control Inputs*/
-		if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){
+		if (control_analysis && iomodel->f(ControlTypeEnum)){
 			for(i=0;i<num_control_type;i++){
 				switch((int)iomodel->f(ControlTypeEnum)[i]){
 					case RheologyBbarEnum:
-						if (iomodel->IsLoaded(RheologyBEnum)){
+						if (iomodel->f(RheologyBEnum)){
 							_assert_(iomodel->f(RheologyBEnum));_assert_(iomodel->f(CmMinEnum)); _assert_(iomodel->f(CmMaxEnum)); 
 							for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+j]-1)];
@@ -713,5 +713,5 @@
 
 		/*Get B*/
-		if (iomodel->IsLoaded(RheologyBEnum)) {
+		if (iomodel->f(RheologyBEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+i]-1)];
 			this->inputs->AddInput(new PentaVertexInput(RheologyBEnum,nodeinputs));
@@ -719,5 +719,5 @@
 
 		/*Get n*/
-		if (iomodel->IsLoaded(RheologyNEnum)) {
+		if (iomodel->f(RheologyNEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyNEnum)[index];
 			this->inputs->AddInput(new PentaVertexInput(RheologyNEnum,nodeinputs));
@@ -725,9 +725,9 @@
 
 		/*Control Inputs*/
-		if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){
+		if (control_analysis && iomodel->f(ControlTypeEnum)){
 			for(i=0;i<num_control_type;i++){
 				switch((int)iomodel->f(ControlTypeEnum)[i]){
 					case RheologyBbarEnum:
-						if (iomodel->IsLoaded(RheologyBEnum)){
+						if (iomodel->f(RheologyBEnum)){
 							_assert_(iomodel->f(RheologyBEnum));_assert_(iomodel->f(CmMinEnum)); _assert_(iomodel->f(CmMaxEnum)); 
 							for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+j]-1)];
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 9379)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 9380)
@@ -54,8 +54,8 @@
 	//intialize inputs, and add as many inputs per element as requested: 
 	this->inputs=new Inputs();
-	if (iomodel->IsLoaded(NodeOnBedEnum))      this->inputs->AddInput(new BoolInput(NodeOnBedEnum,(IssmBool)iomodel->f(NodeOnBedEnum)[io_index]));
-	if (iomodel->IsLoaded(NodeOnSurfaceEnum))  this->inputs->AddInput(new BoolInput(NodeOnSurfaceEnum,(IssmBool)iomodel->f(NodeOnSurfaceEnum)[io_index]));
-	if (iomodel->IsLoaded(NodeOnIceShelfEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceShelfEnum,(IssmBool)iomodel->f(NodeOnIceShelfEnum)[io_index]));
-	if (iomodel->IsLoaded(NodeOnIceSheetEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceSheetEnum,(IssmBool)iomodel->f(NodeOnIceSheetEnum)[io_index]));
+	if (iomodel->f(NodeOnBedEnum))      this->inputs->AddInput(new BoolInput(NodeOnBedEnum,(IssmBool)iomodel->f(NodeOnBedEnum)[io_index]));
+	if (iomodel->f(NodeOnSurfaceEnum))  this->inputs->AddInput(new BoolInput(NodeOnSurfaceEnum,(IssmBool)iomodel->f(NodeOnSurfaceEnum)[io_index]));
+	if (iomodel->f(NodeOnIceShelfEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceShelfEnum,(IssmBool)iomodel->f(NodeOnIceShelfEnum)[io_index]));
+	if (iomodel->f(NodeOnIceSheetEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceSheetEnum,(IssmBool)iomodel->f(NodeOnIceSheetEnum)[io_index]));
 	if (iomodel->numbernodetoelementconnectivity) this->inputs->AddInput(new IntInput(NumberNodeToElementConnectivityEnum,(IssmInt)iomodel->numbernodetoelementconnectivity[io_index]));
 	if (analysis_type==DiagnosticHorizAnalysisEnum) this->inputs->AddInput(new IntInput(ApproximationEnum,(IssmInt)iomodel->f(VerticesTypeEnum)[io_index]));
@@ -64,5 +64,5 @@
 
 	/*spc all nodes on water*/
-	if (!iomodel->IsLoaded(NodeOnWaterEnum)) _error_("iomodel->nodeonwater is NULL");
+	if (!iomodel->f(NodeOnWaterEnum)) _error_("iomodel->nodeonwater is NULL");
 	if (iomodel->f(NodeOnWaterEnum)[io_index]){
 		for(k=1;k<=gsize;k++){
@@ -75,6 +75,6 @@
 		if (dim==3){
 			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
-			if (!iomodel->IsLoaded(NodeOnBedEnum)) _error_("iomodel->nodeonbed is NULL");
-			if (!iomodel->IsLoaded(VerticesTypeEnum)) _error_("iomodel->vertices_type is NULL");
+			if (!iomodel->f(NodeOnBedEnum)) _error_("iomodel->nodeonbed is NULL");
+			if (!iomodel->f(VerticesTypeEnum)) _error_("iomodel->vertices_type is NULL");
 			if (iomodel->f(VerticesTypeEnum)[io_index]==MacAyealApproximationEnum && !iomodel->f(NodeOnBedEnum)[io_index]){
 				for(k=1;k<=gsize;k++) this->FreezeDof(k);
@@ -92,5 +92,5 @@
 		}
 		/*spc all nodes on hutter*/
-		if (!iomodel->IsLoaded(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL");
+		if (!iomodel->f(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL");
 		if (iomodel->f(NodeOnHutterEnum)[io_index]){
 			for(k=1;k<=gsize;k++){
@@ -104,5 +104,5 @@
 	if (analysis_type==DiagnosticHutterAnalysisEnum){
 		/*Constrain all nodes that are not Hutter*/
-		if (!iomodel->IsLoaded(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL");
+		if (!iomodel->f(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL");
 		if (!iomodel->f(NodeOnHutterEnum)[io_index]){
 			for(k=1;k<=gsize;k++){
