Changeset 14809


Ignore:
Timestamp:
04/30/13 12:22:28 (12 years ago)
Author:
Eric.Larour
Message:

CHG: new GetInputUpToCurrentTimeAverages method.

Location:
issm/trunk-jpl/src/c/classes/objects/Inputs
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/objects/Inputs/BoolInput.h

    r14648 r14809  
    5656                void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
    5757                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     58                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
    5859                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    5960                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/ControlInput.h

    r14648 r14809  
    6161                void GetInputAverage(IssmDouble* pvalue);
    6262                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     63                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
    6364                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    6465                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/DatasetInput.h

    r14648 r14809  
    5555                void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
    5656                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     57                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
    5758                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    5859                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/DoubleInput.h

    r14648 r14809  
    5555                void GetInputAverage(IssmDouble* pvalue);
    5656                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     57                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
    5758                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss);
    5859                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss);
  • issm/trunk-jpl/src/c/classes/objects/Inputs/Input.h

    r14648 r14809  
    3535                virtual void GetInputAverage(IssmDouble* pvalue)=0;
    3636                virtual void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes)=0;
     37                virtual void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime)=0;
    3738                virtual void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss)=0;
    3839                virtual void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss)=0;
  • issm/trunk-jpl/src/c/classes/objects/Inputs/IntInput.h

    r14648 r14809  
    5656                void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
    5757                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     58                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
    5859
    5960                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/PentaP1Input.h

    r14648 r14809  
    5656                void GetInputAverage(IssmDouble* pvalue);
    5757                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     58                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
    5859
    5960                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TransientInput.cpp

    r14650 r14809  
    247247}
    248248/*}}}*/
    249 /*FUNCTION TransientInput::GetInputAverages{{{*/
     249/*FUNCTION TransientInput::GetInputAllTimeAverages{{{*/
    250250void TransientInput::GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){
    251251
     
    262262                input->GetInputAverage(values+i);
    263263                times[i]=this->timesteps[i];
     264        }
     265
     266        *pvalues=values;
     267        *ptimes=times;
     268        *pnumtimes=numtimesteps;
     269}
     270/*}}}*/
     271/*FUNCTION TransientInput::GetInputUpToCurrentTimeAverages{{{*/
     272void TransientInput::GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){
     273
     274        int i;
     275        IssmDouble* times=NULL;
     276        IssmDouble* values=NULL;
     277        int numsteps;
     278        int count;
     279        bool iscurrenttime_included=false;
     280
     281        /*Figure out how many time steps we are going to return: */
     282        numsteps=0;
     283        for(i=0;i<numtimesteps;i++){
     284                if(this->timesteps[i]==currenttime)iscurrenttime_included=true;
     285                if (this->timesteps[i]>currenttime)break;
     286                else numsteps++;
     287        }
     288        if(iscurrenttime_included==false)numsteps++;
     289
     290        /*allocate: */
     291        times=xNew<IssmDouble>(numsteps);
     292        values=xNew<IssmDouble>(numsteps);
     293
     294        for(i=0;i<numsteps;i++){
     295
     296                if((iscurrenttime_included==false) && (i==(numsteps-1))){
     297                       
     298                        /*Retrieve interpolated values for current time step: */
     299                        Input* input=GetTimeInput(currenttime);
     300                        input->GetInputAverage(values+i);
     301                        times[i]=currenttime;
     302                }
     303                else{
     304                        Input* input=(Input*)this->inputs->GetObjectByOffset(i);
     305                        input->GetInputAverage(values+i);
     306                        times[i]=this->timesteps[i];
     307                }
    264308        }
    265309
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TransientInput.h

    r14648 r14809  
    5858                void GetInputAverage(IssmDouble* pvalue);
    5959                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
     60                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
    6061                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    6162                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TriaP1Input.cpp

    r14672 r14809  
    201201}
    202202/*}}}*/
     203/*FUNCTION TriaP1Input::GetInputUpToCurrentTimeAverages{{{*/
     204void TriaP1Input::GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){
     205
     206        IssmDouble* outvalues=NULL;
     207        IssmDouble* times=NULL;
     208        int         numtimes;
     209
     210        /*this is not a transient forcing, so we only have 1 value, steady state: */
     211        numtimes=1;
     212        outvalues=xNew<IssmDouble>(1);
     213        times=xNew<IssmDouble>(1);
     214       
     215        outvalues[0]=1./3.*(values[0]+values[1]+values[2]);
     216        times[0]=currenttime; /*we don't have a time*/
     217
     218        *pvalues=outvalues;
     219        *ptimes=times;
     220        *pnumtimes=numtimes;
     221}
     222/*}}}*/
    203223
    204224
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TriaP1Input.h

    r14650 r14809  
    5656                void GetInputAverage(IssmDouble* pvalue);
    5757                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
     58                void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
    5859                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss);
    5960                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss);
Note: See TracChangeset for help on using the changeset viewer.