Changeset 27660


Ignore:
Timestamp:
03/24/23 14:15:01 (2 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixed 3d problem, now working

File:
1 edited

Legend:

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

    r27659 r27660  
    539539        if(element->IsAllFloating() || !element->IsIceInElement()) return;
    540540        if(!element->IsOnBase()) return;
     541        Element* basalelement = element->SpawnBasalElement();
    541542
    542543        /*Intermediaries */
     
    552553
    553554        /*Retrieve all inputs and parameters*/
    554         element->GetVerticesCoordinates(&xyz_list);
    555         element->FindParam(&dt,TimesteppingTimeStepEnum);
    556         IssmDouble  latentheat      = element->FindParam(MaterialsLatentheatEnum);
    557         IssmDouble  g               = element->FindParam(ConstantsGEnum);
    558         IssmDouble  rho_ice         = element->FindParam(MaterialsRhoIceEnum);
    559         IssmDouble  rho_water       = element->FindParam(MaterialsRhoFreshwaterEnum);
    560         Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
    561         Input* head_input           = element->GetInput(HydrologyHeadEnum);              _assert_(head_input);
    562         Input* gap_input            = element->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
    563         Input* thickness_input      = element->GetInput(ThicknessEnum);                  _assert_(thickness_input);
    564         Input* base_input           = element->GetInput(BaseEnum);                       _assert_(base_input);
    565         Input* B_input              = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
    566         Input* n_input              = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
    567         Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
    568         Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
     555        basalelement->GetVerticesCoordinates(&xyz_list);
     556        basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
     557        IssmDouble  latentheat      = basalelement->FindParam(MaterialsLatentheatEnum);
     558        IssmDouble  g               = basalelement->FindParam(ConstantsGEnum);
     559        IssmDouble  rho_ice         = basalelement->FindParam(MaterialsRhoIceEnum);
     560        IssmDouble  rho_water       = basalelement->FindParam(MaterialsRhoFreshwaterEnum);
     561        Input* geothermalflux_input = basalelement->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
     562        Input* head_input           = basalelement->GetInput(HydrologyHeadEnum);              _assert_(head_input);
     563        Input* gap_input            = basalelement->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
     564        Input* thickness_input      = basalelement->GetInput(ThicknessEnum);                  _assert_(thickness_input);
     565        Input* base_input           = basalelement->GetInput(BaseEnum);                       _assert_(base_input);
     566        Input* B_input              = basalelement->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
     567        Input* n_input              = basalelement->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
     568        Input* lr_input             = basalelement->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
     569        Input* br_input             = basalelement->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
    569570
    570571        /*Get conductivity from inputs*/
    571         IssmDouble conductivity = GetConductivity(element);
    572 
    573         /*Build friction element, needed later: */
    574         Friction* friction=new Friction(element,2);
     572        IssmDouble conductivity = GetConductivity(basalelement);
     573
     574        /*Build friction basalelement, needed later: */
     575        Friction* friction=new Friction(basalelement,2);
    575576
    576577        /*Keep track of weights*/
     
    578579
    579580        /* Start  looping on the number of gaussian points: */
    580         Gauss* gauss=element->NewGauss(2);
     581        Gauss* gauss=basalelement->NewGauss(2);
    581582        while(gauss->next()){
    582583
    583                 element->JacobianDeterminant(&Jdet,xyz_list,gauss);
     584                basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
    584585
    585586                geothermalflux_input->GetInputValue(&G,gauss);
     
    621622                meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
    622623
    623                 element->AddBasalInput(DummyEnum,&meltrate,P0Enum);
    624                 element->AddBasalInput(EsaEmotionEnum,&frictionheat,P0Enum);
    625                 element->AddBasalInput(EsaNmotionEnum,&dissipation,P0Enum);
    626                 element->AddBasalInput(EsaUmotionEnum,&PMPheat,P0Enum);
     624                //element->AddBasalInput(DummyEnum,&meltrate,P0Enum);
     625                //element->AddBasalInput(EsaEmotionEnum,&frictionheat,P0Enum);
     626                //element->AddBasalInput(EsaNmotionEnum,&dissipation,P0Enum);
     627                //element->AddBasalInput(EsaUmotionEnum,&PMPheat,P0Enum);
    627628
    628629                newgap += gauss->weight*Jdet*(gap+dt*(
     
    666667        delete friction;
    667668        delete gauss;
     669        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    668670}/*}}}*/
    669671void HydrologyShaktiAnalysis::UpdateEffectivePressure(FemModel* femmodel){/*{{{*/
Note: See TracChangeset for help on using the changeset viewer.