- Timestamp:
- 2016-05-22T20:11:06+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90
r6140 r6596 9 9 10 10 !!---------------------------------------------------------------------- 11 !! dom_cfg 11 !! dom_cfg : initialize the domain configuration 12 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 USE timing ! Timing 18 USE c1d ! 1D configuration 19 USE domc1d ! 1D configuration: column location 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 20 21 21 22 IMPLICIT NONE … … 71 72 !! *** ROUTINE dom_glo *** 72 73 !! 73 !! ** Purpose : initialization for global domain, zoomand local domain74 !! ** Purpose : initialization for global and local domain 74 75 !! 75 76 !! ** Method : 76 77 !! 77 !! ** Action : - mig , mjg :78 !! - mi0 , mi1 :79 !! - mj0, , mj1 :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) 80 81 !!---------------------------------------------------------------------- 81 82 INTEGER :: ji, jj ! dummy loop argument 82 83 !!---------------------------------------------------------------------- 83 ! ! recalculate jpizoom/jpjzoom given lat/lon 84 !!gm This should be removed with the new configuration interface 85 ! ! recalculate jp_izoom/jp_jzoom given lat/lon 84 86 IF( lk_c1d .AND. ln_c1d_locpt ) CALL dom_c1d( rn_lat1d, rn_lon1d ) 87 !!gm end 85 88 ! 86 89 ! ! ============== ! 87 90 ! ! Local domain ! 88 91 ! ! ============== ! 89 DO ji = 1, jpi ! local domain indices ==> datadomain indices90 mig(ji) = ji + jpizoom - 1 +nimpp - 192 DO ji = 1, jpi ! local domain indices ==> global domain indices 93 mig(ji) = ji + nimpp - 1 91 94 END DO 92 95 DO jj = 1, jpj 93 mjg(jj) = jj + jpjzoom - 1 +njmpp - 196 mjg(jj) = jj + njmpp - 1 94 97 END DO 95 98 ! 96 ! ! datadomain indices ==> local domain indices99 ! ! global domain indices ==> local domain indices 97 100 ! ! (return (m.0,m.1)=(1,0) if data domain gridpoint is to the west/south of the 98 101 ! !local domain, or (m.0,m.1)=(jp.+1,jp.) to the east/north of local domain. 99 DO ji = 1, jpi dta100 mi0(ji) = MAX( 1 , MIN( ji - jpizoom + 1- nimpp + 1, jpi+1 ) )101 mi1(ji) = MAX( 0 , MIN( ji - jpizoom + 1- nimpp + 1, jpi ) )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 ) ) 102 105 END DO 103 DO jj = 1, jpj dta104 mj0(jj) = MAX( 1 , MIN( jj - jpjzoom + 1- njmpp + 1, jpj+1 ) )105 mj1(jj) = MAX( 0 , MIN( jj - jpjzoom + 1- njmpp + 1, jpj ) )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 ) ) 106 109 END DO 107 110 IF(lwp) THEN ! control print 108 111 WRITE(numout,*) 109 WRITE(numout,*) 'dom_glo : domain: data /local '112 WRITE(numout,*) 'dom_glo : domain: global <<==>> local ' 110 113 WRITE(numout,*) '~~~~~~~ ' 111 WRITE(numout,*) ' data input domain : jpidta = ', jpidta, & 112 & ' jpjdta = ', jpjdta, ' jpkdta = ', jpkdta 113 WRITE(numout,*) ' global or zoom domain: jpiglo = ', jpiglo, & 114 & ' jpjglo = ', jpjglo, ' jpk = ', jpk 115 WRITE(numout,*) ' local domain : jpi = ', jpi , & 116 & ' jpj = ', jpj , ' jpk = ', jpk 114 WRITE(numout,*) ' global domain: jpiglo = ', jpiglo, ' jpjglo = ', jpjglo, ' jpkglo = ', jpkglo 115 WRITE(numout,*) ' local domain: jpi = ', jpi , ' jpj = ', jpj , ' jpk = ', jpk 117 116 WRITE(numout,*) 118 WRITE(numout,*) ' south-west indices jpizoom = ', jpizoom, &119 & ' jpjzoom = ', jpjzoom120 117 IF( nn_print >= 1 ) THEN 121 118 WRITE(numout,*) … … 125 122 WRITE(numout,*) ' conversion data ==> local i-index domain' 126 123 WRITE(numout,*) ' starting index' 127 WRITE(numout,25) (mi0(ji),ji = 1,jpi dta)124 WRITE(numout,25) (mi0(ji),ji = 1,jpiglo) 128 125 WRITE(numout,*) ' ending index' 129 WRITE(numout,25) (mi1(ji),ji = 1,jpi dta)126 WRITE(numout,25) (mi1(ji),ji = 1,jpiglo) 130 127 WRITE(numout,*) 131 128 WRITE(numout,*) ' conversion local ==> data j-index domain' … … 134 131 WRITE(numout,*) ' conversion data ==> local j-index domain' 135 132 WRITE(numout,*) ' starting index' 136 WRITE(numout,25) (mj0(jj),jj = 1,jpj dta)133 WRITE(numout,25) (mj0(jj),jj = 1,jpjglo) 137 134 WRITE(numout,*) ' ending index' 138 WRITE(numout,25) (mj1(jj),jj = 1,jpj dta)135 WRITE(numout,25) (mj1(jj),jj = 1,jpjglo) 139 136 ENDIF 140 137 ENDIF 141 138 25 FORMAT( 100(10x,19i4,/) ) 142 139 143 ! ! ============== !144 ! ! Zoom domain !145 ! ! ============== !146 ! ! zoom control147 IF( jpiglo + jpizoom - 1 > jpidta .OR. &148 jpjglo + jpjzoom - 1 > jpjdta ) &149 & CALL ctl_stop( ' global or zoom domain exceed the data domain ! ' )150 151 ! ! set zoom flag152 IF( jpiglo < jpidta .OR. jpjglo < jpjdta ) lzoom = .TRUE.153 154 ! ! set zoom type flags155 IF( lzoom .AND. jpizoom /= 1 ) lzoom_w = .TRUE. !156 IF( lzoom .AND. jpjzoom /= 1 ) lzoom_s = .TRUE.157 IF( lzoom .AND. jpiglo + jpizoom -1 /= jpidta ) lzoom_e = .TRUE.158 IF( lzoom .AND. jpjglo + jpjzoom -1 /= jpjdta ) lzoom_n = .TRUE.159 IF(lwp) THEN160 WRITE(numout,*)161 WRITE(numout,*) ' zoom flags : '162 WRITE(numout,*) ' lzoom = ', lzoom , ' (T = zoom, F = global )'163 WRITE(numout,*) ' lzoom_e = ', lzoom_e, ' (T = forced closed east boundary)'164 WRITE(numout,*) ' lzoom_w = ', lzoom_w, ' (T = forced closed west boundary)'165 WRITE(numout,*) ' lzoom_s = ', lzoom_s, ' (T = forced closed South boundary)'166 WRITE(numout,*) ' lzoom_n = ', lzoom_n, ' (T = forced closed North boundary)'167 ENDIF168 IF( ( lzoom_e .OR. lzoom_w ) .AND. ( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) ) &169 & CALL ctl_stop( ' Your zoom choice is inconsistent with east-west cyclic boundary condition' )170 IF( lzoom_n .AND. ( 3 <= jperio .AND. jperio <= 6 ) ) &171 & CALL ctl_stop( ' Your zoom choice is inconsistent with North fold boundary condition' )172 173 ! ! Pre-defined arctic/antarctic zoom of ORCA configuration flag174 IF( cp_cfg == "orca" ) THEN175 SELECT CASE ( jp_cfg )176 CASE ( 2 ) ! ORCA_R2 configuration177 IF( cp_cfz == "arctic" .AND. jpiglo == 142 .AND. jpjglo == 53 .AND. &178 & jpizoom == 21 .AND. jpjzoom == 97 ) THEN179 IF(lwp) WRITE(numout,*) ' ORCA configuration: arctic zoom '180 ENDIF181 IF( cp_cfz == "antarctic" .AND. jpiglo == jpidta .AND. jpjglo == 50 .AND. &182 & jpizoom == 1 .AND. jpjzoom == 1 ) THEN183 IF(lwp) WRITE(numout,*) ' ORCA configuration: antarctic zoom '184 ENDIF185 !186 CASE ( 05 ) ! ORCA_R05 configuration187 IF( cp_cfz == "arctic" .AND. jpiglo == 562 .AND. jpjglo == 202 .AND. &188 & jpizoom == 81 .AND. jpjzoom == 301 ) THEN189 IF(lwp) WRITE(numout,*) ' ORCA configuration: arctic zoom '190 ENDIF191 IF( cp_cfz == "antarctic" .AND. jpiglo == jpidta .AND. jpjglo == 187 .AND. &192 & jpizoom == 1 .AND. jpjzoom == 1 ) THEN193 IF(lwp) WRITE(numout,*) ' ORCA configuration: antarctic zoom '194 ENDIF195 END SELECT196 !197 ENDIF198 140 ! 199 141 END SUBROUTINE dom_glo
Note: See TracChangeset
for help on using the changeset viewer.