20if( group%k_loop_inside )
then
25 buffer_pos = group%pack_buffer_pos(n) + buffer_start_pos
27 is = group%pack_is(n); ie = group%pack_ie(n)
28 js = group%pack_js(n); je = group%pack_je(n)
29 rotation = group%pack_rotation(n)
30 if( group%pack_type(n) == field_s )
then
31 select case( rotation )
34 ptr_field = group%addrs_s(l)
39 buffer(pos) = field(i,j,k)
46 ptr_field = group%addrs_s(l)
51 buffer(pos) = field(i,j,k)
58 ptr_field = group%addrs_s(l)
63 buffer(pos) = field(i,j,k)
68 case( one_hundred_eighty )
70 ptr_field = group%addrs_s(l)
75 buffer(pos) = field(i,j,k)
81 else if( group%pack_type(n) == field_x )
then
82 select case( rotation )
85 ptr_fieldx = group%addrs_x(l)
90 buffer(pos) = fieldx(i,j,k)
96 if( btest(group%flags_v,scalar_bit) )
then
98 ptr_fieldy = group%addrs_y(l)
103 buffer(pos) = fieldy(i,j,k)
110 ptr_fieldy = group%addrs_y(l)
115 buffer(pos) = -fieldy(i,j,k)
123 ptr_fieldy = group%addrs_y(l)
128 buffer(pos) = fieldy(i,j,k)
133 case( one_hundred_eighty )
134 if( btest(group%flags_v,scalar_bit) )
then
136 ptr_fieldx = group%addrs_x(l)
141 buffer(pos) = fieldx(i,j,k)
148 ptr_fieldx = group%addrs_x(l)
153 buffer(pos) = -fieldx(i,j,k)
160 else if( group%pack_type(n) == field_y )
then
161 select case( rotation )
164 ptr_fieldy = group%addrs_y(l)
169 buffer(pos) = fieldy(i,j,k)
176 ptr_fieldx = group%addrs_x(l)
181 buffer(pos) = fieldx(i,j,k)
187 if( btest(group%flags_v,scalar_bit) )
then
189 ptr_fieldx = group%addrs_x(l)
194 buffer(pos) = fieldx(i,j,k)
201 ptr_fieldx = group%addrs_x(l)
206 buffer(pos) = -fieldx(i,j,k)
212 case( one_hundred_eighty )
213 if( btest(group%flags_v,scalar_bit) )
then
215 ptr_fieldy = group%addrs_y(l)
220 buffer(pos) = fieldy(i,j,k)
227 ptr_fieldy = group%addrs_y(l)
232 buffer(pos) = -fieldy(i,j,k)
245 do nk = 1, npack*ksize
247 k = mod((nk-1), ksize) + 1
248 buffer_pos = group%pack_buffer_pos(n) + buffer_start_pos
249 pos = buffer_pos + (k-1)*group%pack_size(n)
250 is = group%pack_is(n); ie = group%pack_ie(n)
251 js = group%pack_js(n); je = group%pack_je(n)
252 rotation = group%pack_rotation(n)
253 if( group%pack_type(n) == field_s )
then
254 select case( rotation )
256 do l=1, group%nscalar
257 ptr_field = group%addrs_s(l)
261 buffer(pos) = field(i,j,k)
267 ptr_field = group%addrs_s(l)
271 buffer(pos) = field(i,j,k)
277 ptr_field = group%addrs_s(l)
281 buffer(pos) = field(i,j,k)
285 case( one_hundred_eighty )
287 ptr_field = group%addrs_s(l)
291 buffer(pos) = field(i,j,k)
296 else if( group%pack_type(n) == field_x )
then
297 select case( rotation )
300 ptr_fieldx = group%addrs_x(l)
304 buffer(pos) = fieldx(i,j,k)
309 if( btest(group%flags_v,scalar_bit) )
then
311 ptr_fieldy = group%addrs_y(l)
315 buffer(pos) = fieldy(i,j,k)
321 ptr_fieldy = group%addrs_y(l)
325 buffer(pos) = -fieldy(i,j,k)
332 ptr_fieldy = group%addrs_y(l)
336 buffer(pos) = fieldy(i,j,k)
340 case( one_hundred_eighty )
341 if( btest(group%flags_v,scalar_bit) )
then
343 ptr_fieldx = group%addrs_x(l)
347 buffer(pos) = fieldx(i,j,k)
353 ptr_fieldx = group%addrs_x(l)
357 buffer(pos) = -fieldx(i,j,k)
363 else if( group%pack_type(n) == field_y )
then
364 select case( rotation )
367 ptr_fieldy = group%addrs_y(l)
371 buffer(pos) = fieldy(i,j,k)
377 ptr_fieldx = group%addrs_x(l)
381 buffer(pos) = fieldx(i,j,k)
386 if( btest(group%flags_v,scalar_bit) )
then
388 ptr_fieldx = group%addrs_x(l)
392 buffer(pos) = fieldx(i,j,k)
398 ptr_fieldx = group%addrs_x(l)
402 buffer(pos) = -fieldx(i,j,k)
407 case( one_hundred_eighty )
408 if( btest(group%flags_v,scalar_bit) )
then
410 ptr_fieldy = group%addrs_y(l)
414 buffer(pos) = fieldy(i,j,k)
420 ptr_fieldy = group%addrs_y(l)
424 buffer(pos) = -fieldy(i,j,k)