Changeset 15214
- Timestamp:
- 06/07/13 14:48:34 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15196 r15214 4703 4703 4704 4704 /*Compute SurfaceLogVelMisfit: 4705 * [ vel + eps ] 24705 * 4 [ vel + eps ] 2 4706 4706 * J = 4 \bar{v}^2 | log ( ----------- ) | 4707 4707 * [ vel + eps ] … … 6178 6178 water_input->GetInputValue(&water_load,gauss); 6179 6179 transfer_input->GetInputValue(&transfer,gauss); 6180 scalar = Jdet*gauss->weight*(water_load -transfer);6180 scalar = Jdet*gauss->weight*(water_load+transfer); 6181 6181 if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt; 6182 6182 for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; … … 6236 6236 /*Loading term*/ 6237 6237 transfer_input->GetInputValue(&transfer,gauss); 6238 scalar = Jdet*gauss->weight* transfer;6238 scalar = Jdet*gauss->weight*(-transfer); 6239 6239 if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt; 6240 6240 for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; … … 6418 6418 this->inputs->GetInputValue(&converged,ConvergedEnum); 6419 6419 6420 /*Get inputs*/ 6421 if(isefficientlayer){ 6422 GetInputListOnVertices(&activeEpl[0],HydrologydcMaskEplactiveEnum); 6423 } 6420 6424 if(converged){ 6421 6425 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 6422 6426 this->parameters->FindParam(&kmax,HydrologySedimentKmaxEnum); 6423 6427 this->parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum); 6424 6425 if(isefficientlayer)GetInputListOnVertices(&activeEpl[0],HydrologydcMaskEplactiveEnum); 6428 6426 6429 6427 6430 kappa=kmax*pow(10.,penalty_factor); … … 6441 6444 } 6442 6445 } 6446 else{ 6447 for(int i=0;i<NUMVERTICES;i++){ 6448 if(isefficientlayer){ 6449 if(activeEpl[i]==1.0)activate[i]=1.0; 6450 } 6451 } 6452 } 6453 6443 6454 /*Add input to the element: */ 6444 if(isefficientlayer) this->inputs->AddInput(new TriaP1Input(HydrologydcMaskEplactiveEnum, activate));6455 if(isefficientlayer) this->inputs->AddInput(new TriaP1Input(HydrologydcMaskEplactiveEnum,&activate[0])); 6445 6456 this->inputs->AddInput(new TriaP1Input(SedimentHeadEnum,values)); 6446 6457 this->inputs->AddInput(new TriaP1Input(SedimentHeadResidualEnum,residual)); 6447 6458 6459 /* if(id==1717){ 6460 printf("6 \n"); 6461 Input* EplMask=inputs->GetInput(HydrologydcMaskEplactiveEnum); 6462 EplMask->Echo(); 6463 } 6464 */ 6448 6465 /*Free ressources:*/ 6449 6466 xDelete<int>(doflist); … … 6506 6523 _error_("no case higher than 3 for SedimentlimitFlag"); 6507 6524 } 6508 6509 6525 /*Assign output pointer*/ 6510 6526 *ph_max=h_max; … … 6520 6536 int transfermethod; 6521 6537 IssmDouble sed_trans,sed_thick; 6522 IssmDouble leakage ;6538 IssmDouble leakage,h_max; 6523 6539 IssmDouble activeEpl[numdof]; 6524 6540 IssmDouble wh_trans[numdof]={0.0}; … … 6534 6550 /*Also get the flag to the transfer method*/ 6535 6551 this->parameters->FindParam(&transfermethod,HydrologydcTransferFlagEnum); 6536 6552 6537 6553 /*Switch between the different transfer methods cases*/ 6538 6554 switch(transfermethod){ … … 6552 6568 6553 6569 for(int i=0;i<numdof;i++){ 6554 6555 if(activeEpl[i]==0.0)break; 6556 6570 if(activeEpl[i]==0.0)continue; 6571 6557 6572 if(sed_head[i]>epl_head[i]){ 6558 6573 storing[i]=matpar->GetSedimentStoring(); 6559 wh_trans[i]=sed_trans*storing[i]*( sed_head[i]-epl_head[i])/(leakage*sed_thick);6574 wh_trans[i]=sed_trans*storing[i]*(epl_head[i]-sed_head[i])/(leakage*sed_thick); 6560 6575 } 6561 6576 else{ 6577 this->GetHydrologyDCInefficientHmax(&h_max,nodes[i]); 6562 6578 storing[i]=matpar->GetEplStoring(); 6563 wh_trans[i]=sed_trans*storing[i]*(sed_head[i]-epl_head[i])/(leakage*sed_thick); 6579 wh_trans[i]=sed_trans*storing[i]*(epl_head[i]-sed_head[i])/(leakage*sed_thick); 6580 if(sed_head[i]>h_max){ 6581 wh_trans[i]=0.0; 6582 } 6583 if((sed_head[i]+wh_trans[i])>h_max){ 6584 wh_trans[i]=h_max-sed_head[i]; 6585 } 6564 6586 } 6587 transfer->SetValue(doflist[i],wh_trans[i],INS_VAL); 6565 6588 } 6566 6589 break; … … 6570 6593 } 6571 6594 /*Assign output pointer*/ 6572 transfer->SetValues(numdof,doflist,&wh_trans[0],ADD_VAL);6595 /*transfer->SetValues(numdof,doflist,&wh_trans[0],INS_VAL);*/ 6573 6596 } 6574 6597 -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r15183 r15214 73 73 femmodel->UpdateConstraintsx(); 74 74 femmodel->parameters->SetParam(HydrologySedimentEnum,HydrologyLayerEnum); 75 femmodel->HydrologyTransferx();76 75 /* femmodel->HydrologyTransferx(); 76 */ 77 77 /*Iteration on the sediment layer*/ 78 78 for(;;){ 79 femmodel->HydrologyTransferx(); 79 80 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df, &sediment_kmax); 80 81 CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum); … … 117 118 /*Iteration on the EPL layer*/ 118 119 for(;;){ 120 femmodel->HydrologyTransferx(); 119 121 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL); 120 122 CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
Note:
See TracChangeset
for help on using the changeset viewer.