Changeset 27016


Ignore:
Timestamp:
05/20/22 08:39:56 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: do not apply H<Hmin calving if levelset is >0

File:
1 edited

Legend:

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

    r27015 r27016  
    649649        IssmDouble dt      = femmodel->parameters->FindParam(TimesteppingTimeStepEnum);
    650650
    651 
    652651   /*Get current distance to terminus*/
    653652   InputDuplicatex(femmodel,MaskIceLevelsetEnum,DistanceToCalvingfrontEnum);
    654653   femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0,DistanceToCalvingfrontEnum);
    655654
    656 
    657655        if(calvinglaw==CalvingMinthicknessEnum || calvinglaw==CalvingVonmisesEnum){
    658656
    659657                /*Intermediaries*/
    660                 IssmDouble thickness,bed,sealevel,distance;
     658                IssmDouble thickness,bed,sealevel,distance,levelset;
    661659                IssmDouble min_thickness = femmodel->parameters->FindParam(CalvingMinthicknessEnum);
    662660
     
    665663                        Element* element  = xDynamicCast<Element*>(object);
    666664
    667                         int      numnodes = element->GetNumberOfNodes();
    668                         Gauss*   gauss    = element->NewGauss();
    669                         Input*   H_input  = element->GetInput(ThicknessEnum); _assert_(H_input);
    670                         Input*   b_input  = element->GetInput(BedEnum); _assert_(b_input);
    671                         Input*   sl_input = element->GetInput(SealevelEnum); _assert_(sl_input);
    672                         Input*   dis_input = element->GetInput(DistanceToCalvingfrontEnum); _assert_(dis_input);
     665                        int      numnodes     = element->GetNumberOfNodes();
     666                        Gauss*   gauss        = element->NewGauss();
     667
     668                        Input *H_input        = element->GetInput(ThicknessEnum);              _assert_(H_input);
     669                        Input *b_input        = element->GetInput(BedEnum);                    _assert_(b_input);
     670                        Input *sl_input       = element->GetInput(SealevelEnum);               _assert_(sl_input);
     671                        Input *dis_input      = element->GetInput(DistanceToCalvingfrontEnum); _assert_(dis_input);
     672                        Input *levelset_input = element->GetInput(MaskIceLevelsetEnum);        _assert_(levelset_input);
    673673
    674674                        /*Potentially constrain nodes of this element*/
     
    682682                                sl_input->GetInputValue(&sealevel,gauss);
    683683                                dis_input->GetInputValue(&distance,gauss);
    684                                 if(thickness<min_thickness && bed<sealevel && fabs(distance)<mig_max*dt){
     684                                levelset_input->GetInputValue(&levelset,gauss);
     685                                if(thickness<min_thickness && bed<sealevel && fabs(distance)<mig_max*dt && levelset<0){
    685686                                        node->ApplyConstraint(0,+1.);
    686687                                }
    687                                 else {
     688                                else{
    688689                                        /* no ice, set no spc */
    689690                                        node->DofInFSet(0);
Note: See TracChangeset for help on using the changeset viewer.