Ignore:
Timestamp:
07/24/12 10:36:19 (13 years ago)
Author:
Mathieu Morlighem
Message:

merged trunk-jpl and trunk for revision 12703

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp

    r12330 r12706  
    44
    55/*header files: */
    6 /*{{{1*/
     6/*{{{*/
    77#ifdef HAVE_CONFIG_H
    88        #include <config.h>
     
    2121
    2222/*DoubleMatExternalResult constructors and destructor*/
    23 /*FUNCTION DoubleMatExternalResult::DoubleMatExternalResult(){{{1*/
     23/*FUNCTION DoubleMatExternalResult::DoubleMatExternalResult(){{{*/
    2424DoubleMatExternalResult::DoubleMatExternalResult(){
    2525        return;
    2626}
    2727/*}}}*/
    28 /*FUNCTION DoubleMatExternalResult::DoubleMatExternalResult(int in_id, int enum_type,IssmDoubleMat values,int M,int N,int in_step,double in_time){{{1*/
    29 DoubleMatExternalResult::DoubleMatExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,double in_time){
     28/*FUNCTION DoubleMatExternalResult::DoubleMatExternalResult(int in_id, int enum_type,IssmDoubleMat values,int M,int N,int in_step,IssmDouble in_time){{{*/
     29DoubleMatExternalResult::DoubleMatExternalResult(int in_id, int in_enum_type,IssmDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){
    3030
    3131        id=in_id;
     
    3636        /*Copy result in values*/
    3737        if(M*N){
    38                 values=(double*)xmalloc(M*N*sizeof(double));
    39                 memcpy(values,in_values,M*N*sizeof(double));
     38                values=xNew<IssmDouble>(M*N);
     39                xMemCpy<IssmDouble>(values,in_values,M*N);
    4040        }
    4141        else values=NULL;
     
    4545}
    4646/*}}}*/
    47 /*FUNCTION DoubleMatExternalResult::~DoubleMatExternalResult(){{{1*/
     47/*FUNCTION DoubleMatExternalResult::~DoubleMatExternalResult(){{{*/
    4848DoubleMatExternalResult::~DoubleMatExternalResult(){
    4949
    50         xfree((void**)&this->values);
     50        xDelete<IssmDouble>(this->values);
    5151        return;
    5252}
     
    5454
    5555/*Object virtual functions definitions:*/
    56 /*FUNCTION DoubleMatExternalResult::Echo {{{1*/
     56/*FUNCTION DoubleMatExternalResult::Echo {{{*/
    5757void DoubleMatExternalResult::Echo(void){
    5858
    59         printf("DoubleMatExternalResult:\n");
    60         printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
    61         printf("   step: %i\n",this->step);
    62         printf("   time: %g\n",this->time);
    63         printf("   matrix size: %i-%i\n",this->M,this->N);
     59        _printLine_("DoubleMatExternalResult:");
     60        _printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
     61        _printLine_("   step: " << this->step);
     62        _printLine_("   time: " << this->time);
     63        _printLine_("   matrix size: " << this->M << "-" << this->N);
    6464
    6565}
    6666/*}}}*/
    67 /*FUNCTION DoubleMatExternalResult::DeepEcho{{{1*/
     67/*FUNCTION DoubleMatExternalResult::DeepEcho{{{*/
    6868void DoubleMatExternalResult::DeepEcho(void){
    6969
    7070        int i,j;
    7171       
    72         printf("DoubleMatExternalResult:\n");
    73         printf("   id: %i\n",this->id);
    74         printf("   enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));
    75         printf("   step: %i\n",this->step);
    76         printf("   time: %g\n",this->time);
    77         printf("   matrix size: %i-%i\n",this->M,this->N);
     72        _printLine_("DoubleMatExternalResult:");
     73        _printLine_("   id: " << this->id);
     74        _printLine_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")");
     75        _printLine_("   step: " << this->step);
     76        _printLine_("   time: " << this->time);
     77        _printLine_("   matrix size: " << this->M << "-" << this->N);
    7878        for (i=0;i<this->M;i++){ 
    79                 printf("   [ ");
     79                _printString_("   [ ");
    8080                for (j=0;j<this->N;j++){
    81                         printf(" %12.6g ",this->values[i*this->N+j]);
     81                        _printString_( " " << setw(11) << setprecision (5) << this->values[i*this->N+j]);
    8282                } 
    83                 printf(" ]\n");
     83                _printLine_(" ]");
    8484        } 
    85         printf("\n");
    8685
    8786}
    8887/*}}}*/
    89 /*FUNCTION DoubleMatExternalResult::Id{{{1*/
     88/*FUNCTION DoubleMatExternalResult::Id{{{*/
    9089int    DoubleMatExternalResult::Id(void){ return -1; }
    9190/*}}}*/
    92 /*FUNCTION DoubleMatExternalResult::MyRank{{{1*/
     91/*FUNCTION DoubleMatExternalResult::MyRank{{{*/
    9392int    DoubleMatExternalResult::MyRank(void){
    9493        extern int my_rank;
     
    9695}
    9796/*}}}*/
    98 /*FUNCTION DoubleMatExternalResult::ObjectEnum{{{1*/
     97/*FUNCTION DoubleMatExternalResult::ObjectEnum{{{*/
    9998int DoubleMatExternalResult::ObjectEnum(void){
    10099
     
    103102}
    104103/*}}}*/
    105 /*FUNCTION DoubleMatExternalResult::copy{{{1*/
     104/*FUNCTION DoubleMatExternalResult::copy{{{*/
    106105Object* DoubleMatExternalResult::copy() {
    107106       
     
    112111
    113112/*DoubleMatExternalResult management: */
    114 /*FUNCTION DoubleMatExternalResult::WriteData{{{1*/
     113/*FUNCTION DoubleMatExternalResult::WriteData{{{*/
    115114void   DoubleMatExternalResult::WriteData(FILE* fid,bool io_gather){
    116115
     
    120119        char   *name    = NULL;
    121120        extern  int my_rank;
     121        IssmPDouble *passiveDouble_p=NULL;
     122        IssmPDouble passiveDouble;
    122123
    123124        if(io_gather){
     
    126127        }
    127128
     129        passiveDouble_p=xNew<IssmPDouble>(M*N);
     130
    128131        /*First write enum: */
    129132        EnumToStringx(&name,this->enum_type);
     
    131134        fwrite(&length,sizeof(int),1,fid);
    132135        fwrite(name,length,1,fid);
    133         xfree((void**)&name);
     136        xDelete<char>(name);
    134137
    135138        /*Now write time and step: */
    136         fwrite(&time,sizeof(double),1,fid);
     139        passiveDouble=reCast<IssmPDouble>(time);
     140        fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
    137141        fwrite(&step,sizeof(int),1,fid);
    138142
    139         /*writing a double array, type is 3:*/
     143        /*writing a IssmDouble array, type is 3:*/
    140144        type=3;
    141145        fwrite(&type,sizeof(int),1,fid);
     
    144148        cols=this->N;
    145149        fwrite(&cols,sizeof(int),1,fid);
    146         fwrite(this->values,cols*rows*sizeof(double),1,fid);
     150        for (int i=0; i<N*M; ++i) passiveDouble_p[i]=reCast<IssmPDouble>(values[i]);
     151        fwrite(passiveDouble_p,cols*rows*sizeof(IssmPDouble),1,fid);
     152        xDelete(passiveDouble_p);
    147153
    148154}
    149 /*}}}1*/
    150 /*FUNCTION DoubleMatExternalResult::GetResultName{{{1*/
     155/*}}}*/
     156/*FUNCTION DoubleMatExternalResult::GetResultName{{{*/
    151157void DoubleMatExternalResult::GetResultName(char** pname){
    152158        EnumToStringx(pname,this->enum_type);
    153159}
    154160/*}}}*/
    155 /*FUNCTION DoubleMatExternalResult::GetStep{{{1*/
     161/*FUNCTION DoubleMatExternalResult::GetStep{{{*/
    156162int DoubleMatExternalResult::GetStep(void){
    157163
Note: See TracChangeset for help on using the changeset viewer.