PageRenderTime 53ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/wrfv2_fire/external/RSL_LITE/f_pack.F90

http://github.com/jbeezley/wrf-fire
FORTRAN Modern | 645 lines | 584 code | 29 blank | 32 comment | 0 complexity | 387268be8fa8385ddf981e0d61762178 MD5 | raw file
Possible License(s): AGPL-1.0
  1. MODULE duplicate_of_driver_constants
  2. ! These definitions must be the same as frame/module_driver_constants
  3. ! and also the same as the definitions in rsl_lite.h
  4. INTEGER , PARAMETER :: DATA_ORDER_XYZ = 1
  5. INTEGER , PARAMETER :: DATA_ORDER_YXZ = 2
  6. INTEGER , PARAMETER :: DATA_ORDER_ZXY = 3
  7. INTEGER , PARAMETER :: DATA_ORDER_ZYX = 4
  8. INTEGER , PARAMETER :: DATA_ORDER_XZY = 5
  9. INTEGER , PARAMETER :: DATA_ORDER_YZX = 6
  10. END MODULE duplicate_of_driver_constants
  11. SUBROUTINE f_pack_int ( inbuf, outbuf, memorder, js, je, ks, ke, &
  12. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  13. USE duplicate_of_driver_constants
  14. IMPLICIT NONE
  15. INTEGER, INTENT(IN) :: memorder
  16. INTEGER ims, ime, jms, jme, kms, kme
  17. INTEGER inbuf(*), outbuf(*)
  18. INTEGER js, je, ks, ke, is, ie, curs
  19. SELECT CASE ( memorder )
  20. CASE ( DATA_ORDER_XYZ )
  21. CALL f_pack_int_ijk( inbuf, outbuf, js, je, ks, ke, is, ie, &
  22. & jms, jme, kms, kme, ims, ime, curs )
  23. CASE ( DATA_ORDER_YXZ )
  24. CALL f_pack_int_jik( inbuf, outbuf, js, je, ks, ke, is, ie, &
  25. & jms, jme, kms, kme, ims, ime, curs )
  26. CASE ( DATA_ORDER_XZY )
  27. CALL f_pack_int_ikj( inbuf, outbuf, js, je, ks, ke, is, ie, &
  28. & jms, jme, kms, kme, ims, ime, curs )
  29. CASE ( DATA_ORDER_YZX )
  30. CALL f_pack_int_jki( inbuf, outbuf, js, je, ks, ke, is, ie, &
  31. & jms, jme, kms, kme, ims, ime, curs )
  32. CASE ( DATA_ORDER_ZXY )
  33. CALL f_pack_int_kij( inbuf, outbuf, js, je, ks, ke, is, ie, &
  34. & jms, jme, kms, kme, ims, ime, curs )
  35. CASE ( DATA_ORDER_ZYX )
  36. CALL f_pack_int_kji( inbuf, outbuf, js, je, ks, ke, is, ie, &
  37. & jms, jme, kms, kme, ims, ime, curs )
  38. END SELECT
  39. RETURN
  40. END SUBROUTINE f_pack_int
  41. SUBROUTINE f_pack_lint ( inbuf, outbuf, memorder, js, je, ks, ke, &
  42. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  43. USE duplicate_of_driver_constants
  44. IMPLICIT NONE
  45. INTEGER, INTENT(IN) :: memorder
  46. INTEGER jms, jme, kms, kme, ims, ime
  47. INTEGER*8 inbuf(*), outbuf(*)
  48. INTEGER js, je, ks, ke, is, ie, curs
  49. SELECT CASE ( memorder )
  50. CASE ( DATA_ORDER_XYZ )
  51. CALL f_pack_lint_ijk( inbuf, outbuf, js, je, ks, ke, is, ie, &
  52. & jms, jme, kms, kme, ims, ime, curs )
  53. CASE ( DATA_ORDER_YXZ )
  54. CALL f_pack_lint_jik( inbuf, outbuf, js, je, ks, ke, is, ie, &
  55. & jms, jme, kms, kme, ims, ime, curs )
  56. CASE ( DATA_ORDER_XZY )
  57. CALL f_pack_lint_ikj( inbuf, outbuf, js, je, ks, ke, is, ie, &
  58. & jms, jme, kms, kme, ims, ime, curs )
  59. CASE ( DATA_ORDER_YZX )
  60. CALL f_pack_lint_jki( inbuf, outbuf, js, je, ks, ke, is, ie, &
  61. & jms, jme, kms, kme, ims, ime, curs )
  62. CASE ( DATA_ORDER_ZXY )
  63. CALL f_pack_lint_kij( inbuf, outbuf, js, je, ks, ke, is, ie, &
  64. & jms, jme, kms, kme, ims, ime, curs )
  65. CASE ( DATA_ORDER_ZYX )
  66. CALL f_pack_lint_kji( inbuf, outbuf, js, je, ks, ke, is, ie, &
  67. & jms, jme, kms, kme, ims, ime, curs )
  68. END SELECT
  69. RETURN
  70. END SUBROUTINE f_pack_lint
  71. SUBROUTINE f_unpack_int ( inbuf, outbuf, memorder, js, je, ks, ke, &
  72. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  73. USE duplicate_of_driver_constants
  74. IMPLICIT NONE
  75. INTEGER, INTENT(IN) :: memorder
  76. INTEGER jms, jme, kms, kme, ims, ime
  77. INTEGER outbuf(*), inbuf(*)
  78. INTEGER js, je, ks, ke, is, ie, curs
  79. SELECT CASE ( memorder )
  80. CASE ( DATA_ORDER_XYZ )
  81. CALL f_unpack_int_ijk( inbuf, outbuf, js, je, ks, ke, &
  82. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  83. CASE ( DATA_ORDER_YXZ )
  84. CALL f_unpack_int_jik( inbuf, outbuf, js, je, ks, ke, &
  85. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  86. CASE ( DATA_ORDER_XZY )
  87. CALL f_unpack_int_ikj( inbuf, outbuf, js, je, ks, ke, &
  88. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  89. CASE ( DATA_ORDER_YZX )
  90. CALL f_unpack_int_jki( inbuf, outbuf, js, je, ks, ke, &
  91. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  92. CASE ( DATA_ORDER_ZXY )
  93. CALL f_unpack_int_kij( inbuf, outbuf, js, je, ks, ke, &
  94. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  95. CASE ( DATA_ORDER_ZYX )
  96. CALL f_unpack_int_kji( inbuf, outbuf, js, je, ks, ke, &
  97. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  98. END SELECT
  99. RETURN
  100. END SUBROUTINE f_unpack_int
  101. SUBROUTINE f_unpack_lint ( inbuf, outbuf, memorder, js, je, ks, &
  102. & ke, is, ie, jms, jme, kms, kme, ims, ime, curs )
  103. USE duplicate_of_driver_constants
  104. IMPLICIT NONE
  105. INTEGER, INTENT(IN) :: memorder
  106. INTEGER jms, jme, kms, kme, ims, ime
  107. INTEGER*8 outbuf(*), inbuf(*)
  108. INTEGER js, je, ks, ke, is, ie, curs
  109. SELECT CASE ( memorder )
  110. CASE ( DATA_ORDER_XYZ )
  111. CALL f_unpack_lint_ijk( inbuf, outbuf, js, je, ks, ke, &
  112. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  113. CASE ( DATA_ORDER_YXZ )
  114. CALL f_unpack_lint_jik( inbuf, outbuf, js, je, ks, ke, &
  115. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  116. CASE ( DATA_ORDER_XZY )
  117. CALL f_unpack_lint_ikj( inbuf, outbuf, js, je, ks, ke, &
  118. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  119. CASE ( DATA_ORDER_YZX )
  120. CALL f_unpack_lint_jki( inbuf, outbuf, js, je, ks, ke, &
  121. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  122. CASE ( DATA_ORDER_ZXY )
  123. CALL f_unpack_lint_kij( inbuf, outbuf, js, je, ks, ke, &
  124. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  125. CASE ( DATA_ORDER_ZYX )
  126. CALL f_unpack_lint_kji( inbuf, outbuf, js, je, ks, ke, &
  127. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  128. END SELECT
  129. RETURN
  130. END SUBROUTINE f_unpack_lint
  131. !ikj
  132. SUBROUTINE f_pack_int_ikj ( inbuf, outbuf, js, je, ks, ke, &
  133. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  134. IMPLICIT NONE
  135. INTEGER jms, jme, kms, kme, ims, ime
  136. INTEGER inbuf(ims:ime,kms:kme,jms:jme), outbuf(*)
  137. INTEGER js, je, ks, ke, is, ie, curs
  138. ! Local
  139. INTEGER i,j,k,p
  140. p = 1
  141. DO j = js, je
  142. DO k = ks, ke
  143. DO i = is, ie
  144. outbuf(p) = inbuf(i,k,j)
  145. p = p + 1
  146. ENDDO
  147. ENDDO
  148. ENDDO
  149. curs = p - 1
  150. RETURN
  151. END SUBROUTINE f_pack_int_ikj
  152. SUBROUTINE f_pack_lint_ikj ( inbuf, outbuf, js, je, ks, ke, &
  153. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  154. IMPLICIT NONE
  155. INTEGER jms, jme, kms, kme, ims, ime
  156. INTEGER*8 inbuf(ims:ime,kms:kme,jms:jme), outbuf(*)
  157. INTEGER js, je, ks, ke, is, ie, curs
  158. ! Local
  159. INTEGER i,j,k,p
  160. p = 1
  161. DO j = js, je
  162. DO k = ks, ke
  163. DO i = is, ie
  164. outbuf(p) = inbuf(i,k,j)
  165. p = p + 1
  166. ENDDO
  167. ENDDO
  168. ENDDO
  169. curs = p - 1
  170. RETURN
  171. END SUBROUTINE f_pack_lint_ikj
  172. SUBROUTINE f_unpack_int_ikj ( inbuf, outbuf, js, je, ks, ke, &
  173. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  174. IMPLICIT NONE
  175. INTEGER jms, jme, kms, kme, ims, ime
  176. INTEGER outbuf(ims:ime,kms:kme,jms:jme), inbuf(*)
  177. INTEGER js, je, ks, ke, is, ie, curs
  178. ! Local
  179. INTEGER i,j,k,p
  180. p = 1
  181. DO j = js, je
  182. DO k = ks, ke
  183. DO i = is, ie
  184. outbuf(i,k,j) = inbuf(p)
  185. p = p + 1
  186. ENDDO
  187. ENDDO
  188. ENDDO
  189. curs = p - 1
  190. RETURN
  191. END SUBROUTINE f_unpack_int_ikj
  192. SUBROUTINE f_unpack_lint_ikj ( inbuf, outbuf, js, je, ks, ke, &
  193. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  194. IMPLICIT NONE
  195. INTEGER jms, jme, kms, kme, ims, ime
  196. INTEGER*8 outbuf(ims:ime,kms:kme,jms:jme), inbuf(*)
  197. INTEGER js, je, ks, ke, is, ie, curs
  198. ! Local
  199. INTEGER i,j,k,p
  200. p = 1
  201. DO j = js, je
  202. DO k = ks, ke
  203. DO i = is, ie
  204. outbuf(i,k,j) = inbuf(p)
  205. p = p + 1
  206. ENDDO
  207. ENDDO
  208. ENDDO
  209. curs = p - 1
  210. RETURN
  211. END SUBROUTINE f_unpack_lint_ikj
  212. !jki
  213. SUBROUTINE f_pack_int_jki ( inbuf, outbuf, js, je, ks, ke, &
  214. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  215. IMPLICIT NONE
  216. INTEGER jms, jme, kms, kme, ims, ime
  217. INTEGER inbuf(jms:jme,kms:kme,ims:ime), outbuf(*)
  218. INTEGER js, je, ks, ke, is, ie, curs
  219. ! Local
  220. INTEGER i,j,k,p
  221. p = 1
  222. DO i = is, ie
  223. DO k = ks, ke
  224. DO j = js, je
  225. outbuf(p) = inbuf(j,k,i)
  226. p = p + 1
  227. ENDDO
  228. ENDDO
  229. ENDDO
  230. curs = p - 1
  231. RETURN
  232. END SUBROUTINE f_pack_int_jki
  233. SUBROUTINE f_pack_lint_jki ( inbuf, outbuf, js, je, ks, ke, &
  234. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  235. IMPLICIT NONE
  236. INTEGER jms, jme, kms, kme, ims, ime
  237. INTEGER*8 inbuf(jms:jme,kms:kme,ims:ime), outbuf(*)
  238. INTEGER js, je, ks, ke, is, ie, curs
  239. ! Local
  240. INTEGER i,j,k,p
  241. p = 1
  242. DO i = is, ie
  243. DO k = ks, ke
  244. DO j = js, je
  245. outbuf(p) = inbuf(j,k,i)
  246. p = p + 1
  247. ENDDO
  248. ENDDO
  249. ENDDO
  250. curs = p - 1
  251. RETURN
  252. END SUBROUTINE f_pack_lint_jki
  253. SUBROUTINE f_unpack_int_jki ( inbuf, outbuf, js, je, ks, ke, &
  254. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  255. IMPLICIT NONE
  256. INTEGER jms, jme, kms, kme, ims, ime
  257. INTEGER outbuf(jms:jme,kms:kme,ims:ime), inbuf(*)
  258. INTEGER js, je, ks, ke, is, ie, curs
  259. ! Local
  260. INTEGER i,j,k,p
  261. p = 1
  262. DO i = is, ie
  263. DO k = ks, ke
  264. DO j = js, je
  265. outbuf(j,k,i) = inbuf(p)
  266. p = p + 1
  267. ENDDO
  268. ENDDO
  269. ENDDO
  270. curs = p - 1
  271. RETURN
  272. END SUBROUTINE f_unpack_int_jki
  273. SUBROUTINE f_unpack_lint_jki ( inbuf, outbuf, js, je, ks, ke, &
  274. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  275. IMPLICIT NONE
  276. INTEGER jms, jme, kms, kme, ims, ime
  277. INTEGER*8 outbuf(jms:jme,kms:kme,ims:ime), inbuf(*)
  278. INTEGER js, je, ks, ke, is, ie, curs
  279. ! Local
  280. INTEGER i,j,k,p
  281. p = 1
  282. DO i = is, ie
  283. DO k = ks, ke
  284. DO j = js, je
  285. outbuf(j,k,i) = inbuf(p)
  286. p = p + 1
  287. ENDDO
  288. ENDDO
  289. ENDDO
  290. curs = p - 1
  291. RETURN
  292. END SUBROUTINE f_unpack_lint_jki
  293. !ijk
  294. SUBROUTINE f_pack_int_ijk ( inbuf, outbuf, js, je, ks, ke, &
  295. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  296. IMPLICIT NONE
  297. INTEGER jms, jme, kms, kme, ims, ime
  298. INTEGER inbuf(ims:ime,jms:jme,kms:kme), outbuf(*)
  299. INTEGER js, je, ks, ke, is, ie, curs
  300. ! Local
  301. INTEGER i,j,k,p
  302. p = 1
  303. DO k = ks, ke
  304. DO j = js, je
  305. DO i = is, ie
  306. outbuf(p) = inbuf(i,j,k)
  307. p = p + 1
  308. ENDDO
  309. ENDDO
  310. ENDDO
  311. curs = p - 1
  312. RETURN
  313. END SUBROUTINE f_pack_int_ijk
  314. SUBROUTINE f_pack_lint_ijk ( inbuf, outbuf, js, je, ks, ke, &
  315. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  316. IMPLICIT NONE
  317. INTEGER jms, jme, kms, kme, ims, ime
  318. INTEGER*8 inbuf(ims:ime,jms:jme,kms:kme), outbuf(*)
  319. INTEGER js, je, ks, ke, is, ie, curs
  320. ! Local
  321. INTEGER i,j,k,p
  322. p = 1
  323. DO k = ks, ke
  324. DO j = js, je
  325. DO i = is, ie
  326. outbuf(p) = inbuf(i,j,k)
  327. p = p + 1
  328. ENDDO
  329. ENDDO
  330. ENDDO
  331. curs = p - 1
  332. RETURN
  333. END SUBROUTINE f_pack_lint_ijk
  334. SUBROUTINE f_unpack_int_ijk ( inbuf, outbuf, js, je, ks, ke, &
  335. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  336. IMPLICIT NONE
  337. INTEGER jms, jme, kms, kme, ims, ime
  338. INTEGER outbuf(ims:ime,jms:jme,kms:kme), inbuf(*)
  339. INTEGER js, je, ks, ke, is, ie, curs
  340. ! Local
  341. INTEGER i,j,k,p
  342. p = 1
  343. DO k = ks, ke
  344. DO j = js, je
  345. DO i = is, ie
  346. outbuf(i,j,k) = inbuf(p)
  347. p = p + 1
  348. ENDDO
  349. ENDDO
  350. ENDDO
  351. curs = p - 1
  352. RETURN
  353. END SUBROUTINE f_unpack_int_ijk
  354. SUBROUTINE f_unpack_lint_ijk ( inbuf, outbuf, js, je, ks, ke, &
  355. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  356. IMPLICIT NONE
  357. INTEGER jms, jme, kms, kme, ims, ime
  358. INTEGER*8 outbuf(ims:ime,jms:jme,kms:kme), inbuf(*)
  359. INTEGER js, je, ks, ke, is, ie, curs
  360. ! Local
  361. INTEGER i,j,k,p
  362. p = 1
  363. DO k = ks, ke
  364. DO j = js, je
  365. DO i = is, ie
  366. outbuf(i,j,k) = inbuf(p)
  367. p = p + 1
  368. ENDDO
  369. ENDDO
  370. ENDDO
  371. curs = p - 1
  372. RETURN
  373. END SUBROUTINE f_unpack_lint_ijk
  374. !jik
  375. SUBROUTINE f_pack_int_jik ( inbuf, outbuf, js, je, ks, ke, &
  376. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  377. IMPLICIT NONE
  378. INTEGER jms, jme, kms, kme, ims, ime
  379. INTEGER inbuf(jms:jme,ims:ime,kms:kme), outbuf(*)
  380. INTEGER js, je, ks, ke, is, ie, curs
  381. ! Local
  382. INTEGER i,j,k,p
  383. p = 1
  384. DO k = ks, ke
  385. DO i = is, ie
  386. DO j = js, je
  387. outbuf(p) = inbuf(j,i,k)
  388. p = p + 1
  389. ENDDO
  390. ENDDO
  391. ENDDO
  392. curs = p - 1
  393. RETURN
  394. END SUBROUTINE f_pack_int_jik
  395. SUBROUTINE f_pack_lint_jik ( inbuf, outbuf, js, je, ks, ke, &
  396. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  397. IMPLICIT NONE
  398. INTEGER jms, jme, kms, kme, ims, ime
  399. INTEGER*8 inbuf(jms:jme,ims:ime,kms:kme), outbuf(*)
  400. INTEGER js, je, ks, ke, is, ie, curs
  401. ! Local
  402. INTEGER i,j,k,p
  403. p = 1
  404. DO k = ks, ke
  405. DO i = is, ie
  406. DO j = js, je
  407. outbuf(p) = inbuf(j,i,k)
  408. p = p + 1
  409. ENDDO
  410. ENDDO
  411. ENDDO
  412. curs = p - 1
  413. RETURN
  414. END SUBROUTINE f_pack_lint_jik
  415. SUBROUTINE f_unpack_int_jik ( inbuf, outbuf, js, je, ks, ke, &
  416. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  417. IMPLICIT NONE
  418. INTEGER jms, jme, kms, kme, ims, ime
  419. INTEGER outbuf(jms:jme,ims:ime,kms:kme), inbuf(*)
  420. INTEGER js, je, ks, ke, is, ie, curs
  421. ! Local
  422. INTEGER i,j,k,p
  423. p = 1
  424. DO k = ks, ke
  425. DO i = is, ie
  426. DO j = js, je
  427. outbuf(j,i,k) = inbuf(p)
  428. p = p + 1
  429. ENDDO
  430. ENDDO
  431. ENDDO
  432. curs = p - 1
  433. RETURN
  434. END SUBROUTINE f_unpack_int_jik
  435. SUBROUTINE f_unpack_lint_jik ( inbuf, outbuf, js, je, ks, ke, &
  436. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  437. IMPLICIT NONE
  438. INTEGER jms, jme, kms, kme, ims, ime
  439. INTEGER*8 outbuf(jms:jme,ims:ime,kms:kme), inbuf(*)
  440. INTEGER js, je, ks, ke, is, ie, curs
  441. ! Local
  442. INTEGER i,j,k,p
  443. p = 1
  444. DO k = ks, ke
  445. DO i = is, ie
  446. DO j = js, je
  447. outbuf(j,i,k) = inbuf(p)
  448. p = p + 1
  449. ENDDO
  450. ENDDO
  451. ENDDO
  452. curs = p - 1
  453. RETURN
  454. END SUBROUTINE f_unpack_lint_jik
  455. !kij
  456. SUBROUTINE f_pack_int_kij ( inbuf, outbuf, js, je, ks, ke, &
  457. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  458. IMPLICIT NONE
  459. INTEGER jms, jme, kms, kme, ims, ime
  460. INTEGER inbuf(kms:kme,ims:ime,jms:jme), outbuf(*)
  461. INTEGER js, je, ks, ke, is, ie, curs
  462. ! Local
  463. INTEGER i,j,k,p
  464. p = 1
  465. DO j = js, je
  466. DO i = is, ie
  467. DO k = ks, ke
  468. outbuf(p) = inbuf(k,i,j)
  469. p = p + 1
  470. ENDDO
  471. ENDDO
  472. ENDDO
  473. curs = p - 1
  474. RETURN
  475. END SUBROUTINE f_pack_int_kij
  476. SUBROUTINE f_pack_lint_kij ( inbuf, outbuf, js, je, ks, ke, &
  477. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  478. IMPLICIT NONE
  479. INTEGER jms, jme, kms, kme, ims, ime
  480. INTEGER*8 inbuf(kms:kme,ims:ime,jms:jme), outbuf(*)
  481. INTEGER js, je, ks, ke, is, ie, curs
  482. ! Local
  483. INTEGER i,j,k,p
  484. p = 1
  485. DO j = js, je
  486. DO i = is, ie
  487. DO k = ks, ke
  488. outbuf(p) = inbuf(k,i,j)
  489. p = p + 1
  490. ENDDO
  491. ENDDO
  492. ENDDO
  493. curs = p - 1
  494. RETURN
  495. END SUBROUTINE f_pack_lint_kij
  496. SUBROUTINE f_unpack_int_kij ( inbuf, outbuf, js, je, ks, ke, &
  497. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  498. IMPLICIT NONE
  499. INTEGER jms, jme, kms, kme, ims, ime
  500. INTEGER outbuf(kms:kme,ims:ime,jms:jme), inbuf(*)
  501. INTEGER js, je, ks, ke, is, ie, curs
  502. ! Local
  503. INTEGER i,j,k,p
  504. p = 1
  505. DO j = js, je
  506. DO i = is, ie
  507. DO k = ks, ke
  508. outbuf(k,i,j) = inbuf(p)
  509. p = p + 1
  510. ENDDO
  511. ENDDO
  512. ENDDO
  513. curs = p - 1
  514. RETURN
  515. END SUBROUTINE f_unpack_int_kij
  516. SUBROUTINE f_unpack_lint_kij ( inbuf, outbuf, js, je, ks, ke, &
  517. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  518. IMPLICIT NONE
  519. INTEGER jms, jme, kms, kme, ims, ime
  520. INTEGER*8 outbuf(kms:kme,ims:ime,jms:jme), inbuf(*)
  521. INTEGER js, je, ks, ke, is, ie, curs
  522. ! Local
  523. INTEGER i,j,k,p
  524. p = 1
  525. DO j = js, je
  526. DO i = is, ie
  527. DO k = ks, ke
  528. outbuf(k,i,j) = inbuf(p)
  529. p = p + 1
  530. ENDDO
  531. ENDDO
  532. ENDDO
  533. curs = p - 1
  534. RETURN
  535. END SUBROUTINE f_unpack_lint_kij
  536. !kji
  537. SUBROUTINE f_pack_int_kji ( inbuf, outbuf, js, je, ks, ke, &
  538. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  539. IMPLICIT NONE
  540. INTEGER jms, jme, kms, kme, ims, ime
  541. INTEGER inbuf(kms:kme,jms:jme,ims:ime), outbuf(*)
  542. INTEGER js, je, ks, ke, is, ie, curs
  543. ! Local
  544. INTEGER i,j,k,p
  545. p = 1
  546. DO i = is, ie
  547. DO j = js, je
  548. DO k = ks, ke
  549. outbuf(p) = inbuf(k,j,i)
  550. p = p + 1
  551. ENDDO
  552. ENDDO
  553. ENDDO
  554. curs = p - 1
  555. RETURN
  556. END SUBROUTINE f_pack_int_kji
  557. SUBROUTINE f_pack_lint_kji ( inbuf, outbuf, js, je, ks, ke, &
  558. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  559. IMPLICIT NONE
  560. INTEGER jms, jme, kms, kme, ims, ime
  561. INTEGER*8 inbuf(kms:kme,jms:jme,ims:ime), outbuf(*)
  562. INTEGER js, je, ks, ke, is, ie, curs
  563. ! Local
  564. INTEGER i,j,k,p
  565. p = 1
  566. DO i = is, ie
  567. DO j = js, je
  568. DO k = ks, ke
  569. outbuf(p) = inbuf(k,j,i)
  570. p = p + 1
  571. ENDDO
  572. ENDDO
  573. ENDDO
  574. curs = p - 1
  575. RETURN
  576. END SUBROUTINE f_pack_lint_kji
  577. SUBROUTINE f_unpack_int_kji ( inbuf, outbuf, js, je, ks, ke, &
  578. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  579. IMPLICIT NONE
  580. INTEGER jms, jme, kms, kme, ims, ime
  581. INTEGER outbuf(kms:kme,jms:jme,ims:ime), inbuf(*)
  582. INTEGER js, je, ks, ke, is, ie, curs
  583. ! Local
  584. INTEGER i,j,k,p
  585. p = 1
  586. DO i = is, ie
  587. DO j = js, je
  588. DO k = ks, ke
  589. outbuf(k,j,i) = inbuf(p)
  590. p = p + 1
  591. ENDDO
  592. ENDDO
  593. ENDDO
  594. curs = p - 1
  595. RETURN
  596. END SUBROUTINE f_unpack_int_kji
  597. SUBROUTINE f_unpack_lint_kji ( inbuf, outbuf, js, je, ks, ke, &
  598. & is, ie, jms, jme, kms, kme, ims, ime, curs )
  599. IMPLICIT NONE
  600. INTEGER jms, jme, kms, kme, ims, ime
  601. INTEGER*8 outbuf(kms:kme,jms:jme,ims:ime), inbuf(*)
  602. INTEGER js, je, ks, ke, is, ie, curs
  603. ! Local
  604. INTEGER i,j,k,p
  605. p = 1
  606. DO i = is, ie
  607. DO j = js, je
  608. DO k = ks, ke
  609. outbuf(k,j,i) = inbuf(p)
  610. p = p + 1
  611. ENDDO
  612. ENDDO
  613. ENDDO
  614. curs = p - 1
  615. RETURN
  616. END SUBROUTINE f_unpack_lint_kji