Changeset 12552


Ignore:
Timestamp:
06/26/12 10:56:58 (13 years ago)
Author:
utke
Message:

move declarationst to active except for arguments to fread.

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/objects/IoModel.cpp

    r12519 r12552  
    5050        /*Initialize and read constants:*/
    5151        this->constants=new Parameters();
    52         this->FetchConstants(); /*this routine goes through the input file, and fetches bools, ints, IssmPDoubles and strings only, nothing memory intensive*/
     52        this->FetchConstants(); /*this routine goes through the input file, and fetches bools, ints, IssmDoubles and strings only, nothing memory intensive*/
    5353
    5454        /*Initialize data: */
    55         this->data=xNew<IssmPDouble*>(MaximumNumberOfEnums);
     55        this->data=xNew<IssmDouble*>(MaximumNumberOfEnums);
    5656        for(int i=0;i<MaximumNumberOfEnums;i++) this->data[i]=NULL;
    5757       
     
    8484        #endif
    8585
    86         xDelete<IssmPDouble*>(this->data);
     86        xDelete<IssmDouble*>(this->data);
    8787        xDelete<bool>(this->my_elements);
    8888        xDelete<bool>(this->my_nodes);
     
    152152}
    153153/*}}}*/
    154 /*FUNCTION IoModel::Constant(IssmPDouble* poutput,int constant_enum){{{*/
    155 void IoModel::Constant(IssmPDouble* poutput,int constant_enum){
     154/*FUNCTION IoModel::Constant(IssmDouble* poutput,int constant_enum){{{*/
     155void IoModel::Constant(IssmDouble* poutput,int constant_enum){
    156156
    157157        _assert_(constant_enum>=0);
     
    183183/*}}}*/
    184184/*FUNCTION IoModel::Data{{{*/
    185 IssmPDouble* IoModel::Data(int data_enum){
     185IssmDouble* IoModel::Data(int data_enum){
    186186
    187187        _assert_(data_enum<MaximumNumberOfEnums);
     
    205205                dataenum=va_arg(ap, int);
    206206                _assert_(dataenum<MaximumNumberOfEnums);
    207                 xDelete<double>(this->data[dataenum]);
     207                xDelete<IssmDouble>(this->data[dataenum]);
    208208        }
    209209        va_end(ap);
     
    237237                fseek(this->fid,0,SEEK_SET);
    238238
    239                 /*Now march through file looking for the correct data identifiers (bool,int,IssmPDouble or string): */
     239                /*Now march through file looking for the correct data identifiers (bool,int,IssmDouble or string): */
    240240                for(;;){
    241241                        if(fread(&record_enum,sizeof(int),1,this->fid)==0){
     
    499499}
    500500/*}}}*/
    501 /*FUNCTION IoModel::FetchData(IssmPDouble*   pscalar,int data_enum){{{*/
    502 void  IoModel::FetchData(IssmPDouble* pscalar,int data_enum){
     501/*FUNCTION IoModel::FetchData(IssmDouble*   pscalar,int data_enum){{{*/
     502void  IoModel::FetchData(IssmDouble* pscalar,int data_enum){
    503503
    504504
     
    514514        fid=this->SetFilePointerToData(&code,NULL,data_enum);
    515515       
    516         if(code!=3)_error2_("expecting a IssmPDouble for enum " << EnumToStringx(data_enum));
     516        if(code!=3)_error2_("expecting a IssmDouble for enum " << EnumToStringx(data_enum));
    517517       
    518518        /*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
     
    598598        fid=this->SetFilePointerToData(&code,&vector_type,data_enum);
    599599
    600         if((code!=5) && (code!=6) && (code!=7))_error2_("expecting a IssmPDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));
     600        if((code!=5) && (code!=6) && (code!=7))_error2_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));
    601601       
    602602        /*Now fetch: */
     
    655655}
    656656/*}}}*/
    657 /*FUNCTION IoModel::FetchData(IssmPDouble**  pIssmPDoublematrix,int* pM,int* pN,int data_enum){{{*/
    658 void  IoModel::FetchData(IssmPDouble** pmatrix,int* pM,int* pN,int data_enum){
     657/*FUNCTION IoModel::FetchData(IssmDouble**  pIssmDoublematrix,int* pM,int* pN,int data_enum){{{*/
     658void  IoModel::FetchData(IssmDouble** pmatrix,int* pM,int* pN,int data_enum){
    659659
    660660        extern int my_rank;
     
    669669        /*Set file pointer to beginning of the data: */
    670670        fid=this->SetFilePointerToData(&code,&vector_type,data_enum);
    671         if((code!=5) && (code!=6) && (code!=7))_error2_("expecting a IssmPDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));
     671        if((code!=5) && (code!=6) && (code!=7))_error2_("expecting a IssmDouble, integer or boolean matrix for enum " << EnumToStringx(data_enum));
    672672       
    673673        /*Now fetch: */
     
    700700                MPI_Bcast(matrix,M*N,MPI_DOUBLE,0,MPI_COMM_WORLD);
    701701                #endif
    702         }
    703 
     702                *pmatrix=xNew<IssmDouble>(M*N);
     703                for (int i=0;i<M*N;++i) (*pmatrix)[i]=matrix[i];
     704                xDelete<IssmPDouble>(matrix);
     705        }
     706        else
     707          *pmatrix=NULL;
    704708        /*Assign output pointers: */
    705         *pmatrix=matrix;
    706709        if (pM)*pM=M;
    707710        if (pN)*pN=N;
     
    778781}
    779782/*}}}*/
    780 /*FUNCTION IoModel::FetchData(IssmPDouble*** pmatrices,int** pmdims,int** pndims, int* pM,int data_enum){{{*/
    781 void  IoModel::FetchData(IssmPDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,int data_enum){
     783/*FUNCTION IoModel::FetchData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pM,int data_enum){{{*/
     784void  IoModel::FetchData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,int data_enum){
    782785
    783786        int i;
     
    787790
    788791        /*output: */
    789         IssmPDouble** matrices=NULL;
     792        IssmDouble** matrices=NULL;
    790793        int*     mdims=NULL;
    791794        int*     ndims=NULL;
     
    799802        /*Set file pointer to beginning of the data: */
    800803        fid=this->SetFilePointerToData(&code,NULL,data_enum);
    801         if(code!=8)_error2_("expecting a IssmPDouble mat array for enum " << EnumToStringx(data_enum));
     804        if(code!=8)_error2_("expecting a IssmDouble mat array for enum " << EnumToStringx(data_enum));
    802805       
    803806        /*Now fetch: */
     
    812815
    813816                /*Allocate matrices :*/
    814                 matrices=xNew<IssmPDouble*>(numrecords);
     817                matrices=xNew<IssmDouble*>(numrecords);
    815818                mdims=xNew<int>(numrecords);
    816819                ndims=xNew<int>(numrecords);
     
    851854                                MPI_Bcast(matrix,M*N,MPI_DOUBLE,0,MPI_COMM_WORLD);
    852855                                #endif
    853                         }
    854 
     856                                matrices[i]=xNew<IssmDouble>(M*N);
     857                                for (int j=0;j<M*N;++j) {matrices[i][j]=matrix[j];}
     858                                xDelete<IssmPDouble>(matrix);
     859                        }
     860                        else
     861                          matrices[i]=NULL;
    855862                        /*Assign: */
    856                         matrices[i]=matrix;
    857863                        mdims[i]=M;
    858864                        ndims[i]=N;
     
    884890        fid=this->SetFilePointerToData(&code,NULL,index+1);
    885891        switch(code){
    886                 case 3: {//IssmPDouble
    887                           IssmPDouble *value = NULL;
    888                           value=xNew<IssmPDouble>(1);
     892                case 3: {//IssmDouble
     893                          IssmDouble *value = NULL;
     894                          value=xNew<IssmDouble>(1);
    889895                          FetchData(value,index+1);
    890896                          option = new OptionDouble();
     
    920926        va_list ap;
    921927        int     dataenum;
    922         IssmPDouble* matrix=NULL;
     928        IssmDouble* matrix=NULL;
    923929        int     M,N;
    924930        int     i;
    925931
    926932        /*Go through the entire list of enums and fetch the corresponding data. Add it to the iomodel->data dataset. Everything
    927          *we fetch is a IssmPDouble* : */
     933         *we fetch is a IssmDouble* : */
    928934       
    929935        va_start(ap,num);
     
    951957/*}}}*/
    952958/*FUNCTION IoModel::FetchDataToInput{{{*/
    953 void IoModel::FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum,IssmPDouble default_value){
     959void IoModel::FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum,IssmDouble default_value){
    954960
    955961        /*intermediary: */
     
    970976        bool    boolean;
    971977        int     integer;
    972         IssmPDouble  scalar;
     978        IssmDouble  scalar;
    973979        char   *string        = NULL;
    974         IssmPDouble *IssmPDoublevector  = NULL;
     980        IssmDouble *IssmDoublevector  = NULL;
    975981        int     M,N;
    976982
     
    990996                                if(this->my_elements[i]){
    991997                                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    992                                         element->InputCreate((IssmPDouble)boolean,vector_enum,code);
     998                                        element->InputCreate((IssmDouble)boolean,vector_enum,code);
    993999                                        counter++;
    9941000                                }
     
    10031009                                if(this->my_elements[i]){
    10041010                                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    1005                                         element->InputCreate((IssmPDouble)integer,vector_enum,code);
     1011                                        element->InputCreate((IssmDouble)integer,vector_enum,code);
    10061012                                        counter++;
    10071013                                }
    10081014                        }
    10091015                        break; /*}}}*/
    1010                 case 3: //IssmPDouble constant.  {{{
     1016                case 3: //IssmDouble constant.  {{{
    10111017                        this->FetchData(&scalar,vector_enum);
    10121018
    1013                         /*Add IssmPDouble constant input to all elements: */
     1019                        /*Add IssmDouble constant input to all elements: */
    10141020                        counter=0;
    10151021                        for (i=0;i<numberofelements;i++){
     
    10241030
    10251031                        /*Fetch vector:*/
    1026                         this->FetchData(&IssmPDoublevector,&M,&N,vector_enum); //we still have a IssmPDoublevector, because it might include times in transient mode
     1032                        this->FetchData(&IssmDoublevector,&M,&N,vector_enum); //we still have a IssmDoublevector, because it might include times in transient mode
    10271033                        /*Check we got something, otherwise fetch default: */
    1028                         if(IssmPDoublevector){
     1034                        if(IssmDoublevector){
    10291035                                defaulting=false;  //we are not defaulting, because  we do have a vector
    10301036                        }
     
    10331039                                if(default_vector_enum!=NoneEnum){
    10341040                                        /*yes. fetch it: */
    1035                                         this->FetchData(&IssmPDoublevector,&M,&N,default_vector_enum);
    1036                                         if(IssmPDoublevector){
     1041                                        this->FetchData(&IssmDoublevector,&M,&N,default_vector_enum);
     1042                                        if(IssmDoublevector){
    10371043                                                defaulting=false;  //we are not defaulting, because  we do have a vector
    10381044                                        }
     
    10541060                                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    10551061                                        if(defaulting) element->InputCreate(default_value,vector_enum,code);
    1056                                         else           element->InputCreate(IssmPDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
     1062                                        else           element->InputCreate(IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
    10571063                                        counter++;
    10581064                                }
     
    10621068
    10631069                        /*Fetch vector:*/
    1064                         this->FetchData(&IssmPDoublevector,&M,&N,vector_enum); //we still have a IssmPDoublevector, because it might include times in transient mode
     1070                        this->FetchData(&IssmDoublevector,&M,&N,vector_enum); //we still have a IssmDoublevector, because it might include times in transient mode
    10651071                        /*Check we got something, otherwise fetch default: */
    1066                         if(IssmPDoublevector){
     1072                        if(IssmDoublevector){
    10671073                                defaulting=false;  //we are not defaulting, because  we do have a vector
    10681074                        }
     
    10711077                                if(default_vector_enum!=NoneEnum){
    10721078                                        /*yes. fetch it: */
    1073                                         this->FetchData(&IssmPDoublevector,&M,&N,default_vector_enum);
    1074                                         if(IssmPDoublevector){
     1079                                        this->FetchData(&IssmDoublevector,&M,&N,default_vector_enum);
     1080                                        if(IssmDoublevector){
    10751081                                                defaulting=false;  //we are not defaulting, because  we do have a vector
    10761082                                        }
     
    10921098                                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    10931099                                        if(defaulting) element->InputCreate(default_value,vector_enum,code);
    1094                                         else           element->InputCreate(IssmPDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
     1100                                        else           element->InputCreate(IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
    10951101                                        counter++;
    10961102                                }
    10971103                        }
    10981104                        break; /*}}}*/
    1099                 case 7: //IssmPDouble vector{{{
     1105                case 7: //IssmDouble vector{{{
    11001106
    11011107                        /*Fetch vector:*/
    1102                         this->FetchData(&IssmPDoublevector,&M,&N,vector_enum);
     1108                        this->FetchData(&IssmDoublevector,&M,&N,vector_enum);
    11031109                        /*Check we got something, otherwise fetch default: */
    1104                         if(IssmPDoublevector){
     1110                        if(IssmDoublevector){
    11051111                                defaulting=false;  //we are not defaulting, because  we do have a vector
    11061112                        }
     
    11091115                                if(default_vector_enum!=NoneEnum){
    11101116                                        /*yes. fetch it: */
    1111                                         this->FetchData(&IssmPDoublevector,&M,&N,default_vector_enum);
    1112                                         if(IssmPDoublevector){
     1117                                        this->FetchData(&IssmDoublevector,&M,&N,default_vector_enum);
     1118                                        if(IssmDoublevector){
    11131119                                                defaulting=false;  //we are not defaulting, because  we do have a vector
    11141120                                        }
     
    11301136                                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    11311137                                        if(defaulting) element->InputCreate(default_value,vector_enum,code);
    1132                                         else           element->InputCreate(IssmPDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
     1138                                        else           element->InputCreate(IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
    11331139                                        counter++;
    11341140                                }
     
    11421148        }
    11431149        /*Free ressources:*/
    1144         xDelete<IssmPDouble>(IssmPDoublevector);
     1150        xDelete<IssmDouble>(IssmDoublevector);
    11451151        xDelete<char>(string);
    11461152}
  • issm/trunk-jpl/src/c/objects/IoModel.h

    r12416 r12552  
    1818
    1919        private:
    20                 IssmPDouble **data;        //this dataset holds temporary data, memory intensive.
    21                 Parameters  *constants;   //this dataset holds all IssmPDouble, int, bool and char *parameters read in from the input file.*
     20                IssmDouble **data;        //this dataset holds temporary data, memory intensive.
     21                Parameters  *constants;   //this dataset holds all IssmDouble, int, bool and char *parameters read in from the input file.*
    2222
    2323        public:
     
    4444                void        Constant(bool *poutput,int constant_enum);
    4545                void        Constant(int *poutput,int constant_enum);
    46                 void        Constant(IssmPDouble *poutput,int constant_enum);
     46                void        Constant(IssmDouble *poutput,int constant_enum);
    4747                void        Constant(char **poutput,int constant_enum);
    4848                Param      *CopyConstantObject(int constant_enum);
    49                 IssmPDouble *Data(int dataenum);
     49                IssmDouble *Data(int dataenum);
    5050                void        DeleteData(int num,...);
    5151                void        FetchConstants(void);
    5252                void        FetchData(bool* pboolean,int data_enum);
    5353                void        FetchData(int* pinteger,int data_enum);
    54                 void        FetchData(IssmPDouble* pscalar,int data_enum);
     54                void        FetchData(IssmDouble* pscalar,int data_enum);
    5555                void        FetchData(char** pstring,int data_enum);
    5656                void        FetchData(int** pmatrix,int* pM,int* pN,int data_enum);
    57                 void        FetchData(IssmPDouble**  pscalarmatrix,int* pM,int* pN,int data_enum);
     57                void        FetchData(IssmDouble**  pscalarmatrix,int* pM,int* pN,int data_enum);
    5858                void        FetchData(char***   pstringarray,int* pnumstrings,int data_enum);
    59                 void        FetchData(IssmPDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,int data_enum);
     59                void        FetchData(IssmDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,int data_enum);
    6060                void        FetchData(Option **poption,int data_enum);
    6161                void        FetchData(int num,...);
    62                 void        FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum=NoneEnum,IssmPDouble default_value=0);
     62                void        FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum=NoneEnum,IssmDouble default_value=0);
    6363                void        LastIndex(int *pindex);
    6464                FILE*       SetFilePointerToData(int* pcode,int* pvector_type, int data_enum);
Note: See TracChangeset for help on using the changeset viewer.