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.
Changeset 128 for trunk/NEMO/OPA_SRC/mppini_2.h90 – NEMO

Ignore:
Timestamp:
2004-07-07T14:38:57+02:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE080 : Now the previous bathymetry level file (bathy_level) which was in ASCII format must be converted into NetCDF format (bathy_level.nc) to be read

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/mppini_2.h90

    r69 r128  
    3939      !!   9.0  !  04-01  (G. Madec, J.M Molines)  F90 : free form , north fold jpni > 1 
    4040      !!---------------------------------------------------------------------- 
     41      !! * Modules used 
     42      USE ioipsl 
     43 
    4144      !! Local variables 
    42       CHARACTER (len=25) ::   clexp,       &  ! temporary name 
    43          &                    clname          !    "        " 
     45      CHARACTER (len=25) ::   clexp,      &  ! temporary name 
     46                clname , clvar               ! filename and cdf variable name for bathy 
    4447      LOGICAL ::   llbon                      ! check the existence of bathy files 
    4548      INTEGER :: ji, jj, jn, jproc, jarea     ! dummy loop indices 
     
    6366         ione  , ionw  , iose  , iosw  ,   &  !    "           " 
    6467         ibne  , ibnw  , ibse  , ibsw         !    "           " 
     68      INTEGER  ::   & 
     69         ipi, ipj, ipk,              &  ! temporary integers 
     70         itime                          !    "          " 
     71      INTEGER, DIMENSION (1) ::   istep 
     72 
    6573      INTEGER, DIMENSION(jpidta,jpjdta) ::   & 
    6674         idata                                ! temporary data workspace 
    6775      INTEGER, DIMENSION(jpiglo,jpjglo) ::   & 
    6876         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   
    7085      !!---------------------------------------------------------------------- 
    7186      !!  OPA 8.5, LODYC-IPSL (2002) 
     
    100115 
    101116      ! 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 ) 
    105126      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 ) 
    133140      ELSE 
    134141         IF(lwp) WRITE(numout,cform_err) 
     
    138145 
    139146      ! 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 
    146150       
    147151      !  1. Dimension arrays for subdomains 
     
    156160      nreci=2*jpreci 
    157161      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 
    181171      IF(lwp) WRITE(numout,*) 
    182172      IF(lwp) WRITE(numout,*) ' mpp_init2: defines mpp subdomains' 
     
    187177      IF(lwp) WRITE(numout,*) 'jpni=',jpni,' jpnj=',jpnj 
    188178 
    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 )  
    193180      IF(lwp) WRITE(numout,*) 
    194181      IF(lwp) WRITE(numout,*)' sum ilci(i,1)=',zidom,' jpiglo=',jpiglo 
    195182 
    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 
    201185      IF(lwp) WRITE(numout,*) 
    202186 
     
    205189      ! ------------------------------- 
    206190 
    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 
    214194       
    215195      IF( jpni > 1 )THEN 
Note: See TracChangeset for help on using the changeset viewer.