Ignore:
Timestamp:
12/05/14 16:46:55 (10 years ago)
Author:
srebuffi
Message:

NEW : Calving Pi model

File:
1 edited

Legend:

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

    r18930 r18953  
    6363                                iomodel->FetchDataToInput(elements,CalvinglevermannCoeffEnum);
    6464                                iomodel->FetchDataToInput(elements,CalvinglevermannMeltingrateEnum);
     65                                break;
     66                        case CalvingPiEnum:
     67                                iomodel->FetchDataToInput(elements,CalvingpiCoeffEnum);
     68                                iomodel->FetchDataToInput(elements,CalvingpiMeltingrateEnum);
    6569                                break;
    6670                        default:
     
    208212                                meltingrate_input = basalelement->GetInput(CalvinglevermannMeltingrateEnum);     _assert_(meltingrate_input);
    209213                                break;
     214                        case CalvingPiEnum:
     215                                if(domaintype==Domain2DhorizontalEnum){
     216                                        calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
     217                                        calvingratey_input=basalelement->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
     218                                }
     219                                else{
     220                                        if(dim==1){
     221                                                calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
     222                                        }
     223                                        if(dim==2){
     224                                                calvingratex_input=basalelement->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
     225                                                calvingratey_input=basalelement->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
     226                                        }
     227                                }
     228                                meltingrate_input = basalelement->GetInput(CalvingpiMeltingrateEnum);     _assert_(meltingrate_input);
     229                                break;
    210230                        default:
    211231                                _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
     
    262282
    263283                                        break;
     284
    264285                                case CalvingLevermannEnum:
    265286                                        calvingratex_input->GetInputValue(&c[0],gauss); // in 3D case, add mesh velocity
     
    274295                                       
    275296                                        break;
     297
     298                                case CalvingPiEnum:
     299                                        calvingratex_input->GetInputValue(&c[0],gauss); // in 3D case, add mesh velocity
     300                                        if(dim==2) calvingratey_input->GetInputValue(&c[1],gauss);
     301                                        meltingrate_input->GetInputValue(&meltingrate,gauss);
     302
     303                                        norm_calving=0.;
     304                                        for(i=0;i<dim;i++) norm_calving+=pow(c[i],2);
     305                                        norm_calving=sqrt(norm_calving)+1.e-14;
     306
     307                                        for(i=0;i<dim;i++) m[i]=meltingrate*c[i]/norm_calving;
     308
     309                                        break;
     310
    276311                                default:
    277312                                        _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
     
    349384        xDelete<IssmDouble>(w);
    350385        xDelete<IssmDouble>(c);
    351         xDelete<IssmDouble>(m);
    352386        xDelete<IssmDouble>(dlsf);
    353387        delete gauss;
Note: See TracChangeset for help on using the changeset viewer.