Ignore:
Timestamp:
2015-07-15T17:46:12+02:00 (5 years ago)
Author:
andrewryan
Message:

merged in latest version of trunk alongside changes to SAO_SRC to be compatible with latest OBS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90

    r4325 r5600  
    140140      !!---------------------------------------------------------------------- 
    141141      USE ldftra_oce, ONLY:   aht0 
     142      USE iom 
    142143      ! 
    143144      LOGICAL, INTENT (in) ::   ld_print   ! If true, output arrays on numout 
     
    146147      INTEGER  ::   inum, iim, ijm            ! local integers 
    147148      INTEGER  ::   ifreq, il1, il2, ij, ii 
    148       INTEGER  ::   ijpt0,ijpt1 
     149      INTEGER  ::   ijpt0,ijpt1, ierror 
    149150      REAL(wp) ::   zahmeq, zcoft, zcoff, zmsk 
    150151      CHARACTER (len=15) ::   clexp 
    151       INTEGER, POINTER, DIMENSION(:,:)  :: icof 
    152       INTEGER, POINTER, DIMENSION(:,:)  :: idata 
     152      INTEGER,     POINTER, DIMENSION(:,:)  :: icof 
     153      REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ztemp2d  ! temporary array to read ahmcoef file 
    153154      !!---------------------------------------------------------------------- 
    154155      !                                 
    155156      CALL wrk_alloc( jpi   , jpj   , icof  ) 
    156       CALL wrk_alloc( jpidta, jpjdta, idata ) 
    157157      ! 
    158158      IF(lwp) WRITE(numout,*) 
     
    233233         ! Read 2d integer array to specify western boundary increase in the 
    234234         ! ===================== equatorial strip (20N-20S) defined at t-points 
    235           
    236          CALL ctl_opn( inum, 'ahmcoef', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
    237          READ(inum,9101) clexp, iim, ijm 
    238          READ(inum,'(/)') 
    239          ifreq = 40 
    240          il1 = 1 
    241          DO jn = 1, jpidta/ifreq+1 
    242             READ(inum,'(/)') 
    243             il2 = MIN( jpidta, il1+ifreq-1 ) 
    244             READ(inum,9201) ( ii, ji = il1, il2, 5 ) 
    245             READ(inum,'(/)') 
    246             DO jj = jpjdta, 1, -1 
    247                READ(inum,9202) ij, ( idata(ji,jj), ji = il1, il2 ) 
    248             END DO 
    249             il1 = il1 + ifreq 
    250          END DO 
    251  
    252          DO jj = 1, nlcj 
    253             DO ji = 1, nlci 
    254                icof(ji,jj) = idata( mig(ji), mjg(jj) ) 
    255             END DO 
    256          END DO 
    257          DO jj = nlcj+1, jpj 
    258             DO ji = 1, nlci 
    259                icof(ji,jj) = icof(ji,nlcj) 
    260             END DO 
    261          END DO 
    262          DO jj = 1, jpj 
    263             DO ji = nlci+1, jpi 
    264                icof(ji,jj) = icof(nlci,jj) 
    265             END DO 
    266          END DO 
    267  
    268 9101     FORMAT(1x,a15,2i8) 
    269 9201     FORMAT(3x,13(i3,12x)) 
    270 9202     FORMAT(i3,41i3) 
    271  
     235         ! 
     236         ALLOCATE( ztemp2d(jpi,jpj) ) 
     237         ztemp2d(:,:) = 0. 
     238         CALL iom_open ( 'ahmcoef.nc', inum ) 
     239         CALL iom_get  ( inum, jpdom_data, 'icof', ztemp2d) 
     240         icof(:,:)  = NINT(ztemp2d(:,:)) 
     241         CALL iom_close( inum ) 
     242         DEALLOCATE(ztemp2d) 
    272243 
    273244         ! Set ahm1 and ahm2  ( T- and F- points) (used for laplacian operator) 
     
    346317      ! 
    347318      CALL wrk_dealloc( jpi   , jpj   , icof  ) 
    348       CALL wrk_dealloc( jpidta, jpjdta, idata ) 
    349319      ! 
    350320   END SUBROUTINE ldf_dyn_c2d_orca 
     
    367337      !!---------------------------------------------------------------------- 
    368338      USE ldftra_oce, ONLY:   aht0 
     339      USE iom 
    369340      ! 
    370341      LOGICAL, INTENT (in) ::   ld_print   ! If true, output arrays on numout 
     
    374345      INTEGER ::   iim, ijm 
    375346      INTEGER ::   ifreq, il1, il2, ij, ii 
    376       INTEGER ::   ijpt0,ijpt1 
     347      INTEGER ::   ijpt0,ijpt1, ierror 
    377348      REAL(wp) ::   zahmeq, zcoft, zcoff, zmsk, zam20s 
    378349      CHARACTER (len=15) ::   clexp 
    379       INTEGER, POINTER, DIMENSION(:,:)  :: icof 
    380       INTEGER, POINTER, DIMENSION(:,:)  :: idata 
     350      INTEGER,     POINTER, DIMENSION(:,:)  :: icof 
     351      REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ztemp2d  ! temporary array to read ahmcoef file 
    381352      !!---------------------------------------------------------------------- 
    382353      !                                 
    383354      CALL wrk_alloc( jpi   , jpj   , icof  ) 
    384       CALL wrk_alloc( jpidta, jpjdta, idata ) 
    385355      !                                 
    386  
    387356      IF(lwp) WRITE(numout,*) 
    388357      IF(lwp) WRITE(numout,*) 'inildf: 2d eddy viscosity coefficient' 
     
    463432         ! Read 2d integer array to specify western boundary increase in the 
    464433         ! ===================== equatorial strip (20N-20S) defined at t-points 
    465           
    466          CALL ctl_opn( inum, 'ahmcoef', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    467             &           1, numout, lwp ) 
    468          REWIND inum 
    469          READ(inum,9101) clexp, iim, ijm 
    470          READ(inum,'(/)') 
    471          ifreq = 40 
    472          il1 = 1 
    473          DO jn = 1, jpidta/ifreq+1 
    474             READ(inum,'(/)') 
    475             il2 = MIN( jpidta, il1+ifreq-1 ) 
    476             READ(inum,9201) ( ii, ji = il1, il2, 5 ) 
    477             READ(inum,'(/)') 
    478             DO jj = jpjdta, 1, -1 
    479                READ(inum,9202) ij, ( idata(ji,jj), ji = il1, il2 ) 
    480             END DO 
    481             il1 = il1 + ifreq 
    482          END DO 
    483  
    484          DO jj = 1, nlcj 
    485             DO ji = 1, nlci 
    486                icof(ji,jj) = idata( mig(ji), mjg(jj) ) 
    487             END DO 
    488          END DO 
    489          DO jj = nlcj+1, jpj 
    490             DO ji = 1, nlci 
    491                icof(ji,jj) = icof(ji,nlcj) 
    492             END DO 
    493          END DO 
    494          DO jj = 1, jpj 
    495             DO ji = nlci+1, jpi 
    496                icof(ji,jj) = icof(nlci,jj) 
    497             END DO 
    498          END DO 
    499  
    500 9101     FORMAT(1x,a15,2i8) 
    501 9201     FORMAT(3x,13(i3,12x)) 
    502 9202     FORMAT(i3,41i3) 
    503  
     434         ALLOCATE( ztemp2d(jpi,jpj) ) 
     435         ztemp2d(:,:) = 0. 
     436         CALL iom_open ( 'ahmcoef.nc', inum ) 
     437         CALL iom_get  ( inum, jpdom_data, 'icof', ztemp2d) 
     438         icof(:,:)  = NINT(ztemp2d(:,:)) 
     439         CALL iom_close( inum ) 
     440         DEALLOCATE(ztemp2d) 
    504441 
    505442         ! Set ahm1 and ahm2  ( T- and F- points) (used for laplacian operator) 
     
    583520      ! 
    584521      CALL wrk_dealloc( jpi   , jpj   , icof  ) 
    585       CALL wrk_dealloc( jpidta, jpjdta, idata ) 
    586522      ! 
    587523   END SUBROUTINE ldf_dyn_c2d_orca_R1 
Note: See TracChangeset for help on using the changeset viewer.