Changeset 128
- Timestamp:
- 2004-07-07T14:38:57+02:00 (20 years ago)
- Location:
- trunk/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DOM/domzgr.F90
r50 r128 250 250 !! ntopo=-1 : rectangular channel or bassin with a bump 251 251 !! ntopo= 0 : flat rectangular channel or basin 252 !! ntopo= 1 : mbathy is read in 'bathy_level 'file252 !! ntopo= 1 : mbathy is read in 'bathy_level.nc' NetCDF file 253 253 !! bathy is read in 'bathy_meter.nc' NetCDF file 254 254 !! C A U T I O N : mbathy will be modified during the initializa- … … 372 372 ! ! =============== ! 373 373 374 clname = 'bathy_level ' ! level bathymetry374 clname = 'bathy_level.nc' ! Level bathymetry 375 375 INQUIRE( FILE=clname, EXIST=llbon ) 376 376 IF( llbon ) THEN … … 378 378 IF(lwp) WRITE(numout,*) ' read level bathymetry in ', clname 379 379 IF(lwp) WRITE(numout,*) 380 OPEN( UNIT=inum, FILE=clname, FORM='FORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD' ) 381 382 REWIND(inum) 383 READ (inum,9101) clexp, iim, ijm 384 READ (inum,'(/)') 385 ifreq = 40 386 il1 = 1 387 DO jn = 1, jpidta/ifreq+1 388 READ(inum,'(/)') 389 il2 = MIN( jpidta, il1+ifreq-1 ) 390 READ(inum,9201) ( ii, ji = il1, il2, 5 ) 391 READ(inum,'(/)') 392 DO jj = jpjdta, 1, -1 393 READ(inum,9202) ij, ( idta(ji,jj), ji = il1, il2 ) 394 END DO 395 il1 = il1 + ifreq 396 END DO 397 CLOSE(inum) 398 399 9101 FORMAT(1x,a15,2i8) 400 9201 FORMAT(3x,13(i3,12x)) 401 9202 FORMAT(i3,41i3) 380 itime = 1 381 ipi = jpidta 382 ipj = jpjdta 383 ipk = 1 384 zdt = rdt 385 CALL flinopen( clname, 1, jpidta, 1, jpjdta, .FALSE., & 386 ipi, ipj, ipk, zlamt, zphit, zdept, itime, istep, zdate0, zdt, inum ) 387 CALL flinget( inum, 'Bathy_level', jpidta, jpjdta, 1, & 388 itime, 1, 1, 1, jpidta, 1, jpjdta, zdta(:,:) ) 389 idta(:,:) = zdta(:,:) 390 CALL flinclo( inum ) 402 391 403 392 ELSE -
trunk/NEMO/OPA_SRC/mppini_2.h90
r69 r128 39 39 !! 9.0 ! 04-01 (G. Madec, J.M Molines) F90 : free form , north fold jpni > 1 40 40 !!---------------------------------------------------------------------- 41 !! * Modules used 42 USE ioipsl 43 41 44 !! Local variables 42 CHARACTER (len=25) :: clexp, 43 & clname ! " "45 CHARACTER (len=25) :: clexp, & ! temporary name 46 clname , clvar ! filename and cdf variable name for bathy 44 47 LOGICAL :: llbon ! check the existence of bathy files 45 48 INTEGER :: ji, jj, jn, jproc, jarea ! dummy loop indices … … 63 66 ione , ionw , iose , iosw , & ! " " 64 67 ibne , ibnw , ibse , ibsw ! " " 68 INTEGER :: & 69 ipi, ipj, ipk, & ! temporary integers 70 itime ! " " 71 INTEGER, DIMENSION (1) :: istep 72 65 73 INTEGER, DIMENSION(jpidta,jpjdta) :: & 66 74 idata ! temporary data workspace 67 75 INTEGER, DIMENSION(jpiglo,jpjglo) :: & 68 76 imask ! temporary global workspace 69 REAL(wp) :: zidom , zjdom ! temporary scalars 77 78 REAL(wp), DIMENSION(jpidta,jpjdta) :: & 79 zlamt, zphit, zdta ! temporary data workspace 80 REAL(wp), DIMENSION(jpk) :: & 81 zdept ! temporary workspace (NetCDF read) 82 REAL(wp) :: zidom , zjdom, & ! temporary scalars 83 zdt, zdate0 84 70 85 !!---------------------------------------------------------------------- 71 86 !! OPA 8.5, LODYC-IPSL (2002) … … 100 115 101 116 ! open the file 102 clname = 'bathy_level' 103 IF(lwp) WRITE(numout,*) ' bathymetry file in levels' 104 INQUIRE( FILE=clname, EXIST=llbon ) 117 IF ( lk_zps ) THEN 118 clname = 'bathy_meter.nc' ! Meter bathy in case of partial steps 119 clvar = 'Bathymetry' 120 ELSE 121 clname = 'bathy_level.nc' ! Level bathymetry 122 clvar = 'Bathy_level' 123 ENDIF 124 125 INQUIRE( FILE=clname, EXIST=llbon ) 105 126 IF( llbon ) THEN 106 IF(lwp) WRITE(numout,*) 107 IF(lwp) WRITE(numout,*) ' read level bathymetry in ', clname 108 IF(lwp) WRITE(numout,*) 109 OPEN( UNIT=inum, FILE=clname, FORM='FORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD' ) 110 111 ! read bathymetry file 112 REWIND inum 113 READ(inum,9001) clexp, iim, ijm 114 READ(inum,'(/)') 115 ifreq=40 116 il1=1 117 DO jn=1,jpidta/ifreq+1 118 READ(inum,'(/)') 119 il2 = MIN( jpidta, il1+ifreq-1 ) 120 READ(inum,9002) ( ii, ji = il1, il2, 5 ) 121 READ(inum,'(/)') 122 DO jj = jpjdta, 1, -1 123 READ(inum,9003) ij, ( idata(ji,jj), ji = il1, il2 ) 124 END DO 125 il1 = il1 + ifreq 126 END DO 127 CLOSE(inum) 128 129 9001 FORMAT(1x,a15,2i8) 130 9002 FORMAT(3x,13(i3,12x)) 131 9003 FORMAT(i3,41i3) 132 127 IF(lwp) WRITE(numout,*) 128 IF(lwp) WRITE(numout,*) ' read level bathymetry in ', clname 129 IF(lwp) WRITE(numout,*) 130 itime = 1 131 ipi = jpidta 132 ipj = jpjdta 133 ipk = 1 134 zdt = rdt 135 CALL flinopen( clname, 1, jpidta, 1, jpjdta, .FALSE., & 136 ipi, ipj, ipk, zlamt, zphit, zdept, itime, istep, zdate0, zdt, inum ) 137 CALL flinget( inum, clvar, jpidta, jpjdta, 1, & 138 itime, 1, 1, 1, jpidta, 1, jpjdta, zdta(:,:) ) 139 CALL flinclo( inum ) 133 140 ELSE 134 141 IF(lwp) WRITE(numout,cform_err) … … 138 145 139 146 ! land/sea mask over the global/zoom domain 140 DO jj = 1, jpjglo 141 DO ji = 1, jpiglo 142 imask(ji,jj) = MIN( 1, MAX( 0, idata(ji+jpizoom-1,jj+jpjzoom-1) ) ) 143 END DO 144 END DO 145 147 148 WHERE ( zdta(jpizoom:jpiglo+jpizoom-1, jpjzoom:jpjglo+jpjzoom-1) == 0. ) imask = 0 149 146 150 147 151 ! 1. Dimension arrays for subdomains … … 156 160 nreci=2*jpreci 157 161 nrecj=2*jprecj 158 iresti = MOD( jpiglo - nreci , jpni ) 159 irestj = MOD( jpjglo - nrecj , jpnj ) 160 161 IF( iresti == 0 ) iresti = jpni 162 DO jj = 1, jpnj 163 DO ji = 1, iresti 164 ilci(ji,jj) = jpi 165 END DO 166 DO ji = iresti+1, jpni 167 ilci(ji,jj) = jpi - 1 168 END DO 169 END DO 170 171 IF(irestj == 0) irestj = jpnj 172 DO ji = 1, jpni 173 DO jj = 1, irestj 174 ilcj(ji,jj) = jpj 175 END DO 176 DO jj = irestj+1, jpnj 177 ilcj(ji,jj) = jpj - 1 178 END DO 179 END DO 180 162 iresti = 1 + MOD( jpiglo - nreci -1 , jpni ) 163 irestj = 1 + MOD( jpjglo - nrecj -1 , jpnj ) 164 165 ilci(1:iresti ,:) = jpi 166 ilci(iresti+1:jpni ,:) = jpi-1 167 168 ilcj(1:irestj ,:) = jpj 169 ilcj(irestj+1:jpnj ,:) = jpj-1 170 181 171 IF(lwp) WRITE(numout,*) 182 172 IF(lwp) WRITE(numout,*) ' mpp_init2: defines mpp subdomains' … … 187 177 IF(lwp) WRITE(numout,*) 'jpni=',jpni,' jpnj=',jpnj 188 178 189 zidom = nreci 190 DO ji = 1, jpni 191 zidom = zidom + ilci(ji,1) - nreci 192 END DO 179 zidom = nreci + sum(ilci(:,1) - nreci ) 193 180 IF(lwp) WRITE(numout,*) 194 181 IF(lwp) WRITE(numout,*)' sum ilci(i,1)=',zidom,' jpiglo=',jpiglo 195 182 196 zjdom = nrecj 197 DO jj = 1, jpnj 198 zjdom = zjdom + ilcj(1,jj) - nrecj 199 END DO 200 IF(lwp) WRITE(numout,*) ' sum ilci(1,j)=',zjdom,' jpjglo=',jpjglo 183 zjdom = nrecj + sum(ilcj(1,:) - nrecj ) 184 IF(lwp) WRITE(numout,*) ' sum ilcj(1,j)=',zjdom,' jpjglo=',jpjglo 201 185 IF(lwp) WRITE(numout,*) 202 186 … … 205 189 ! ------------------------------- 206 190 207 DO jj = 1, jpnj 208 DO ji = 1, jpni 209 iimppt(ji,jj) = 1 210 ijmppt(ji,jj) = 1 211 ipproc(ji,jj) = -1 212 END DO 213 END DO 191 iimppt(:,:) = 1 192 ijmppt(:,:) = 1 193 ipproc(:,:) = -1 214 194 215 195 IF( jpni > 1 )THEN
Note: See TracChangeset
for help on using the changeset viewer.