- Timestamp:
- 06/19/19 07:14:34 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r23959 r24030 364 364 basalelement->FindParam(&smb_model,SmbEnum); 365 365 366 Input* sed_head_input= basalelement->GetInput(SedimentHeadHydrostepEnum);367 Input* epl_head_input= basalelement->GetInput(EplHeadHydrostepEnum);368 Input* base_input= basalelement->GetInput(BaseEnum);369 Input* basal_melt_input= basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input);370 Input* SedTrans_input= basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input);366 Input* sed_head_input = basalelement->GetInput(SedimentHeadHydrostepEnum); 367 Input* epl_head_input = basalelement->GetInput(EplHeadHydrostepEnum); 368 Input* base_input = basalelement->GetInput(BaseEnum); 369 Input* basal_melt_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input); 370 Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input); 371 371 372 372 if(dt!= 0.){ … … 488 488 489 489 /*Intermediaries*/ 490 int 490 int domaintype; 491 491 Element* basalelement=NULL; 492 bool converged; 492 bool converged; 493 int* doflist = NULL; 493 494 494 495 /*Get basal element*/ … … 504 505 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 505 506 } 506 /*Intermediary*/507 int* doflist = NULL;508 509 507 /*Fetch number of nodes for this finite element*/ 510 508 int numnodes = basalelement->GetNumberOfNodes(); … … 515 513 IssmDouble* pressure = xNew<IssmDouble>(numnodes); 516 514 IssmDouble* residual = xNew<IssmDouble>(numnodes); 517 IssmDouble* base = xNew<IssmDouble>(numnodes); 518 519 basalelement->GetInputListOnVertices(&base[0],BaseEnum); 520 /*Use the dof list to index into the solution vector, frozen nodes are set to initial value: */ 515 516 /*Use the dof list to index into the solution vector reseting to base is done at the deactivate stage: */ 521 517 for(int i=0;i<numnodes;i++){ 522 if(basalelement->nodes[i]->IsActive()){ 523 values[i] =solution[doflist[i]]; 524 } 525 else{ 526 values[i] = base[i]; 527 } 518 values[i] =solution[doflist[i]]; 528 519 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 529 520 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); … … 537 528 IssmDouble penalty_factor,kmax,kappa,h_max; 538 529 IssmDouble* thickness = xNew<IssmDouble>(numnodes); 530 IssmDouble* base = xNew<IssmDouble>(numnodes); 539 531 IssmDouble* transmitivity = xNew<IssmDouble>(numnodes); 540 532 … … 546 538 547 539 basalelement->GetInputListOnVertices(&thickness[0],ThicknessEnum); 540 basalelement->GetInputListOnVertices(&base[0],BaseEnum); 548 541 basalelement->GetInputListOnVertices(&transmitivity[0],HydrologydcSedimentTransmitivityEnum); 549 542 … … 563 556 } 564 557 xDelete<IssmDouble>(thickness); 558 xDelete<IssmDouble>(base); 565 559 xDelete<IssmDouble>(transmitivity); 566 xDelete<IssmDouble>(base);567 560 } 568 561 … … 576 569 xDelete<IssmDouble>(residual); 577 570 xDelete<IssmDouble>(pressure); 578 xDelete<IssmDouble>(base);579 571 xDelete<int>(doflist); 580 572 if(domaintype!=Domain2DhorizontalEnum){
Note:
See TracChangeset
for help on using the changeset viewer.