Changeset 3697
- Timestamp:
- 05/10/10 16:29:46 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
r3677 r3697 2 2 * \file EnumAsString.cpp: 3 3 * \brief: output string associated with enum 4 * 5 * WARNING: DO NOT MODIFY THIS FILE 6 * this file has been automatically generated by SynchronizeStrings.sh 7 * Please read README for more information 4 8 */ 5 9 … … 350 354 case StabilizeConstraintsEnum : 351 355 return "StabilizeConstraints"; 356 case PenaltyOffsetEnum : 357 return "PenaltyOffset"; 358 case OutputFileNameEnum : 359 return "OutputFileName"; 360 case DimEnum : 361 return "Dim"; 362 case IsHutterEnum : 363 return "IsHutter"; 364 case IsMacAyealPattynEnum : 365 return "IsMacAyealPattyn"; 366 case IsStokesEnum : 367 return "IsStokes"; 368 case VerboseEnum : 369 return "Verbose"; 370 case EpsCmEnum : 371 return "EpsCm"; 372 case MaxNonlinearIterationsEnum : 373 return "MaxNonlinearIterations"; 374 case YtsEnum : 375 return "Yts"; 376 case NdtEnum : 377 return "Ndt"; 378 case SparsityEnum : 379 return "Sparsity"; 380 case LowmemEnum : 381 return "Lowmem"; 382 case ConnectivityEnum : 383 return "Connectivity"; 384 case BetaEnum : 385 return "Beta"; 386 case MeltingPointEnum : 387 return "MeltingPoint"; 388 case LatentHeatEnum : 389 return "LatentHeat"; 390 case HeatCapacityEnum : 391 return "HeatCapacity"; 392 case PenaltyMeltingEnum : 393 return "PenaltyMelting"; 394 case MinThermalConstraintsEnum : 395 return "MinThermalConstraints"; 396 case MinMechanicalConstraintsEnum : 397 return "MinMechanicalConstraints"; 398 case WaitOnLockEnum : 399 return "WaitOnLock"; 400 case SolverStringEnum : 401 return "SolverString"; 402 case NumberOfVerticesEnum : 403 return "NumberOfVertices"; 404 case NumberOfNodesEnum : 405 return "NumberOfNodes"; 406 case NumberOfElementsEnum : 407 return "NumberOfElements"; 408 case NumberOfDofsPerNodeEnum : 409 return "NumberOfDofsPerNode"; 410 case NumRiftsEnum : 411 return "NumRifts"; 412 case NumOutputEnum : 413 return "NumOutput"; 414 case ParameterOutputEnum : 415 return "ParameterOutput"; 416 case ExtrudeParamEnum : 417 return "ExtrudeParam"; 418 case ControlSteadyEnum : 419 return "ControlSteady"; 420 case TolXEnum : 421 return "TolX"; 422 case CmMinEnum : 423 return "CmMin"; 424 case CmMaxEnum : 425 return "CmMax"; 426 case CmGradientEnum : 427 return "CmGradient"; 428 case CmJumpEnum : 429 return "CmJump"; 430 case OptScalEnum : 431 return "OptScal"; 432 case MaxIterEnum : 433 return "MaxIter"; 434 case ControlParameterEnum : 435 return "ControlParameter"; 436 case QmuAnalysisEnum : 437 return "QmuAnalysis"; 438 case QmuInNameEnum : 439 return "QmuInName"; 440 case QmuOutNameEnum : 441 return "QmuOutName"; 442 case QmuErrNameEnum : 443 return "QmuErrName"; 444 case QmuNPartEnum : 445 return "QmuNPart"; 446 case QmuPartEnum : 447 return "QmuPart"; 448 case VariableDescriptorsEnum : 449 return "VariableDescriptors"; 450 case ResponseDescriptorsEnum : 451 return "ResponseDescriptors"; 452 case DakotaParameterEnum : 453 return "DakotaParameter"; 352 454 default : 353 455 ISSMERROR("Enum %i not found",en); -
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r3675 r3697 212 212 StokesReconditioningEnum, 213 213 StabilizeConstraintsEnum, 214 PenaltyOffsetEnum 214 PenaltyOffsetEnum, 215 /*}}}*/ 216 /*Parameters{{{1*/ 217 OutputFileNameEnum, 218 DimEnum, 219 IsHutterEnum, 220 IsMacAyealPattynEnum, 221 IsStokesEnum, 222 VerboseEnum, 223 EpsRes, 224 EpsRel, 225 EpsAbs, 226 EpsCmEnum, 227 MaxNonlinearIterationsEnum, 228 YtsEnum, 229 NdtEnum, 230 SparsityEnum, 231 LowmemEnum, 232 ConnectivityEnum, 233 BetaEnum, 234 MeltingPointEnum, 235 LatentHeatEnum, 236 HeatCapacityEnum, 237 PenaltyMeltingEnum, 238 MinThermalConstraintsEnum, 239 MinMechanicalConstraintsEnum, 240 WaitOnLockEnum, 241 SolverStringEnum, 242 NumberOfVerticesEnum, 243 NumberOfNodesEnum, 244 NumberOfElementsEnum, 245 NumberOfDofsPerNodeEnum, 246 NumRiftsEnum, 247 NumOutputEnum, 248 ParameterOutputEnum, 249 ExtrudeParamEnum, 250 ControlSteadyEnum, 251 NSteps, 252 TolXEnum, 253 CmMinEnum, 254 CmMaxEnum, 255 CmGradientEnum, 256 CmJumpEnum, 257 OptScalEnum, 258 MaxIterEnum, 259 ControlParameterEnum, 260 QmuAnalysisEnum, 261 QmuInNameEnum, 262 QmuOutNameEnum, 263 QmuErrNameEnum, 264 QmuNPartEnum, 265 QmuPartEnum, 266 VariableDescriptorsEnum, 267 ResponseDescriptorsEnum, 268 DakotaParameterEnum, 269 QmuMassFluxSegmentsEnum 215 270 /*}}}*/ 216 271 -
issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
r3677 r3697 2 2 * \file StringAsEnum.cpp: 3 3 * \brief: output enum associated with string 4 * 5 * WARNING: DO NOT MODIFY THIS FILE 6 * this file has been automatically generated by SynchronizeStrings.sh 7 * Please read README for more information 4 8 */ 5 9 … … 179 183 else if (strcmp(name,"StokesReconditioning")==0) return StokesReconditioningEnum; 180 184 else if (strcmp(name,"StabilizeConstraints")==0) return StabilizeConstraintsEnum; 185 else if (strcmp(name,"PenaltyOffset")==0) return PenaltyOffsetEnum; 186 else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum; 187 else if (strcmp(name,"Dim")==0) return DimEnum; 188 else if (strcmp(name,"IsHutter")==0) return IsHutterEnum; 189 else if (strcmp(name,"IsMacAyealPattyn")==0) return IsMacAyealPattynEnum; 190 else if (strcmp(name,"IsStokes")==0) return IsStokesEnum; 191 else if (strcmp(name,"Verbose")==0) return VerboseEnum; 192 else if (strcmp(name,"EpsCm")==0) return EpsCmEnum; 193 else if (strcmp(name,"MaxNonlinearIterations")==0) return MaxNonlinearIterationsEnum; 194 else if (strcmp(name,"Yts")==0) return YtsEnum; 195 else if (strcmp(name,"Ndt")==0) return NdtEnum; 196 else if (strcmp(name,"Sparsity")==0) return SparsityEnum; 197 else if (strcmp(name,"Lowmem")==0) return LowmemEnum; 198 else if (strcmp(name,"Connectivity")==0) return ConnectivityEnum; 199 else if (strcmp(name,"Beta")==0) return BetaEnum; 200 else if (strcmp(name,"MeltingPoint")==0) return MeltingPointEnum; 201 else if (strcmp(name,"LatentHeat")==0) return LatentHeatEnum; 202 else if (strcmp(name,"HeatCapacity")==0) return HeatCapacityEnum; 203 else if (strcmp(name,"PenaltyMelting")==0) return PenaltyMeltingEnum; 204 else if (strcmp(name,"MinThermalConstraints")==0) return MinThermalConstraintsEnum; 205 else if (strcmp(name,"MinMechanicalConstraints")==0) return MinMechanicalConstraintsEnum; 206 else if (strcmp(name,"WaitOnLock")==0) return WaitOnLockEnum; 207 else if (strcmp(name,"SolverString")==0) return SolverStringEnum; 208 else if (strcmp(name,"NumberOfVertices")==0) return NumberOfVerticesEnum; 209 else if (strcmp(name,"NumberOfNodes")==0) return NumberOfNodesEnum; 210 else if (strcmp(name,"NumberOfElements")==0) return NumberOfElementsEnum; 211 else if (strcmp(name,"NumberOfDofsPerNode")==0) return NumberOfDofsPerNodeEnum; 212 else if (strcmp(name,"NumRifts")==0) return NumRiftsEnum; 213 else if (strcmp(name,"NumOutput")==0) return NumOutputEnum; 214 else if (strcmp(name,"ParameterOutput")==0) return ParameterOutputEnum; 215 else if (strcmp(name,"ExtrudeParam")==0) return ExtrudeParamEnum; 216 else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum; 217 else if (strcmp(name,"TolX")==0) return TolXEnum; 218 else if (strcmp(name,"CmMin")==0) return CmMinEnum; 219 else if (strcmp(name,"CmMax")==0) return CmMaxEnum; 220 else if (strcmp(name,"CmGradient")==0) return CmGradientEnum; 221 else if (strcmp(name,"CmJump")==0) return CmJumpEnum; 222 else if (strcmp(name,"OptScal")==0) return OptScalEnum; 223 else if (strcmp(name,"MaxIter")==0) return MaxIterEnum; 224 else if (strcmp(name,"ControlParameter")==0) return ControlParameterEnum; 225 else if (strcmp(name,"QmuAnalysis")==0) return QmuAnalysisEnum; 226 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 227 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 228 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 229 else if (strcmp(name,"QmuNPart")==0) return QmuNPartEnum; 230 else if (strcmp(name,"QmuPart")==0) return QmuPartEnum; 231 else if (strcmp(name,"VariableDescriptors")==0) return VariableDescriptorsEnum; 232 else if (strcmp(name,"ResponseDescriptors")==0) return ResponseDescriptorsEnum; 233 else if (strcmp(name,"DakotaParameter")==0) return DakotaParameterEnum; 181 234 else ISSMERROR("Enum %i not found",en); 182 } 235 236 } -
issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateParametersBalancedthickness.cpp
r3673 r3697 11 11 void CreateParametersBalancedthickness(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 12 12 13 Param* param = NULL;14 Parameters* parameters=NULL;15 int count;16 int i;17 double* u_g=NULL;18 19 /*recover parameters : */20 parameters=*pparameters;21 22 count=parameters->Size();23 24 /*Get vx and vy: */25 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");26 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");27 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");28 29 u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));30 31 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=iomodel->vx[i]/iomodel->yts;32 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=iomodel->vy[i]/iomodel->yts;33 if(iomodel->vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=iomodel->vz[i]/iomodel->yts;34 35 count++;36 param= new Param(count,"u_g",DOUBLEVEC);37 param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);38 parameters->AddObject(param);39 40 41 xfree((void**)&iomodel->vx);42 xfree((void**)&iomodel->vy);43 xfree((void**)&iomodel->vz);44 xfree((void**)&u_g);45 46 /*Get melting_rate: */47 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");48 if(iomodel->melting_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts;49 50 count++;51 param= new Param(count,"m_g",DOUBLEVEC);52 if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices,1);53 else param->SetDoubleVec(iomodel->melting_rate,0,1);54 parameters->AddObject(param);55 56 /*Free melting_rate: */57 xfree((void**)&iomodel->melting_rate);58 59 /*Get accumulation_rate: */60 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");61 if(iomodel->accumulation_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->accumulation_rate[i]=iomodel->accumulation_rate[i]/iomodel->yts;62 63 count++;64 param= new Param(count,"a_g",DOUBLEVEC);65 if(iomodel->accumulation_rate) param->SetDoubleVec(iomodel->accumulation_rate,iomodel->numberofvertices,1);66 else param->SetDoubleVec(iomodel->accumulation_rate,0,0);67 parameters->AddObject(param);68 69 /*Free accumulation_rate: */70 xfree((void**)&iomodel->accumulation_rate);71 72 /*Assign output pointer: */73 *pparameters=parameters;74 13 } -
issm/trunk/src/c/ModelProcessorx/Balancedthickness2/CreateParametersBalancedthickness2.cpp
r3673 r3697 12 12 void CreateParametersBalancedthickness2(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 13 13 14 Param* param = NULL;15 Parameters* parameters=NULL;16 int count;17 int i;18 int dim;19 double* vx_g=NULL;20 double* vy_g=NULL;21 22 /*recover parameters : */23 parameters=*pparameters;24 25 count=parameters->Size();26 27 /*Get vx and vy: */28 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");29 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");30 31 vx_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));32 vy_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));33 34 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)vx_g[i]=iomodel->vx[i]/iomodel->yts;35 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)vy_g[i]=iomodel->vy[i]/iomodel->yts;36 37 count++;38 param= new Param(count,"vx_g",DOUBLEVEC);39 param->SetDoubleVec(vx_g,iomodel->numberofvertices,1);40 parameters->AddObject(param);41 count++;42 param= new Param(count,"vy_g",DOUBLEVEC);43 param->SetDoubleVec(vy_g,iomodel->numberofvertices,1);44 parameters->AddObject(param);45 46 xfree((void**)&iomodel->vx);47 xfree((void**)&iomodel->vy);48 xfree((void**)&vx_g);49 xfree((void**)&vy_g);50 51 /*Get thickness: */52 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");53 54 count++;55 param= new Param(count,"h_g",DOUBLEVEC);56 if(iomodel->thickness) param->SetDoubleVec(iomodel->thickness,iomodel->numberofvertices,1);57 else param->SetDoubleVec(iomodel->thickness,0,0);58 parameters->AddObject(param);59 60 /*Free thickness: */61 xfree((void**)&iomodel->thickness);62 63 /*Get dhdt: */64 IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt");65 if(iomodel->dhdt) for(i=0;i<iomodel->numberofvertices;i++)iomodel->dhdt[i]=iomodel->dhdt[i]/iomodel->yts;66 67 count++;68 param= new Param(count,"dhdt_g",DOUBLEVEC);69 if(iomodel->dhdt) param->SetDoubleVec(iomodel->dhdt,iomodel->numberofvertices,1);70 else param->SetDoubleVec(iomodel->dhdt,0,1);71 parameters->AddObject(param);72 73 /*Free dhdt: */74 xfree((void**)&iomodel->dhdt);75 76 /*Get melting_rate: */77 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");78 if(iomodel->melting_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts;79 80 count++;81 param= new Param(count,"m_g",DOUBLEVEC);82 if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices,1);83 else param->SetDoubleVec(iomodel->melting_rate,0,1);84 parameters->AddObject(param);85 86 /*Free melting_rate: */87 xfree((void**)&iomodel->melting_rate);88 89 /*Get accumulation_rate: */90 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");91 if(iomodel->accumulation_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->accumulation_rate[i]=iomodel->accumulation_rate[i]/iomodel->yts;92 93 count++;94 param= new Param(count,"a_g",DOUBLEVEC);95 if(iomodel->accumulation_rate) param->SetDoubleVec(iomodel->accumulation_rate,iomodel->numberofvertices,1);96 else param->SetDoubleVec(iomodel->accumulation_rate,0,0);97 parameters->AddObject(param);98 99 /*Free accumulation_rate: */100 xfree((void**)&iomodel->accumulation_rate);101 102 /*Assign output pointer: */103 *pparameters=parameters;104 14 } -
issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateParametersBalancedvelocities.cpp
r3673 r3697 12 12 void CreateParametersBalancedvelocities(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 13 13 14 Param* param = NULL;15 Parameters* parameters=NULL;16 int count;17 int i;18 double* u_g=NULL;19 20 /*recover parameters : */21 parameters=*pparameters;22 23 count=parameters->Size();24 25 /*Get vx and vy: */26 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");27 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");28 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");29 30 u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));31 32 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=iomodel->vx[i]/iomodel->yts;33 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=iomodel->vy[i]/iomodel->yts;34 if(iomodel->vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=iomodel->vz[i]/iomodel->yts;35 36 count++;37 param= new Param(count,"u_g",DOUBLEVEC);38 param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);39 parameters->AddObject(param);40 41 xfree((void**)&iomodel->vx);42 xfree((void**)&iomodel->vy);43 xfree((void**)&iomodel->vz);44 xfree((void**)&u_g);45 46 /*Get thickness: */47 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");48 49 count++;50 param= new Param(count,"h_g",DOUBLEVEC);51 if(iomodel->thickness) param->SetDoubleVec(iomodel->thickness,iomodel->numberofvertices,1);52 else param->SetDoubleVec(iomodel->thickness,0,0);53 parameters->AddObject(param);54 55 /*Free thickness: */56 xfree((void**)&iomodel->thickness);57 58 /*Get melting_rate: */59 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");60 if(iomodel->melting_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts;61 62 count++;63 param= new Param(count,"m_g",DOUBLEVEC);64 if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices,1);65 else param->SetDoubleVec(iomodel->melting_rate,0,1);66 parameters->AddObject(param);67 68 /*Free melting_rate: */69 xfree((void**)&iomodel->melting_rate);70 71 /*Get accumulation_rate: */72 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");73 if(iomodel->accumulation_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->accumulation_rate[i]=iomodel->accumulation_rate[i]/iomodel->yts;74 75 count++;76 param= new Param(count,"a_g",DOUBLEVEC);77 if(iomodel->accumulation_rate) param->SetDoubleVec(iomodel->accumulation_rate,iomodel->numberofvertices,1);78 else param->SetDoubleVec(iomodel->accumulation_rate,0,0);79 parameters->AddObject(param);80 81 /*Free accumulation_rate: */82 xfree((void**)&iomodel->accumulation_rate);83 84 85 /*Assign output pointer: */86 *pparameters=parameters;87 14 } -
issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
r3673 r3697 14 14 15 15 int i; 16 double* control_parameter=NULL; 16 17 17 18 Parameters* parameters=NULL; 18 Param* param = NULL;19 int count;20 21 double* param_g=NULL;22 double* u_g_obs=NULL;23 double* control_parameter=NULL;24 19 25 20 /*Get parameters: */ 26 21 parameters=*pparameters; 27 count=parameters->Size();28 22 29 //control analysis? 30 count++; 31 param= new Param(count,"control_analysis",DOUBLE); 32 param->SetDouble(iomodel->control_analysis); 33 parameters->AddObject(param); 34 23 parameters->AddObject(new BoolParam(ControlAnalysisEnum,iomodel->control_analysis)); 35 24 if(iomodel->control_analysis){ 25 parameters->AddObject(new StringParam(ControlTypeEnum,iomodel->control_type)); 36 26 37 /*control_type: */ 38 count++; 39 param= new Param(count,"control_type",STRING); 40 param->SetString(iomodel->control_type); 41 parameters->AddObject(param); 27 if (strcmp(iomodel->control_type,"drag")==0) 28 parameters->AddObject(new BoolParam(ExtrudeParamEnum,false)); 29 else if (strcmp(iomodel->control_type,"B")==0) 30 parameters->AddObject(new BoolParam(ExtrudeParamEnum,true)); 31 else 32 ISSMERROR("control_type %s not supported yet!",iomodel->control_type); 42 33 43 /*extrude_param: */ 44 count++; 45 param= new Param(count,"extrude_param",DOUBLE); 46 if (strcmp(iomodel->control_type,"drag")==0) param->SetDouble(0); 47 else if (strcmp(iomodel->control_type,"B")==0) param->SetDouble(1); 48 else ISSMERROR("control_type %s not supported yet!",iomodel->control_type); 49 parameters->AddObject(param); 50 51 /*control_steady: */ 52 count++; 53 param= new Param(count,"control_steady",DOUBLE); 54 param->SetDouble(0); 55 parameters->AddObject(param); 56 57 /*nsteps: */ 58 count++; 59 param= new Param(count,"nsteps",DOUBLE); 60 param->SetDouble(iomodel->nsteps); 61 parameters->AddObject(param); 62 63 /*tolx: */ 64 count++; 65 param= new Param(count,"tolx",DOUBLE); 66 param->SetDouble(iomodel->tolx); 67 parameters->AddObject(param); 68 69 /*eps_cm: */ 70 count++; 71 param= new Param(count,"eps_cm",DOUBLE); 72 param->SetDouble(iomodel->eps_cm); 73 parameters->AddObject(param); 74 75 /*meanvel: */ 76 count++; 77 param= new Param(count,"meanvel",DOUBLE); 78 param->SetDouble(iomodel->meanvel); 79 parameters->AddObject(param); 80 81 /*cm_noisedmp: */ 82 count++; 83 param= new Param(count,"cm_noisedmp",DOUBLE); 84 param->SetDouble(iomodel->cm_noisedmp); 85 parameters->AddObject(param); 86 87 /*cm_mindmp_value: */ 88 count++; 89 param= new Param(count,"cm_mindmp_value",DOUBLE); 90 param->SetDouble(iomodel->cm_mindmp_value); 91 parameters->AddObject(param); 92 93 /*cm_mindmp_slope: */ 94 count++; 95 param= new Param(count,"cm_mindmp_slope",DOUBLE); 96 param->SetDouble(iomodel->cm_mindmp_slope); 97 parameters->AddObject(param); 98 99 /*cm_maxdmp_value: */ 100 count++; 101 param= new Param(count,"cm_maxdmp_value",DOUBLE); 102 param->SetDouble(iomodel->cm_maxdmp_value); 103 parameters->AddObject(param); 104 105 /*cm_maxdmp_slope: */ 106 count++; 107 param= new Param(count,"cm_maxdmp_slope",DOUBLE); 108 param->SetDouble(iomodel->cm_maxdmp_slope); 109 parameters->AddObject(param); 110 111 /*cm_min: */ 112 count++; 113 param= new Param(count,"cm_min",DOUBLE); 114 param->SetDouble(iomodel->cm_min); 115 parameters->AddObject(param); 116 117 /*cm_max: */ 118 count++; 119 param= new Param(count,"cm_max",DOUBLE); 120 param->SetDouble(iomodel->cm_max); 121 parameters->AddObject(param); 122 123 /*cm_gradient: */ 124 count++; 125 param= new Param(count,"cm_gradient",DOUBLE); 126 param->SetDouble(iomodel->cm_gradient); 127 parameters->AddObject(param); 34 parameters->AddObject(new BoolParam(ControlSteadyEnum,false)); 35 parameters->AddObject(new IntParam(NSteps,iomodel->nsteps)); 36 parameters->AddObject(new DoubleParam(TolXEnum,iomodel->tolx)); 37 parameters->AddObject(new DoubleParam(EpsCmEnum,iomodel->eps_cm)); 38 parameters->AddObject(new DoubleParam(MeanVelEnum,iomodel->meanvel)); 39 parameters->AddObject(new DoubleParam(CmNoiseDmpEnum,iomodel->cm_noisedmp)); 40 parameters->AddObject(new DoubleParam(CmMinDmpValueEnum,iomodel->cm_mindmp_value)); 41 parameters->AddObject(new DoubleParam(CmMinDmpSlopeEnum,iomodel->cm_mindmp_slope)); 42 parameters->AddObject(new DoubleParam(CmMaxDmpValueEnum,iomodel->cm_maxdmp_value)); 43 parameters->AddObject(new DoubleParam(CmMaxDmpSlopeEnum,iomodel->cm_maxdmp_slope)); 44 parameters->AddObject(new DoubleParam(CmMinEnum,iomodel->cm_min)); 45 parameters->AddObject(new DoubleParam(CmMaxEnum,iomodel->cm_max)); 46 parameters->AddObject(new BoolParam(CmGradientEnum,iomodel->cm_gradient)); 128 47 129 48 /*Now, recover fit, optscal and maxiter as vectors: */ … … 133 52 IoModelFetchData(&iomodel->maxiter,NULL,NULL,iomodel_handle,"maxiter"); 134 53 135 count++; 136 param= new Param(count,"fit",DOUBLEVEC); 137 param->SetDoubleVec(iomodel->fit,iomodel->nsteps); 138 parameters->AddObject(param); 139 140 count++; 141 param= new Param(count,"cm_jump",DOUBLEVEC); 142 param->SetDoubleVec(iomodel->cm_jump,iomodel->nsteps); 143 parameters->AddObject(param); 144 145 count++; 146 param= new Param(count,"optscal",DOUBLEVEC); 147 param->SetDoubleVec(iomodel->optscal,iomodel->nsteps); 148 parameters->AddObject(param); 149 150 count++; 151 param= new Param(count,"maxiter",DOUBLEVEC); 152 param->SetDoubleVec(iomodel->maxiter,iomodel->nsteps); 153 parameters->AddObject(param); 54 parameters->AddObject(new DoubleVecParam(FitEnum,iomodel->fit,iomodel->nsteps)); 55 parameters->AddObject(new DoubleVecParam(CmJumpEnum,iomodel->cm_jump,iomodel->nsteps)); 56 parameters->AddObject(new DoubleVecParam(OptScalEnum,iomodel->optscal,iomodel->nsteps)); 57 parameters->AddObject(new DoubleVecParam(MaxIterEnum,iomodel->maxiter,iomodel->nsteps)); 154 58 155 59 xfree((void**)&iomodel->fit); … … 158 62 xfree((void**)&iomodel->maxiter); 159 63 160 /*Now, recover weights as vectors: */161 IoModelFetchData(&iomodel->weights,NULL,NULL,iomodel_handle,"weights");162 163 count++;164 param= new Param(count,"weights",DOUBLEVEC);165 param->SetDoubleVec(iomodel->weights,iomodel->numberofvertices);166 parameters->AddObject(param);167 168 xfree((void**)&iomodel->weights);169 170 /*Get vx, vx_obs, vy, vy_obs, and the parameter value: */171 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");172 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");173 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");174 IoModelFetchData(&iomodel->vx_obs,NULL,NULL,iomodel_handle,"vx_obs");175 IoModelFetchData(&iomodel->vy_obs,NULL,NULL,iomodel_handle,"vy_obs");176 64 IoModelFetchData(&control_parameter,NULL,NULL,iomodel_handle,iomodel->control_type); 177 178 u_g_obs=(double*)xcalloc(iomodel->numberofvertices*2,sizeof(double)); 179 if(iomodel->vx_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+0]=iomodel->vx_obs[i]/iomodel->yts; 180 if(iomodel->vy_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+1]=iomodel->vy_obs[i]/iomodel->yts; 181 182 count++; 183 param= new Param(count,"u_g_obs",DOUBLEVEC); 184 param->SetDoubleVec(u_g_obs,2*iomodel->numberofvertices,2); 185 parameters->AddObject(param); 186 187 param_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double)); 188 for(i=0;i<iomodel->numberofvertices;i++)param_g[i]=control_parameter[i]; 189 190 count++; 191 param= new Param(count,"param_g",DOUBLEVEC); 192 param->SetDoubleVec(param_g,iomodel->numberofvertices,1); 193 parameters->AddObject(param); 194 195 xfree((void**)&iomodel->vx); 196 xfree((void**)&iomodel->vy); 197 xfree((void**)&iomodel->vz); 198 xfree((void**)&iomodel->vx_obs); 199 xfree((void**)&iomodel->vy_obs); 200 xfree((void**)&u_g_obs); 201 xfree((void**)¶m_g); 65 parameters->AddObject(new DoubleVecParam(ControlParameterEnum,control_parameter,iomodel->nsteps)); 202 66 xfree((void**)&control_parameter); 203 67 } -
issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp
r3686 r3697 15 15 16 16 Parameters* parameters = NULL; 17 Param* param = NULL;18 int count=0;19 17 int numberofdofspernode; 20 int dim;21 18 char** parameteroutput=NULL; 22 19 char* descriptor=NULL; … … 28 25 29 26 /*Initialize dataset: */ 30 parameters 27 parameters = new Parameters(ParametersEnum); 31 28 32 //outputfilename 33 parameters->AddObject(new StringParam(OutputFileNameEnum,iomodel->outputfilename)); 34 35 //dimension 2d or 3d: 36 if (strcmp(iomodel->meshtype,"2d")==0)dim=2; 37 else dim=3; 29 if (strcmp(iomodel->meshtype,"2d")==0) parameters->AddObject(new IntParam(DimEnum,2)); 30 else parameters->AddObject(new IntParam(DimEnum,3)); 31 parameters->AddObject(new StringParam(OutputFileNameEnum,iomodel->outputfilename)); 32 parameters->AddObject(new BoolParam(IsHutterEnum,iomodel->ishutter)); 33 parameters->AddObject(new BoolParam(IsMacAyealPattynEnum,iomodel->ismacayealpattyn)); 34 parameters->AddObject(new BoolParam(IsStokesEnum,iomodel->isstokes)); 35 parameters->AddObject(new BoolParam(VerboseEnum,iomodel->verbose)); 36 parameters->AddObject(new DoubleParam(EpsResEnum,iomodel->eps_res)); 37 parameters->AddObject(new DoubleParam(EpsRelEnum,iomodel->eps_rel)); 38 parameters->AddObject(new DoubleParam(EpsAbsEnum,iomodel->eps_abs)); 39 parameters->AddObject(new DoubleParam(MaxNonlinearIterationsEnum,iomodel->max_nonlinear_iterations)); 40 parameters->AddObject(new DoubleParam(EpsVelEnum,iomodel->epsvel)); 41 parameters->AddObject(new DoubleParam(YtsEnum,iomodel->yts)); 42 parameters->AddObject(new DoubleParam(DtEnum,iomodel->dt)); 43 parameters->AddObject(new DoubleParam(NdtEnum,iomodel->ndt)); 44 parameters->AddObject(new DoubleParam(PenaltyOffsetEnum,iomodel->penalty_offset)); 45 parameters->AddObject(new DoubleParam(SparsityEnum,iomodel->sparsity)); 46 parameters->AddObject(new BoolParam(LowmemEnum,iomodel->lowmem)); 47 parameters->AddObject(new DoubleParam(ConnectivityEnum,iomodel->connectivity)); 48 parameters->AddObject(new DoubleParam(BetaEnum,iomodel->beta)); 49 parameters->AddObject(new DoubleParam(MeltingPointEnum,iomodel->meltingpoint)); 50 parameters->AddObject(new DoubleParam(LatentHeatEnum,iomodel->latentheat)); 51 parameters->AddObject(new DoubleParam(HeatCapacityEnum,iomodel->heatcapacity)); 52 parameters->AddObject(new BoolParam(ArtDiffEnum,iomodel->artdiff)); 53 parameters->AddObject(new DoubleParam(PenaltyMeltingEnum,iomodel->penalty_melting)); 54 parameters->AddObject(new IntParam(MinThermalConstraintsEnum,iomodel->min_thermal_constraints)); 55 parameters->AddObject(new IntParam(StabilizeConstraintsEnum,iomodel->stabilize_constraints)); 56 parameters->AddObject(new DoubleParam(StokesReconditioningEnum,iomodel->stokesreconditioning)); 57 parameters->AddObject(new DoubleParam(ViscosityOvershootEnum,iomodel->viscosity_overshoot)); 58 parameters->AddObject(new BoolParam(WaitOnLockEnum,iomodel->waitonlock)); 59 parameters->AddObject(new StringParam(SolverStringEnum,iomodel->solverstring)); 60 parameters->AddObject(new IntParam(NumberOfVerticesEnum,iomodel->numberofvertices)); 61 parameters->AddObject(new IntParam(NumberOfElementsEnum,iomodel->numberofelements)); 38 62 39 parameters->AddObject(new DoubleParam(DimEnum,dim); 40 41 //elements types 42 parameters->AddObject(new DoubleParam(IsHutterEnum,iomodel->ishutter)); 43 parameters->AddObject(new DoubleParam(IsMacAyealPattynEnum,iomodel->ismacayealpattyn)); 44 parameters->AddObject(new DoubleParam(IsStokesEnum,iomodel->isstokes)); 45 parameters->AddObject(new DoubleParam(VerboseEnum,iomodel->verbose)); 46 47 /*eps_res: */ 48 parameters->AddObject(new DoubleParam(EpsResEnum,iomodel->eps_res)); 49 50 /*eps_rel: */ 51 parameters->AddObject(new DoubleParam(EpsRelEnum,iomodel->eps_rel)); 52 53 /*eps_abs: */ 54 parameters->AddObject(new DoubleParam(EpsAbsEnum,iomodel->eps_abs)); 55 56 /*max_nonlinear_iterations: */ 57 parameters->AddObject(new DoubleParam(MaxNonlinearIterationsEnum,iomodel->max_nonlinear_iterations)); 58 59 /*yts: */ 60 parameters->AddObject(new DoubleParam(YtsEnum,iomodel->yts)); 61 62 /*dt: */ 63 parameters->AddObject(new DoubleParam(DtEnum,iomodel->dt)); 64 65 /*ndt: */ 66 parameters->AddObject(new DoubleParam(NdtEnum,iomodel->ndt)); 67 68 /*penalty_offset: */ 69 parameters->AddObject(new DoubleParam(PenaltyOffsetEnum,iomodel->penalty_offset)); 70 71 /*sparsity: */ 72 parameters->AddObject(new DoubleParam(SparsityEnum,iomodel->sparsity)); 73 74 /*lowmem: */ 75 parameters->AddObject(new DoubleParam(LowmemEnum,iomodel->lowmem)); 76 77 /*connectivity: */ 78 parameters->AddObject(new DoubleParam(ConnectivityEnum,iomodel->connectivity)); 79 80 /*beta: */ 81 parameters->AddObject(new DoubleParam(BetaEnum,iomodel->beta)); 82 83 /*meltingpoint: */ 84 parameters->AddObject(new DoubleParam(BetaEnum,iomodel->beta)); 85 count++; 86 param= new Param(count,"meltingpoint",DOUBLE); 87 param->SetDouble(iomodel->meltingpoint); 88 parameters->AddObject(param); 89 90 /*latentheat: */ 91 count++; 92 param= new Param(count,"latentheat",DOUBLE); 93 param->SetDouble(iomodel->latentheat); 94 parameters->AddObject(param); 95 96 /*heatcapacity: */ 97 count++; 98 param= new Param(count,"heatcapacity",DOUBLE); 99 param->SetDouble(iomodel->heatcapacity); 100 parameters->AddObject(param); 101 102 /*artdiff: */ 103 count++; 104 param= new Param(count,"artdiff",DOUBLE); 105 param->SetDouble(iomodel->artdiff); 106 parameters->AddObject(param); 107 108 /*penalty_melting: */ 109 count++; 110 param= new Param(count,"penalty_melting",DOUBLE); 111 param->SetDouble(iomodel->penalty_melting); 112 parameters->AddObject(param); 113 114 /*min_thermal_constraints: */ 115 count++; 116 param= new Param(count,"min_thermal_constraints",DOUBLE); 117 param->SetDouble(iomodel->min_thermal_constraints); 118 parameters->AddObject(param); 119 120 /*min_mechanical_constraints: */ 121 count++; 122 param= new Param(count,"min_mechanical_constraints",DOUBLE); 123 param->SetDouble(iomodel->min_mechanical_constraints); 124 parameters->AddObject(param); 125 126 /*stabilize_constraints: */ 127 count++; 128 param= new Param(count,"stabilize_constraints",DOUBLE); 129 param->SetDouble(iomodel->stabilize_constraints); 130 parameters->AddObject(param); 131 132 /*stokesreconditioning: */ 133 count++; 134 param= new Param(count,"stokesreconditioning",DOUBLE); 135 param->SetDouble(iomodel->stokesreconditioning); 136 parameters->AddObject(param); 137 138 /*viscosity_overshoot: */ 139 count++; 140 param= new Param(count,"viscosity_overshoot",DOUBLE); 141 param->SetDouble(iomodel->viscosity_overshoot); 142 parameters->AddObject(param); 143 144 /*waitonlock: */ 145 count++; 146 param= new Param(count,"waitonlock",DOUBLE); 147 param->SetDouble(iomodel->waitonlock); 148 parameters->AddObject(param); 149 150 /*solverstring: */ 151 count++; 152 param= new Param(count,"solverstring",STRING); 153 param->SetString(iomodel->solverstring); 154 parameters->AddObject(param); 155 156 /*plot: */ 157 count++; 158 param= new Param(count,"plot",DOUBLE); 159 param->SetDouble(iomodel->plot); 160 parameters->AddObject(param); 161 162 /*numberofvertices: */ 163 count++; 164 param= new Param(count,"numberofvertices",DOUBLE); 165 param->SetDouble(iomodel->numberofvertices); 166 parameters->AddObject(param); 167 168 /*numberofnodes: */ 169 count++; 170 param= new Param(count,"numberofnodes",DOUBLE); 63 /*Deal with more complex parameters*/ 171 64 if ( 172 65 iomodel->analysis_type==Prognostic2AnalysisEnum || 173 66 iomodel->analysis_type==Balancedthickness2AnalysisEnum 174 67 ) 175 param->SetDouble(3*iomodel->numberofelements); 176 else param->SetDouble(iomodel->numberofvertices); 177 parameters->AddObject(param); 68 parameters->AddObject(new IntParam(NumberOfNodesEnum,3*iomodel->numberofelements)); 69 else parameters->AddObject(new IntParam(NumberOfNodesEnum,iomodel->numberofvertices)); 178 70 179 /*numberofelements: */ 180 count++; 181 param= new Param(count,"numberofelements",DOUBLE); 182 param->SetDouble(iomodel->numberofelements); 183 parameters->AddObject(param); 71 DistributeNumDofs(&numberofdofspernode,iomodel->analysis_type,iomodel->sub_analysis_type); 72 parameters->AddObject(new IntParam(NumberOfDofsPerNodeEnum,numberofdofspernode)); 184 73 185 /*Deal with numberofdofspernode: */ 186 DistributeNumDofs(&numberofdofspernode,iomodel->analysis_type,iomodel->sub_analysis_type); 187 count++; 188 param= new Param(count,"numberofdofspernode",DOUBLE); 189 param->SetDouble(numberofdofspernode); 190 parameters->AddObject(param); 74 IoModelFetchData(&iomodel->riftinfo,&iomodel->numrifts,NULL,iomodel_handle,"riftinfo"); 75 parameters->AddObject(new IntParam(NumRiftsEnum,iomodel->numrifts)); 76 xfree((void**)&iomodel->riftinfo); 191 77 192 /*numrifts: */ 193 IoModelFetchData(&iomodel->riftinfo,&iomodel->numrifts,NULL,iomodel_handle,"riftinfo"); 194 count++; 195 param= new Param(count,"numrifts",DOUBLE); 196 param->SetDouble(iomodel->numrifts); 197 parameters->AddObject(param); 198 xfree((void**)&iomodel->riftinfo); 199 200 /*epsvel: */ 201 count++; 202 param= new Param(count,"epsvel",DOUBLE); 203 param->SetDouble(iomodel->epsvel); 204 parameters->AddObject(param); 205 206 /*parameteroutput: */ 207 count++; 208 param= new Param(count,"numoutput",DOUBLE); 209 param->SetDouble(iomodel->numoutput); 210 parameters->AddObject(param); 211 78 parameters->AddObject(new IntParam(NumOutputEnum,iomodel->numoutput)); 212 79 if(iomodel->numoutput){ 213 80 parameteroutput=(char**)xmalloc(iomodel->numoutput*sizeof(char*)); … … 230 97 231 98 /*Ok, we have all the parameter output descriptors. Build a parameter with it: */ 232 count++; 233 param= new Param(count,"parameteroutput",STRINGARRAY); 234 param->SetStringArray(parameteroutput,iomodel->numoutput); 235 parameters->AddObject(param); 99 parameters->AddObject(new StringArrayParam(ParameterOutputEnum,parameteroutput,iomodel->numoutput)); 236 100 } 237 101 -
issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateParametersDiagnosticHoriz.cpp
r3673 r3697 12 12 void CreateParametersDiagnosticHoriz(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 13 13 14 Param* param = NULL;15 Parameters* parameters=NULL;16 int count;17 int i;18 19 double* ug=NULL;20 21 /*recover parameters : */22 parameters=*pparameters;23 24 count=parameters->Size();25 26 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */27 // if (!iomodel->ismacayealpattyn)return;28 29 /*Get vx and vy: */30 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");31 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");32 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");33 34 ug=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));35 36 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++) ug[3*i+0]=iomodel->vx[i]/iomodel->yts;37 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++) ug[3*i+1]=iomodel->vy[i]/iomodel->yts;38 if(iomodel->vz) for(i=0;i<iomodel->numberofvertices;i++) ug[3*i+2]=iomodel->vz[i]/iomodel->yts;39 40 count++;41 param= new Param(count,"u_g",DOUBLEVEC);42 param->SetDoubleVec(ug,3*iomodel->numberofvertices,3);43 parameters->AddObject(param);44 45 xfree((void**)&iomodel->vx);46 xfree((void**)&iomodel->vy);47 xfree((void**)&iomodel->vz);48 xfree((void**)&ug);49 50 /*Assign output pointer: */51 *pparameters=parameters;52 14 } -
issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp
r3673 r3697 12 12 void CreateParametersMelting(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 13 13 14 Param* param = NULL;15 Parameters* parameters=NULL;16 int count;17 int i;18 19 /*recover parameters : */20 parameters=*pparameters;21 22 /*if 2d: return*/23 if (strcmp(iomodel->meshtype,"2d")==0)goto cleanup_and_return;24 25 count=parameters->Size();26 27 /* get initial melting_rate if transient*/28 if(iomodel->dt){29 30 /*Get melting_rate: */31 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");32 if(iomodel->melting_rate) {33 for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts; //m/s instead of m/yr34 }35 else{36 for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=0;37 }38 39 count++;40 param= new Param(count,"m_g",DOUBLEVEC);41 if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices);42 else param->SetDoubleVec(iomodel->melting_rate,0);43 parameters->AddObject(param);44 45 /*Free melting_rate: */46 xfree((void**)&iomodel->melting_rate);47 }48 49 cleanup_and_return:50 51 /*Assign output pointer: */52 *pparameters=parameters;53 14 } -
issm/trunk/src/c/ModelProcessorx/Prognostic/CreateParametersPrognostic.cpp
r3673 r3697 13 13 void CreateParametersPrognostic(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 14 14 15 Param* param = NULL;16 Parameters* parameters=NULL;17 int count;18 int i;19 int dim;20 double* u_g=NULL;21 22 /*recover parameters : */23 parameters=*pparameters;24 25 count=parameters->Size();26 27 /*Get vx and vy: */28 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");29 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");30 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");31 32 u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));33 34 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=iomodel->vx[i]/iomodel->yts;35 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=iomodel->vy[i]/iomodel->yts;36 if(iomodel->vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=iomodel->vz[i]/iomodel->yts;37 38 count++;39 param= new Param(count,"u_g",DOUBLEVEC);40 param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);41 parameters->AddObject(param);42 43 44 xfree((void**)&iomodel->vx);45 xfree((void**)&iomodel->vy);46 xfree((void**)&iomodel->vz);47 xfree((void**)&u_g);48 49 /*Get pressure if 3d iomodel: */50 parameters->FindParam(&dim,"dim");51 if (dim==3){52 IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure");53 54 count++;55 param= new Param(count,"p_g",DOUBLEVEC);56 if(iomodel->pressure) param->SetDoubleVec(iomodel->pressure,iomodel->numberofvertices,1);57 else param->SetDoubleVec(iomodel->pressure,0,0);58 parameters->AddObject(param);59 60 /*Free pressure: */61 xfree((void**)&iomodel->pressure);62 }63 64 /*Get temperature if 3d iomodel: */65 parameters->FindParam(&dim,"dim");66 if (dim==3){67 IoModelFetchData(&iomodel->temperature,NULL,NULL,iomodel_handle,"temperature");68 69 count++;70 param= new Param(count,"t_g",DOUBLEVEC);71 if(iomodel->temperature) param->SetDoubleVec(iomodel->temperature,iomodel->numberofvertices,1);72 else param->SetDoubleVec(iomodel->temperature,0,0);73 parameters->AddObject(param);74 75 /*Free temperature: */76 xfree((void**)&iomodel->temperature);77 }78 79 /*Get thickness: */80 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");81 82 count++;83 param= new Param(count,"h_g",DOUBLEVEC);84 if(iomodel->thickness) param->SetDoubleVec(iomodel->thickness,iomodel->numberofvertices,1);85 else param->SetDoubleVec(iomodel->thickness,0,0);86 parameters->AddObject(param);87 88 /*Free thickness: */89 xfree((void**)&iomodel->thickness);90 91 /*Get surface: */92 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");93 94 count++;95 param= new Param(count,"s_g",DOUBLEVEC);96 if(iomodel->surface) param->SetDoubleVec(iomodel->surface,iomodel->numberofvertices,1);97 else param->SetDoubleVec(iomodel->surface,0,0);98 parameters->AddObject(param);99 100 /*Free surface: */101 xfree((void**)&iomodel->surface);102 103 /*Get bed: */104 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");105 106 count++;107 param= new Param(count,"b_g",DOUBLEVEC);108 if(iomodel->bed) param->SetDoubleVec(iomodel->bed,iomodel->numberofvertices,1);109 else param->SetDoubleVec(iomodel->bed,0,0);110 parameters->AddObject(param);111 112 /*Free bed: */113 xfree((void**)&iomodel->bed);114 115 /*Get melting_rate: */116 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");117 if(iomodel->melting_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts;118 119 count++;120 param= new Param(count,"m_g",DOUBLEVEC);121 if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices,1);122 else param->SetDoubleVec(iomodel->melting_rate,0,1);123 parameters->AddObject(param);124 125 /*Free melting_rate: */126 xfree((void**)&iomodel->melting_rate);127 128 /*Get accumulation_rate: */129 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");130 if(iomodel->accumulation_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->accumulation_rate[i]=iomodel->accumulation_rate[i]/iomodel->yts;131 132 count++;133 param= new Param(count,"a_g",DOUBLEVEC);134 if(iomodel->accumulation_rate) param->SetDoubleVec(iomodel->accumulation_rate,iomodel->numberofvertices,1);135 else param->SetDoubleVec(iomodel->accumulation_rate,0,0);136 parameters->AddObject(param);137 138 /*Free accumulation_rate: */139 xfree((void**)&iomodel->accumulation_rate);140 141 /*Assign output pointer: */142 *pparameters=parameters;143 15 } -
issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateParametersPrognostic2.cpp
r3673 r3697 13 13 void CreateParametersPrognostic2(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 14 14 15 Param* param = NULL;16 Parameters* parameters=NULL;17 int count;18 int i;19 int dim;20 double* vx_g=NULL;21 double* vy_g=NULL;22 23 /*recover parameters : */24 parameters=*pparameters;25 26 count=parameters->Size();27 28 /*Get vx and vy: */29 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");30 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");31 32 vx_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));33 vy_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));34 35 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)vx_g[i]=iomodel->vx[i]/iomodel->yts;36 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)vy_g[i]=iomodel->vy[i]/iomodel->yts;37 38 count++;39 param= new Param(count,"vx_g",DOUBLEVEC);40 param->SetDoubleVec(vx_g,iomodel->numberofvertices,1);41 parameters->AddObject(param);42 count++;43 param= new Param(count,"vy_g",DOUBLEVEC);44 param->SetDoubleVec(vy_g,iomodel->numberofvertices,1);45 parameters->AddObject(param);46 47 xfree((void**)&iomodel->vx);48 xfree((void**)&iomodel->vy);49 xfree((void**)&vx_g);50 xfree((void**)&vy_g);51 52 /*Get thickness: */53 IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");54 55 count++;56 param= new Param(count,"h_g",DOUBLEVEC);57 if(iomodel->thickness) param->SetDoubleVec(iomodel->thickness,iomodel->numberofvertices,1);58 else param->SetDoubleVec(iomodel->thickness,0,0);59 parameters->AddObject(param);60 61 /*Free thickness: */62 xfree((void**)&iomodel->thickness);63 64 /*Get surface: */65 IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");66 67 count++;68 param= new Param(count,"s_g",DOUBLEVEC);69 if(iomodel->surface) param->SetDoubleVec(iomodel->surface,iomodel->numberofvertices,1);70 else param->SetDoubleVec(iomodel->surface,0,0);71 parameters->AddObject(param);72 73 /*Free surface: */74 xfree((void**)&iomodel->surface);75 76 /*Get bed: */77 IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");78 79 count++;80 param= new Param(count,"b_g",DOUBLEVEC);81 if(iomodel->bed) param->SetDoubleVec(iomodel->bed,iomodel->numberofvertices,1);82 else param->SetDoubleVec(iomodel->bed,0,0);83 parameters->AddObject(param);84 85 /*Free bed: */86 xfree((void**)&iomodel->bed);87 88 /*Get melting_rate: */89 IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");90 if(iomodel->melting_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->melting_rate[i]=iomodel->melting_rate[i]/iomodel->yts;91 92 count++;93 param= new Param(count,"m_g",DOUBLEVEC);94 if(iomodel->melting_rate) param->SetDoubleVec(iomodel->melting_rate,iomodel->numberofvertices,1);95 else param->SetDoubleVec(iomodel->melting_rate,0,1);96 parameters->AddObject(param);97 98 /*Free melting_rate: */99 xfree((void**)&iomodel->melting_rate);100 101 /*Get accumulation_rate: */102 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");103 if(iomodel->accumulation_rate) for(i=0;i<iomodel->numberofvertices;i++)iomodel->accumulation_rate[i]=iomodel->accumulation_rate[i]/iomodel->yts;104 105 count++;106 param= new Param(count,"a_g",DOUBLEVEC);107 if(iomodel->accumulation_rate) param->SetDoubleVec(iomodel->accumulation_rate,iomodel->numberofvertices,1);108 else param->SetDoubleVec(iomodel->accumulation_rate,0,0);109 parameters->AddObject(param);110 111 /*Free accumulation_rate: */112 xfree((void**)&iomodel->accumulation_rate);113 114 /*Assign output pointer: */115 *pparameters=parameters;116 15 } -
issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp
r3673 r3697 17 17 18 18 Parameters* parameters = NULL; 19 Param* param = NULL;20 int count;21 19 int second_count; 22 20 … … 42 40 int num_qmu_mass_flux_segments=0; 43 41 int my_num_qmu_mass_flux_segments=0; 44 45 /*parameters for misfit: */46 double* u_g_obs=NULL;47 42 48 43 #ifdef _SERIAL_ … … 54 49 parameters=*pparameters; 55 50 56 count=parameters->Size(); 57 58 //qmu analysis? 59 count++; 60 param= new Param(count,"qmu_analysis",DOUBLE); 61 param->SetDouble(iomodel->qmu_analysis); 62 parameters->AddObject(param); 63 64 51 parameters->AddObject(new BoolParam(QmuAnalysisEnum,iomodel->qmu_analysis)); 65 52 if(iomodel->qmu_analysis){ 66 53 … … 68 55 qmuinname=(char*)xmalloc((strlen(iomodel->name)+strlen(".qmu.in")+1)*sizeof(char)); 69 56 sprintf(qmuinname,"%s%s",iomodel->name,".qmu.in"); 70 71 count++; 72 param= new Param(count,"qmuinname",STRING); 73 param->SetString(qmuinname); 74 parameters->AddObject(param); 57 parameters->AddObject(new StringParam(QmuInNameEnum,qmuinname)); 75 58 76 59 qmuoutname=(char*)xmalloc((strlen(iomodel->name)+strlen(".qmu.out")+1)*sizeof(char)); 77 60 sprintf(qmuoutname,"%s%s",iomodel->name,".qmu.out"); 78 79 count++; 80 param= new Param(count,"qmuoutname",STRING); 81 param->SetString(qmuoutname); 82 parameters->AddObject(param); 61 parameters->AddObject(new StringParam(QmuOutNameEnum,qmuoutname)); 83 62 84 63 qmuerrname=(char*)xmalloc((strlen(iomodel->name)+strlen(".qmu.err")+1)*sizeof(char)); 85 64 sprintf(qmuerrname,"%s%s",iomodel->name,".qmu.err"); 65 parameters->AddObject(new StringParam(QmuErrNameEnum,qmuerrname)); 86 66 87 count++; 88 param= new Param(count,"qmuerrname",STRING); 89 param->SetString(qmuerrname); 90 parameters->AddObject(param); 91 92 //npart 93 count++; 94 param= new Param(count,"qmu_npart",DOUBLE); 95 param->SetDouble(iomodel->qmu_npart); 96 parameters->AddObject(param); 67 parameters->AddObject(new IntParam(QmuNPartEnum,iomodel->qmu_npart)); 97 68 98 69 /*Deal with variables for qmu iomodeling: */ … … 120 91 #endif 121 92 122 123 93 /*Ok, we have all the variable descriptors. Build a parameter with it: */ 124 count++; 125 param= new Param(count,"variabledescriptors",STRINGARRAY); 126 param->SetStringArray(variabledescriptors,iomodel->numberofvariables); 127 parameters->AddObject(param); 128 94 parameters->AddObject(new StringArrayParam(VariableDescriptorsEnum,variabledescriptors,iomodel->numberofvariables)); 129 95 130 96 /*Deal with responses and partition for qmu iomodeling: */ … … 151 117 152 118 /*Ok, we have all the response descriptors. Build a parameter with it: */ 153 count++; 154 param= new Param(count,"responsedescriptors",STRINGARRAY); 155 param->SetStringArray(responsedescriptors,iomodel->numberofresponses); 156 parameters->AddObject(param); 119 parameters->AddObject(new StringArrayParam(ResponseDescriptorsEnum,responsedescriptors,iomodel->numberofresponses)); 157 120 158 121 /*partition vertices in iomodel->qmu_npart parts, unless a partition is already present: */ … … 167 130 for(i=0;i<iomodel->numberofvertices;i++)dpart[i]=iomodel->my_vertices[i]; 168 131 } 169 170 count++; 171 param= new Param(count,"qmu_part",DOUBLEVEC); 172 param->SetDoubleVec(dpart,iomodel->numberofvertices,1); 173 parameters->AddObject(param); 174 132 parameters->AddObject(new DoubleVecParam(QmuPartEnum,dpart,iomodel->numberofvertices)); 175 133 176 134 /*Ok, now if any of the variables input from Dakota are distributed, we are going to need the parameters: */ … … 183 141 ){ 184 142 185 //Fetch data:186 143 IoModelFetchData(&dakota_parameter,NULL,NULL,iomodel_handle,descriptor); 187 188 //Add parameter 189 count++; 190 param= new Param(count,descriptor,DOUBLEVEC); 191 param->SetDoubleVec(dakota_parameter,iomodel->numberofvertices,1); 192 parameters->AddObject(param); 193 194 //free data 144 parameters->AddObject(new DoubleVecParam(DakotaParameterEnum,dakota_parameter,iomodel->numberofvertices)); 195 145 xfree((void**)&dakota_parameter); 196 146 … … 230 180 } 231 181 232 count++; 233 param= new Param(count,"qmu_mass_flux_segments",DOUBLEMAT); 234 param->SetDoubleMat(my_qmu_mass_flux_segments,my_num_qmu_mass_flux_segments,5); 235 parameters->AddObject(param); 182 parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,my_qmu_mass_flux_segments,my_num_qmu_mass_flux_segments,5)); 236 183 237 184 } … … 239 186 #else 240 187 241 count++; 242 param= new Param(count,"qmu_mass_flux_segments",DOUBLEMAT); 243 param->SetDoubleMat(qmu_mass_flux_segments,num_qmu_mass_flux_segments,5); 244 parameters->AddObject(param); 188 parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,qmu_mass_flux_segments,num_qmu_mass_flux_segments,5)); 245 189 246 190 #endif … … 254 198 IoModelFetchData(&iomodel->vx_obs,NULL,NULL,iomodel_handle,"vx_obs"); 255 199 IoModelFetchData(&iomodel->vy_obs,NULL,NULL,iomodel_handle,"vy_obs"); 256 257 /*Now, recover fit: */258 200 IoModelFetchData(&iomodel->fit,NULL,NULL,iomodel_handle,"fit"); 259 201 260 u_g_obs=(double*)xcalloc(iomodel->numberofvertices*2,sizeof(double)); 261 if(iomodel->vx_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+0]=iomodel->vx_obs[i]/iomodel->yts; 262 if(iomodel->vy_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+1]=iomodel->vy_obs[i]/iomodel->yts; 263 264 count++; 265 param= new Param(count,"velocity_obs",DOUBLEVEC); 266 param->SetDoubleVec(u_g_obs,2*iomodel->numberofvertices,2); 267 parameters->AddObject(param); 268 269 count++; 270 param= new Param(count,"fit",DOUBLEVEC); 271 param->SetDoubleVec(iomodel->fit,iomodel->nsteps); 272 parameters->AddObject(param); 202 if(iomodel->vx_obs)for(i=0;i<iomodel->numberofvertices;i++)iomodel->vx_obs[2*i+0]=iomodel->vx_obs[i]/iomodel->yts; 203 if(iomodel->vy_obs)for(i=0;i<iomodel->numberofvertices;i++)iomodel->vy_obs[2*i+1]=iomodel->vy_obs[i]/iomodel->yts; 204 205 parameters->AddObject(new DoubleVecParam(VxObsEnum,iomodel->vx_obs,iomodel->numberofvertices)); 206 parameters->AddObject(new DoubleVecParam(VyObsEnum,iomodel->vy_obs,iomodel->numberofvertices)); 207 parameters->AddObject(new DoubleVecParam(FitEnum,iomodel->fit,iomodel->nsteps)); 273 208 274 209 xfree((void**)&iomodel->vx_obs); 275 210 xfree((void**)&iomodel->vy_obs); 276 211 xfree((void**)&iomodel->fit); 277 xfree((void**)&u_g_obs);278 212 279 213 } -
issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
r3673 r3697 13 13 void CreateParametersThermal(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 14 14 15 Param* param = NULL;16 Parameters* parameters=NULL;17 int count;18 int i;19 double* u_g=NULL;20 21 /*recover parameters : */22 parameters=*pparameters;23 24 /*return if 2d mesh*/25 if (strcmp(iomodel->meshtype,"2d")==0)goto cleanup_and_return;26 27 count=parameters->Size();28 29 /*Get vx vy and vz: */30 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");31 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");32 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");33 34 u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));35 36 if(iomodel->vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=iomodel->vx[i]/iomodel->yts;37 if(iomodel->vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=iomodel->vy[i]/iomodel->yts;38 if(iomodel->vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=iomodel->vz[i]/iomodel->yts;39 40 count++;41 param= new Param(count,"u_g",DOUBLEVEC);42 param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);43 parameters->AddObject(param);44 45 xfree((void**)&iomodel->vx);46 xfree((void**)&iomodel->vy);47 xfree((void**)&iomodel->vz);48 xfree((void**)&u_g);49 50 /*Get pressure: */51 IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure");52 53 count++;54 param= new Param(count,"p_g",DOUBLEVEC);55 if(iomodel->pressure) param->SetDoubleVec(iomodel->pressure,iomodel->numberofvertices,1);56 else param->SetDoubleVec(iomodel->pressure,0,0);57 parameters->AddObject(param);58 59 /*Free pressure: */60 xfree((void**)&iomodel->pressure);61 62 /* get initial temperature and melting if transient*/63 if(iomodel->dt){64 65 /*Get melting and temperature: */66 IoModelFetchData(&iomodel->temperature,NULL,NULL,iomodel_handle,"temperature");67 68 count++;69 param= new Param(count,"t_g",DOUBLEVEC);70 if(iomodel->temperature) param->SetDoubleVec(iomodel->temperature,iomodel->numberofvertices,1);71 else ISSMERROR("Missing initial temperature");72 parameters->AddObject(param);73 74 /*Free temperature: */75 xfree((void**)&iomodel->temperature);76 }77 78 cleanup_and_return:79 80 /*Assign output pointer: */81 *pparameters=parameters;82 15 } -
issm/trunk/src/c/objects/Params/DoubleVecParam.cpp
r3683 r3697 28 28 } 29 29 /*}}}*/ 30 /*FUNCTION DoubleVecParam::DoubleVecParam(int enum_type,IssmDoubleVec value ){{{1*/30 /*FUNCTION DoubleVecParam::DoubleVecParam(int enum_type,IssmDoubleVec value,int M){{{1*/ 31 31 DoubleVecParam::DoubleVecParam(int in_enum_type,double* in_value, int in_M){ 32 32
Note:
See TracChangeset
for help on using the changeset viewer.