9 #ifndef NCWRITEHELPER_HPP_
10 #define NCWRITEHELPER_HPP_
46 std::vector< std::string >& desired_names,
51 virtual ErrorCode write_values( std::vector< std::string >& var_names, std::vector< int >& tstep_nums );
60 std::vector< int >& tstep_nums ) = 0;
90 for(
unsigned int i = 0; i < 6; i++ )
108 template <
typename T >
109 static void jik_to_kji(
size_t ni,
size_t nj,
size_t nk, T* dest, T* source )
111 size_t nik = ni * nk, nij = ni * nj;
112 for( std::size_t k = 0; k != nk; k++ )
113 for( std::size_t j = 0; j != nj; j++ )
114 for( std::size_t i = 0; i != ni; i++ )
115 dest[k * nij + j * ni + i] = source[j * nik + i * nk + k];
139 template <
typename T >
142 std::size_t idxInSource = 0;
147 std::size_t size_range = pair_iter->second - pair_iter->first + 1;
148 std::size_t nik = size_range * nk, nij = size_range * nj;
149 for( std::size_t k = 0; k != nk; k++ )
150 for( std::size_t j = 0; j != nj; j++ )
151 for( std::size_t i = 0; i != size_range; i++ )
152 dest[idxInSource + k * nij + j * size_range + i] = source[idxInSource + j * nik + i * nk + k];
153 idxInSource += ( size_range * nj * nk );