Changeset 24376
- Timestamp:
- 11/21/19 14:07:14 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r24375 r24376 707 707 switch(this->ObjectEnum()){ 708 708 case TriaEnum: 709 this-> inputs->AddInput(new TriaInput(SmbMassBalanceSubstepEnum,&smb[0],P1Enum));710 this-> inputs->AddInput(new TriaInput(SmbRunoffSubstepEnum,&runoff[0],P1Enum));709 this->AddInput2(SmbMassBalanceSubstepEnum,&smb[0],P1Enum); 710 this->AddInput2(SmbRunoffSubstepEnum,&runoff[0],P1Enum); 711 711 break; 712 712 case PentaEnum: 713 this->inputs->AddInput(new PentaInput(SmbMassBalanceSubstepEnum,&smb[0],P1Enum)); 714 this->inputs->AddInput(new PentaInput(SmbRunoffSubstepEnum,&runoff[0],P1Enum)); 715 this->InputExtrude(SmbMassBalanceSubstepEnum,-1); 716 this->InputExtrude(SmbRunoffSubstepEnum,-1); 717 break; 718 case TetraEnum: 719 this->inputs->AddInput(new TetraInput(SmbMassBalanceSubstepEnum,&smb[0],P1Enum)); 720 this->inputs->AddInput(new TetraInput(SmbRunoffSubstepEnum,&runoff[0],P1Enum)); 713 this->AddInput2(SmbMassBalanceSubstepEnum,&smb[0],P1Enum); 714 this->AddInput2(SmbRunoffSubstepEnum,&runoff[0],P1Enum); 721 715 this->InputExtrude(SmbMassBalanceSubstepEnum,-1); 722 716 this->InputExtrude(SmbRunoffSubstepEnum,-1); … … 1914 1908 } 1915 1909 } 1916 this->inputs->AddInput(new ControlInput(input_enum,TransientInputEnum,values_input,mins_input,maxs_input,grad_input,P1Enum,id));1910 //this->inputs->AddInput(new ControlInput(input_enum,TransientInputEnum,values_input,mins_input,maxs_input,grad_input,P1Enum,id)); 1917 1911 xDelete<IssmDouble>(times); 1918 1912 } … … 2027 2021 } 2028 2022 } 2029 //datasetinput->AddInput(transientinput,input_id);2030 2023 xDelete<IssmDouble>(times); 2031 2024 } … … 2041 2034 for(t=0;t<N;t++) layers[t] = vector[N*this->Sid()+t]; 2042 2035 DoubleArrayInput* arrayinput=new DoubleArrayInput(input_enum,layers,N); 2043 //datasetinput->AddInput(arrayinput,input_id);2044 2036 xDelete<IssmDouble>(layers); 2045 2037 } -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r24375 r24376 221 221 222 222 /*Virtual functions*/ 223 virtual void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;224 virtual void AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;225 223 virtual void AddBasalInput2(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented");}; 226 224 virtual void AddInput2(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented");}; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r24373 r24376 209 209 } 210 210 /*}}}*/ 211 void Penta::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/212 213 _assert_(this->inputs);214 if(!IsOnBase()) return;215 else{216 if(interpolation_enum==P1Enum){217 int i;218 IssmDouble extrudedvalues[NUMVERTICES];219 Penta* penta=NULL;220 221 for(i=0;i<NUMVERTICES2D;i++){222 extrudedvalues[i]=values[i];223 extrudedvalues[i+NUMVERTICES2D]=values[i];224 }225 penta=this;226 for(;;){227 penta->inputs->AddInput(new PentaInput(input_enum,&extrudedvalues[0],P1Enum));228 if (penta->IsOnSurface()) break;229 penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);230 }231 }232 else _error_("not implemented yet");233 }234 }235 /*}}}*/236 void Penta::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/237 238 _assert_(this->inputs);239 printf("-------------- file: Penta.cpp line: %i\n",__LINE__);240 this->inputs->AddInput(new PentaInput(input_enum,values,interpolation_enum));241 }242 /*}}}*/243 211 void Penta::AddControlInput(int input_enum,Inputs2* inputs2,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id){/*{{{*/ 244 212 … … 280 248 for(int i=0;i<num_inputs;i++){ 281 249 for(int j=0;j<NUMVERTICES;j++)nodeinputs[j]=array[(penta_vertex_ids[j]-1)*N+i]; 282 datasetinput->AddInput(new PentaInput(input_enum,nodeinputs,P1Enum),individual_enums[i]); 250 _error_("not supported"); 251 //datasetinput->AddInput(new PentaInput(input_enum,nodeinputs,P1Enum),individual_enums[i]); 283 252 } 284 253 285 254 /*Add datasetinput to element inputs*/ 286 this->inputs->AddInput(datasetinput);255 //this->inputs->AddInput(datasetinput); 287 256 } 288 257 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r24368 r24376 44 44 /*}}}*/ 45 45 /*Penta routines:{{{*/ 46 void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);47 46 void AddBasalInput2(int input_enum, IssmDouble* values, int interpolation_enum); 48 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum);49 47 void AddInput2(int input_enum, IssmDouble* values, int interpolation_enum); 50 48 void AddControlInput(int input_enum,Inputs2* inputs2,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r24335 r24376 42 42 /*}}}*/ 43 43 /*Element virtual functions definitions: {{{*/ 44 void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};45 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};46 44 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");}; 47 45 void CalvingRateLevermann(void){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp
r24335 r24376 140 140 /*}}}*/ 141 141 142 void Tetra::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/143 144 /*Call inputs method*/145 _assert_(this->inputs);146 this->inputs->AddInput(new TetraInput(input_enum,values,interpolation_enum));147 }148 /*}}}*/149 142 void Tetra::Configure(Elements* elementsin, Loads* loadsin, Nodes* nodesin,Vertices* verticesin, Materials* materialsin, Parameters* parametersin,Inputs2* inputs2in){/*{{{*/ 150 143 … … 417 410 418 411 /*Add input to the element: */ 419 this-> inputs->AddInput(new TetraInput(enum_type,values,this->element_type));412 this->AddInput2(enum_type,values,this->element_type); 420 413 421 414 /*Free ressources:*/ -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r24335 r24376 40 40 /*}}}*/ 41 41 /*Element virtual functions definitions: {{{*/ 42 void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};43 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum);44 42 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");}; 45 43 void CalvingRateLevermann(void){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24368 r24376 213 213 } 214 214 /*}}}*/ 215 void Tria::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/216 217 /*Call inputs method*/218 _assert_(this->inputs);219 220 int domaintype;221 parameters->FindParam(&domaintype,DomainTypeEnum);222 switch(domaintype){223 case Domain2DhorizontalEnum:224 this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));225 break;226 case Domain2DverticalEnum:{227 if(interpolation_enum==P1Enum){228 IssmDouble values2[NUMVERTICES]={0.};229 int numindices;230 int *indices = NULL;231 int index = this->EdgeOnBaseIndex();232 NodeOnEdgeIndices(&numindices,&indices,index,this->FiniteElement());233 for(int i=0;i<numindices;i++){234 values2[indices[i]] = values[i];235 }236 this->inputs->AddInput(new TriaInput(input_enum,values2,interpolation_enum));237 xDelete<int>(indices);238 }239 else _error_("not implemented yet");240 }241 break;242 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");243 }244 245 }246 /*}}}*/247 void Tria::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/248 249 /*Call inputs method*/250 _assert_(this->inputs);251 this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));252 }253 /*}}}*/254 215 void Tria::AddControlInput(int input_enum,Inputs2* inputs2,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id){/*{{{*/ 255 216 … … 281 242 if(N!=num_inputs) _error_("sizes are not consistent"); 282 243 283 284 int tria_vertex_ids[3]; 244 int tria_vertex_ids[3]; 285 245 286 246 for(int k=0;k<3;k++){ … … 291 251 for(int i=0;i<num_inputs;i++){ 292 252 for(int j=0;j<NUMVERTICES;j++)nodeinputs[j]=array[(tria_vertex_ids[j]-1)*N+i]; 293 datasetinput->AddInput(new TriaInput(input_enum,nodeinputs,P1Enum),individual_enums[i]); 253 _error_("not supported"); 254 //datasetinput->AddInput(new TriaInput(input_enum,nodeinputs,P1Enum),individual_enums[i]); 294 255 } 295 256 296 257 /*Add datasetinput to element inputs*/ 297 this->inputs->AddInput(datasetinput);258 //this->inputs->AddInput(datasetinput); 298 259 } 299 260 /*}}}*/ … … 3183 3144 tria_vertex_ids[i]=reCast<int>(iomodel->elements[3*index+i]); //ids for vertices are in the elements array from Matlab 3184 3145 } 3185 3186 // /*Control Inputs*/3187 // if (control_analysis && !ad_analysis){3188 // if(!ad_analysis)iomodel->FindConstant(&controls,NULL,"md.inversion.control_parameters");3189 // if(ad_analysis)iomodel->FindConstant(&controls,NULL,"md.autodiff.independent_object_names");3190 //3191 // for(i=0;i<num_control_type;i++){3192 // _assert_(controls[i]);3193 // int control = StringToEnumx(controls[i]);3194 // switch(control){3195 // case BalancethicknessThickeningRateEnum:3196 // if (iomodel->Data("md.balancethickness.thickening_rate")){3197 // for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.balancethickness.thickening_rate")[tria_vertex_ids[j]-1];3198 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;3199 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;3200 // this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3201 // }3202 // break;3203 // case VxEnum:3204 // if (iomodel->Data("md.initialization.vx")){3205 // for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vx")[tria_vertex_ids[j]-1];3206 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;3207 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;3208 // this->inputs->AddInput(new ControlInput(VxEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3209 // }3210 // break;3211 // case VyEnum:3212 // if (iomodel->Data("md.initialization.vy")){3213 // for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.initialization.vy")[tria_vertex_ids[j]-1];3214 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;3215 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;3216 // this->inputs->AddInput(new ControlInput(VyEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3217 // }3218 // break;3219 // case ThicknessEnum:3220 // if(iomodel->Data("md.geometry.thickness")){3221 // for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.geometry.thickness")[tria_vertex_ids[j]-1];3222 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3223 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3224 // this->inputs->AddInput(new ControlInput(ThicknessEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3225 // }3226 // break;3227 // case BalancethicknessSpcthicknessEnum:3228 // if(iomodel->Data("md.balancethickness.spcthickness")){3229 // for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.balancethickness.spcthickness")[tria_vertex_ids[j]-1];3230 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3231 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3232 // this->inputs->AddInput(new ControlInput(BalancethicknessSpcthicknessEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3233 // }3234 // break;3235 // case BalancethicknessOmegaEnum:3236 // if(iomodel->Data("md.balancethickness.omega")){3237 // for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.balancethickness.omega")[tria_vertex_ids[j]-1];3238 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3239 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3240 // this->inputs->AddInput(new ControlInput(BalancethicknessOmegaEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3241 // }3242 // break;3243 // case FrictionCoefficientEnum:3244 // if (iomodel->Data("md.friction.coefficient")){3245 // for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data("md.friction.coefficient")[tria_vertex_ids[j]-1];3246 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3247 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3248 // this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3249 // }3250 // break;3251 // case MaterialsRheologyBbarEnum:3252 // if(iomodel->Data("md.materials.rheology_B")){3253 // for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.materials.rheology_B")[tria_vertex_ids[j]-1];3254 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3255 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3256 // this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3257 // }3258 // break;3259 // case DamageDbarEnum:3260 // if(iomodel->Data("md.damage.D")){3261 // for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data("md.damage.D")[tria_vertex_ids[j]-1];3262 // for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data("md.inversion.min_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3263 // for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data("md.inversion.max_parameters")[(tria_vertex_ids[j]-1)*num_control_type+i];3264 // this->inputs->AddInput(new ControlInput(DamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,P1Enum,i+1));3265 // }3266 // break;3267 // default:3268 // _error_("Control " << EnumToStringx(control) << " not implemented yet");3269 // }3270 // }3271 // for(i=0;i<num_control_type;i++) xDelete<char>(controls[i]);3272 // xDelete<char*>(controls);3273 // }3274 //3275 // /*DatasetInputs*/3276 // if (control_analysis && iomodel->Data("md.inversion.cost_functions_coefficients")){3277 //3278 // /*Generate cost functions associated with the iomodel*/3279 // char** cost_functions = NULL;3280 // int* cost_functions_enums = NULL;3281 // int num_cost_functions;3282 //3283 // iomodel->FindConstant(&num_cost_functions,"md.inversion.num_cost_functions");3284 // iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions");3285 // if(num_cost_functions<1) _error_("No cost functions found");3286 // cost_functions_enums=xNew<int>(num_cost_functions);3287 // for(j=0;j<num_cost_functions;j++){ cost_functions_enums[j]=StringToEnumx(cost_functions[j]); }3288 //3289 // /*Create inputs and add to DataSetInput*/3290 // DatasetInput* datasetinput=new DatasetInput(InversionCostFunctionsCoefficientsEnum);3291 // for(i=0;i<num_responses;i++){3292 // for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data("md.inversion.cost_functions_coefficients")[(tria_vertex_ids[j]-1)*num_responses+i];3293 // datasetinput->AddInput(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum),cost_functions_enums[i]);3294 // }3295 //3296 // /*Add datasetinput to element inputs*/3297 // this->inputs->AddInput(datasetinput);3298 //3299 // /*Clean up cost functions*/3300 // xDelete<int>(cost_functions_enums);3301 // for(int j=0;j<num_cost_functions;j++) xDelete<char>(cost_functions[j]);3302 // xDelete<char*>(cost_functions);3303 // }3304 3146 } 3305 3147 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r24352 r24376 170 170 /*}}}*/ 171 171 /*Tria specific routines:{{{*/ 172 void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);173 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum);174 172 void AddBasalInput2(int input_enum, IssmDouble* values, int interpolation_enum); 175 173 void AddInput2(int input_enum, IssmDouble* values, int interpolation_enum); -
issm/trunk-jpl/src/c/classes/Radar.cpp
r24375 r24376 270 270 271 271 /*Add power results into inputs*/ 272 element->AddInput (RadarPowerMacGregorEnum,&power_M07[0],P1Enum);273 element->AddInput (RadarPowerWolffEnum,&power_W97[0],P1Enum);272 element->AddInput2(RadarPowerMacGregorEnum,&power_M07[0],P1Enum); 273 element->AddInput2(RadarPowerWolffEnum,&power_W97[0],P1Enum); 274 274 275 275 /*Clean up and return*/ -
issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp
r24047 r24376 114 114 IssmDouble* values = xNew<IssmDouble>(numvertices); 115 115 for(int j=0;j<numvertices;j++) values[j] = 1.; /*Anything >0 = no ice*/ 116 element->AddInput (MaskIceLevelsetEnum,values,P1Enum);116 element->AddInput2(MaskIceLevelsetEnum,values,P1Enum); 117 117 xDelete<IssmDouble>(values); 118 118 }
Note:
See TracChangeset
for help on using the changeset viewer.