Ignore:
Timestamp:
02/13/16 22:17:14 (9 years ago)
Author:
Eric.Larour
Message:

CHG: introduced sealevel in the friction (Neff), the neumann boundary conditions (StressbalanceAnalysis), the grouding
line dynamics (MigrateGroundingLIne of Element.cpp) and in the update of free surfaces (MasstransportAnalysis).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/classes/Loads/Friction.cpp

    r19740 r20156  
    6767        IssmDouble  Neff;
    6868        IssmDouble  drag_coefficient;
    69         IssmDouble  bed,thickness;
     69        IssmDouble  bed,thickness,sealevel;
    7070        IssmDouble  alpha_complement;
    7171
     
    7575        element->GetInputValue(&thickness, gauss,ThicknessEnum);
    7676        element->GetInputValue(&bed, gauss,BaseEnum);
     77        element->GetInputValue(&sealevel, gauss,SealevelEnum);
    7778        element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
    7879        IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
     
    8586
    8687        //From bed and thickness, compute effective pressure when drag is viscous:
    87         Neff=gravity*(rho_ice*thickness+rho_water*bed);
     88        Neff=gravity*(rho_ice*thickness+rho_water*(bed-sealevel));
    8889        if(Neff<0)Neff=0;
    8990
     
    231232        IssmDouble  drag_p, drag_q;
    232233        IssmDouble  Neff;
    233         IssmDouble  thickness,base,bed,floatation_thickness;
     234        IssmDouble  thickness,base,bed,floatation_thickness,sealevel;
    234235        IssmDouble  vx,vy,vz,vmag;
    235236        IssmDouble  drag_coefficient,drag_coefficient_coulomb;
     
    241242        element->GetInputValue(&thickness, gauss,ThicknessEnum);
    242243        element->GetInputValue(&base, gauss,BaseEnum);
     244        element->GetInputValue(&sealevel, gauss,SealevelEnum);
    243245        element->GetInputValue(&bed, gauss,BedEnum);
    244246        element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
     
    253255
    254256        //From base and thickness, compute effective pressure when drag is viscous:
    255         Neff=gravity*(rho_ice*thickness+rho_water*base);
     257        Neff=gravity*(rho_ice*thickness+rho_water*(base-sealevel));
    256258        if(Neff<0)Neff=0;
    257259
     
    407409        IssmDouble  drag_p, drag_q;
    408410        IssmDouble  Neff;
    409         IssmDouble  thickness,bed;
     411        IssmDouble  thickness,base,sealevel;
    410412        IssmDouble  vx,vy,vz,vmag;
    411413        IssmDouble  drag_coefficient;
     
    416418        element->GetInputValue(&drag_q,FrictionQEnum);
    417419        element->GetInputValue(&thickness, gauss,ThicknessEnum);
    418         element->GetInputValue(&bed, gauss,BaseEnum);
     420        element->GetInputValue(&base, gauss,BaseEnum);
     421        element->GetInputValue(&sealevel, gauss,SealevelEnum);
    419422        element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
    420423        IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
     
    426429        s=1./drag_p;
    427430
    428         //From bed and thickness, compute effective pressure when drag is viscous:
    429         Neff=gravity*(rho_ice*thickness+rho_water*bed);
     431        //From base and thickness, compute effective pressure when drag is viscous:
     432        Neff=gravity*(rho_ice*thickness+rho_water*(base-sealevel));
    430433        if(Neff<0)Neff=0;
    431434
     
    467470        IssmDouble  drag_p, drag_q;
    468471        IssmDouble  Neff,F;
    469         IssmDouble  thickness,bed;
     472        IssmDouble  thickness,bed,sealevel;
    470473        IssmDouble  vx,vy,vz,vmag;
    471474        IssmDouble  drag_coefficient,water_layer;
     
    478481        element->GetInputValue(&thickness, gauss,ThicknessEnum);
    479482        element->GetInputValue(&bed, gauss,BaseEnum);
     483        element->GetInputValue(&sealevel, gauss,SealevelEnum);
    480484        element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
    481485        element->GetInputValue(&water_layer, gauss,FrictionWaterLayerEnum);
     
    490494        //From bed and thickness, compute effective pressure when drag is viscous:
    491495        if(bed>0) bed=0;
    492         if(water_layer==0) Neff=gravity*rho_ice*thickness+gravity*rho_water*bed;
     496        if(water_layer==0) Neff=gravity*rho_ice*thickness+gravity*rho_water*(bed-sealevel);
    493497        else if(water_layer>0) Neff=gravity*rho_ice*thickness*F;
    494498        else _error_("negative water layer thickness");
     
    599603        IssmDouble  Neff;
    600604        IssmDouble  drag_coefficient;
    601         IssmDouble  bed,thickness,head;
     605        IssmDouble  bed,thickness,head,sealevel;
    602606        IssmDouble  alpha2;
    603607
     
    606610        element->GetInputValue(&bed, gauss,BaseEnum);
    607611        element->GetInputValue(&head, gauss,HydrologyHeadEnum);
     612        element->GetInputValue(&sealevel, gauss,SealevelEnum);
    608613        element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
    609614        IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
     
    613618        //From bed and thickness, compute effective pressure when drag is viscous:
    614619        pressure_ice   = rho_ice*gravity*thickness;
    615         pressure_water = rho_water*gravity*(head-bed);
     620        pressure_water = rho_water*gravity*(head-bed+sealevel);
    616621        Neff=pressure_ice-pressure_water;
    617622        if(Neff<0.) Neff=0.;
Note: See TracChangeset for help on using the changeset viewer.