Changeset 138 for XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp
- Timestamp:
- 12/10/10 16:04:54 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp
r127 r138 78 78 static string GetDefName(void) { return (CGrid::GetName()); } 79 79 80 static CGrid* CreateObject(const CDomain* const a_domain, const CAxis* const a_axis) 81 { 82 string new_id = string("___") + a_domain->getId() + string("_") + a_axis->getId() + string("__") ; 80 static CGrid* CreateObject(const CDomain * const a_domain, 81 const CAxis * const a_axis) 82 { 83 string new_id = string("___") + a_domain->getId() + 84 string("_") + a_axis->getId() + string("__") ; 83 85 CGrid* const grid = ObjectTemplate<CGrid>::CreateObject(new_id) ; 84 86 … … 124 126 void CGrid::computeIndex(void) 125 127 { 126 int ni = domain->ni ; 127 int nj = domain->nj ; 128 int size = (hasAxis) ? (int)axis->size : 1 ; 129 int data_dim = domain->data_dim ; 130 int data_n_index = domain->data_n_index ; 131 int data_ibegin = domain->data_ibegin ; 132 int data_jbegin = (data_dim == 2) ? (int)domain->data_jbegin : -1; 133 134 Array<int, 1>& data_i_index =* domain->data_i_index ; 135 Array<int, 1>& data_j_index =* domain->data_j_index ; 136 Array<bool, 2>& mask =* domain->mask ; 137 int i, j, l, n ; 138 int count, indexCount ; 139 140 for(indexCount=0, l=0; l<size ; l++) 128 const int ni = domain->ni , 129 nj = domain->nj , 130 size = (hasAxis) ? (int)axis->size : 1 ; 131 132 /*std::cout << ni << " : " 133 << nj << " : " 134 << size << std::endl;*/ 135 136 const int data_dim = domain->data_dim , 137 data_n_index = domain->data_n_index , 138 data_ibegin = domain->data_ibegin , 139 data_jbegin = (data_dim == 2) ? (int)domain->data_jbegin : -1; 140 141 Array<int, 1>& data_i_index =* domain->data_i_index , 142 data_j_index =* domain->data_j_index ; 143 144 /*std::cout << data_n_index << " : " 145 << data_i_index.size() << " : " 146 << data_j_index.size() << std::endl;*/ 147 148 Array<bool, 2>& mask = *domain->mask ; 149 150 int indexCount = 0; 151 152 for(int l = 0; l < size ; l++) 141 153 { 142 for(n=0; n<data_n_index; n++) 143 { 144 if (data_dim == 1) 145 { 146 i = (data_i_index(n) + data_ibegin) % ni ; 147 j = (data_i_index(n) + data_ibegin) / ni ; 148 //cout<<i<<" "<<j<<" "<<mask(i,j)<<endl ; 149 } 150 else 151 { 152 i = data_i_index(n) + data_ibegin ; 153 j = data_j_index(n) + data_jbegin ; 154 //cout<<i<<" "<<j<<" "<<mask(i,j)<<endl ; 155 } 156 157 if (i>=0 && i<ni && j>=0 && j<nj && mask(i,j) ) indexCount++ ; 154 for(int n = 0, i = 0, j = 0; n < data_n_index; n++) 155 { 156 int temp_i = data_i_index(n) + data_ibegin, 157 temp_j = (data_dim == 1) ? -1 158 : data_j_index(n) + data_jbegin; 159 i = (data_dim == 1) ? (temp_i - 2) % ni 160 : (temp_i - 1) ; 161 j = (data_dim == 1) ? (temp_i - 2) / ni 162 : (temp_j - 1) ; 163 164 if ((i >= 0 && i < ni) && 165 (j >= 0 && j < nj) && mask(i, j)) 166 indexCount++ ; 158 167 } 159 168 } 160 169 161 storeIndex.resize(indexCount) ; 170 //std::cout << indexCount << std::endl; 171 172 storeIndex.resize(indexCount) ; 162 173 out_l_index.resize(indexCount) ; 163 174 out_i_index.resize(indexCount) ; 164 175 out_j_index.resize(indexCount) ; 165 176 166 for( count=0, indexCount=0, l=0; l<size; l++)177 for(int count = 0, indexCount = 0, l = 0; l < size; l++) 167 178 { 168 for(n=0; n<data_n_index; n++, count++) 169 { 170 if (data_dim == 1) 179 for(int n = 0, i = 0, j = 0; n < data_n_index; n++, count++) 180 { 181 int temp_i = data_i_index(n) + data_ibegin, 182 temp_j = (data_dim == 1) ? -1 183 : data_j_index(n) + data_jbegin; 184 i = (data_dim == 1) ? (temp_i - 2) % ni 185 : (temp_i - 1) ; 186 j = (data_dim == 1) ? (temp_i - 2) / ni 187 : (temp_j - 1) ; 188 189 if ((i >= 0 && i < ni) && 190 (j >= 0 && j < nj) && mask(i, j)) 171 191 { 172 i = (data_i_index(n) + data_ibegin) % ni ; 173 j = (data_i_index(n) + data_ibegin) / ni ; 174 } 175 else // (dat_dim == 2) 176 { 177 i = data_i_index(n) + data_ibegin ; 178 j = data_j_index(n) + data_jbegin ; 179 } 180 181 if (i>=0 && i<ni && j>=0 && j<nj && mask(i,j)) 182 { 183 storeIndex(indexCount) = count ; 192 storeIndex(indexCount) = count ; 184 193 out_l_index(indexCount) = l ; 185 194 out_i_index(indexCount) = i ; … … 192 201 193 202 template<> 194 void CGrid::outputField(const Array<double, 1>& stored, Array<double, 2>& outField) const 203 void CGrid::outputField(const Array<double, 1>& stored, 204 Array<double, 2>& outField) const 195 205 { 196 206 for(int n = 0; n < storeIndex.size(); n++) … … 199 209 200 210 template<> 201 void CGrid::outputField(const Array<double, 1>& stored, Array<double, 3>& outField) const 211 void CGrid::outputField(const Array<double, 1>& stored, 212 Array<double, 3>& outField) const 202 213 { 203 214 for(int n = 0; n < storeIndex.size(); n++)
Note: See TracChangeset
for help on using the changeset viewer.