Changeset 27225


Ignore:
Timestamp:
08/23/22 08:47:54 (3 years ago)
Author:
aleahsommers
Message:

CHG: cleaned up SHAKTI code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp

    r27022 r27225  
    242242                element->NodalFunctions(basis,gauss);
    243243
    244                 /***/
    245244                base_input->GetInputValue(&bed,gauss);
    246245                thickness_input->GetInputValue(&thickness,gauss);
     
    288287   IssmDouble  PMPheat,dissipation,dpressure_water[2],dbed[2]; 
    289288        IssmDouble* xyz_list = NULL;
    290 //        IssmDouble dgapxx; /***/
    291 //      IssmDouble dgapyy; /***/
    292289
    293290        /*Fetch number of nodes and dof for this finite element*/
     
    315312        Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
    316313   Input* headold_input        = element->GetInput(HydrologyHeadOldEnum);           _assert_(headold_input);
    317 //      Input* dgapxx_input         = element->GetInput(HydrologyGapHeightXXEnum); /***/
    318 //      Input* dgapyy_input         = element->GetInput(HydrologyGapHeightYYEnum); /***/
    319314
    320315        /*Get conductivity from inputs*/
     
    346341                br_input->GetInputValue(&br,gauss);
    347342                headold_input->GetInputValue(&head_old,gauss);
    348 //              dgapxx_input->GetInputValue(&dgapxx,gauss); /***/
    349 //              dgapyy_input->GetInputValue(&dgapyy,gauss); /***/
    350343
    351344                /*Get ice A parameter*/
     
    365358                frictionheat=alpha2*(vx*vx+vy*vy);
    366359
    367                 /* Take out frictional heat for large gap height */
    368                 if(gap>br)
    369                  frictionheat=0.;
    370 
    371360                /*Get water and ice pressures*/
    372361                IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.);
     
    379368
    380369                /*Compute change in sensible heat due to changes in pressure melting point*/
    381         dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
     370                dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
    382371                dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
    383                 PMPheat=CT*CW*conductivity*rho_water*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]);
    384                 PMPheat=0; /*** TEST no PMPheat***/
    385 
    386         meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat);
     372
     373        meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
    387374
    388375                  for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*
     
    396383                    )*basis[i];
    397384
    398                 /* Test with experimental diffusivity term*/
    399 //                   for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*
    400  //                   (
    401   //                   meltrate*(1/rho_water-1/rho_ice)
    402    //                  +A*pow(fabs(pressure_ice - pressure_water),n-1)*(pressure_ice + rho_water*g*bed)*gap
    403     //                 +(n-1)*A*pow(fabs(pressure_ice - pressure_water),n-1)*(rho_water*g*head)*gap
    404      //                -beta*sqrt(vx*vx+vy*vy)
    405       //               +ieb
    406        //              +storage*head_old/dt
    407         //             +0.e-5*(dgapxx+dgapyy)
    408          //            )*basis[i];
    409 
    410385       
    411386        }
     
    458433                values[i]=solution[doflist[i]];
    459434
    460                 /*overburden cap: make sure that p_water<p_ice ->  h<rho_i H/rho_w + zb*/
    461 //              if(values[i]>rho_ice*thickness[i]/rho_water+bed[i]){
    462 //                      values[i] = rho_ice*thickness[i]/rho_water+bed[i];
    463 //              }
    464 
    465                 /*Make sure that negative pressure is not allowed*/
    466 //      if(values[i]<bed[i]){
    467 //                      values[i] = bed[i];
    468 //              }
    469 
    470435                /*Under-relaxation*/
    471436           values[i] = head_old[i] - relaxation*(head_old[i]-values[i]);
     
    549514        IssmDouble  alpha2,frictionheat;
    550515        IssmDouble* xyz_list = NULL;
    551    IssmDouble  dpressure_water[2],dbed[2],PMPheat,dissipation;
     516        IssmDouble  dpressure_water[2],dbed[2],PMPheat,dissipation;
    552517        IssmDouble q = 0.;
    553    IssmDouble channelization = 0.;
    554 //      IssmDouble dgapxx; /***/
    555 //      IssmDouble dgapyy; /***/
     518        IssmDouble channelization = 0.;
    556519
    557520        /*Retrieve all inputs and parameters*/
     
    571534        Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
    572535        Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
    573  //       Input* dgapxx_input         = element->GetInput(HydrologyGapHeightXXEnum); /***/
    574   //      Input* dgapyy_input         = element->GetInput(HydrologyGapHeightYYEnum); /***/
    575536
    576537        /*Get conductivity from inputs*/
     
    598559                lr_input->GetInputValue(&lr,gauss);
    599560                br_input->GetInputValue(&br,gauss);
    600 //              dgapxx_input->GetInputValue(&dgapxx,gauss); /***/
    601 //              dgapyy_input->GetInputValue(&dgapyy,gauss); /***/
    602561
    603562                /*Get ice A parameter*/
     
    617576                frictionheat=alpha2*(vx*vx+vy*vy);
    618577
    619                 /* Take out frictional heat for large gap height */
    620                 if(gap>br)
    621                  frictionheat=0.;
    622 
    623578                /*Get water and ice pressures*/
    624579                IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.);
     
    629584           dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
    630585                dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
    631                 PMPheat=CT*CW*conductivity*rho_water*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]);
    632 PMPheat=0; /*** TEST no PMPheat***/
    633586                dissipation=rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]);
    634587
    635                 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat);
     588                meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
    636589
    637590                element->AddInput(DummyEnum,&meltrate,P0Enum);
     
    647600                                        ));
    648601
    649                 /* TEST with experimental gap height "diffusivity" for melting walls */
    650 //                newgap += gauss->weight*Jdet*(gap+dt*(
    651  //                                        meltrate/rho_ice
    652   //                                       -A*pow(fabs(pressure_ice-pressure_water),n-1)*(pressure_ice-pressure_water)*lc
    653    //                                      +beta*sqrt(vx*vx+vy*vy)
    654 //                                       +0.e-5*(dgapxx+dgapyy))
    655  //                                        );
    656 
    657602
    658603                totalweights +=gauss->weight*Jdet;
     
    667612        /*Divide by connectivity*/
    668613        newgap = newgap/totalweights;
    669         IssmDouble mingap = 1e-6;
     614        IssmDouble mingap = 1e-3;
    670615        if(newgap<mingap) newgap=mingap;
    671616
    672         /*Limit gap height to grow to surface*/
    673 //      if(newgap>thickness)
    674 //       newgap = thickness;
     617        /*Limit gap height*/
    675618        if(newgap>1)
    676619         newgap = 1;
Note: See TracChangeset for help on using the changeset viewer.