Ignore:
Timestamp:
05/13/13 16:45:14 (12 years ago)
Author:
bdef
Message:

NEW: Introduction of the transfer term in the Pvectors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15015 r15020  
    20782078                                name==SedimentHeadOldEnum ||
    20792079                                name==SedimentHeadEnum ||
     2080                                name==WaterTransferEnum ||
    20802081                                name==BasisIntegralEnum ||
    20812082                                name==QmuVxEnum ||
     
    61506151        IssmDouble xyz_list[NUMVERTICES][3];
    61516152        IssmDouble dt,scalar,water_head;
    6152         IssmDouble water_load;
     6153        IssmDouble water_load,transfer;
    61536154        IssmDouble sediment_storing;
    61546155        IssmDouble basis[numdof];
     
    61636164        this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    61646165        Input* water_input=inputs->GetInput(BasalforcingsMeltingRateEnum);  _assert_(water_input);
     6166        Input* transfer_input=inputs->GetInput(WaterTransferEnum);  _assert_(transfer_input);
    61656167        Input* old_wh_input=NULL;
    61666168
     
    61816183                /*Loading term*/
    61826184                water_input->GetInputValue(&water_load,gauss);
    6183                 scalar = Jdet*gauss->weight*water_load;
     6185                transfer_input->GetInputValue(&transfer,gauss);
     6186                scalar = Jdet*gauss->weight*(water_load-transfer);
    61846187                if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt;
    61856188                for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
     
    62076210        IssmDouble xyz_list[NUMVERTICES][3];
    62086211        IssmDouble dt,scalar,water_head;
    6209         IssmDouble residual_load;
     6212        IssmDouble residual_load,transfer;
    62106213        IssmDouble epl_storing;
    62116214        IssmDouble basis[numdof];
     
    62206223        this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    62216224        Input* residual_input=inputs->GetInput(SedimentHeadResidualEnum);  _assert_(residual_input);
     6225        Input* transfer_input=inputs->GetInput(WaterTransferEnum);  _assert_(transfer_input);
    62226226        Input* old_wh_input=NULL;
    62236227
     
    62376241                /*Loading term*/
    62386242                residual_input->GetInputValue(&residual_load,gauss);
    6239                 scalar = Jdet*gauss->weight*residual_load;
     6243                transfer_input->GetInputValue(&transfer,gauss);
     6244                scalar = Jdet*gauss->weight*(residual_load+transfer);
    62406245                if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt;
    62416246                for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
     
    63506355                for(int i=0;i<NUMVERTICES;i++){
    63516356                        this->GetHydrologyDCInefficientHmax(&h_max,nodes[i]);
    6352                         if(values[i]>h_max)
    6353                                 residual[i]=kappa*(values[i]-h_max)/(dt*intbasis[i]);
     6357                        if(values[i]>h_max){
     6358                                residual[i]=kappa*(values[i]-h_max)/intbasis[i];
     6359                                if(reCast<bool,IssmDouble>(dt))residual[i]=residual[i]/dt;
     6360                        }
    63546361                        else
    63556362                                residual[i]=0.0;
    63566363                }
    6357         }       
    6358 
     6364        }
    63596365        /*Add input to the element: */
    63606366
     
    65166522                        }
    65176523                }
     6524                break;
    65186525        default:
    65196526                _error_("no case higher than 1 for the Transfer method");
Note: See TracChangeset for help on using the changeset viewer.