Changeset 22236
- Timestamp:
- 11/05/17 08:11:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r21500 r22236 240 240 /*Diffusivity*/ 241 241 D_scalar=epl_transmitivity*gauss->weight*Jdet; 242 //D_scalar=gauss->weight*Jdet; 242 243 if(dt!=0.) D_scalar=D_scalar*dt; 243 244 D[0][0]=D_scalar; … … 253 254 basalelement->NodalFunctions(&basis[0],gauss); 254 255 D_scalar=epl_storing*gauss->weight*Jdet; 256 //D_scalar=(epl_storing/epl_transmitivity)*gauss->weight*Jdet; 255 257 TripleMultiply(basis,numnodes,1,0, 256 258 &D_scalar,1,1,0, … … 262 264 transfer=GetHydrologyKMatrixTransfer(basalelement); 263 265 D_scalar=dt*transfer*gauss->weight*Jdet; 266 //D_scalar=dt*(transfer/epl_transmitivity)*gauss->weight*Jdet; 264 267 TripleMultiply(basis,numnodes,1,0, 265 268 &D_scalar,1,1,0, … … 312 315 IssmDouble dt,scalar,water_head; 313 316 IssmDouble water_load,transfer; 314 IssmDouble epl_storing ;317 IssmDouble epl_storing,epl_transmitivity; 315 318 IssmDouble Jdet; 316 319 IssmDouble residual,connectivity; … … 348 351 basalelement ->NodalFunctions(basis,gauss); 349 352 epl_storing = EplStoring(basalelement,gauss,epl_thick_input,epl_head_input,base_input); 353 epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_thick_input,epl_head_input,base_input); 354 350 355 /*Loading term*/ 351 356 water_input->GetInputValue(&water_load,gauss); 352 357 scalar = Jdet*gauss->weight*(water_load); 358 //scalar = Jdet*gauss->weight*(water_load)/epl_transmitivity; 353 359 if(dt!=0.) scalar = scalar*dt; 354 360 for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i]; … … 360 366 transfer=GetHydrologyPVectorTransfer(basalelement,gauss,sed_head_input); 361 367 scalar = Jdet*gauss->weight*((water_head*epl_storing)+(dt*transfer)); 368 //scalar = Jdet*gauss->weight*((water_head*epl_storing)+(dt*transfer))/epl_transmitivity; 362 369 for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i]; 363 370 } … … 369 376 for(int iv=0;iv<numvertices;iv++){ 370 377 gauss->GaussVertex(iv); 378 epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_thick_input,epl_head_input,base_input); 371 379 connectivity = IssmDouble(basalelement->VertexConnectivity(iv)); 372 380 residual_input->GetInputValue(&residual,gauss); 373 381 pe->values[iv]+=residual/connectivity; 382 //pe->values[iv]+=residual/(epl_transmitivity*connectivity); 374 383 } 375 384 /*Clean up and return*/ … … 415 424 /*Fetch dof list and allocate solution vector*/ 416 425 IssmDouble* eplHeads = xNew<IssmDouble>(numnodes); 426 IssmDouble* basevalue = xNew<IssmDouble>(numnodes); 427 IssmDouble* initvalue = xNew<IssmDouble>(numnodes); 417 428 basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 418 429 … … 422 433 /*Use the dof list to index into the solution vector: */ 423 434 /*If the EPL is not active we revert to the bedrock elevation*/ 435 424 436 if(active_element){ 425 437 for(int i=0;i<numnodes;i++){ … … 430 442 } 431 443 else{ 432 basalelement->GetInputListOnVertices(&eplHeads[0],BaseEnum); 444 //tradeof between keeping initial condition and not getting to far from head at deactivation 445 basalelement->GetInputListOnVertices(&basevalue[0],BaseEnum); 446 basalelement->GetInputListOnVertices(&initvalue[0],EplHeadEnum); 433 447 for(int i=0;i<numnodes;i++){ 448 eplHeads[i]=max(basevalue[i],initvalue[i]); 434 449 if(xIsNan<IssmDouble>(eplHeads[i])) _error_("NaN found in solution vector"); 435 450 if(xIsInf<IssmDouble>(eplHeads[i])) _error_("Inf found in solution vector"); … … 440 455 /*Free ressources:*/ 441 456 xDelete<IssmDouble>(eplHeads); 457 xDelete<IssmDouble>(basevalue); 458 xDelete<IssmDouble>(initvalue); 442 459 xDelete<int>(doflist); 443 460 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; … … 464 481 case 1: 465 482 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 466 transfer= leakage;483 transfer=+leakage; 467 484 break; 468 485 default: … … 489 506 sed_head_input->GetInputValue(&sediment_head,gauss); 490 507 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 491 transfer= sediment_head*leakage;508 transfer=+sediment_head*leakage; 492 509 break; 493 510 default: … … 558 575 element->GetInputListOnVertices(&ice_thickness[0],ThicknessEnum); 559 576 element->GetInputListOnVertices(&bed[0],BaseEnum); 560 577 561 578 if(!active_element){ 562 579 /*Keeping thickness to initial value if EPL is not active*/ … … 731 748 base_input->GetInputValue(&base_elev,gauss); 732 749 water_sheet=max(0.0,(prestep_head-base_elev)); 733 734 750 storing=rho_freshwater*g*epl_porosity*epl_thickness*(water_compressibility+(epl_compressibility/epl_porosity)); 735 751 … … 760 776 761 777 water_sheet=max(0.0,(prestep_head-base_elev)); 762 763 778 epl_transmitivity=epl_conductivity*epl_thickness; 764 779 //epl_transmitivity=max(1.0e-6,(epl_conductivity*min(water_sheet,epl_thickness)));
Note:
See TracChangeset
for help on using the changeset viewer.