Changeset 16313
- Timestamp:
- 10/07/13 15:30:39 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16309 r16313 2177 2177 IssmDouble yts; 2178 2178 bool control_analysis; 2179 int num_control_type; 2180 int num_cm_responses; 2179 int num_control_type,num_responses; 2181 2180 2182 2181 /*Fetch parameters: */ … … 2184 2183 iomodel->Constant(&control_analysis,InversionIscontrolEnum); 2185 2184 if(control_analysis) iomodel->Constant(&num_control_type,InversionNumControlParametersEnum); 2186 if(control_analysis) iomodel->Constant(&num_ cm_responses,InversionNumCostFunctionsEnum);2185 if(control_analysis) iomodel->Constant(&num_responses,InversionNumCostFunctionsEnum); 2187 2186 2188 2187 /*Checks if debuging*/ … … 2282 2281 /*Create inputs and add to DataSetInput*/ 2283 2282 DatasetInput* datasetinput=new DatasetInput(InversionCostFunctionsCoefficientsEnum); 2284 for(i=0;i<num_ cm_responses;i++){2285 for(j=0;j<6;j++)nodeinputs[j]=iomodel->Data(InversionCostFunctionsCoefficientsEnum)[(penta_vertex_ids[j]-1)*num_ cm_responses+i];2286 datasetinput-> inputs->AddObject(new PentaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum));2283 for(i=0;i<num_responses;i++){ 2284 for(j=0;j<6;j++)nodeinputs[j]=iomodel->Data(InversionCostFunctionsCoefficientsEnum)[(penta_vertex_ids[j]-1)*num_responses+i]; 2285 datasetinput->AddInput(new PentaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum),int(iomodel->Data(InversionCostFunctionsEnum)[i])); 2287 2286 } 2288 2287 … … 5609 5608 for(resp=0;resp<num_responses;resp++){ 5610 5609 5611 weights_input->GetInputValue(&weight,gauss,resp );5610 weights_input->GetInputValue(&weight,gauss,responses[resp]); 5612 5611 5613 5612 switch(responses[resp]){ … … 5805 5804 for(resp=0;resp<num_responses;resp++){ 5806 5805 5807 weights_input->GetInputValue(&weight,gauss,resp );5806 weights_input->GetInputValue(&weight,gauss,responses[resp]); 5808 5807 5809 5808 switch(responses[resp]){ -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r16309 r16313 1519 1519 IssmDouble cmmaxinputs[3]; 1520 1520 bool control_analysis = false; 1521 int num_control_type ;1521 int num_control_type,num_responses; 1522 1522 IssmDouble yts; 1523 int num_cm_responses;1524 1523 1525 1524 /*Get parameters: */ … … 1527 1526 iomodel->Constant(&control_analysis,InversionIscontrolEnum); 1528 1527 if(control_analysis) iomodel->Constant(&num_control_type,InversionNumControlParametersEnum); 1529 if(control_analysis) iomodel->Constant(&num_ cm_responses,InversionNumCostFunctionsEnum);1528 if(control_analysis) iomodel->Constant(&num_responses,InversionNumCostFunctionsEnum); 1530 1529 1531 1530 /*Recover vertices ids needed to initialize inputs*/ … … 1594 1593 /*Create inputs and add to DataSetInput*/ 1595 1594 DatasetInput* datasetinput=new DatasetInput(InversionCostFunctionsCoefficientsEnum); 1596 for(i=0;i<num_ cm_responses;i++){1597 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(InversionCostFunctionsCoefficientsEnum)[(tria_vertex_ids[j]-1)*num_ cm_responses+i];1598 datasetinput-> inputs->AddObject(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum));1595 for(i=0;i<num_responses;i++){ 1596 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(InversionCostFunctionsCoefficientsEnum)[(tria_vertex_ids[j]-1)*num_responses+i]; 1597 datasetinput->AddInput(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum),int(iomodel->Data(InversionCostFunctionsEnum)[i])); 1599 1598 } 1600 1599 … … 3650 3649 3651 3650 /*Get all parameters at gaussian point*/ 3652 weights_input->GetInputValue(&weight,gauss, weight_index);3651 weights_input->GetInputValue(&weight,gauss,BalancethicknessMisfitEnum); 3653 3652 thickness_input->GetInputValue(&H, gauss); 3654 3653 thickness_input->GetInputDerivativeValue(&dH[0],&xyz_list[0][0],gauss); … … 3859 3858 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 3860 3859 GetNodalFunctionsDerivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 3861 weights_input->GetInputValue(&weight,gauss, weight_index);3860 weights_input->GetInputValue(&weight,gauss,RheologyBbarAbsGradientEnum); 3862 3861 3863 3862 /*Build alpha_complement_list: */ … … 4100 4099 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 4101 4100 GetNodalFunctionsDerivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 4102 weights_input->GetInputValue(&weight,gauss, weight_index);4101 weights_input->GetInputValue(&weight,gauss,DragCoefficientAbsGradientEnum); 4103 4102 4104 4103 /*Build alpha_complement_list: */ … … 4270 4269 4271 4270 /*Loop over all requested responses*/ 4272 for(resp=0;resp<num_responses;resp++) switch(responses[resp]){4273 4274 case ThicknessAbsMisfitEnum:4275 weights_input->GetInputValue(&weight, gauss,resp); 4276 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= (thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];4277 break; 4278 case ThicknessAbsGradientEnum:4279 weights_input->GetInputValue(&weight, gauss,resp);4280 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[0]*dbasis[0][i]*Jdet*gauss->weight;4281 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[1]*dbasis[1][i]*Jdet*gauss->weight;4282 break;4283 case ThicknessAlongGradientEnum:4284 weights_input->GetInputValue(&weight, gauss,resp);4285 vx_input->GetInputValue(&vx,gauss);4286 vy_input->GetInputValue(&vy,gauss);4287 vel = sqrt(vx*vx+vy*vy);4288 vx = vx/(vel+1.e-9);4289 vy = vy/(vel+1.e-9);4290 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0][i]*vx+dbasis[1][i]*vy)*Jdet*gauss->weight;4291 break;4292 case ThicknessAcrossGradientEnum:4293 weights_input->GetInputValue(&weight, gauss,resp);4294 vx_input->GetInputValue(&vx,gauss);4295 vy_input->GetInputValue(&vy,gauss);4296 vel = sqrt(vx*vx+vy*vy);4297 vx = vx/(vel+1.e-9);4298 vy = vy/(vel+1.e-9);4299 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0][i]*(-vy)+dbasis[1][i]*vx)*Jdet*gauss->weight;4300 break;4301 case BalancethicknessMisfitEnum:4302 weights_input->GetInputValue(&weight, gauss,resp);4303 surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);4304 basal_melting_input->GetInputValue(&basal_melting,gauss);4305 dhdt_input->GetInputValue(&dhdt,gauss);4306 vx_input->GetInputValue(&vx,gauss);4307 vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],gauss);4308 vy_input->GetInputValue(&vy,gauss);4309 vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],gauss);4310 for(i=0;i<NUMVERTICES;i++){4311 grade_g[i]+= - weight*Jdet*gauss->weight*(4312 (vx*dH[0]+vy*dH[1] + thickness*(dvx[0]+dvy[1]))*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1]))4313 -(surface_mass_balance-basal_melting-dhdt)*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1]))4314 );4315 }4316 break;4317 default:4318 _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");4271 for(resp=0;resp<num_responses;resp++){ 4272 4273 weights_input->GetInputValue(&weight,gauss,responses[resp]); 4274 4275 switch(responses[resp]){ 4276 4277 case ThicknessAbsMisfitEnum: 4278 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= (thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i]; 4279 break; 4280 case ThicknessAbsGradientEnum: 4281 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[0]*dbasis[0][i]*Jdet*gauss->weight; 4282 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*dH[1]*dbasis[1][i]*Jdet*gauss->weight; 4283 break; 4284 case ThicknessAlongGradientEnum: 4285 vx_input->GetInputValue(&vx,gauss); 4286 vy_input->GetInputValue(&vy,gauss); 4287 vel = sqrt(vx*vx+vy*vy); 4288 vx = vx/(vel+1.e-9); 4289 vy = vy/(vel+1.e-9); 4290 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0][i]*vx+dbasis[1][i]*vy)*Jdet*gauss->weight; 4291 break; 4292 case ThicknessAcrossGradientEnum: 4293 vx_input->GetInputValue(&vx,gauss); 4294 vy_input->GetInputValue(&vy,gauss); 4295 vel = sqrt(vx*vx+vy*vy); 4296 vx = vx/(vel+1.e-9); 4297 vy = vy/(vel+1.e-9); 4298 for(i=0;i<NUMVERTICES;i++) grade_g[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0][i]*(-vy)+dbasis[1][i]*vx)*Jdet*gauss->weight; 4299 break; 4300 case BalancethicknessMisfitEnum: 4301 surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss); 4302 basal_melting_input->GetInputValue(&basal_melting,gauss); 4303 dhdt_input->GetInputValue(&dhdt,gauss); 4304 vx_input->GetInputValue(&vx,gauss); 4305 vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],gauss); 4306 vy_input->GetInputValue(&vy,gauss); 4307 vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],gauss); 4308 for(i=0;i<NUMVERTICES;i++){ 4309 grade_g[i]+= - weight*Jdet*gauss->weight*( 4310 (vx*dH[0]+vy*dH[1] + thickness*(dvx[0]+dvy[1]))*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1])) 4311 -(surface_mass_balance-basal_melting-dhdt)*(vx*dbasis[0][i]+ vy*dbasis[1][i] + basis[i]*(dvx[0]+dvy[1])) 4312 ); 4313 } 4314 break; 4315 default: 4316 _error_("response " << EnumToStringx(responses[resp]) << " not supported yet"); 4317 } 4319 4318 } 4320 4319 } … … 4372 4371 4373 4372 /*Get all parameters at gaussian point*/ 4374 weights_input->GetInputValue(&weight,gauss, weight_index);4373 weights_input->GetInputValue(&weight,gauss,RheologyBbarAbsGradientEnum); 4375 4374 rheologyb_input->GetInputDerivativeValue(&dp[0],&xyz_list[0][0],gauss); 4376 4375 … … 4417 4416 4418 4417 /*Get all parameters at gaussian point*/ 4419 weights_input->GetInputValue(&weight,gauss, weight_index);4418 weights_input->GetInputValue(&weight,gauss,SurfaceAverageVelMisfitEnum); 4420 4419 vx_input->GetInputValue(&vx,gauss); 4421 4420 vy_input->GetInputValue(&vy,gauss); … … 4475 4474 4476 4475 /*Get all parameters at gaussian point*/ 4477 weights_input->GetInputValue(&weight,gauss, weight_index);4476 weights_input->GetInputValue(&weight,gauss,SurfaceLogVelMisfitEnum); 4478 4477 vx_input->GetInputValue(&vx,gauss); 4479 4478 vy_input->GetInputValue(&vy,gauss); … … 4534 4533 4535 4534 /*Get all parameters at gaussian point*/ 4536 weights_input->GetInputValue(&weight,gauss, weight_index);4535 weights_input->GetInputValue(&weight,gauss,SurfaceLogVxVyMisfitEnum); 4537 4536 vx_input->GetInputValue(&vx,gauss); 4538 4537 vy_input->GetInputValue(&vy,gauss); … … 4592 4591 4593 4592 /*Get all parameters at gaussian point*/ 4594 weights_input->GetInputValue(&weight,gauss, weight_index);4593 weights_input->GetInputValue(&weight,gauss,SurfaceAbsVelMisfitEnum); 4595 4594 vx_input->GetInputValue(&vx,gauss); 4596 4595 vy_input->GetInputValue(&vy,gauss); … … 4651 4650 4652 4651 /*Get all parameters at gaussian point*/ 4653 weights_input->GetInputValue(&weight,gauss, weight_index);4652 weights_input->GetInputValue(&weight,gauss,SurfaceRelVelMisfitEnum); 4654 4653 vx_input->GetInputValue(&vx,gauss); 4655 4654 vy_input->GetInputValue(&vy,gauss); … … 4708 4707 4709 4708 /*Get all parameters at gaussian point*/ 4710 weights_input->GetInputValue(&weight,gauss, weight_index);4709 weights_input->GetInputValue(&weight,gauss,ThicknessAbsGradientEnum); 4711 4710 thickness_input->GetInputDerivativeValue(&dp[0],&xyz_list[0][0],gauss); 4712 4711 … … 4754 4753 4755 4754 /*Get all parameters at gaussian point*/ 4756 weights_input->GetInputValue(&weight,gauss, weight_index);4755 weights_input->GetInputValue(&weight,gauss,ThicknessAlongGradientEnum); 4757 4756 thickness_input->GetInputDerivativeValue(&dp[0],&xyz_list[0][0],gauss); 4758 4757 vx_input->GetInputValue(&vx,gauss); … … 4805 4804 4806 4805 /*Get all parameters at gaussian point*/ 4807 weights_input->GetInputValue(&weight,gauss, weight_index);4806 weights_input->GetInputValue(&weight,gauss,ThicknessAcrossGradientEnum); 4808 4807 thickness_input->GetInputDerivativeValue(&dp[0],&xyz_list[0][0],gauss); 4809 4808 vx_input->GetInputValue(&vx,gauss); … … 4855 4854 thickness_input->GetInputDerivativeValue(&dH[0],&xyz_list[0][0],gauss); 4856 4855 thicknessobs_input->GetInputValue(&thicknessobs,gauss); 4857 weights_input->GetInputValue(&weight,gauss, weight_index);4856 weights_input->GetInputValue(&weight,gauss,ThicknessAbsGradientEnum); 4858 4857 4859 4858 /*compute ThicknessAbsMisfit*/ … … 4912 4911 4913 4912 /*Loop over all requested responses*/ 4914 for(resp=0;resp<num_responses;resp++) switch(responses[resp]){4915 4916 case ThicknessAbsMisfitEnum:4917 weights_input->GetInputValue(&weight, gauss,resp); 4918 for(i=0;i<numnodes;i++) pe->values[i]+=(thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];4919 break;4920 case ThicknessAbsGradientEnum:4921 weights_input->GetInputValue(&weight, gauss,resp);4922 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[0]*dbasis[0*numnodes+i]*Jdet*gauss->weight;4923 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[1]*dbasis[1*numnodes+i]*Jdet*gauss->weight;4924 break;4925 case ThicknessAlongGradientEnum:4926 weights_input->GetInputValue(&weight, gauss,resp);4927 vx_input->GetInputValue(&vx,gauss);4928 vy_input->GetInputValue(&vy,gauss);4929 vel = sqrt(vx*vx+vy*vy);4930 vx = vx/(vel+1.e-9);4931 vy = vy/(vel+1.e-9);4932 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0*numnodes+i]*vx+dbasis[1*numnodes+i]*vy)*Jdet*gauss->weight;4933 break;4934 case ThicknessAcrossGradientEnum:4935 weights_input->GetInputValue(&weight, gauss,resp);4936 vx_input->GetInputValue(&vx,gauss);4937 vy_input->GetInputValue(&vy,gauss);4938 vel = sqrt(vx*vx+vy*vy);4939 vx = vx/(vel+1.e-9);4940 vy = vy/(vel+1.e-9);4941 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numnodes+i]*(-vy)+dbasis[1*numnodes+i]*vx)*Jdet*gauss->weight;4942 break;4943 default:4944 _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");4913 for(resp=0;resp<num_responses;resp++){ 4914 4915 weights_input->GetInputValue(&weight,gauss,responses[resp]); 4916 4917 switch(responses[resp]){ 4918 case ThicknessAbsMisfitEnum: 4919 for(i=0;i<numnodes;i++) pe->values[i]+=(thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i]; 4920 break; 4921 case ThicknessAbsGradientEnum: 4922 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[0]*dbasis[0*numnodes+i]*Jdet*gauss->weight; 4923 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[1]*dbasis[1*numnodes+i]*Jdet*gauss->weight; 4924 break; 4925 case ThicknessAlongGradientEnum: 4926 vx_input->GetInputValue(&vx,gauss); 4927 vy_input->GetInputValue(&vy,gauss); 4928 vel = sqrt(vx*vx+vy*vy); 4929 vx = vx/(vel+1.e-9); 4930 vy = vy/(vel+1.e-9); 4931 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0*numnodes+i]*vx+dbasis[1*numnodes+i]*vy)*Jdet*gauss->weight; 4932 break; 4933 case ThicknessAcrossGradientEnum: 4934 vx_input->GetInputValue(&vx,gauss); 4935 vy_input->GetInputValue(&vy,gauss); 4936 vel = sqrt(vx*vx+vy*vy); 4937 vx = vx/(vel+1.e-9); 4938 vy = vy/(vel+1.e-9); 4939 for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numnodes+i]*(-vy)+dbasis[1*numnodes+i]*vx)*Jdet*gauss->weight; 4940 break; 4941 default: 4942 _error_("response " << EnumToStringx(responses[resp]) << " not supported yet"); 4943 } 4945 4944 } 4946 4945 } … … 5013 5012 for(resp=0;resp<num_responses;resp++){ 5014 5013 5015 weights_input->GetInputValue(&weight,gauss,resp );5014 weights_input->GetInputValue(&weight,gauss,responses[resp]); 5016 5015 5017 5016 switch(responses[resp]){ … … 5170 5169 5171 5170 /*Get all parameters at gaussian point*/ 5172 weights_input->GetInputValue(&weight,gauss, weight_index);5171 weights_input->GetInputValue(&weight,gauss,DragCoefficientAbsGradientEnum); 5173 5172 drag_input->GetInputDerivativeValue(&dp[0],&xyz_list[0][0],gauss); 5174 5173 -
issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.cpp
r15737 r16313 16 16 /*FUNCTION DatasetInput::DatasetInput(){{{*/ 17 17 DatasetInput::DatasetInput(){ 18 enum_type=UNDEF; 19 inputs=NULL; 18 enum_type = UNDEF; 19 inputs = NULL; 20 numids = 0; 21 ids = NULL; 20 22 } 21 23 /*}}}*/ 22 /*FUNCTION DatasetInput::DatasetInput(int in_enum_type ) {{{*/24 /*FUNCTION DatasetInput::DatasetInput(int in_enum_type,int* idlist,int numids) {{{*/ 23 25 DatasetInput::DatasetInput(int in_enum_type){ 24 26 25 enum_type = in_enum_type; 26 inputs = new Inputs(); 27 enum_type = in_enum_type; 28 numids = 0; 29 inputs = new Inputs(); 30 ids = NULL; 27 31 } 28 32 /*}}}*/ … … 44 48 _printf_("DatasetInput:\n"); 45 49 _printf_(" enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n"); 46 _printf_("---inputs: \n"); inputs->Echo(); 50 _printf_(" numids:"<< this->numids<< "\n"); 51 _printf_(" ids: "); 52 for(int i=0;i<this->numids;i++) _printf_(this->ids[i]<<" "); 53 _printf_("\n"); 54 _printf_(" inputs: \n"); inputs->Echo(); 47 55 } 48 56 /*}}}*/ … … 79 87 outinput->enum_type=this->enum_type; 80 88 outinput->inputs=dynamic_cast<Inputs*>(this->inputs->SpawnTriaInputs(location)); 89 outinput->numids=this->numids; 90 outinput->ids=xNew<int>(this->numids); 91 xMemCpy(outinput->ids,this->ids,this->numids); 81 92 82 93 /*Assign output*/ … … 86 97 87 98 /*DatasetInput management*/ 99 /*FUNCTION DatasetInput::AddInput{{{*/ 100 void DatasetInput::AddInput(Input* input,int id){ 101 102 _assert_(this->numids == this->inputs->Size()); 103 104 int *old_ids = NULL; 105 106 if(this->numids>0){ 107 old_ids=xNew<int>(this->numids); 108 xMemCpy(old_ids,this->ids,this->numids); 109 xDelete<int>(this->ids); 110 } 111 112 this->numids=this->numids+1; 113 this->ids=xNew<int>(this->numids); 114 115 if(this->numids>1){ 116 xMemCpy(this->ids,old_ids,this->numids-1); 117 xDelete<int>(old_ids); 118 } 119 120 /*go ahead and plug: */ 121 this->ids[this->numids-1]=id; 122 inputs->AddObject(input); 123 124 _assert_(this->numids == this->inputs->Size()); 125 } 126 /*}}}*/ 88 127 /*FUNCTION DatasetInput::InstanceEnum{{{*/ 89 128 int DatasetInput::InstanceEnum(void){ … … 100 139 } 101 140 /*}}}*/ 102 /*FUNCTION DatasetInput::GetInputValue(IssmDouble* pvalue,GaussTria* gauss,int index){{{*/ 103 void DatasetInput::GetInputValue(IssmDouble* pvalue,GaussTria* gauss,int index){ 141 /*FUNCTION DatasetInput::GetInputValue(IssmDouble* pvalue,GaussTria* gauss,int id){{{*/ 142 void DatasetInput::GetInputValue(IssmDouble* pvalue,GaussTria* gauss,int id){ 143 144 int offset = -1; 145 _assert_(this->numids == this->inputs->Size()); 146 147 /*Get requested input within dataset*/ 148 for(int i=0;i<this->numids;i++) if(this->ids[i]==id) offset=i; 149 if(offset<0){ 150 this->Echo(); 151 _error_("Could not find input of id "<<id); 152 } 153 154 Input* input=dynamic_cast<Input*>(this->inputs->GetObjectByOffset(offset)); 155 input->GetInputValue(pvalue,gauss); 156 } 157 /*}}}*/ 158 /*FUNCTION DatasetInput::GetInputValue(IssmDouble* pvalue,GaussPenta* gauss,int index){{{*/ 159 void DatasetInput::GetInputValue(IssmDouble* pvalue,GaussPenta* gauss,int index){ 160 161 _assert_(this->numids == this->inputs->Size()); 104 162 105 163 /*Get requested input within dataset*/ … … 110 168 } 111 169 /*}}}*/ 112 /*FUNCTION DatasetInput::GetInputValue(IssmDouble* pvalue,GaussPenta* gauss,int index){{{*/113 void DatasetInput::GetInputValue(IssmDouble* pvalue,GaussPenta* gauss,int index){114 115 /*Get requested input within dataset*/116 if(index<0 || index > inputs->Size()-1) _error_("index requested (" << index << ") exceeds dataset size (" << inputs->Size() << ")");117 Input* input=dynamic_cast<Input*>(this->inputs->GetObjectByOffset(index));118 119 input->GetInputValue(pvalue,gauss);120 }121 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Inputs/DatasetInput.h
r16238 r16313 17 17 public: 18 18 int enum_type; 19 int numids; 19 20 Inputs *inputs; 21 int *ids; 20 22 21 23 /*DatasetInput constructors, destructors: {{{*/ … … 32 34 /*}}}*/ 33 35 /*DatasetInput management: {{{*/ 36 void AddInput(Input* input,int id); 34 37 int InstanceEnum(); 35 38 Input* SpawnTriaInput(int location); -
issm/trunk-jpl/src/c/classes/IoModel.cpp
r16304 r16313 714 714 fid=this->SetFilePointerToData(&code,NULL,data_enum); 715 715 716 if( (code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));716 if(code!=5 && code!=6 && code!=7)_error_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum)<<" (Code is "<<code<<")"); 717 717 718 718 /*Now fetch: */ … … 780 780 /*Set file pointer to beginning of the data: */ 781 781 fid=this->SetFilePointerToData(&code,NULL,data_enum); 782 if( (code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));782 if(code!=5 && code!=6 && code!=7)_error_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum)<<" (Code is "<<code<<")"); 783 783 784 784 /*Now fetch: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
r16307 r16313 49 49 /*Now, recover fit, optscal and maxiter as vectors: */ 50 50 iomodel->FetchData(&control_type,NULL,&num_control_type,InversionControlParametersEnum); 51 iomodel->FetchData(&cm_responses, &nsteps,&num_cm_responses,InversionCostFunctionsEnum);51 iomodel->FetchData(&cm_responses,NULL,&num_cm_responses,InversionCostFunctionsEnum); 52 52 if(!tao_analysis){ 53 53 iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r16212 r16313 31 31 iomodel->FetchDataToInput(elements,InversionThicknessObsEnum,0.); 32 32 33 iomodel->FetchData( 4,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum);33 iomodel->FetchData(5,InversionControlParametersEnum,InversionCostFunctionsEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 34 34 for(i=0;i<num_control_type;i++){ 35 35 switch(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])){ … … 59 59 60 60 /*Free data: */ 61 iomodel->DeleteData( 4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,DamageDEnum);61 iomodel->DeleteData(5+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionCostFunctionsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,DamageDEnum); 62 62 }
Note:
See TracChangeset
for help on using the changeset viewer.