Ignore:
Timestamp:
12/10/10 16:04:54 (13 years ago)
Author:
hozdoba
Message:

Mise à jour

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/XMLIO/grid.hpp

    r127 r138  
    7878         static string GetDefName(void) { return (CGrid::GetName()); } 
    7979 
    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("__") ; 
    8385            CGrid* const grid = ObjectTemplate<CGrid>::CreateObject(new_id) ; 
    8486 
     
    124126   void CGrid::computeIndex(void) 
    125127   { 
    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++) 
    141153      { 
    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++ ; 
    158167         } 
    159168      } 
    160169 
    161       storeIndex.resize(indexCount) ; 
     170      //std::cout << indexCount  << std::endl; 
     171 
     172       storeIndex.resize(indexCount) ; 
    162173      out_l_index.resize(indexCount) ; 
    163174      out_i_index.resize(indexCount) ; 
    164175      out_j_index.resize(indexCount) ; 
    165176 
    166       for(count=0, indexCount=0, l=0; l<size; l++) 
     177      for(int count = 0, indexCount = 0,  l = 0; l < size; l++) 
    167178      { 
    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)) 
    171191            { 
    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 ; 
    184193               out_l_index(indexCount) = l ; 
    185194               out_i_index(indexCount) = i ; 
     
    192201 
    193202   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 
    195205   { 
    196206      for(int n = 0; n < storeIndex.size(); n++) 
     
    199209 
    200210   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 
    202213   { 
    203214      for(int n = 0; n < storeIndex.size(); n++) 
Note: See TracChangeset for help on using the changeset viewer.