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 13286 for NEMO/trunk/src/SAO – NEMO

Changeset 13286 for NEMO/trunk/src/SAO


Ignore:
Timestamp:
2020-07-09T17:48:29+02:00 (4 years ago)
Author:
smasson
Message:

trunk: merge extra halos branch in trunk, see #2366

Location:
NEMO/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        22^/utils/build/makenemo@HEAD   makenemo 
        33^/utils/build/mk@HEAD         mk 
        4 ^/utils/tools/@HEAD           tools 
         4^/utils/tools@HEAD            tools 
        55^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
         
        88 
        99# SETTE 
        10 ^/utils/CI/sette@12931        sette 
         10^/utils/CI/r12931_sette_ticket2366@HEAD  sette 
  • NEMO/trunk/src/SAO/nemogcm.F90

    r12933 r13286  
    2929   USE sao_intp 
    3030   ! 
     31   USE prtctl         ! Print control 
    3132   USE in_out_manager ! I/O manager 
    3233   USE lib_mpp        ! distributed memory computing 
    3334   USE mppini         ! shared/distributed memory setting (mpp_init routine) 
    34    USE lbcnfd  , ONLY : isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges  
     35   USE lbcnfd  , ONLY : isendto, nsndto ! Setup of north fold exchanges  
    3536   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 
    3637#if defined key_iomput 
    3738   USE xios           ! xIOserver 
    3839#endif 
     40   USE halo_mng 
    3941 
    4042   IMPLICIT NONE 
     
    9294      INTEGER ::   ios, ilocal_comm   ! local integer 
    9395      ! 
    94       NAMELIST/namctl/ sn_cfctl,  nn_print, nn_ictls, nn_ictle,             & 
    95          &             nn_isplt , nn_jsplt, nn_jctls, nn_jctle,             & 
    96          &             ln_timing, ln_diacfl 
     96      NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl,                                & 
     97         &             nn_isplt,  nn_jsplt,  nn_ictls, nn_ictle, nn_jctls, nn_jctle             
    9798      NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr 
    9899      !!---------------------------------------------------------------------- 
    99100      ! 
    100101      cxios_context = 'nemo' 
     102      nn_hls = 1 
    101103      ! 
    102104      !                             !-------------------------------------------------! 
     
    205207      ! 
    206208      IF( ln_read_cfg ) THEN            ! Read sizes in domain configuration file 
    207          CALL domain_cfg ( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio ) 
     209         CALL domain_cfg ( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 
    208210      ELSE                              ! user-defined namelist 
    209          CALL usr_def_nam( cn_cfg, nn_cfg, jpiglo, jpjglo, jpkglo, jperio ) 
     211         CALL usr_def_nam( cn_cfg, nn_cfg, Ni0glo, Nj0glo, jpkglo, jperio ) 
    210212      ENDIF 
    211213      ! 
     
    217219      CALL mpp_init 
    218220 
     221      CALL halo_mng_init() 
    219222      ! Now we know the dimensions of the grid and numout has been set: we can allocate arrays 
    220223      CALL nemo_alloc() 
     
    267270         WRITE(numout,*) '                              sn_cfctl%procincr  = ', sn_cfctl%procincr  
    268271         WRITE(numout,*) '                              sn_cfctl%ptimincr  = ', sn_cfctl%ptimincr  
    269          WRITE(numout,*) '      level of print                  nn_print   = ', nn_print 
    270          WRITE(numout,*) '      Start i indice for SUM control  nn_ictls   = ', nn_ictls 
    271          WRITE(numout,*) '      End i indice for SUM control    nn_ictle   = ', nn_ictle 
    272          WRITE(numout,*) '      Start j indice for SUM control  nn_jctls   = ', nn_jctls 
    273          WRITE(numout,*) '      End j indice for SUM control    nn_jctle   = ', nn_jctle 
    274          WRITE(numout,*) '      number of proc. following i     nn_isplt   = ', nn_isplt 
    275          WRITE(numout,*) '      number of proc. following j     nn_jsplt   = ', nn_jsplt 
    276272         WRITE(numout,*) '      timing by routine               ln_timing  = ', ln_timing 
    277273         WRITE(numout,*) '      CFL diagnostics                 ln_diacfl  = ', ln_diacfl 
    278274      ENDIF 
    279275      ! 
    280       nprint    = nn_print          ! convert DOCTOR namelist names into OLD names 
    281       nictls    = nn_ictls 
    282       nictle    = nn_ictle 
    283       njctls    = nn_jctls 
    284       njctle    = nn_jctle 
    285       isplt     = nn_isplt 
    286       jsplt     = nn_jsplt 
    287  
     276      IF( .NOT.ln_read_cfg )   ln_closea = .false.   ! dealing possible only with a domcfg file 
    288277      IF(lwp) THEN                  ! control print 
    289278         WRITE(numout,*) 
     
    295284         WRITE(numout,*) '         filename to be written                        cn_domcfg_out = ', TRIM(cn_domcfg_out) 
    296285         WRITE(numout,*) '      use file attribute if exists as i/p j-start   ln_use_jattr     = ', ln_use_jattr 
    297       ENDIF 
    298       IF( .NOT.ln_read_cfg )   ln_closea = .false.   ! dealing possible only with a domcfg file 
    299       ! 
    300       !                             ! Parameter control 
    301       ! 
    302       IF( sn_cfctl%l_prtctl .OR. sn_cfctl%l_prttrc ) THEN              ! sub-domain area indices for the control prints 
    303          IF( lk_mpp .AND. jpnij > 1 ) THEN 
    304             isplt = jpni   ;   jsplt = jpnj   ;   ijsplt = jpni*jpnj   ! the domain is forced to the real split domain 
    305          ELSE 
    306             IF( isplt == 1 .AND. jsplt == 1  ) THEN 
    307                CALL ctl_warn( ' - isplt & jsplt are equal to 1',   & 
    308                   &           ' - the print control will be done over the whole domain' ) 
    309             ENDIF 
    310             ijsplt = isplt * jsplt            ! total number of processors ijsplt 
    311          ENDIF 
    312          IF(lwp) WRITE(numout,*)'          - The total number of processors over which the' 
    313          IF(lwp) WRITE(numout,*)'            print control will be done is ijsplt : ', ijsplt 
    314          ! 
    315          !                              ! indices used for the SUM control 
    316          IF( nictls+nictle+njctls+njctle == 0 )   THEN    ! print control done over the default area 
    317             lsp_area = .FALSE. 
    318          ELSE                                             ! print control done over a specific  area 
    319             lsp_area = .TRUE. 
    320             IF( nictls < 1 .OR. nictls > jpiglo )   THEN 
    321                CALL ctl_warn( '          - nictls must be 1<=nictls>=jpiglo, it is forced to 1' ) 
    322                nictls = 1 
    323             ENDIF 
    324             IF( nictle < 1 .OR. nictle > jpiglo )   THEN 
    325                CALL ctl_warn( '          - nictle must be 1<=nictle>=jpiglo, it is forced to jpiglo' ) 
    326                nictle = jpiglo 
    327             ENDIF 
    328             IF( njctls < 1 .OR. njctls > jpjglo )   THEN 
    329                CALL ctl_warn( '          - njctls must be 1<=njctls>=jpjglo, it is forced to 1' ) 
    330                njctls = 1 
    331             ENDIF 
    332             IF( njctle < 1 .OR. njctle > jpjglo )   THEN 
    333                CALL ctl_warn( '          - njctle must be 1<=njctle>=jpjglo, it is forced to jpjglo' ) 
    334                njctle = jpjglo 
    335             ENDIF 
    336          ENDIF 
    337286      ENDIF 
    338287      ! 
  • NEMO/trunk/src/SAO/sao_read.F90

    r10069 r13286  
    1010   USE netcdf 
    1111   USE oce,     ONLY: tsn, sshn 
    12    USE dom_oce, ONLY: nlci, nlcj, nimpp, njmpp, tmask 
     12   USE dom_oce, ONLY: nimpp, njmpp, tmask 
    1313   USE par_oce, ONLY: jpi, jpj, jpk 
    1414   ! 
     
    9494         IF (ifcst .LE. ntimes) THEN 
    9595            ! Allocate temporary temperature array 
    96             ALLOCATE(temp_tn(nlci,nlcj,jpk)) 
    97             ALLOCATE(temp_sn(nlci,nlcj,jpk)) 
    98             ALLOCATE(temp_sshn(nlci,nlcj)) 
     96            ALLOCATE(temp_tn(jpi,jpj,jpk)) 
     97            ALLOCATE(temp_sn(jpi,jpj,jpk)) 
     98            ALLOCATE(temp_sshn(jpi,jpj)) 
    9999 
    100100            ! Set temp_tn, temp_sn to 0. 
     
    104104 
    105105            ! Create start and count arrays 
    106             start_n = (/ nimpp, njmpp, 1,  ifcst /) 
    107             count_n = (/ nlci,  nlcj,  jpk, 1     /) 
    108             start_s = (/ nimpp, njmpp, ifcst /) 
    109             count_s = (/ nlci,  nlcj,  1     /) 
     106            start_n = (/ nimpp, njmpp,      1, ifcst /) 
     107            count_n = (/   jpi,   jpj, jpk, 1        /) 
     108            start_s = (/ nimpp, njmpp        , ifcst /) 
     109            count_s = (/   jpi,   jpj,      1        /) 
    110110 
    111111            ! Read information into temporary arrays 
     
    138138 
    139139            ! Mask out missing data index 
    140             tsn(1:nlci,1:nlcj,1:jpk,1) = temp_tn(:,:,:) * tmask(1:nlci,1:nlcj,1:jpk) 
    141             tsn(1:nlci,1:nlcj,1:jpk,2) = temp_sn(:,:,:) * tmask(1:nlci,1:nlcj,1:jpk) 
    142             sshn(1:nlci,1:nlcj)        = temp_sshn(:,:) * tmask(1:nlci,1:nlcj,1) 
    143  
    144             ! Remove halo from tmask, tsn, sshn to prevent double obs counting 
    145             IF (jpi > nlci) THEN 
    146                 tmask(nlci+1:,:,:) = 0 
    147                 tsn(nlci+1:,:,:,1) = 0 
    148                 tsn(nlci+1:,:,:,2) = 0 
    149                 sshn(nlci+1:,:) = 0 
    150             END IF 
    151             IF (jpj > nlcj) THEN 
    152                 tmask(:,nlcj+1:,:) = 0 
    153                 tsn(:,nlcj+1:,:,1) = 0 
    154                 tsn(:,nlcj+1:,:,2) = 0 
    155                 sshn(:,nlcj+1:) = 0 
    156             END IF 
    157  
     140            tsn(1:jpi,1:jpj,1:jpk,1) = temp_tn(:,:,:) * tmask(1:jpi,1:jpj,1:jpk) 
     141            tsn(1:jpi,1:jpj,1:jpk,2) = temp_sn(:,:,:) * tmask(1:jpi,1:jpj,1:jpk) 
     142            sshn(1:jpi,1:jpj)        = temp_sshn(:,:) * tmask(1:jpi,1:jpj,1) 
     143             
    158144            ! Deallocate arrays 
    159145            DEALLOCATE(temp_tn, temp_sn, temp_sshn) 
Note: See TracChangeset for help on using the changeset viewer.