Index: ../trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h =================================================================== --- ../trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h (revision 21067) +++ ../trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h (revision 21068) @@ -79,16 +79,13 @@ value = NULL; } /*}}}*/ GenericExternalResult(int in_id, int in_enum_type,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ - id = 0; - result_name = NULL; - M = 0; - N = 0; - step = 0; - time = 0; - value = in_values; _error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n"); } /*}}}*/ + GenericExternalResult(int in_id,const char* name_in,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ + _error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n"); + } + /*}}}*/ GenericExternalResult(int in_id, int in_enum_type,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/ id = in_id; value = in_value; @@ -356,6 +353,27 @@ else value=NULL; } /*}}}*/ +template <> inline GenericExternalResult::GenericExternalResult(int in_id,const char* in_result_name,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ + + id = in_id; + M = in_M; + N = in_N; + + /*Copy name*/ + this->result_name = xNew(strlen(in_result_name)+1); + xMemCpy(this->result_name,in_result_name,strlen(in_result_name)+1); + + step = in_step; + time = in_time; + + /*Copy result in values*/ + if(M*N){ + value=xNew(M*N); + xMemCpy(value,in_values,M*N); + } + else value=NULL; +} +/*}}}*/ template <> inline GenericExternalResult::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_value,int in_step, IssmDouble in_time){ /*{{{*/ _error_("you cannot initialize a GenericExternalResult without providing the dimensions of the matrix! Please use a more appropriate constructor!"); } /*}}}*/ Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 21067) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 21068) @@ -1832,7 +1832,7 @@ iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions"); if(num_cost_functions<1) _error_("No cost functions found"); cost_functions_enums=xNew(num_cost_functions); - for(int j=0;jFindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions"); if(num_cost_functions<1) _error_("No cost functions found"); cost_functions_enums=xNew(num_cost_functions); - for(int j=0;jFindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions"); if(num_cost_functions<1) _error_("No cost functions found"); cost_functions_enums=xNew(num_cost_functions); - for(int j=0;jAddObject(new GenericExternalResult(results->Size()+1,0,predictions,ninterp,1,1,0)); - results->AddObject(new GenericExternalResult(results->Size()+1,1,error,ninterp,1,1,0)); + results->AddObject(new GenericExternalResult(results->Size()+1,"predictions",predictions,ninterp,1,1,0)); + results->AddObject(new GenericExternalResult(results->Size()+1,"error",error,ninterp,1,1,0)); for(int i=0;iSize();i++){ ExternalResult* result=xDynamicCast(results->GetObjectByOffset(i)); result->WriteData(output_fid,1); Index: ../trunk-jpl/src/m/contrib/morlighem/gslib/pkriging.m =================================================================== --- ../trunk-jpl/src/m/contrib/morlighem/gslib/pkriging.m (revision 21067) +++ ../trunk-jpl/src/m/contrib/morlighem/gslib/pkriging.m (revision 21068) @@ -42,7 +42,7 @@ %Download end Download(cluster,name,{[name '.outbin']}); -structure=parseresultsfromdisk([name '.outbin'],0); +structure=parseresultsfromdisk(md,[name '.outbin'],0); delete([name '.outlog']); delete([name '.errlog']); delete([name '.outbin']); @@ -52,7 +52,7 @@ end %Process results -B=structure.(EnumToString(0)); +B=structure.predictions; B=reshape(B,size(x_interp,2),size(x_interp,1))'; -E=structure.(EnumToString(1)); +E=structure.error; E=reshape(E,size(x_interp,2),size(x_interp,1))';