Changeset 3697 for issm/trunk/src/c/ModelProcessorx/Prognostic2
- Timestamp:
- 05/10/10 16:29:46 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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 }
Note:
See TracChangeset
for help on using the changeset viewer.