- Timestamp:
- 07/24/12 10:36:19 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp
r12330 r12706 4 4 5 5 /*header files: */ 6 /*{{{ 1*/6 /*{{{*/ 7 7 #ifdef HAVE_CONFIG_H 8 8 #include <config.h> … … 21 21 22 22 /*DoubleMatExternalResult constructors and destructor*/ 23 /*FUNCTION DoubleMatExternalResult::DoubleMatExternalResult(){{{ 1*/23 /*FUNCTION DoubleMatExternalResult::DoubleMatExternalResult(){{{*/ 24 24 DoubleMatExternalResult::DoubleMatExternalResult(){ 25 25 return; 26 26 } 27 27 /*}}}*/ 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){{{*/ 29 DoubleMatExternalResult::DoubleMatExternalResult(int in_id, int in_enum_type,IssmDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){ 30 30 31 31 id=in_id; … … 36 36 /*Copy result in values*/ 37 37 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); 40 40 } 41 41 else values=NULL; … … 45 45 } 46 46 /*}}}*/ 47 /*FUNCTION DoubleMatExternalResult::~DoubleMatExternalResult(){{{ 1*/47 /*FUNCTION DoubleMatExternalResult::~DoubleMatExternalResult(){{{*/ 48 48 DoubleMatExternalResult::~DoubleMatExternalResult(){ 49 49 50 x free((void**)&this->values);50 xDelete<IssmDouble>(this->values); 51 51 return; 52 52 } … … 54 54 55 55 /*Object virtual functions definitions:*/ 56 /*FUNCTION DoubleMatExternalResult::Echo {{{ 1*/56 /*FUNCTION DoubleMatExternalResult::Echo {{{*/ 57 57 void DoubleMatExternalResult::Echo(void){ 58 58 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); 64 64 65 65 } 66 66 /*}}}*/ 67 /*FUNCTION DoubleMatExternalResult::DeepEcho{{{ 1*/67 /*FUNCTION DoubleMatExternalResult::DeepEcho{{{*/ 68 68 void DoubleMatExternalResult::DeepEcho(void){ 69 69 70 70 int i,j; 71 71 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); 78 78 for (i=0;i<this->M;i++){ 79 printf(" [ ");79 _printString_(" [ "); 80 80 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]); 82 82 } 83 printf(" ]\n");83 _printLine_(" ]"); 84 84 } 85 printf("\n");86 85 87 86 } 88 87 /*}}}*/ 89 /*FUNCTION DoubleMatExternalResult::Id{{{ 1*/88 /*FUNCTION DoubleMatExternalResult::Id{{{*/ 90 89 int DoubleMatExternalResult::Id(void){ return -1; } 91 90 /*}}}*/ 92 /*FUNCTION DoubleMatExternalResult::MyRank{{{ 1*/91 /*FUNCTION DoubleMatExternalResult::MyRank{{{*/ 93 92 int DoubleMatExternalResult::MyRank(void){ 94 93 extern int my_rank; … … 96 95 } 97 96 /*}}}*/ 98 /*FUNCTION DoubleMatExternalResult::ObjectEnum{{{ 1*/97 /*FUNCTION DoubleMatExternalResult::ObjectEnum{{{*/ 99 98 int DoubleMatExternalResult::ObjectEnum(void){ 100 99 … … 103 102 } 104 103 /*}}}*/ 105 /*FUNCTION DoubleMatExternalResult::copy{{{ 1*/104 /*FUNCTION DoubleMatExternalResult::copy{{{*/ 106 105 Object* DoubleMatExternalResult::copy() { 107 106 … … 112 111 113 112 /*DoubleMatExternalResult management: */ 114 /*FUNCTION DoubleMatExternalResult::WriteData{{{ 1*/113 /*FUNCTION DoubleMatExternalResult::WriteData{{{*/ 115 114 void DoubleMatExternalResult::WriteData(FILE* fid,bool io_gather){ 116 115 … … 120 119 char *name = NULL; 121 120 extern int my_rank; 121 IssmPDouble *passiveDouble_p=NULL; 122 IssmPDouble passiveDouble; 122 123 123 124 if(io_gather){ … … 126 127 } 127 128 129 passiveDouble_p=xNew<IssmPDouble>(M*N); 130 128 131 /*First write enum: */ 129 132 EnumToStringx(&name,this->enum_type); … … 131 134 fwrite(&length,sizeof(int),1,fid); 132 135 fwrite(name,length,1,fid); 133 x free((void**)&name);136 xDelete<char>(name); 134 137 135 138 /*Now write time and step: */ 136 fwrite(&time,sizeof(double),1,fid); 139 passiveDouble=reCast<IssmPDouble>(time); 140 fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid); 137 141 fwrite(&step,sizeof(int),1,fid); 138 142 139 /*writing a double array, type is 3:*/143 /*writing a IssmDouble array, type is 3:*/ 140 144 type=3; 141 145 fwrite(&type,sizeof(int),1,fid); … … 144 148 cols=this->N; 145 149 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); 147 153 148 154 } 149 /*}}} 1*/150 /*FUNCTION DoubleMatExternalResult::GetResultName{{{ 1*/155 /*}}}*/ 156 /*FUNCTION DoubleMatExternalResult::GetResultName{{{*/ 151 157 void DoubleMatExternalResult::GetResultName(char** pname){ 152 158 EnumToStringx(pname,this->enum_type); 153 159 } 154 160 /*}}}*/ 155 /*FUNCTION DoubleMatExternalResult::GetStep{{{ 1*/161 /*FUNCTION DoubleMatExternalResult::GetStep{{{*/ 156 162 int DoubleMatExternalResult::GetStep(void){ 157 163
Note:
See TracChangeset
for help on using the changeset viewer.