Changeset 12706 for issm/trunk/src/c/objects/Params/DoubleMatParam.cpp
- Timestamp:
- 07/24/12 10:36:19 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Params/DoubleMatParam.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 /*DoubleMatParam constructors and destructor*/ 23 /*FUNCTION DoubleMatParam::DoubleMatParam(){{{ 1*/23 /*FUNCTION DoubleMatParam::DoubleMatParam(){{{*/ 24 24 DoubleMatParam::DoubleMatParam(){ 25 25 return; 26 26 } 27 27 /*}}}*/ 28 /*FUNCTION DoubleMatParam::DoubleMatParam(int enum_type,IssmDoubleMat value){{{ 1*/29 DoubleMatParam::DoubleMatParam(int in_enum_type, double* in_value, int in_M,int in_N){28 /*FUNCTION DoubleMatParam::DoubleMatParam(int enum_type,IssmDoubleMat value){{{*/ 29 DoubleMatParam::DoubleMatParam(int in_enum_type,IssmDouble* in_value, int in_M,int in_N){ 30 30 31 31 enum_type=in_enum_type; … … 33 33 N=in_N; 34 34 35 value= (double*)xmalloc(M*N*sizeof(double));36 memcpy(value,in_value,M*N*sizeof(double));35 value=xNew<IssmDouble>(M*N); 36 xMemCpy<IssmDouble>(value,in_value,M*N); 37 37 } 38 38 /*}}}*/ 39 /*FUNCTION DoubleMatParam::~DoubleMatParam(){{{ 1*/39 /*FUNCTION DoubleMatParam::~DoubleMatParam(){{{*/ 40 40 DoubleMatParam::~DoubleMatParam(){ 41 x free((void**)&value);41 xDelete<IssmDouble>(value); 42 42 return; 43 43 } … … 45 45 46 46 /*Object virtual functions definitions:*/ 47 /*FUNCTION DoubleMatParam::Echo {{{ 1*/47 /*FUNCTION DoubleMatParam::Echo {{{*/ 48 48 void DoubleMatParam::Echo(void){ 49 49 50 printf("DoubleMatParam:\n");51 printf(" enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));52 printf(" matrix size: %ix%i\n",this->M,this->N);50 _printLine_("DoubleMatParam:"); 51 _printLine_(" enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")"); 52 _printLine_(" matrix size: " << this->M << "x" << this->N); 53 53 54 54 } 55 55 /*}}}*/ 56 /*FUNCTION DoubleMatParam::DeepEcho{{{ 1*/56 /*FUNCTION DoubleMatParam::DeepEcho{{{*/ 57 57 void DoubleMatParam::DeepEcho(void){ 58 58 59 59 int i,j; 60 60 61 printf("DoubleMatParam:\n");62 printf(" enum: %i (%s)\n",this->enum_type,EnumToStringx(this->enum_type));63 printf(" matrix size: %ix%i\n",this->M,this->N);61 _printLine_("DoubleMatParam:"); 62 _printLine_(" enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")"); 63 _printLine_(" matrix size: " << this->M << "x" << this->N); 64 64 for(i=0;i<this->M;i++){ 65 65 for(i=0;i<this->N;i++){ 66 printf("%i %i %g\n",i,j,*(this->value+N*i+j));66 _printLine_(i << " " << j << " " << *(this->value+N*i+j)); 67 67 } 68 68 } 69 69 } 70 70 /*}}}*/ 71 /*FUNCTION DoubleMatParam::Id{{{ 1*/71 /*FUNCTION DoubleMatParam::Id{{{*/ 72 72 int DoubleMatParam::Id(void){ return -1; } 73 73 /*}}}*/ 74 /*FUNCTION DoubleMatParam::MyRank{{{ 1*/74 /*FUNCTION DoubleMatParam::MyRank{{{*/ 75 75 int DoubleMatParam::MyRank(void){ 76 76 extern int my_rank; … … 78 78 } 79 79 /*}}}*/ 80 /*FUNCTION DoubleMatParam::ObjectEnum{{{ 1*/80 /*FUNCTION DoubleMatParam::ObjectEnum{{{*/ 81 81 int DoubleMatParam::ObjectEnum(void){ 82 82 … … 85 85 } 86 86 /*}}}*/ 87 /*FUNCTION DoubleMatParam::copy{{{ 1*/87 /*FUNCTION DoubleMatParam::copy{{{*/ 88 88 Object* DoubleMatParam::copy() { 89 89 … … 94 94 95 95 /*DoubleMatParam virtual functions definitions: */ 96 /*FUNCTION DoubleMatParam::GetParameterValue( double** pdoublearray,int* pM,int* pN){{{1*/97 void DoubleMatParam::GetParameterValue( double** pdoublearray,int* pM,int* pN){98 double* output=NULL;96 /*FUNCTION DoubleMatParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){{{*/ 97 void DoubleMatParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){ 98 IssmDouble* output=NULL; 99 99 100 output= (double*)xmalloc((int)(M*N*sizeof(double)));101 memcpy(output,value,M*N*sizeof(double));100 output=xNew<IssmDouble>(M*N); 101 xMemCpy<IssmDouble>(output,value,M*N); 102 102 103 103 /*Assign output pointers:*/ 104 104 if(pM) *pM=M; 105 105 if(pN) *pN=N; 106 *p doublearray=output;106 *pIssmDoublearray=output; 107 107 } 108 108 /*}}}*/ 109 /*FUNCTION DoubleMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){{{ 1*/109 /*FUNCTION DoubleMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){{{*/ 110 110 void DoubleMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){ 111 _error _("DoubleMat of enum %i (%s) cannot return an array of int",enum_type,EnumToStringx(enum_type));111 _error2_("DoubleMat of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of int"); 112 112 } 113 113 /*}}}*/ 114 /*FUNCTION DoubleMatParam::GetParameterName{{{ 1*/114 /*FUNCTION DoubleMatParam::GetParameterName{{{*/ 115 115 void DoubleMatParam::GetParameterName(char**pname){ 116 116 EnumToStringx(pname,this->enum_type); 117 117 } 118 118 /*}}}*/ 119 /*FUNCTION DoubleMatParam::SetValue{{{ 1*/120 void DoubleMatParam::SetValue( double* doublearray,int in_M,int in_N){119 /*FUNCTION DoubleMatParam::SetValue{{{*/ 120 void DoubleMatParam::SetValue(IssmDouble* IssmDoublearray,int in_M,int in_N){ 121 121 122 122 /*avoid leak: */ 123 x free((void**)&this->value);123 xDelete<IssmDouble>(this->value); 124 124 125 this->value= (double*)xmalloc(in_M*in_N*sizeof(double));126 memcpy(this->value,doublearray,in_M*in_N*sizeof(double));125 this->value=xNew<IssmDouble>(in_M*in_N); 126 xMemCpy<IssmDouble>(this->value,IssmDoublearray,in_M*in_N); 127 127 128 128 this->M=in_M; … … 130 130 } 131 131 /*}}}*/ 132 /*FUNCTION DoubleMatParam::UnitConversion{{{ 1*/132 /*FUNCTION DoubleMatParam::UnitConversion{{{*/ 133 133 void DoubleMatParam::UnitConversion(int direction_enum){ 134 134 ::UnitConversion(this->value,this->M*this->N,direction_enum,this->enum_type); … … 137 137 138 138 /*diverse: */ 139 /*FUNCTION DoubleMatParam::GetPointer{{{ 1*/140 double* DoubleMatParam::GetPointer(void){139 /*FUNCTION DoubleMatParam::GetPointer{{{*/ 140 IssmDouble* DoubleMatParam::GetPointer(void){ 141 141 return this->value; 142 142 }
Note:
See TracChangeset
for help on using the changeset viewer.