Changeset 1837
- Timestamp:
- 08/24/09 17:55:07 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
r1210 r1837 11 11 #include "../../objects/objects.h" 12 12 #include "../../shared/shared.h" 13 #include "../ Model.h"13 #include "../IoModel.h" 14 14 15 void CreateParametersControl(DataSet** pparameters, Model* model,ConstDataHandlemodel_handle){15 void CreateParametersControl(DataSet** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 16 16 17 17 int i; … … 45 45 count++; 46 46 param= new Param(count,"control_type",STRING); 47 param->SetString( model->control_type);47 param->SetString(iomodel->control_type); 48 48 parameters->AddObject(param); 49 49 … … 51 51 count++; 52 52 param= new Param(count,"extrude_param",DOUBLE); 53 if (strcmp( model->control_type,"drag")==0) param->SetDouble(0);54 else if (strcmp( model->control_type,"B")==0) param->SetDouble(1);55 else throw ErrorException(__FUNCT__,exprintf("control_type %s not supported yet!", model->control_type));53 if (strcmp(iomodel->control_type,"drag")==0) param->SetDouble(0); 54 else if (strcmp(iomodel->control_type,"B")==0) param->SetDouble(1); 55 else throw ErrorException(__FUNCT__,exprintf("control_type %s not supported yet!",iomodel->control_type)); 56 56 parameters->AddObject(param); 57 57 … … 59 59 count++; 60 60 param= new Param(count,"nsteps",INTEGER); 61 param->SetInteger( model->nsteps);61 param->SetInteger(iomodel->nsteps); 62 62 parameters->AddObject(param); 63 63 … … 65 65 count++; 66 66 param= new Param(count,"tolx",DOUBLE); 67 param->SetDouble( model->tolx);67 param->SetDouble(iomodel->tolx); 68 68 parameters->AddObject(param); 69 69 … … 71 71 count++; 72 72 param= new Param(count,"mincontrolconstraint",DOUBLE); 73 param->SetDouble( model->mincontrolconstraint);73 param->SetDouble(iomodel->mincontrolconstraint); 74 74 parameters->AddObject(param); 75 75 … … 77 77 count++; 78 78 param= new Param(count,"maxcontrolconstraint",DOUBLE); 79 param->SetDouble( model->maxcontrolconstraint);79 param->SetDouble(iomodel->maxcontrolconstraint); 80 80 parameters->AddObject(param); 81 81 … … 83 83 count++; 84 84 param= new Param(count,"epsvel",DOUBLE); 85 param->SetDouble( model->epsvel);85 param->SetDouble(iomodel->epsvel); 86 86 parameters->AddObject(param); 87 87 … … 89 89 count++; 90 90 param= new Param(count,"meanvel",DOUBLE); 91 param->SetDouble( model->meanvel);91 param->SetDouble(iomodel->meanvel); 92 92 parameters->AddObject(param); 93 93 94 94 /*Now, recover fit, optscal and maxiter as vectors: */ 95 ModelFetchData((void**)&model->fit,NULL,NULL,model_handle,"fit","Matrix","Mat");96 ModelFetchData((void**)&model->optscal,NULL,NULL,model_handle,"optscal","Matrix","Mat");97 ModelFetchData((void**)&model->maxiter,NULL,NULL,model_handle,"maxiter","Matrix","Mat");95 IoModelFetchData((void**)&iomodel->fit,NULL,NULL,iomodel_handle,"fit","Matrix","Mat"); 96 IoModelFetchData((void**)&iomodel->optscal,NULL,NULL,iomodel_handle,"optscal","Matrix","Mat"); 97 IoModelFetchData((void**)&iomodel->maxiter,NULL,NULL,iomodel_handle,"maxiter","Matrix","Mat"); 98 98 99 99 count++; 100 100 param= new Param(count,"fit",DOUBLEVEC); 101 param->SetDoubleVec( model->fit,model->nsteps);101 param->SetDoubleVec(iomodel->fit,iomodel->nsteps); 102 102 parameters->AddObject(param); 103 103 104 104 count++; 105 105 param= new Param(count,"optscal",DOUBLEVEC); 106 param->SetDoubleVec( model->optscal,model->nsteps);106 param->SetDoubleVec(iomodel->optscal,iomodel->nsteps); 107 107 parameters->AddObject(param); 108 108 109 109 count++; 110 110 param= new Param(count,"maxiter",DOUBLEVEC); 111 param->SetDoubleVec( model->maxiter,model->nsteps);111 param->SetDoubleVec(iomodel->maxiter,iomodel->nsteps); 112 112 parameters->AddObject(param); 113 113 114 xfree((void**)& model->fit);115 xfree((void**)& model->optscal);116 xfree((void**)& model->maxiter);114 xfree((void**)&iomodel->fit); 115 xfree((void**)&iomodel->optscal); 116 xfree((void**)&iomodel->maxiter); 117 117 118 118 /*Get vx, vx_obs, vy, vy_obs, and the parameter value: */ 119 ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat");120 ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat");121 ModelFetchData((void**)&vz,NULL,NULL,model_handle,"vz","Matrix","Mat");122 ModelFetchData((void**)&vx_obs,NULL,NULL,model_handle,"vx_obs","Matrix","Mat");123 ModelFetchData((void**)&vy_obs,NULL,NULL,model_handle,"vy_obs","Matrix","Mat");124 ModelFetchData((void**)&control_parameter,NULL,NULL,model_handle,model->control_type,"Matrix","Mat");119 IoModelFetchData((void**)&vx,NULL,NULL,iomodel_handle,"vx","Matrix","Mat"); 120 IoModelFetchData((void**)&vy,NULL,NULL,iomodel_handle,"vy","Matrix","Mat"); 121 IoModelFetchData((void**)&vz,NULL,NULL,iomodel_handle,"vz","Matrix","Mat"); 122 IoModelFetchData((void**)&vx_obs,NULL,NULL,iomodel_handle,"vx_obs","Matrix","Mat"); 123 IoModelFetchData((void**)&vy_obs,NULL,NULL,iomodel_handle,"vy_obs","Matrix","Mat"); 124 IoModelFetchData((void**)&control_parameter,NULL,NULL,iomodel_handle,iomodel->control_type,"Matrix","Mat"); 125 125 126 u_g=(double*)xcalloc( model->numberofnodes*3,sizeof(double));127 if(vx)for(i=0;i< model->numberofnodes;i++)u_g[3*i+0]=vx[i]/model->yts;128 if(vy)for(i=0;i< model->numberofnodes;i++)u_g[3*i+1]=vy[i]/model->yts;129 if(vz)for(i=0;i< model->numberofnodes;i++)u_g[3*i+2]=vz[i]/model->yts;126 u_g=(double*)xcalloc(iomodel->numberofnodes*3,sizeof(double)); 127 if(vx)for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+0]=vx[i]/iomodel->yts; 128 if(vy)for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+1]=vy[i]/iomodel->yts; 129 if(vz)for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+2]=vz[i]/iomodel->yts; 130 130 131 131 count++; 132 132 param= new Param(count,"u_g",DOUBLEVEC); 133 param->SetDoubleVec(u_g,3* model->numberofnodes,3);133 param->SetDoubleVec(u_g,3*iomodel->numberofnodes,3); 134 134 parameters->AddObject(param); 135 135 136 u_g_obs=(double*)xcalloc( model->numberofnodes*2,sizeof(double));137 if(vx_obs)for(i=0;i< model->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/model->yts;138 if(vy_obs)for(i=0;i< model->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/model->yts;136 u_g_obs=(double*)xcalloc(iomodel->numberofnodes*2,sizeof(double)); 137 if(vx_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts; 138 if(vy_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts; 139 139 140 140 count++; 141 141 param= new Param(count,"u_g_obs",DOUBLEVEC); 142 param->SetDoubleVec(u_g_obs,2* model->numberofnodes,2);142 param->SetDoubleVec(u_g_obs,2*iomodel->numberofnodes,2); 143 143 parameters->AddObject(param); 144 144 145 param_g=(double*)xcalloc( model->numberofnodes,sizeof(double));146 for(i=0;i< model->numberofnodes;i++)param_g[i]=control_parameter[i];145 param_g=(double*)xcalloc(iomodel->numberofnodes,sizeof(double)); 146 for(i=0;i<iomodel->numberofnodes;i++)param_g[i]=control_parameter[i]; 147 147 148 148 count++; 149 149 param= new Param(count,"param_g",DOUBLEVEC); 150 param->SetDoubleVec(param_g, model->numberofnodes,1);150 param->SetDoubleVec(param_g,iomodel->numberofnodes,1); 151 151 parameters->AddObject(param); 152 152
Note:
See TracChangeset
for help on using the changeset viewer.