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

Contents of /MITgcm/model/src/ini_grid.F

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


Revision 1.15 - (show annotations) (download)
Wed Dec 10 19:37:25 2003 UTC (20 years, 5 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint52l_pre, hrcube4, hrcube5, checkpoint52j_pre, checkpoint52l_post, checkpoint52k_post, checkpoint53, checkpoint52f_post, checkpoint52i_pre, hrcube_1, hrcube_2, hrcube_3, checkpoint52e_pre, checkpoint52e_post, checkpoint52m_post, checkpoint52f_pre, checkpoint53a_post, checkpoint52d_post, checkpoint52i_post, checkpoint52h_pre, checkpoint52j_post, checkpoint52n_post
Branch point for: netcdf-sm0
Changes since 1.14: +22 -1 lines
o changes to permit hi-res, cubed-sphere, configuration
  - added useSingleCpuIO capability to mdsio_readfield.F and exf_interp.F
  - added "#undef ALLOW_USE_MPI" support to eesupp/src/scatter_2d.F
  - added pkg/exf/exf_set_uv.F for on-the-fly interpolation and rotation
    of surface winds for the cube
  (A verification experiment, based on global_ocean.cs32x15, but with
   pkg/seaice turned on and with on-the-fly interpolation from the NCEP
   Gaussian grid is described in MITgcm_contrib/high_res_cube/README_ice,
   complete with example surface forcing files and matlab scripts to look
   at the output and compare it with that of global_ocean.cs32x15.)

1 C $Header: /usr/local/gcmpack/MITgcm/model/src/ini_grid.F,v 1.14 2003/11/23 04:19:11 jmc Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: INI_GRID
9 C !INTERFACE:
10 SUBROUTINE INI_GRID( myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE INI_GRID
14 C | o Initialise model grid
15 C *==========================================================*
16 C | These arrays are used throughout the code in evaluating
17 C | gradients, integrals and spatial avarages. This routine
18 C | is called separately by each thread and initialise only
19 C | the region of the domain it is "responsible" for.
20 C | Notes:
21 C | Two examples are shown in this code. One illustrates the
22 C | initialisation of a cartesian grid. The other shows the
23 C | inialisation of a spherical polar grid. Other orthonormal
24 C | grids can be fitted into this design. In this case
25 C | custom metric terms also need adding to account for the
26 C | projections of velocity vectors onto these grids.
27 C | The structure used here also makes it possible to
28 C | implement less regular grid mappings. In particular
29 C | o Schemes which leave out blocks of the domain that are
30 C | all land could be supported.
31 C | o Multi-level schemes such as icosohedral or cubic
32 C | grid projectedions onto a sphere can also be fitted
33 C | within the strategy we use.
34 C | Both of the above also require modifying the support
35 C | routines that map computational blocks to simulation
36 C | domain blocks.
37 C *==========================================================*
38 C \ev
39
40 C !USES:
41 IMPLICIT NONE
42 C === Global variables ===
43 #include "SIZE.h"
44 #include "EEPARAMS.h"
45 #include "PARAMS.h"
46 #include "GRID.h"
47
48 C !INPUT/OUTPUT PARAMETERS:
49 C == Routine arguments ==
50 C myThid - Number of this instance of INI_GRID
51 INTEGER myThid
52
53 C !LOCAL VARIABLES:
54 C == Local variables ==
55 C msgBuf - Used for informational I/O.
56 CHARACTER*(MAX_LEN_MBUF) msgBuf
57 #ifdef ALLOW_EXF
58 INTEGER i, j, bi, bj
59 #endif /* ALLOW_EXF */
60 CEOP
61
62 C-- Set up vertical grid and coordinate system
63 CALL INI_VERTICAL_GRID( myThid )
64
65 C-- Set up horizontal grid and coordinate system
66 IF ( usingCartesianGrid ) THEN
67 CALL INI_CARTESIAN_GRID( myThid )
68 ELSEIF ( usingSphericalPolarGrid ) THEN
69 CALL INI_SPHERICAL_POLAR_GRID( myThid )
70 ELSEIF ( usingCurvilinearGrid ) THEN
71 CALL INI_CURVILINEAR_GRID( myThid )
72 ELSE
73 _BEGIN_MASTER(myThid)
74 WRITE(msgBuf,'(A)')
75 & 'S/R INI_GRID: No grid coordinate system has been selected'
76 CALL PRINT_ERROR( msgBuf , myThid)
77 STOP 'ABNORMAL END: S/R INI_GRID'
78 _END_MASTER(myThid)
79 ENDIF
80
81 #ifdef ALLOW_EXF
82 C-- exf_interp assumes that 0 <= xG, xC <= 360
83 C This is a quick fix until this assumption is relaxed
84 C and the interpolation weights are pre-computed.
85 DO bj = myByLo(myThid), myByHi(myThid)
86 DO bi = myBxLo(myThid), myBxHi(myThid)
87 DO J=1-Oly,sNy+Oly
88 DO I=1-Olx,sNx+Olx
89 IF ( xG(I,J,bi,bj) .LT. 0 )
90 & xG(I,J,bi,bj) = xG(I,J,bi,bj) + 360
91 IF ( xC(I,J,bi,bj) .LT. 0 )
92 & xC(I,J,bi,bj) = xC(I,J,bi,bj) + 360
93 ENDDO
94 ENDDO
95 ENDDO
96 ENDDO
97 #endif /* ALLOW_EXF */
98
99 C-- Write certain grid data to files (useful for creating netCDF
100 C and general post-analysis)
101 CALL WRITE_FLD_XY_RS( 'XC',' ',XC,0,myThid)
102 CALL WRITE_FLD_XY_RS( 'YC',' ',YC,0,myThid)
103 CALL WRITE_FLD_XY_RS( 'XG',' ',XG,0,myThid)
104 CALL WRITE_FLD_XY_RS( 'YG',' ',YG,0,myThid)
105 CALL WRITE_FLD_XY_RS( 'RAC',' ',rA,0,myThid)
106 CALL WRITE_FLD_XY_RS( 'RAW',' ',rAw,0,myThid)
107 CALL WRITE_FLD_XY_RS( 'RAS',' ',rAs,0,myThid)
108 CALL WRITE_FLD_XY_RS( 'DXG',' ',DXG,0,myThid)
109 CALL WRITE_FLD_XY_RS( 'DYG',' ',DYG,0,myThid)
110 CALL WRITE_FLD_XY_RS( 'DXC',' ',DXC,0,myThid)
111 CALL WRITE_FLD_XY_RS( 'DYC',' ',DYC,0,myThid)
112
113 C-- Print out statistics of each horizontal grid array (helps when debugging)
114
115 #ifdef ALLOW_MONITOR
116 CALL MON_PRINTSTATS_RS(1,XC,'XC',myThid)
117 CALL MON_PRINTSTATS_RS(1,XG,'XG',myThid)
118 CALL MON_PRINTSTATS_RS(1,DXC,'DXC',myThid)
119 CALL MON_PRINTSTATS_RS(1,DXF,'DXF',myThid)
120 CALL MON_PRINTSTATS_RS(1,DXG,'DXG',myThid)
121 CALL MON_PRINTSTATS_RS(1,DXV,'DXV',myThid)
122 CALL MON_PRINTSTATS_RS(1,YC,'YC',myThid)
123 CALL MON_PRINTSTATS_RS(1,YG,'YG',myThid)
124 CALL MON_PRINTSTATS_RS(1,DYC,'DYC',myThid)
125 CALL MON_PRINTSTATS_RS(1,DYF,'DYF',myThid)
126 CALL MON_PRINTSTATS_RS(1,DYG,'DYG',myThid)
127 CALL MON_PRINTSTATS_RS(1,DYU,'DYU',myThid)
128 CALL MON_PRINTSTATS_RS(1,RA,'RA',myThid)
129 CALL MON_PRINTSTATS_RS(1,RAW,'RAW',myThid)
130 CALL MON_PRINTSTATS_RS(1,RAS,'RAS',myThid)
131 CALL MON_PRINTSTATS_RS(1,RAZ,'RAZ',myThid)
132 #endif
133
134 RETURN
135 END

  ViewVC Help
Powered by ViewVC 1.1.22