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 2888 for branches/2011/UKMO_MERCATOR_obc_bdy_merge/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90 – NEMO

Ignore:
Timestamp:
2011-10-06T11:26:33+02:00 (13 years ago)
Author:
davestorkey
Message:

Move changes into updated BDY module and restore old OBC code.
(Full merge to take place next year).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/UKMO_MERCATOR_obc_bdy_merge/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90

    r2797 r2888  
    2727   USE phycst          ! physical constants 
    2828   USE obc_oce         ! ocean open boundary conditions 
     29   USE bdy_oce         ! unstructured open boundary conditions 
    2930   USE lbclnk          ! lateral boudary conditions 
    3031   USE lib_mpp         ! distributed memory computing 
     
    8081      ENDIF 
    8182 
    82 #if defined key_dynspg_flt  
     83#if defined key_dynspg_flt && ! defined key_bdy 
    8384#   if ! defined key_obc 
    8485 
     
    9899         END DO 
    99100      END DO 
    100  
    101101#   else 
    102  
    103       !   defined gcdmat in the case of open boundaries 
     102    IF ( Agrif_Root() ) THEN 
     103      DO jj = 2, jpjm1                      ! matrix of free surface elliptic system with open boundaries 
     104         DO ji = 2, jpim1 
     105            zcoef = z2dt * z2dt * grav * bmask(ji,jj) 
     106            !                                    ! south coefficient 
     107            IF( lp_obc_south .AND. ( jj == njs0p1 ) ) THEN 
     108               zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)*(1.-vsmsk(ji,1)) 
     109            ELSE 
     110               zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 
     111            END IF 
     112            gcp(ji,jj,1) = zcoefs 
     113            ! 
     114            !                                    ! west coefficient 
     115            IF( lp_obc_west  .AND. ( ji == niw0p1 ) ) THEN 
     116               zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)*(1.-uwmsk(jj,1)) 
     117            ELSE 
     118               zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 
     119            END IF 
     120            gcp(ji,jj,2) = zcoefw 
     121            ! 
     122            !                                    ! east coefficient 
     123            IF( lp_obc_east  .AND. ( ji == nie0 ) ) THEN 
     124               zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)*(1.-uemsk(jj,1)) 
     125            ELSE 
     126               zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 
     127            END IF 
     128            gcp(ji,jj,3) = zcoefe 
     129            ! 
     130            !                                    ! north coefficient 
     131            IF( lp_obc_north .AND. ( jj == njn0 ) ) THEN 
     132               zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj)*(1.-vnmsk(ji,1)) 
     133            ELSE 
     134               zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj) 
     135            END IF 
     136            gcp(ji,jj,4) = zcoefn 
     137            ! 
     138            !                                    ! diagonal coefficient 
     139            gcdmat(ji,jj) = e1t(ji,jj)*e2t(ji,jj)*bmask(ji,jj)   & 
     140               &            - zcoefs -zcoefw -zcoefe -zcoefn 
     141         END DO 
     142      END DO 
     143    ELSE 
     144      DO jj = 2, jpjm1                      ! matrix of free surface elliptic system 
     145         DO ji = 2, jpim1 
     146            zcoef = z2dt * z2dt * grav * bmask(ji,jj) 
     147            zcoefs = -zcoef * hv(ji  ,jj-1) * e1v(ji  ,jj-1) / e2v(ji  ,jj-1)    ! south coefficient 
     148            zcoefw = -zcoef * hu(ji-1,jj  ) * e2u(ji-1,jj  ) / e1u(ji-1,jj  )    ! west coefficient 
     149            zcoefe = -zcoef * hu(ji  ,jj  ) * e2u(ji  ,jj  ) / e1u(ji  ,jj  )    ! east coefficient 
     150            zcoefn = -zcoef * hv(ji  ,jj  ) * e1v(ji  ,jj  ) / e2v(ji  ,jj  )    ! north coefficient 
     151            gcp(ji,jj,1) = zcoefs 
     152            gcp(ji,jj,2) = zcoefw 
     153            gcp(ji,jj,3) = zcoefe 
     154            gcp(ji,jj,4) = zcoefn 
     155            gcdmat(ji,jj) = e1t(ji,jj) * e2t(ji,jj) * bmask(ji,jj)    &          ! diagonal coefficient 
     156               &          - zcoefs -zcoefw -zcoefe -zcoefn 
     157         END DO 
     158      END DO 
     159    ENDIF 
     160#   endif 
     161 
     162#  elif defined key_dynspg_flt && defined key_bdy  
     163 
     164      !   defined gcdmat in the case of unstructured open boundaries 
    104165      DO jj = 2, jpjm1 
    105166         DO ji = 2, jpim1 
     
    108169            !  south coefficient 
    109170            zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 
    110             zcoefs = zcoefs * obcvmask(ji,jj-1) 
     171            zcoefs = zcoefs * bdyvmask(ji,jj-1) 
    111172            gcp(ji,jj,1) = zcoefs 
    112173 
    113174            !  west coefficient 
    114175            zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 
    115             zcoefw = zcoefw * obcumask(ji-1,jj) 
     176            zcoefw = zcoefw * bdyumask(ji-1,jj) 
    116177            gcp(ji,jj,2) = zcoefw 
    117178 
    118179            !  east coefficient 
    119180            zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 
    120             zcoefe = zcoefe * obcumask(ji,jj) 
     181            zcoefe = zcoefe * bdyumask(ji,jj) 
    121182            gcp(ji,jj,3) = zcoefe 
    122183 
    123184            !  north coefficient 
    124185            zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj) 
    125             zcoefn = zcoefn * obcvmask(ji,jj) 
     186            zcoefn = zcoefn * bdyvmask(ji,jj) 
    126187            gcp(ji,jj,4) = zcoefn 
    127188 
     
    132193      END DO 
    133194 
    134 #endif 
    135195#endif 
    136196 
Note: See TracChangeset for help on using the changeset viewer.