Changeset 14928


Ignore:
Timestamp:
05/06/13 13:02:15 (12 years ago)
Author:
bdef
Message:

CHG: Computation of the residual for the inefficent hydrological drainage system

Location:
issm/trunk-jpl/src/c
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14898 r14928  
    9090        HydrologydcEnum,
    9191        SedimentHeadEnum,
     92        SedimentHeadResidualEnum,
    9293        EplHeadEnum,
    9394        HydrologydcSpcsedimentHeadEnum,
  • TabularUnified issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp

    r14923 r14928  
    20522052                                name==GradientEnum ||
    20532053                                name==OldGradientEnum ||
     2054        name==ConvergedEnum ||
    20542055                                name==QmuVxEnum ||
    20552056                                name==QmuVyEnum ||
     
    62016202        IssmDouble xyz_list[NUMVERTICES][3];
    62026203        IssmDouble dt,scalar,water_head;
    6203         IssmDouble water_load;
     6204        IssmDouble residual_load;
    62046205        IssmDouble epl_storing;
    62056206        IssmDouble basis[numdof];
     
    62136214        GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
    62146215        this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    6215         Input* water_input=inputs->GetInput(BasalforcingsMeltingRateEnum);  _assert_(water_input);
     6216        Input* residual_input=inputs->GetInput(SedimentHeadResidualEnum);  _assert_(residual_input);
    62166217        Input* old_wh_input=NULL;
    62176218
     
    62306231
    62316232                /*Loading term*/
    6232                 water_input->GetInputValue(&water_load,gauss);
    6233                 scalar = Jdet*gauss->weight*water_load;
     6233                residual_input->GetInputValue(&residual_load,gauss);
     6234                scalar = Jdet*gauss->weight*residual_load;
    62346235                if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt;
    62356236                for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
     
    63156316        const int   numdof         = NDOF1 *NUMVERTICES;
    63166317        int        *doflist        = NULL;
     6318        bool  converged;
    63176319        IssmDouble  values[numdof];
     6320        IssmDouble  residual[numdof];
     6321        IssmDouble  sediment_storing;
     6322        IssmDouble  penalty_factor;
     6323        IssmDouble  kmax, kappa, h_max;
    63186324
    63196325        /*Get dof list: */
    63206326        GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
     6327
    63216328
    63226329        /*Use the dof list to index into the solution vector: */
     
    63266333        }
    63276334
     6335        /*If converged keep the residual in mind*/
     6336        this->inputs->GetInputValue(&converged,ConvergedEnum);
     6337        if(converged){
     6338                this->parameters->FindParam(&kmax,HydrologySedimentKmaxEnum);
     6339                this->parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
     6340                sediment_storing=matpar->GetSedimentStoring();
     6341                kappa=kmax*pow(10.,penalty_factor);
     6342               
     6343                for(int i=0;i<NUMVERTICES;i++){
     6344                        this->GetHydrologyDCInefficientHmax(&h_max,nodes[i]);
     6345                        if(values[i]>h_max)
     6346                                residual[i]=kappa*(values[i]-h_max)*sediment_storing;
     6347                        else
     6348                                residual[i]=0.0;
     6349                }
     6350        }
     6351
    63286352        /*Add input to the element: */
    63296353        this->inputs->AddInput(new TriaP1Input(SedimentHeadEnum,values));
     6354        this->inputs->AddInput(new TriaP1Input(SedimentHeadResidualEnum,residual));
    63306355
    63316356        /*Free ressources:*/
  • TabularUnified issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14917 r14928  
    9494                case HydrologydcEnum : return "Hydrologydc";
    9595                case SedimentHeadEnum : return "SedimentHead";
     96                case SedimentHeadResidualEnum : return "SedimentHeadResidual";
    9697                case EplHeadEnum : return "EplHead";
    9798                case HydrologydcSpcsedimentHeadEnum : return "HydrologydcSpcsedimentHead";
  • TabularUnified issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14917 r14928  
    9595              else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
    9696              else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
     97              else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum;
    9798              else if (strcmp(name,"EplHead")==0) return EplHeadEnum;
    9899              else if (strcmp(name,"HydrologydcSpcsedimentHead")==0) return HydrologydcSpcsedimentHeadEnum;
     
    136137              else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
    137138              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    138               else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
     142              if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
     143              else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
    143144              else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
    144145              else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;
     
    259260              else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
    260261              else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
    261               else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
     265              if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
     266              else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
    266267              else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
    267268              else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
     
    382383              else if (strcmp(name,"Vertex")==0) return VertexEnum;
    383384              else if (strcmp(name,"Air")==0) return AirEnum;
    384               else if (strcmp(name,"Ice")==0) return IceEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"Melange")==0) return MelangeEnum;
     388              if (strcmp(name,"Ice")==0) return IceEnum;
     389              else if (strcmp(name,"Melange")==0) return MelangeEnum;
    389390              else if (strcmp(name,"Water")==0) return WaterEnum;
    390391              else if (strcmp(name,"Closed")==0) return ClosedEnum;
     
    505506              else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
    506507              else if (strcmp(name,"MinVx")==0) return MinVxEnum;
    507               else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
     511              if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
     512              else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
    512513              else if (strcmp(name,"MinVy")==0) return MinVyEnum;
    513514              else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
  • TabularUnified issm/trunk-jpl/src/c/solutions/hydrology_core.cpp

    r14917 r14928  
    8484                                if(VerboseSolution()) _pprintLine_("   saving results ");
    8585                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentHeadEnum);
     86                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentHeadResidualEnum);
    8687
    8788                                /*unload results*/
  • TabularUnified issm/trunk-jpl/src/c/solvers/solver_hydro_nonlinear.cpp

    r14891 r14928  
    6767
    6868                        if(converged){
     69                                femmodel->parameters->SetParam(sediment_kmax,HydrologySedimentKmaxEnum);
     70
    6971                                InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,converged,ConvergedEnum);
    70                                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,HydrologySedimentKmaxEnum);
    7172                                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
     73                                /*InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,HydrologySedimentKmaxEnum);*/
    7274                                break;
    7375                        }
Note: See TracChangeset for help on using the changeset viewer.