Changeset 26076


Ignore:
Timestamp:
03/11/21 10:39:53 (4 years ago)
Author:
Eric.Larour
Message:

CHG: transferred SolidEarthIceUpdates and SolidEarthWaterUpdates to OceantransportAnalysis and oceantransport_core
using a SolidEarthOceanUpdates.

Location:
issm/trunk-jpl/src/c
Files:
2 edited

Legend:

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

    r26047 r26076  
    5656
    5757        /*Initialize sea level cumulated sea level loads :*/
    58         InputUpdateFromConstantx(inputs,elements,0.,AccumulatedDeltaBottomPressureEnum);
    59         InputUpdateFromConstantx(inputs,elements,0.,OldAccumulatedDeltaBottomPressureEnum);
     58        iomodel->ConstantToInput(inputs,elements,0.,AccumulatedDeltaBottomPressureEnum,P1Enum);
     59        iomodel->ConstantToInput(inputs,elements,0.,OldAccumulatedDeltaBottomPressureEnum,P1Enum);
    6060        iomodel->FetchDataToInput(inputs,elements,"md.initialization.bottompressure",BottomPressureEnum);
    6161
     
    158158        int         i,domaintype;
    159159        int*        doflist=NULL;
    160         int         isgrd=0;
    161         int         frequency,count;
    162160
    163161        /*Fetch number of nodes and dof for this finite element*/
     
    198196        element->AddInput(StrEnum,&strmean,P0Enum);
    199197
    200         /*Now, we need to do some "processing"*/
    201         IssmDouble* oldbp      = xNew<IssmDouble>(numnodes);
    202         IssmDouble* cumdeltabp = xNew<IssmDouble>(numnodes);
    203         IssmDouble* oldcumdeltabp = xNew<IssmDouble>(numnodes);
    204         IssmDouble* deltabp = xNew<IssmDouble>(numnodes);
    205         IssmDouble* olddsl      = xNew<IssmDouble>(numnodes);
    206         IssmDouble* deltadsl      = xNew<IssmDouble>(numnodes);
    207         IssmDouble  oldstr,deltastr;
    208 
    209         /*Deal with bottom pressure first. First get previous bottom pressure:*/
    210         element->GetInputListOnVertices(&oldbp[0],BottomPressureOldEnum);
    211         element->FindParam(&isgrd,SolidearthSettingsGRDEnum);
    212         if(isgrd)element->GetInputListOnVertices(&cumdeltabp[0],AccumulatedDeltaBottomPressureEnum);
    213 
    214         /*What is the delta bottompressure forcing the sea-level change core: cumulated over time, hence the +=:*/
    215         if(isgrd){
    216                 for(int i=0;i<numnodes;i++){
    217                         cumdeltabp[i] += bp[i]-oldbp[i];
    218                 }
    219         }
    220 
    221         /*Add input to the element: */
    222         if(isgrd){
    223                 element->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
    224                 element->FindParam(&count,SealevelchangeRunCountEnum);
    225                 element->AddInput(AccumulatedDeltaBottomPressureEnum,cumdeltabp,P1Enum);
    226                 if(count==frequency){
    227                         element->GetInputListOnVertices(&oldcumdeltabp[0],OldAccumulatedDeltaBottomPressureEnum);
    228                         element->AddInput(OldAccumulatedDeltaBottomPressureEnum,cumdeltabp,P1Enum);
    229                         for(int i=0;i<numnodes;i++)deltabp[i]=cumdeltabp[i]-oldcumdeltabp[i];
    230                         element->AddInput(DeltaBottomPressureEnum,deltabp,P1Enum);
    231 
    232                 }
    233         }
    234 
    235         /*Deal with dsl and str:*/
    236         element->GetInputListOnVertices(&olddsl[0],DslOldEnum);
    237         element->GetInputValue(&oldstr,StrOldEnum);
    238         for (int i=0;i<numnodes;i++) deltadsl[i]=dsl[i]-olddsl[i];
    239         deltastr=strmean-oldstr;
    240         element->AddInput(DeltaDslEnum,deltadsl,P1Enum);
    241         element->AddInput(DeltaStrEnum,&deltastr,P0Enum);
    242 
    243198        /*Free ressources:*/
    244199        xDelete<IssmDouble>(bp);
    245         xDelete<IssmDouble>(deltabp);
    246         xDelete<IssmDouble>(cumdeltabp);
    247         xDelete<IssmDouble>(oldcumdeltabp);
    248         xDelete<IssmDouble>(oldbp);
     200        xDelete<IssmDouble>(str);
    249201        xDelete<IssmDouble>(dsl);
    250         xDelete<IssmDouble>(olddsl);
    251         xDelete<IssmDouble>(deltadsl);
    252202        xDelete<IssmDouble>(values);
    253203        xDelete<int>(doflist);
  • issm/trunk-jpl/src/c/cores/oceantransport_core.cpp

    r26047 r26076  
    1010#include "../solutionsequences/solutionsequences.h"
    1111
    12 void oceantransport_core(FemModel* femmodel){
     12void SolidEarthOceanUpdates(FemModel* femmodel);
     13void oceantransport_core(FemModel* femmodel){ /*{{{*/
    1314
    1415        /*Start profiler*/
     
    5051        /*profiler*/
    5152        femmodel->profiler->Stop(OCEANTRANSPORTCORE);
    52 }
     53} /*}}}*/
     54void SolidEarthOceanUpdates(FemModel* femmodel){ /*{{{*/
     55
     56        int isgrd;
     57        int grdmodel;
     58        IssmDouble time;
     59        int frequency,count;
     60
     61        /*retrieve parameters:*/
     62        femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
     63        femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
     64        femmodel->parameters->FindParam(&time,TimeEnum);
     65        femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
     66        femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
     67       
     68        /*early return?:*/
     69        if(!isgrd)return;
     70
     71        /* From old and new bottom pressures, create delta bottom pressure, delta dsl and delta str.
     72         * Accumulate delta bottom pressure: */
     73        femmodel->inputs->AXPY(-1, BottomPressureOldEnum,BottomPressureEnum,DeltaBottomPressureEnum);
     74        femmodel->inputs->AXPY(+1, DeltaBottomPressureEnum,AccumulatedDeltaBottomPressureEnum,DummyEnum);
     75        femmodel->inputs->DuplicateInput(DummyEnum,AccumulatedDeltaBottomPressureEnum);
     76
     77        femmodel->inputs->AXPY(-1, DslOldEnum,DslEnum,DeltaDslEnum);
     78        femmodel->inputs->AXPY(-1, StrOldEnum,StrEnum,DeltaStrEnum);
     79
     80        /* Compute total bottom pressure change between two sea-level solver time steps, ie. every frequency*dt. */
     81        if(count==frequency){
     82                femmodel->inputs->AXPY(-1, OldAccumulatedDeltaBottomPressureEnum,AccumulatedDeltaBottomPressureEnum,DeltaBottomPressureEnum);
     83                femmodel->inputs->DuplicateInput(AccumulatedDeltaBottomPressureEnum,OldAccumulatedDeltaBottomPressureEnum);
     84        }
     85        return;
     86}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.