Changeset 15020


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

NEW: Introduction of the transfer term in the Pvectors

Location:
issm/trunk-jpl/src/c
Files:
4 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");
  • issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp

    r15012 r15020  
    703703        element->GetInputValue(&h,node,SedimentHeadEnum);
    704704        element->GetHydrologyDCInefficientHmax(&h_max,node);
    705 
    706705        if (h>h_max)
    707706         new_active=1;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp

    r15000 r15020  
    1313        int         hydrology_model;
    1414        int         sedimentlimit_flag;
     15        int         transfer_flag;
    1516        bool        isefficientlayer;
    1617        IssmDouble  sedimentlimit;
    1718        IssmDouble  penalty_factor;
     19        IssmDouble  leakagefactor;
    1820
    1921        /*Get parameters: */
     
    3133        iomodel->FetchData(&isefficientlayer,HydrologydcIsefficientlayerEnum);
    3234        iomodel->FetchData(&sedimentlimit_flag,HydrologydcSedimentlimitFlagEnum);
     35        iomodel->FetchData(&transfer_flag,HydrologydcTransferFlagEnum);
    3336        iomodel->FetchData(&penalty_factor,HydrologydcPenaltyFactorEnum);
    3437
     
    3841        }
    3942
     43        if(transfer_flag==1){
     44                iomodel->FetchData(&leakagefactor,HydrologydcLeakageFactorEnum);
     45                parameters->AddObject(new DoubleParam(HydrologydcLeakageFactorEnum,leakagefactor));
     46        }
     47
    4048        parameters->AddObject(new DoubleParam(HydrologydcPenaltyFactorEnum,penalty_factor));
    4149        parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
    4250        parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer));
    4351        parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag));
     52        parameters->AddObject(new IntParam(HydrologydcTransferFlagEnum,transfer_flag));
    4453
    4554        /*Assign output pointer: */
  • issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp

    r15006 r15020  
    4545                femmodel->UpdateConstraintsx();
    4646                femmodel->parameters->SetParam(HydrologySedimentEnum,HydrologyLayerEnum);
     47                femmodel->HydrologyTransferx();
    4748                for(;;){
    4849
Note: See TracChangeset for help on using the changeset viewer.