/[MITgcm]/MITgcm/model/src/ini_cori.F
ViewVC logotype

Diff of /MITgcm/model/src/ini_cori.F

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

revision 1.22 by jmc, Fri Nov 4 01:19:24 2005 UTC revision 1.23 by jmc, Thu Jul 13 03:00:24 2006 UTC
# Line 10  C     !ROUTINE: INI_CORI Line 10  C     !ROUTINE: INI_CORI
10  C     !INTERFACE:  C     !INTERFACE:
11        SUBROUTINE INI_CORI( myThid )        SUBROUTINE INI_CORI( myThid )
12  C     !DESCRIPTION:  C     !DESCRIPTION:
13  C     Initialise coriolis term.                                C     Initialise coriolis term.
14    
15  C     !USES:  C     !USES:
16        IMPLICIT NONE        IMPLICIT NONE
17  #include "SIZE.h"  #include "SIZE.h"
18  #include "EEPARAMS.h"  #include "EEPARAMS.h"
19    #include "EESUPPORT.h"
20  #include "PARAMS.h"  #include "PARAMS.h"
21    #include "GRID.h"
22  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
23  #include "MNC_PARAMS.h"  #include "MNC_PARAMS.h"
24  #endif  #endif
 #include "GRID.h"  
 #include "DYNVARS.h"  
25  #ifdef ALLOW_MONITOR  #ifdef ALLOW_MONITOR
26  #include "MONITOR.h"  #include "MONITOR.h"
27  #endif  #endif
# Line 31  C     !INPUT/OUTPUT PARAMETERS: Line 31  C     !INPUT/OUTPUT PARAMETERS:
31  CEOP  CEOP
32    
33  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
34  C     bi,bj  - Loop counters  C     bi,bj   :: Tile Indices counters
35  C     I,J,K  C     i, j    :: Loop counters
36  C     facGrid - Factor for grid to meter conversion  C     facGrid :: Factor for grid to meter conversion
37        INTEGER bi, bj        INTEGER bi,bj
38        INTEGER  I, J        INTEGER i, j
39        _RL facGrid        _RL facGrid
40    
41  C     Initialise coriolis parameter  C     Initialise coriolis parameter
# Line 43  C     Initialise coriolis parameter Line 43  C     Initialise coriolis parameter
43  C       Constant F case  C       Constant F case
44          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
45            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
46                DO J=1-Oly,sNy+Oly              DO j=1-Oly,sNy+Oly
47                  DO I=1-Olx,sNx+Olx                DO i=1-Olx,sNx+Olx
48                    fCori(i,j,bi,bj)=f0                  fCori(i,j,bi,bj)  = f0
49                    fCoriG(i,j,bi,bj)=f0                  fCoriG(i,j,bi,bj) = f0
50                    fCoriCos(i,j,bi,bj)=0.                  fCoriCos(i,j,bi,bj)=0. _d 0
                 ENDDO  
51                ENDDO                ENDDO
52                ENDDO
53            ENDDO            ENDDO
54          ENDDO          ENDDO
55        ELSEIF ( useBetaPlaneF ) THEN        ELSEIF ( useBetaPlaneF ) THEN
56  C       Beta plane case  C       Beta plane case
57          facGrid = 1. _d 0          facGrid = 1. _d 0
58          IF ( usingSphericalPolarGrid ) facGrid = deg2rad*rSphere          IF ( usingSphericalPolarGrid
59         &     .OR. usingCurvilinearGrid ) facGrid = deg2rad*rSphere
60          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
61            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
62                DO J=1-Oly,sNy+Oly              DO j=1-Oly,sNy+Oly
63                  DO I=1-Olx,sNx+Olx                DO i=1-Olx,sNx+Olx
64                    fCori(i,j,bi,bj)=f0+beta*_yC(i,j,bi,bj)*facGrid                  fCori(i,j,bi,bj)  = f0+beta*_yC(i,j,bi,bj)*facGrid
65                    fCoriG(i,j,bi,bj)=f0+beta*yG(i,j,bi,bj)*facGrid                  fCoriG(i,j,bi,bj) = f0+beta* yG(i,j,bi,bj)*facGrid
66                    fCoriCos(i,j,bi,bj)=0.                  fCoriCos(i,j,bi,bj)=0. _d 0
                 ENDDO  
67                ENDDO                ENDDO
68                ENDDO
69            ENDDO            ENDDO
70          ENDDO          ENDDO
71        ELSEIF ( useSphereF ) THEN        ELSEIF ( useSphereF ) THEN
# Line 72  C       Spherical case Line 73  C       Spherical case
73  C       Note in this case we assume yC is in degrees.  C       Note in this case we assume yC is in degrees.
74          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
75            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
76                DO J=1-Oly,sNy+Oly              DO j=1-Oly,sNy+Oly
77                  DO I=1-Olx,sNx+Olx                DO i=1-Olx,sNx+Olx
78                    fCori(i,j,bi,bj)=                  fCori(i,j,bi,bj)  =
79       &                 2. _d 0*omega*sin(_yC(i,j,bi,bj)*deg2rad)       &                 2. _d 0*omega*sin(_yC(i,j,bi,bj)*deg2rad)
80                    fCoriG(i,j,bi,bj)=                  fCoriG(i,j,bi,bj) =
81       &                 2. _d 0*omega*sin(yG(i,j,bi,bj)*deg2rad)       &                 2. _d 0*omega*sin(yG(i,j,bi,bj)*deg2rad)
82                    fCoriCos(i,j,bi,bj)=                  fCoriCos(i,j,bi,bj)=
83       &                 2. _d 0*omega*cos(_yC(i,j,bi,bj)*deg2rad)       &                 2. _d 0*omega*cos(_yC(i,j,bi,bj)*deg2rad)
                 ENDDO  
