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 12377 for NEMO/trunk/src/OCE/SBC/sbcssr.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/SBC/sbcssr.F90

    r12276 r12377  
    4949   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_sss   ! structure of input SSS (file informations, fields read) 
    5050 
     51   !! * Substitutions 
     52#  include "do_loop_substitute.h90" 
    5153   !!---------------------------------------------------------------------- 
    5254   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    9395            ! 
    9496            IF( nn_sstr == 1 ) THEN                                   !* Temperature restoring term 
    95                DO jj = 1, jpj 
    96                   DO ji = 1, jpi 
    97                      zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
    98                      qns(ji,jj) = qns(ji,jj) + zqrp 
    99                      qrp(ji,jj) = zqrp 
    100                   END DO 
    101                END DO 
     97               DO_2D_11_11 
     98                  zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
     99                  qns(ji,jj) = qns(ji,jj) + zqrp 
     100                  qrp(ji,jj) = zqrp 
     101               END_2D 
    102102            ENDIF 
    103103            ! 
     
    105105              ! use fraction of ice ( fr_i ) to adjust relaxation under ice if nn_sssr_ice .ne. 1 
    106106              ! n.b. coefice is initialised and fixed to 1._wp if nn_sssr_ice = 1 
    107                DO jj = 1, jpj 
    108                   DO ji = 1, jpi 
    109                      SELECT CASE ( nn_sssr_ice ) 
    110                        CASE ( 0 )    ;  coefice(ji,jj) = 1._wp - fr_i(ji,jj)              ! no/reduced damping under ice 
    111                        CASE  DEFAULT ;  coefice(ji,jj) = 1._wp + ( nn_sssr_ice - 1 ) * fr_i(ji,jj) ! reinforced damping (x nn_sssr_ice) under ice ) 
    112                      END SELECT 
    113                   END DO 
    114                END DO 
     107               DO_2D_11_11 
     108                  SELECT CASE ( nn_sssr_ice ) 
     109                    CASE ( 0 )    ;  coefice(ji,jj) = 1._wp - fr_i(ji,jj)              ! no/reduced damping under ice 
     110                    CASE  DEFAULT ;  coefice(ji,jj) = 1._wp + ( nn_sssr_ice - 1 ) * fr_i(ji,jj) ! reinforced damping (x nn_sssr_ice) under ice ) 
     111                  END SELECT 
     112               END_2D 
    115113            ENDIF 
    116114            ! 
    117115            IF( nn_sssr == 1 ) THEN                                   !* Salinity damping term (salt flux only (sfx)) 
    118116               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    119                DO jj = 1, jpj 
    120                   DO ji = 1, jpi 
    121                      zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    122                         &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
    123                         &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
    124                      sfx(ji,jj) = sfx(ji,jj) + zerp                 ! salt flux 
    125                      erp(ji,jj) = zerp / MAX( sss_m(ji,jj), 1.e-20 ) ! converted into an equivalent volume flux (diagnostic only) 
    126                   END DO 
    127                END DO 
     117               DO_2D_11_11 
     118                  zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
     119                     &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
     120                     &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
     121                  sfx(ji,jj) = sfx(ji,jj) + zerp                 ! salt flux 
     122                  erp(ji,jj) = zerp / MAX( sss_m(ji,jj), 1.e-20 ) ! converted into an equivalent volume flux (diagnostic only) 
     123               END_2D 
    128124               ! 
    129125            ELSEIF( nn_sssr == 2 ) THEN                               !* Salinity damping term (volume flux (emp) and associated heat flux (qns) 
    130126               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    131127               zerp_bnd = rn_sssr_bnd / rday                          !       -              -     
    132                DO jj = 1, jpj 
    133                   DO ji = 1, jpi                             
    134                      zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    135                         &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
    136                         &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) )   & 
    137                         &        / MAX(  sss_m(ji,jj), 1.e-20   ) * tmask(ji,jj,1) 
    138                      IF( ln_sssr_bnd )   zerp = SIGN( 1., zerp ) * MIN( zerp_bnd, ABS(zerp) ) 
    139                      emp(ji,jj) = emp (ji,jj) + zerp 
    140                      qns(ji,jj) = qns(ji,jj) - zerp * rcp * sst_m(ji,jj) 
    141                      erp(ji,jj) = zerp 
    142                   END DO 
    143                END DO 
     128               DO_2D_11_11 
     129                  zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
     130                     &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
     131                     &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) )   & 
     132                     &        / MAX(  sss_m(ji,jj), 1.e-20   ) * tmask(ji,jj,1) 
     133                  IF( ln_sssr_bnd )   zerp = SIGN( 1., zerp ) * MIN( zerp_bnd, ABS(zerp) ) 
     134                  emp(ji,jj) = emp (ji,jj) + zerp 
     135                  qns(ji,jj) = qns(ji,jj) - zerp * rcp * sst_m(ji,jj) 
     136                  erp(ji,jj) = zerp 
     137               END_2D 
    144138            ENDIF 
    145139            ! 
     
    180174      ENDIF 
    181175      !  
    182       REWIND( numnam_ref )              ! Namelist namsbc_ssr in reference namelist :  
    183176      READ  ( numnam_ref, namsbc_ssr, IOSTAT = ios, ERR = 901) 
    184177901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc_ssr in reference namelist' ) 
    185178 
    186       REWIND( numnam_cfg )              ! Namelist namsbc_ssr in configuration namelist : 
    187179      READ  ( numnam_cfg, namsbc_ssr, IOSTAT = ios, ERR = 902 ) 
    188180902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namsbc_ssr in configuration namelist' ) 
Note: See TracChangeset for help on using the changeset viewer.