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 5625 – NEMO

Changeset 5625


Ignore:
Timestamp:
2015-07-22T09:48:42+02:00 (9 years ago)
Author:
jamesharle
Message:

Update interpolation code to handle structured BDY.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r5620 r5625  
    773773         SELECT CASE( igrd )                   
    774774            CASE(1) 
     775               WRITE(*,*) 'reading gdept'  
    775776               CALL iom_get ( num, jpdom_unknown, 'gdept', dta_read_z(1:ilendta,1:ipj,1:jpk_bdy) ) 
     777               WRITE(*,*) 'reading e3t'  
    776778               CALL iom_get ( num, jpdom_unknown, 'e3t', dta_read_dz(1:ilendta,1:ipj,1:jpk_bdy) ) 
     779               WRITE(*,*) 'finished reading'  
    777780            CASE(2)   
    778781               CALL iom_get ( num, jpdom_unknown, 'gdepu', dta_read_z(1:ilendta,1:ipj,1:jpk_bdy) ) 
     
    785788 
    786789#if defined key_bdy 
     790      WRITE(*,*) 'going in bdy interp'  
    787791         CALL fld_bdy_interp(dta_read, dta_read_z, dta_read_dz, map, jpk_bdy, igrd, ibdy, fv, dta, fvl) 
     792      WRITE(*,*) 'coming out bdy interp'  
    788793#endif 
    789794      ELSE ! boundary data assumed to be on model grid 
     
    839844      REAL(wp)                                ::   fv_alt, ztrans, ztrans_new ! fillvalue and alternative -ABS(fv) 
    840845      !!--------------------------------------------------------------------- 
     846      
     847      WRITE(*,*) 'in bdy interp'  
    841848 
    842849      ipi       = SIZE( dta, 1 ) 
     
    847854  
    848855      fv_alt = -ABS(fv)  ! set _FillValue < 0 as we make use of MAXVAL and MAXLOC later 
     856       
    849857      ! 
    850858      IF ( map%ll_unstruc ) THEN ! unstructured open boundary data file 
     859 
    851860         DO ib = 1, ipi 
    852861            DO ik = 1, jpk_bdy 
     
    879888 
    880889         IF(igrd == 2) THEN ! do we need to adjust the transport term? 
    881            DO ib = 1, ipi 
     890            DO ib = 1, ipi 
    882891              zh = SUM(dta_read_dz(map%ptr(ib),1,:) ) 
    883892              ztrans = 0._wp 
     
    892901              DO ik = 1, ipk 
    893902                 zdz =  e3u_0(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd),ik)    
    894                  zz  =  hur(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd))    
     903                 zz  =  hur(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd))       ! Is array HUR the correct one to use???? 
    895904                 IF(fvl) THEN ! bdy data are total velocity so adjust bt transport term to match input data 
    896905                    dta(ib,1,ik) = dta(ib,1,ik) + ( ztrans - ztrans_new ) * ( zdz * zz ) 
     
    903912 
    904913         IF(igrd == 3) THEN ! do we need to adjust the transport term? 
    905            DO ib = 1, ipi 
     914            DO ib = 1, ipi 
    906915              zh = SUM(dta_read_dz(map%ptr(ib),1,:) ) 
    907916              ztrans = 0._wp 
     
    931940 
    932941      ELSE ! structured open boundary file 
     942 
    933943         DO ib = 1, ipi 
    934944            jj=1+floor(REAL(map%ptr(ib)-1)/REAL(ilendta)) 
     
    939949                  dta_read_dz(ji,jj,ik) = 0._wp ! safety: put 0._wp into external thickness factors to ensure transport is correct 
    940950               ENDIF 
    941      !            dta(ib,1,ik) = fv_alt    ! put fillvalue into new field as if all goes well all wet points will be replaced 
    942951            ENDDO 
    943952         ENDDO  
    944       ! 
     953        
    945954         DO ib = 1, ipi 
    946955            jj=1+floor(REAL(map%ptr(ib)-1)/REAL(ilendta)) 
     
    964973            END DO 
    965974         END DO 
    966       ENDIF 
     975 
     976         IF(igrd == 2) THEN ! do we need to adjust the transport term? 
     977            jj=1+floor(REAL(map%ptr(ib)-1)/REAL(ilendta)) 
     978            ji=map%ptr(ib)-(jj-1)*ilendta 
     979            DO ib = 1, ipi 
     980              zh = SUM(dta_read_dz(ji,jj,:) ) 
     981              ztrans = 0._wp 
     982              ztrans_new = 0._wp 
     983              DO ik = 1, jpk_bdy 
     984                  ztrans = ztrans + dta_read(ji,jj,ik) * dta_read_dz(ji,jj,ik) 
     985              ENDDO 
     986              DO ik = 1, ipk 
     987                  zdz =  e3u_0(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd),ik) 
     988                  ztrans_new = ztrans_new + dta(ib,1,ik) * zdz 
     989              ENDDO 
     990              DO ik = 1, ipk 
     991                 zdz =  e3u_0(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd),ik) 
     992                 zz  =  hur(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd)) 
     993                 IF(fvl) THEN ! bdy data are total velocity so adjust bt transport term to match input data 
     994                    dta(ib,1,ik) = dta(ib,1,ik) + ( ztrans - ztrans_new ) * ( zdz * zz ) 
     995                 ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero 
     996                    dta(ib,1,ik) = dta(ib,1,ik) + ( 0._wp - ztrans_new ) * ( zdz * zz ) 
     997                 ENDIF 
     998              ENDDO 
     999            ENDDO 
     1000         ENDIF 
     1001 
     1002         IF(igrd == 3) THEN ! do we need to adjust the transport term? 
     1003            jj=1+floor(REAL(map%ptr(ib)-1)/REAL(ilendta)) 
     1004            ji=map%ptr(ib)-(jj-1)*ilendta 
     1005           DO ib = 1, ipi 
     1006              zh = SUM(dta_read_dz(ji,jj,:) ) 
     1007              ztrans = 0._wp 
     1008              ztrans_new = 0._wp 
     1009              DO ik = 1, jpk_bdy 
     1010                  ztrans = ztrans + dta_read(ji,jj,ik) * dta_read_dz(ji,jj,ik) 
     1011              ENDDO 
     1012              DO ik = 1, ipk 
     1013                  zdz =  e3v_0(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd),ik) 
     1014                  ztrans_new = ztrans_new + dta(ib,1,ik) * zdz 
     1015              ENDDO 
     1016              DO ik = 1, ipk 
     1017                 zdz =  e3v_0(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd),ik) 
     1018                 zz  =  hvr(idx_bdy(ibdy)%nbi(ib,igrd),idx_bdy(ibdy)%nbj(ib,igrd)) 
     1019                 IF(fvl) THEN ! bdy data are total velocity so adjust bt transport term to match input data 
     1020                    dta(ib,1,ik) = dta(ib,1,ik) + ( ztrans - ztrans_new ) * ( zdz * zz ) 
     1021                 ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero 
     1022                    dta(ib,1,ik) = dta(ib,1,ik) + ( 0._wp - ztrans_new ) * ( zdz * zz ) 
     1023                 ENDIF 
     1024              ENDDO 
     1025            ENDDO 
     1026         ENDIF 
     1027 
     1028      ENDIF ! endif unstructured or structured 
    9671029 
    9681030   END SUBROUTINE fld_bdy_interp 
Note: See TracChangeset for help on using the changeset viewer.