Changeset 27128


Ignore:
Timestamp:
07/01/22 13:38:19 (3 years ago)
Author:
caronlam
Message:

NEW: IntArrayInput class for int* inputs

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp

    r27113 r27128  
    2424#include "./DatasetInput.h"
    2525#include "./ArrayInput.h"
     26#include "./IntArrayInput.h"
    2627using namespace std;
    2728/*}}}*/
     
    571572        input->GetArrayPtr(row,pvalues,pN);
    572573}/*}}}*/
     574void Inputs::GetIntArrayPtr(int enum_in,int row,int** pvalues,int* pN){/*{{{*/
     575
     576        /*Get input id*/
     577        int id = EnumToIndex(enum_in);
     578
     579        /*Create it if necessary*/
     580        if(this->inputs[id]){
     581                if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an int array");
     582        }
     583        else{
     584                _error_("Input "<<EnumToStringx(enum_in)<<" not found");
     585        }
     586
     587        /*Set input*/
     588        IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
     589        input->GetArrayPtr(row,pvalues,pN);
     590}/*}}}*/
    573591void Inputs::GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN){/*{{{*/
    574592
     
    586604        /*Set input*/
    587605        ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
     606        input->GetArray(row,pvalues,pN);
     607}/*}}}*/
     608void Inputs::GetIntArray(int enum_in,int row,int** pvalues,int* pN){/*{{{*/
     609
     610        /*Get input id*/
     611        int id = EnumToIndex(enum_in);
     612
     613        /*Create it if necessary*/
     614        if(this->inputs[id]){
     615                if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an int array");
     616        }
     617        else{
     618                _error_("Input "<<EnumToStringx(enum_in)<<" not found");
     619        }
     620
     621        /*Set input*/
     622        IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
    588623        input->GetArray(row,pvalues,pN);
    589624}/*}}}*/
     
    735770        input->SetInput(row,numlayers,values);
    736771}/*}}}*/
     772void Inputs::SetIntArrayInput(int enum_in,int row,int* values,int numlayers){/*{{{*/
     773
     774        bool recreate = false;
     775
     776        /*Get input id*/
     777        int id = EnumToIndex(enum_in);
     778
     779        /*Create it if necessary*/
     780        if(this->inputs[id]){
     781                if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum){
     782                        delete this->inputs[id];
     783                        recreate = true;
     784                }
     785        }
     786        else{
     787                recreate = true;
     788        }
     789
     790        if(recreate){
     791                this->inputs[id] = new IntArrayInput(this->numberofelements_local);
     792        }
     793
     794        /*Set input*/
     795        IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
     796        input->SetInput(row,numlayers,values);
     797}/*}}}*/
    737798TransientInput* Inputs::SetDatasetTransientInput(int enum_in,int dataset_id,IssmDouble* times,int numtimes){/*{{{*/
    738799
  • issm/trunk-jpl/src/c/classes/Inputs/Inputs.h

    r26121 r27128  
    1111class DatasetInput;
    1212class ArrayInput;
     13class IntArrayInput;
    1314class ControlInput;
    1415class Parameters;
     
    5657                void     GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** penum);
    5758                void             GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN);
     59                void             GetIntArray(int enum_in,int row,int** pvalues,int* pN);
    5860                void             GetArrayPtr(int enum_in,int row,IssmDouble** pvalues,int* pN);
     61                void             GetIntArrayPtr(int enum_in,int row,int** pvalues,int* pN);
    5962                SegInput*       GetSegInput(int enum_type);
    6063                TriaInput*      GetTriaInput(int enum_type);
     
    8285                TransientInput* SetDatasetTransientInput(int enum_in,int id,IssmDouble* times,int numtimes);
    8386                void  SetArrayInput(int enum_in,int row,IssmDouble* layers,int numlayers);
     87                void  SetIntArrayInput(int enum_in,int row,int* layers,int numlayers);
    8488                void  SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values);
    8589                void  SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values,int n);
Note: See TracChangeset for help on using the changeset viewer.