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 NEMO/branches/2019/ENHANCE-03_domcfg/src – NEMO

source: NEMO/branches/2019/ENHANCE-03_domcfg/src/domcfg.f90 @ 11602

Last change on this file since 11602 was 11129, checked in by mathiot, 5 years ago

simplification of domcfg (rm all var_n and var_b as it is not needed) (ticket #2143)

File size: 6.2 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   USE in_out_manager  ! I/O manager
16   USE lib_mpp         ! distributed memory computing library
17
18   IMPLICIT NONE
19   PRIVATE
20
21   PUBLIC   dom_cfg    ! called by opa.F90
22
23   !!----------------------------------------------------------------------
24   !! NEMO/OPA 3.2 , LODYC-IPSL  (2009)
25   !! $Id: domcfg.F90 6140 2015-12-21 11:35:23Z timgraham $
26   !! Software governed by the CeCILL licence     (./LICENSE)
27   !!----------------------------------------------------------------------
28CONTAINS
29
30   SUBROUTINE dom_cfg
31      !!----------------------------------------------------------------------
32      !!                  ***  ROUTINE dom_cfg  ***
33      !!                   
34      !! ** Purpose :   set the domain configuration
35      !!
36      !!----------------------------------------------------------------------
37      !
38      IF(lwp) THEN                   ! Control print
39         WRITE(numout,*)
40         WRITE(numout,*) 'dom_cfg : set the ocean configuration'
41         WRITE(numout,*) '~~~~~~~ '
42         WRITE(numout,*) '   ocean model configuration used :   cp_cfg = ', cp_cfg, ' jp_cfg = ', jp_cfg
43         !
44         WRITE(numout,*) '   global domain lateral boundaries'
45         !
46         IF( jperio == 0 )   WRITE(numout,*) '      jperio= 0, closed'
47         IF( jperio == 1 )   WRITE(numout,*) '      jperio= 1, cyclic east-west'
48         IF( jperio == 2 )   WRITE(numout,*) '      jperio= 2, equatorial symmetric'
49         IF( jperio == 3 )   WRITE(numout,*) '      jperio= 3, north fold with T-point pivot'
50         IF( jperio == 4 )   WRITE(numout,*) '      jperio= 4, cyclic east-west and north fold with T-point pivot'
51         IF( jperio == 5 )   WRITE(numout,*) '      jperio= 5, north fold with F-point pivot'
52         IF( jperio == 6 )   WRITE(numout,*) '      jperio= 6, cyclic east-west and north fold with F-point pivot'
53      ENDIF
54      !
55      IF( jperio <  0 .OR. jperio > 6 )   CALL ctl_stop( 'jperio is out of range' )
56      !
57      CALL dom_glo                   ! global domain versus zoom and/or local domain
58      !
59   END SUBROUTINE dom_cfg
60
61   SUBROUTINE dom_glo
62      !!----------------------------------------------------------------------
63      !!                     ***  ROUTINE dom_glo  ***
64      !!
65      !! ** Purpose :   initialization of global domain <--> local domain indices
66      !!
67      !! ** Method  :   
68      !!
69      !! ** Action  : - mig , mjg : local  domain indices ==> global domain indices
70      !!              - mi0 , mi1 : global domain indices ==> local  domain indices
71      !!              - mj0,, mj1   (global point not in the local domain ==> mi0>mi1 and/or mj0>mj1)
72      !!----------------------------------------------------------------------
73      INTEGER ::   ji, jj   ! dummy loop argument
74      !!----------------------------------------------------------------------
75      !
76      DO ji = 1, jpi                 ! local domain indices ==> global domain indices
77        mig(ji) = ji + nimpp - 1
78      END DO
79      DO jj = 1, jpj
80        mjg(jj) = jj + njmpp - 1
81      END DO
82      !                              ! global domain indices ==> local domain indices
83      !                                   ! (return (m.0,m.1)=(1,0) if data domain gridpoint is to the west/south of the
84      !                                   ! local domain, or (m.0,m.1)=(jp.+1,jp.) to the east/north of local domain.
85      DO ji = 1, jpiglo
86        mi0(ji) = MAX( 1 , MIN( ji - nimpp + 1, jpi+1 ) )
87        mi1(ji) = MAX( 0 , MIN( ji - nimpp + 1, jpi   ) )
88      END DO
89      DO jj = 1, jpjglo
90        mj0(jj) = MAX( 1 , MIN( jj - njmpp + 1, jpj+1 ) )
91        mj1(jj) = MAX( 0 , MIN( jj - njmpp + 1, jpj   ) )
92      END DO
93      IF(lwp) THEN                   ! control print
94         WRITE(numout,*)
95         WRITE(numout,*) 'dom_glo : domain: global <<==>> local '
96         WRITE(numout,*) '~~~~~~~ '
97         WRITE(numout,*) '   global domain:   jpiglo = ', jpiglo, ' jpjglo = ', jpjglo, ' jpkglo = ', jpkglo
98         WRITE(numout,*) '   local  domain:   jpi    = ', jpi   , ' jpj    = ', jpj   , ' jpk    = ', jpk
99         WRITE(numout,*)
100         WRITE(numout,*) '   conversion from local to global domain indices (and vise versa) done'
101         IF( nn_print >= 1 ) THEN
102            WRITE(numout,*)
103            WRITE(numout,*) '          conversion local  ==> global i-index domain (mig)'
104            WRITE(numout,25)              (mig(ji),ji = 1,jpi)
105            WRITE(numout,*)
106            WRITE(numout,*) '          conversion global ==> local  i-index domain'
107            WRITE(numout,*) '             starting index (mi0)'
108            WRITE(numout,25)              (mi0(ji),ji = 1,jpiglo)
109            WRITE(numout,*) '             ending index (mi1)'
110            WRITE(numout,25)              (mi1(ji),ji = 1,jpiglo)
111            WRITE(numout,*)
112            WRITE(numout,*) '          conversion local  ==> global j-index domain (mjg)'
113            WRITE(numout,25)              (mjg(jj),jj = 1,jpj)
114            WRITE(numout,*)
115            WRITE(numout,*) '          conversion global ==> local  j-index domain'
116            WRITE(numout,*) '             starting index (mj0)'
117            WRITE(numout,25)              (mj0(jj),jj = 1,jpjglo)
118            WRITE(numout,*) '             ending index (mj1)'
119            WRITE(numout,25)              (mj1(jj),jj = 1,jpjglo)
120         ENDIF
121      ENDIF
122 25   FORMAT( 100(10x,19i4,/) )
123      !
124   END SUBROUTINE dom_glo
125   !!======================================================================
126END MODULE domcfg
Note: See TracBrowser for help on using the repository browser.