New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
domcfg.F90 in branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM – NEMO

source: branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90 @ 6596

Last change on this file since 6596 was 6596, checked in by gm, 8 years ago

#1692 - branch SIMPLIF_2_usrdef: remove from namcfg and namdom many obsolete variables ; remove izoom/jzoom option

  • Property svn:keywords set to Id
File size: 6.7 KB
Line 
1MODULE domcfg
2   !!==============================================================================
3   !!                       ***  MODULE domcfg   ***
4   !! Ocean initialization : domain configuration initialization
5   !!==============================================================================
6   !! History :  1.0  ! 2003-09  (G. Madec)  Original code
7   !!            3.2  ! 2009-07  (R. Benshila) Suppression of rigid-lid option
8   !!----------------------------------------------------------------------
9
10   !!----------------------------------------------------------------------
11   !!   dom_cfg       : initialize the domain configuration
12   !!----------------------------------------------------------------------
13   USE dom_oce        ! ocean space and time domain
14   USE phycst         ! physical constants
15   !
16   USE in_out_manager ! I/O manager
17   USE lib_mpp        ! distributed memory computing library
18   USE timing         ! Timing
19   USE c1d            ! 1D configuration
20   USE domc1d         ! 1D configuration: column location
21
22   IMPLICIT NONE
23   PRIVATE
24
25   PUBLIC   dom_cfg    ! called by opa.F90
26
27   !!----------------------------------------------------------------------
28   !! NEMO/OPA 3.2 , LODYC-IPSL  (2009)
29   !! $Id$
30   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
31   !!----------------------------------------------------------------------
32CONTAINS
33
34   SUBROUTINE dom_cfg
35      !!----------------------------------------------------------------------
36      !!                  ***  ROUTINE dom_cfg  ***
37      !!                   
38      !! ** Purpose :   set the domain configuration
39      !!
40      !!----------------------------------------------------------------------
41      !
42      IF( nn_timing == 1 )  CALL timing_start('dom_cfg')
43      !
44      IF(lwp) THEN                   ! Control print
45         WRITE(numout,*)
46         WRITE(numout,*) 'dom_cfg : set the ocean configuration'
47         WRITE(numout,*) '~~~~~~~ '
48         WRITE(numout,*) '   ocean model configuration used :   cp_cfg = ', cp_cfg, ' jp_cfg = ', jp_cfg
49         !
50         WRITE(numout,*) '   global domain lateral boundaries'
51         !
52         IF( jperio == 0 )   WRITE(numout,*) '      jperio= 0, closed'
53         IF( jperio == 1 )   WRITE(numout,*) '      jperio= 1, cyclic east-west'
54         IF( jperio == 2 )   WRITE(numout,*) '      jperio= 2, equatorial symmetric'
55         IF( jperio == 3 )   WRITE(numout,*) '      jperio= 3, north fold with T-point pivot'
56         IF( jperio == 4 )   WRITE(numout,*) '      jperio= 4, cyclic east-west and north fold with T-point pivot'
57         IF( jperio == 5 )   WRITE(numout,*) '      jperio= 5, north fold with F-point pivot'
58         IF( jperio == 6 )   WRITE(numout,*) '      jperio= 6, cyclic east-west and north fold with F-point pivot'
59      ENDIF
60      !
61      IF( jperio <  0 .OR. jperio > 6 )   CALL ctl_stop( 'jperio is out of range' )
62      !
63      CALL dom_glo                   ! global domain versus zoom and/or local domain
64      !
65      IF( nn_timing == 1 )  CALL timing_stop('dom_cfg')
66      !
67   END SUBROUTINE dom_cfg
68
69
70   SUBROUTINE dom_glo
71      !!----------------------------------------------------------------------
72      !!                     ***  ROUTINE dom_glo  ***
73      !!
74      !! ** Purpose :   initialization for global and local domain
75      !!
76      !! ** Method  :   
77      !!
78      !! ** Action  : - mig , mjg : local  domain indices ==> global domain indices
79      !!              - mi0 , mi1 : global domain indices ==> local  domain indices
80      !!              - mj0,, mj1   (global point not in the local domain ==> mi0>mi1 and/or mj0>mj1)
81      !!----------------------------------------------------------------------
82      INTEGER ::   ji, jj   ! dummy loop argument
83      !!----------------------------------------------------------------------
84!!gm  This should be removed with the new configuration interface
85      !                              ! recalculate jp_izoom/jp_jzoom given lat/lon
86      IF( lk_c1d .AND. ln_c1d_locpt )  CALL dom_c1d( rn_lat1d, rn_lon1d )
87!!gm end
88      !
89      !                        ! ============== !
90      !                        !  Local domain  !
91      !                        ! ============== !
92      DO ji = 1, jpi                 ! local domain indices ==> global domain indices
93        mig(ji) = ji + nimpp - 1
94      END DO
95      DO jj = 1, jpj
96        mjg(jj) = jj + njmpp - 1
97      END DO
98      !
99      !                              ! global domain indices ==> local domain indices
100      !                                   ! (return (m.0,m.1)=(1,0) if data domain gridpoint is to the west/south of the
101      !                                   !local domain, or (m.0,m.1)=(jp.+1,jp.) to the east/north of local domain.
102      DO ji = 1, jpiglo
103        mi0(ji) = MAX( 1 , MIN( ji - nimpp + 1, jpi+1 ) )
104        mi1(ji) = MAX( 0 , MIN( ji - nimpp + 1, jpi   ) )
105      END DO
106      DO jj = 1, jpjglo
107        mj0(jj) = MAX( 1 , MIN( jj - njmpp + 1, jpj+1 ) )
108        mj1(jj) = MAX( 0 , MIN( jj - njmpp + 1, jpj   ) )
109      END DO
110      IF(lwp) THEN                   ! control print
111         WRITE(numout,*)
112         WRITE(numout,*) 'dom_glo : domain: global <<==>> local '
113         WRITE(numout,*) '~~~~~~~ '
114         WRITE(numout,*) '          global domain:   jpiglo = ', jpiglo, ' jpjglo = ', jpjglo, ' jpkglo = ', jpkglo
115         WRITE(numout,*) '          local  domain:   jpi    = ', jpi   , ' jpj    = ', jpj   , ' jpk    = ', jpk
116         WRITE(numout,*)
117         IF( nn_print >= 1 ) THEN
118            WRITE(numout,*)
119            WRITE(numout,*) '          conversion local  ==> data i-index domain'
120            WRITE(numout,25)              (mig(ji),ji = 1,jpi)
121            WRITE(numout,*)
122            WRITE(numout,*) '          conversion data   ==> local  i-index domain'
123            WRITE(numout,*) '             starting index'
124            WRITE(numout,25)              (mi0(ji),ji = 1,jpiglo)
125            WRITE(numout,*) '             ending index'
126            WRITE(numout,25)              (mi1(ji),ji = 1,jpiglo)
127            WRITE(numout,*)
128            WRITE(numout,*) '          conversion local  ==> data j-index domain'
129            WRITE(numout,25)              (mjg(jj),jj = 1,jpj)
130            WRITE(numout,*)
131            WRITE(numout,*) '          conversion data  ==> local j-index domain'
132            WRITE(numout,*) '             starting index'
133            WRITE(numout,25)              (mj0(jj),jj = 1,jpjglo)
134            WRITE(numout,*) '             ending index'
135            WRITE(numout,25)              (mj1(jj),jj = 1,jpjglo)
136         ENDIF
137      ENDIF
138 25   FORMAT( 100(10x,19i4,/) )
139
140      !
141   END SUBROUTINE dom_glo
142
143   !!======================================================================
144END MODULE domcfg
Note: See TracBrowser for help on using the repository browser.