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

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

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

revision 1.6 by cnh, Mon Nov 2 03:34:12 1998 UTC revision 1.15 by jmc, Tue Oct 17 18:52:34 2006 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2    C $Name$
3    
4  #include "CPP_EEOPTIONS.h"  #include "CPP_OPTIONS.h"
5    
6  CStartOfInterface  CBOP
7    C     !ROUTINE: INI_VERTICAL_GRID
8    C     !INTERFACE:
9        SUBROUTINE INI_VERTICAL_GRID( myThid )        SUBROUTINE INI_VERTICAL_GRID( myThid )
10  C     /==========================================================\  C     !DESCRIPTION: \bv
11  C     | SUBROUTINE INI_VERTICAL_GRID                             |  C     *==========================================================*
12  C     | o Initialise vertical gridding arrays                    |  C     | SUBROUTINE INI_VERTICAL_GRID                              
13  C     |==========================================================|  C     | o Initialise vertical gridding arrays                    
14  C     |                                                          |  C     *==========================================================*
15  C     \==========================================================/  C     \ev
16    
17    C     !USES:
18          IMPLICIT NONE
19  C     === Global variables ===  C     === Global variables ===
20  #include "SIZE.h"  #include "SIZE.h"
21  #include "EEPARAMS.h"  #include "EEPARAMS.h"
22  #include "PARAMS.h"  #include "PARAMS.h"
23  #include "GRID.h"  #include "GRID.h"
24    
25    C     !INPUT/OUTPUT PARAMETERS:
26  C     == Routine arguments ==  C     == Routine arguments ==
27  C     myThid -  Number of this instance of INI_DEPTHS  C     myThid -  Number of this instance of INI_DEPTHS
28        INTEGER myThid        INTEGER myThid
 CEndOfInterface  
29    
30    C     !LOCAL VARIABLES:
31  C     == Local variables ==  C     == Local variables ==
32  C     K  C     K        :: loop index
33    C     msgBuf   :: Informational/error meesage buffer  
34        INTEGER K        INTEGER K
35          CHARACTER*(MAX_LEN_MBUF) msgBuf
36    CEOP
37    
38  C     Calculate depths of centers and interfaces        _BEGIN_MASTER(myThid)
39        rF(1) = 0. _d 0  
40          IF (setCenterDr) THEN
41    C-- Interface at middle between 2 centers :
42    
43    C-    Check that all thickness are > 0 :
44           DO K=1,Nr+1
45            IF (delRc(K).LE.0.) THEN
46             WRITE(msgBuf,'(A,I4,A,E16.8)')
47         &  'S/R INI_VERTICAL_GRID: delRc(K=',K,' )=',delRc(K)
48             CALL PRINT_ERROR( msgBuf , 1)
49             WRITE(msgBuf,'(A)')
50         &  'S/R INI_VERTICAL_GRID: Vert. grid spacing MUST BE > 0'
51             CALL PRINT_ERROR( msgBuf , 1)
52             STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
53            ENDIF
54           ENDDO
55    
56    C-    Calculate depths of centers and interfaces
57            rF(1)  = Ro_SeaLevel
58            rC(1)  = rF(1) + rkSign*delRc(1)
59            drC(1) = delRc(1)
60            drF(1) = delRc(1)
61           DO K=2,Nr
62            drC(K)   = delRc(K)
63            drF(K-1) =  drF(K-1) + 0.5 _d 0*delRc(K)
64            drF(K)   = 0.5 _d 0*delRc(K)
65            rC(K)    = rC(K-1) + rkSign*drC(K)
66            rF(K)    = rF(K-1) + rkSign*drF(K-1)
67           ENDDO
68            drF(Nr)  = drF(Nr) + delRc(Nr+1)
69            rF(Nr+1) = rF(Nr) + rkSign*drF(Nr)
70    
71          ELSE
72    C-- Center at middle between 2 interfaces :
73    
74    C-    Check that all thickness are > 0 :
75           DO K=1,Nr
76            IF (delR(K).LE.0.) THEN
77             WRITE(msgBuf,'(A,I4,A,E16.8)')
78         &  'S/R INI_VERTICAL_GRID: delR(K=',K,' )=',delR(K)
79             CALL PRINT_ERROR( msgBuf , 1)
80             WRITE(msgBuf,'(A)')
81         &  'S/R INI_VERTICAL_GRID: Vert. grid spacing MUST BE > 0'
82             CALL PRINT_ERROR( msgBuf , 1)
83             STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
84            ENDIF
85           ENDDO
86    
87    C-    Calculate depths of interfaces and centers
88          rF(1) = Ro_SeaLevel
89        DO K=1,Nr        DO K=1,Nr
90         drF(K)     = delR(K)         drF(K)     = delR(K)
91         rF(K+1) = rF(K)-rkFac*delR(K)         rF(K+1) = rF(K) + rkSign*delR(K)
 C      drF(K)     = delZ(K)  
 C      rF(K+1)    = rF(K)-delZ(K)  
92        ENDDO        ENDDO
93        drC(1)      = delR(1) * 0.5 _d 0        drC(1)      = delR(1) * 0.5 _d 0
94        rC(1)       = rf(1)-rkFac*delR(1) * 0.5 _d 0        rC(1)       = rf(1) + rkSign*delR(1) * 0.5 _d 0
 C     drC(1)      = delZ(1) * 0.5 _d 0  
 C     rC(1)       = -delZ(1) * 0.5 _d 0  
95        DO K=2,Nr        DO K=2,Nr
96         drC(K)     = 0.5 _d 0 *(delR(K-1)+delR(K))         drC(K)     = 0.5 _d 0 *(delR(K-1)+delR(K))
97         rC(K)      = rC(K-1) - rkFac*drC(K)         rC(K)      = rC(K-1) + rkSign*drC(K)
 C      drC(K)     = 0.5 _d 0 *(delZ(K-1)+delZ(K))  
 C      rC(K)      = rC(K-1) - drC(K)  
98        ENDDO        ENDDO
99    
100    C--
101          ENDIF
102    
103    C-    Calculate reciprol vertical grid spacing :
104        DO K=1,Nr        DO K=1,Nr
105         saFac(K)  = 1. _d 0         saFac(K)  = 1. _d 0
106         recip_drC(K)   = 1. _d 0/drC(K)         recip_drC(K)   = 1. _d 0/drC(K)
107         recip_drF(K)   = 1. _d 0/drF(K)         recip_drF(K)   = 1. _d 0/drF(K)
108        ENDDO        ENDDO
109  C  
110          _END_MASTER(myThid)
111          _BARRIER
112    
113        RETURN        RETURN
114        END        END

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.22