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 13420 for NEMO/branches – NEMO

Changeset 13420 for NEMO/branches


Ignore:
Timestamp:
2020-08-21T13:42:12+02:00 (4 years ago)
Author:
smueller
Message:

Addition of interior masks as suggested in ticket #1499

Location:
NEMO/branches/NERC/dev_release-3.4_NEMOTAM_consolidated/NEMOGCM/NEMO
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/NERC/dev_release-3.4_NEMOTAM_consolidated/NEMOGCM/NEMO/OPATAM_SRC/oce_tam.F90

    r3611 r13420  
    2626   USE par_oce 
    2727   USE lib_mpp 
     28   USE dom_oce 
     29   USE domwri 
    2830 
    2931   IMPLICIT NONE 
     
    103105!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    104106#endif 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: & 
     108      & tmsk_i, & 
     109      & umsk_i, & 
     110      & vmsk_i, & 
     111      & fmsk_i 
    105112 
    106113   !!---------------------------------------------------------------------- 
     
    122129      INTEGER :: ierr(5) 
    123130      INTEGER :: jmode 
     131      INTEGER :: jk 
     132      REAL(wp), DIMENSION(jpi,jpj) :: & 
     133         & z_tmsk_i, & 
     134         & z_umsk_i, & 
     135         & z_vmsk_i, & 
     136         & z_fmsk_i 
     137 
    124138      !!---------------------------------------------------------------------- 
    125139      ! 
     
    128142      ELSE 
    129143         jmode = 0 
     144      END IF 
     145 
     146      IF (.NOT. ALLOCATED ( tmsk_i ) ) THEN 
     147         ALLOCATE ( tmsk_i (jpi, jpj, jpk), & 
     148            &       umsk_i (jpi, jpj, jpk), & 
     149            &       vmsk_i (jpi, jpj, jpk), & 
     150            &       fmsk_i (jpi, jpj, jpk) ) 
     151 
     152         CALL dom_uniq( z_tmsk_i, 'T', 1 ) 
     153         CALL dom_uniq( z_umsk_i, 'U', 1 ) 
     154         CALL dom_uniq( z_vmsk_i, 'V', 1 ) 
     155         CALL dom_uniq( z_fmsk_i, 'F', 1 ) 
     156 
     157         DO jk = 1, jpk 
     158            tmsk_i(:,:,jk) = tmask(:,:,jk) * z_tmsk_i(:,:) 
     159            umsk_i(:,:,jk) = umask(:,:,jk) * z_umsk_i(:,:) 
     160            vmsk_i(:,:,jk) = vmask(:,:,jk) * z_vmsk_i(:,:) 
     161            fmsk_i(:,:,jk) = fmask(:,:,jk) * z_fmsk_i(:,:) 
     162         END DO 
     163 
    130164      END IF 
    131165 
  • NEMO/branches/NERC/dev_release-3.4_NEMOTAM_consolidated/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r3294 r13420  
    2727 
    2828   PUBLIC dom_wri        ! routine called by inidom.F90 
     29   PUBLIC dom_uniq       ! required for NEMOTAM 
    2930 
    3031   !! * Substitutions 
     
    271272 
    272273 
    273    SUBROUTINE dom_uniq( puniq, cdgrd ) 
     274   SUBROUTINE dom_uniq( puniq, cdgrd, kindic ) 
    274275      !!---------------------------------------------------------------------- 
    275276      !!                  ***  ROUTINE dom_uniq  *** 
     
    281282      !!---------------------------------------------------------------------- 
    282283      ! 
    283       CHARACTER(len=1)        , INTENT(in   ) ::   cdgrd   !  
    284       REAL(wp), DIMENSION(:,:), INTENT(inout) ::   puniq   !  
     284      CHARACTER(len=1)        , INTENT(in   )           ::   cdgrd   !  
     285      REAL(wp), DIMENSION(:,:), INTENT(inout)           ::   puniq   !  
     286      INTEGER                 , INTENT(in)   , OPTIONAL ::   kindic  ! 
    285287      ! 
    286288      REAL(wp) ::  zshift   ! shift value link to the process number 
     
    304306      lldbl(:,:,1) = puniq(:,:) == ztstref(:,:)   ! check which values have been changed  
    305307      ! 
    306       puniq(:,:) = 1.                             ! default definition 
     308      IF ( PRESENT( kindic ) ) THEN 
     309         puniq(:,:) = 0.0_wp                      ! for generating interior mask 
     310      ELSE 
     311         puniq(:,:) = 1.0_wp                      ! default definition 
     312      ENDIF 
    307313      ! fill only the inner part of the cpu with llbl converted into real  
    308314      puniq(nldi:nlei,nldj:nlej) = REAL( COUNT( lldbl(nldi:nlei,nldj:nlej,:), dim = 3 ) , wp ) 
Note: See TracChangeset for help on using the changeset viewer.