/[MITgcm]/MITgcm/pkg/mdsio/mdsio_pass_r4torl.F
ViewVC logotype

Contents of /MITgcm/pkg/mdsio/mdsio_pass_r4torl.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download)
Thu Dec 23 02:40:42 2010 UTC (13 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint63, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, HEAD
Changes since 1.3: +20 -11 lines
add 2 arguments for overlap size of buffer to copy to/from.

1 C $Header: /u/gcmpack/MITgcm/pkg/mdsio/mdsio_pass_r4torl.F,v 1.3 2009/06/08 03:32:33 jmc Exp $
2 C $Name: $
3
4 #include "MDSIO_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 C- modification: no need to edit the 4 scr files mdsio_pass_r{4,8}tor{l,s}.F :
8 C from the 1rst src file (mdsio_pass_r4torl.F), can update the 3 others
9 C using the script "derive_other_types".
10 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
11
12 CBOP
13 C !ROUTINE: MDS_PASS_R4toRL
14 C !INTERFACE:
15 SUBROUTINE MDS_PASS_R4toRL(
16 U buffer, arrFld,
17 I oLi, oLj, nNz, kLo, kSize,
18 I biArg, bjArg, copyTo, myThid )
19
20 C !DESCRIPTION:
21 C Transfert 3-D real*4 buffer to 3-D RL model array, or the reverse,
22 C depending on "copyTo" value. Apply transfert to tile biArg,bjArg
23 C only or to all myThid tiles if called with biArg=bjArg=0.
24
25 C !USES:
26 IMPLICIT NONE
27
28 C Global variables / common blocks
29 #include "EEPARAMS.h"
30 #include "SIZE.h"
31
32 C !INPUT/OUTPUT PARAMETERS:
33 C Routine arguments
34 C buffer (real*4) :: buffer 3-D array (Input/Output if copyTo=T/F)
35 C arrFld ( RL ) :: model 3-D tiled array (Output/Input if copyTo=T/F)
36 C oLi (integer):: Overlap size (dim-1) of buffer to copy - to/from - arrFld
37 C oLj (integer):: Overlap size (dim-2) of buffer to copy - to/from - arrFld
38 C nNz (integer):: Number of levels to - fill in / extract from - arrFld
39 C kLo (integer):: 1rst level to - fill in / extract from - arrFld
40 C kSize (integer):: third dimension of 3-D array "arrFld"
41 C biArg (integer):: tile X-index to - fill in / extract from - tiled buffer
42 C bjArg (integer):: tile Y-index to - fill in / extract from - tiled buffer
43 C copyTo (logical):: if =T, copy 2-D -> 3-D ; if =F: copy 2-D <- 3-D
44 C myThid (integer):: my Thread Id number
45 INTEGER oLi, oLj
46 INTEGER nNz, kSize
47 Real*4 buffer(1-oLi:sNx+oLi,1-oLj:sNy+oLj,nNz,nSx,nSy)
48 _RL arrFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize,nSx,nSy)
49 INTEGER kLo
50 INTEGER biArg
51 INTEGER bjArg
52 LOGICAL copyTo
53 INTEGER myThid
54
55 C !LOCAL VARIABLES:
56 C i,j,k :: loop indices
57 C bi,bj :: tile indices
58 INTEGER i,j,k,bi,bj
59 INTEGER kLev
60 CEOP
61 IF ( oLi.LT.0 .OR. oLi.GT.OLx .OR.
62 & oLj.LT.0 .OR. oLj.GT.OLy ) THEN
63 STOP 'ABNORMAL END: MDS_PASS_R4toRL invalid oLi,oLj Arg'
64 ENDIF
65
66 IF ( biArg.EQ.0 .AND. bjArg.EQ.0 ) THEN
67 IF ( copyTo ) THEN
68 DO bj = myByLo(myThid), myByHi(myThid)
69 DO bi = myBxLo(myThid), myBxHi(myThid)
70 DO k=1,nNz
71 kLev = kLo+k-1
72 DO j=1-oLj,sNy+oLj
73 DO i=1-oLi,sNx+oLi
74 arrFld(i,j,kLev,bi,bj) = buffer(i,j,k,bi,bj)
75 ENDDO
76 ENDDO
77 ENDDO
78 ENDDO
79 ENDDO
80 ELSE
81 DO bj = myByLo(myThid), myByHi(myThid)
82 DO bi = myBxLo(myThid), myBxHi(myThid)
83 DO k=1,nNz
84 kLev = kLo+k-1
85 DO j=1-oLj,sNy+oLj
86 DO i=1-oLi,sNx+oLi
87 buffer(i,j,k,bi,bj) = arrFld(i,j,kLev,bi,bj)
88 ENDDO
89 ENDDO
90 ENDDO
91 ENDDO
92 ENDDO
93 ENDIF
94 ELSEIF ( biArg.GE.1 .AND. biArg.LE.nSx
95 & .AND. bjArg.GE.1 .AND. bjArg.LE.nSy ) THEN
96 bi = biArg
97 bj = bjArg
98 IF ( copyTo ) THEN
99 DO k=1,nNz
100 kLev = kLo+k-1
101 DO j=1-oLj,sNy+oLj
102 DO i=1-oLi,sNx+oLi
103 arrFld(i,j,kLev,1,1) = buffer(i,j,k,bi,bj)
104 ENDDO
105 ENDDO
106 ENDDO
107 ELSE
108 DO k=1,nNz
109 kLev = kLo+k-1
110 DO j=1-oLj,sNy+oLj
111 DO i=1-oLi,sNx+oLi
112 buffer(i,j,k,bi,bj) = arrFld(i,j,kLev,1,1)
113 ENDDO
114 ENDDO
115 ENDDO
116 ENDIF
117 ELSE
118 STOP 'ABNORMAL END: MDS_PASS_R4toRL invalid bi,bj Arg'
119 ENDIF
120
121 RETURN
122 END

  ViewVC Help
Powered by ViewVC 1.1.22