84                ENDDO                ENDDO
85                ENDDO
86            ENDDO            ENDDO
87          ENDDO          ENDDO
88  c       CALL WRITE_FLD_XY_RL('fCoriC',' ',fCori ,  0,myThid)  c       CALL WRITE_FLD_XY_RL('fCoriC',' ',fCori ,  0,myThid)
# Line 91  c       CALL WRITE_FLD_XY_RL('fCorCs',' Line 92  c       CALL WRITE_FLD_XY_RL('fCorCs','
92  C       Special custom form  C       Special custom form
93          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
94            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
95                DO J=1-Oly,sNy+Oly              DO j=1-Oly,sNy+Oly
96                  DO I=1-Olx,sNx+Olx                DO i=1-Olx,sNx+Olx
97                    fCori(i,j,bi,bj)=0.                  fCori(i,j,bi,bj)  = 0. _d 0
98                    fCoriG(i,j,bi,bj)=0.                  fCoriG(i,j,bi,bj) = 0. _d 0
99                    fCoriCos(i,j,bi,bj)=0.                  fCoriCos(i,j,bi,bj)=0. _d 0
                 ENDDO  
100                ENDDO                ENDDO
101                ENDDO
102            ENDDO            ENDDO
103          ENDDO          ENDDO
104          CALL READ_REC_XY_RS( 'fCoriC.bin', fCori,   1, 0, myThid )          CALL READ_REC_XY_RS( 'fCoriC.bin', fCori,   1, 0, myThid )
# Line 131  C    with 2 polar faces + 4 equatorials: Line 132  C    with 2 polar faces + 4 equatorials:
132        ENDIF        ENDIF
133    
134  #ifdef ALLOW_MONITOR  #ifdef ALLOW_MONITOR
135        mon_write_stdout = .FALSE.  #ifdef ALLOW_USE_MPI
136        mon_write_mnc    = .FALSE.        IF ( .NOT.useSingleCPUIO .OR. mpiMyId.EQ.0 ) THEN
137        IF (monitor_stdio) THEN  #endif /* ALLOW_USE_MPI */
138          mon_write_stdout = .TRUE.          _BEGIN_MASTER(myThid)
139        ENDIF  C--   only the master thread is allowed to switch On/Off mon_write_stdout
140          C     & mon_write_mnc (since it's the only thread that uses those flags):
141    
142            IF (monitor_stdio) THEN
143              mon_write_stdout = .TRUE.
144            ELSE
145              mon_write_stdout = .FALSE.
146            ENDIF
147            mon_write_mnc = .FALSE.
148  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
149        IF (useMNC .AND. monitor_mnc) THEN          IF (useMNC .AND. monitor_mnc) THEN
150          DO i = 1,MAX_LEN_MBUF            DO i = 1,MAX_LEN_MBUF
151            mon_fname(i:i) = ' '              mon_fname(i:i) = ' '
152          ENDDO            ENDDO
153          mon_fname(1:12) = 'monitor_grid'            mon_fname(1:12) = 'monitor_grid'
154          CALL MNC_CW_SET_UDIM(mon_fname, 1, myThid)            CALL MNC_CW_SET_UDIM(mon_fname, 1, myThid)
155          mon_write_mnc = .TRUE.            mon_write_mnc = .TRUE.
156        ENDIF          ENDIF
157  #endif /*  ALLOW_MNC  */  #endif /*  ALLOW_MNC  */
158          
159            _END_MASTER(myThid)
160    #ifdef ALLOW_USE_MPI
161          ENDIF
162    #endif /* ALLOW_USE_MPI */
163    
164        CALL MON_PRINTSTATS_RS(1,fCori,'fCori',myThid)        CALL MON_PRINTSTATS_RS(1,fCori,'fCori',myThid)
165        CALL MON_PRINTSTATS_RS(1,fCoriG,'fCoriG',myThid)        CALL MON_PRINTSTATS_RS(1,fCoriG,'fCoriG',myThid)
166        CALL MON_PRINTSTATS_RS(1,fCoriCos,'fCoriCos',myThid)        CALL MON_PRINTSTATS_RS(1,fCoriCos,'fCoriCos',myThid)
167    
168        mon_write_stdout = .FALSE.  #ifdef ALLOW_USE_MPI
169        mon_write_mnc    = .FALSE.        IF ( .NOT.useSingleCPUIO .OR. mpiMyId.EQ.0 ) THEN
170  #endif  #endif /* ALLOW_USE_MPI */
171            _BEGIN_MASTER(myThid)
172    
173            mon_write_stdout = .FALSE.
174            mon_write_mnc    = .FALSE.
175    
176            _END_MASTER(myThid)
177    #ifdef ALLOW_USE_MPI
178          ENDIF
179    #endif /* ALLOW_USE_MPI */
180    #endif /* ALLOW_MONITOR */
181    
182        RETURN        RETURN
183        END        END

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

  ViewVC Help
Powered by ViewVC 1.1.22