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

Changeset 749 for branches


Ignore:
Timestamp:
2007-12-07T11:55:54+01:00 (16 years ago)
Author:
ctlod
Message:

transfrom nn_sss, nn_sst into nn_sssr, nn_ssstr respectively and add the unit conversion of deds factor, see ticket:#29

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_001_SBC/NEMO/OPA_SRC/SBC/sbcssr.F90

    r717 r749  
    3838 
    3939   !! * Namelist namsbc_ssr 
    40    INTEGER ::   nn_sst, nn_sss   ! SST/SSS indicator 
    41    REAL(wp) ::  dqdt  , deds     ! restoring term factor 
     40   INTEGER ::   nn_sstr, nn_sssr   ! SST/SSS indicator 
     41   REAL(wp) ::  dqdt   , deds      ! restoring term factor 
    4242 
    4343   !! * Substitutions 
     
    6161      !!              - Read observed SST and/or SSS 
    6262      !!              - at each nscb time step 
    63       !!                   add a retroaction term on qns    (nn_sst = 1) 
    64       !!                   add a damping term on emps       (nn_sss = 1) 
    65       !!                   add a damping term on emp & emps (nn_sss = 2) 
     63      !!                   add a retroaction term on qns    (nn_sstr = 1) 
     64      !!                   add a damping term on emps       (nn_sssr = 1) 
     65      !!                   add a damping term on emp & emps (nn_sssr = 2) 
    6666      !!--------------------------------------------------------------------- 
    6767      INTEGER, INTENT(in   ) ::   kt   ! ocean time step 
     
    7070      REAL(wp) ::   zerp     ! local scalar for evaporation damping 
    7171      REAL(wp) ::   zqrp     ! local scalar for heat flux damping 
     72      REAL(wp) ::   zsrp     ! local scalar for unit conversion of deds factor 
    7273      INTEGER  ::   ierror   ! return error code 
    7374      !! 
    7475      CHARACTER(len=100) ::  cn_dir          ! Root directory for location of ssr files 
    7576      TYPE(FLD_N) ::   sn_sst, sn_sss        ! informations about the fields to be read 
    76       NAMELIST/namsbc_ssr/ cn_dir, nn_sst, nn_sss, dqdt, deds, sn_sst, sn_sss 
     77      NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, dqdt, deds, sn_sst, sn_sss 
    7778      !!---------------------------------------------------------------------- 
    7879      !                                               ! -------------------- ! 
     
    8081         !                                            ! -------------------- ! 
    8182         !                         ! set file information 
    82          nn_sst = 0 
    83          nn_sss = 0 
     83         nn_sstr = 0 
     84         nn_sssr = 0 
    8485         dqdt = -40.e0 
    85          deds = -40.e0 
     86         deds = -27.70 
    8687         cn_dir = './'       ! directory in which the model is executed 
    8788         ! ... default values (NB: frequency positive => hours, negative => months) 
     
    9899            WRITE(numout,*) 'sbc_ssr : SST and/or SSS damping term ' 
    99100            WRITE(numout,*) '~~~~~~~ ' 
    100             WRITE(numout,*) '          SST restoring term (Yes=1)             nn_sst = ', nn_sst 
    101             WRITE(numout,*) '          SSS damping term (Yes=1, salt flux)    nn_sss = ', nn_sss 
     101            WRITE(numout,*) '          SST restoring term (Yes=1)             nn_sstr = ', nn_sstr 
     102            WRITE(numout,*) '          SSS damping term (Yes=1, salt flux)    nn_sssr = ', nn_sssr 
    102103            WRITE(numout,*) '                           (Yes=2, volume flux) ' 
    103             WRITE(numout,*) '          dQ/dT (restoring magnitude on SST)     dqdt     = ', dqdt, ' W/m2/K' 
    104             WRITE(numout,*) '          dE/dS (restoring magnitude on SST)     deds     = ', deds, ' ...' 
    105          ENDIF 
    106  
    107          IF( nn_sst == 1 ) THEN      ! set sf_sst structure 
     104            WRITE(numout,*) '          dQ/dT (restoring magnitude on SST)     dqdt    = ', dqdt, ' W/m2/K' 
     105            WRITE(numout,*) '          dE/dS (restoring magnitude on SST)     deds    = ', deds, ' mm/day' 
     106         ENDIF 
     107 
     108         IF( nn_sstr == 1 ) THEN      ! set sf_sst structure 
    108109            ! 
    109110            ALLOCATE( sf_sst(1), STAT=ierror ) 
     
    129130         ENDIF 
    130131         ! 
    131          IF( nn_sss == 1 ) THEN      ! set sf_sss structure 
     132         IF( nn_sssr == 1 ) THEN      ! set sf_sss structure 
    132133            ! 
    133134            ALLOCATE( sf_sss(1), STAT=ierror ) 
     
    154155         ! 
    155156         ! Initialize qrp and erp if no restoring  
    156          IF( nn_sst /= 1                  )   qrp(:,:) = 0.e0  
    157          IF( nn_sss /= 1 .OR. nn_sss /= 2 )   erp(:,:) = 0.e0  
     157         IF( nn_sstr /= 1                   )   qrp(:,:) = 0.e0  
     158         IF( nn_sssr /= 1 .OR. nn_sssr /= 2 )   erp(:,:) = 0.e0  
    158159      ENDIF 
    159160 
    160       IF( nn_sst + nn_sss /= 0 ) THEN 
    161  
    162          IF( nn_sst == 1)   CALL fld_read( kt, nn_fsbc, sf_sst )   ! Read SST data and provides it 
    163          !                                                         ! at the current time-step 
    164          IF( nn_sss == 1)   CALL fld_read( kt, nn_fsbc, sf_sss )   ! Read SSS data and provides it 
    165          !                                                         ! at the current time-step 
     161      IF( nn_sstr + nn_sssr /= 0 ) THEN 
     162 
     163         IF( nn_sstr == 1)   CALL fld_read( kt, nn_fsbc, sf_sst )   ! Read SST data and provides it 
     164         !                                                          ! at the current time-step 
     165         IF( nn_sssr == 1)   CALL fld_read( kt, nn_fsbc, sf_sss )   ! Read SSS data and provides it 
     166         !                                                          ! at the current time-step 
    166167  
    167168         !                                         ! ========================= ! 
     
    169170            !                                      ! ========================= ! 
    170171            ! 
    171             IF( nn_sst == 1 ) THEN                   ! Temperature restoring term 
     172            IF( nn_sstr == 1 ) THEN                   ! Temperature restoring term 
    172173!CDIR COLLAPSE 
    173174               ! use zqrp scalar to optimize memory access (speedup the loop) 
     
    181182            ENDIF 
    182183            ! 
    183             IF( nn_sss == 1 ) THEN                   ! Salinity damping term (salt  flux, emps only) 
     184            IF( nn_sssr == 1 ) THEN                   ! Salinity damping term (salt flux, emps only) 
    184185!CDIR COLLAPSE 
    185186               ! use zerp scalar to optimize memory access (speedup the loop) 
    186187               DO jj = 1, jpj 
    187188                  DO ji = 1, jpi 
    188                      zerp = deds * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vivinity of river mouths 
     189                     zsrp = deds / rday                               ! from [mm/day] to [kg/m2/s] 
     190                     zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    189191                        &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) )   & 
    190192                        &        / ( sss_m(ji,jj) + 1.e-20   ) 
     
    193195                  END DO 
    194196               END DO 
    195             ELSEIF( nn_sss == 2 ) THEN               ! Salinity damping term (volume flux, emp and emps) 
     197            ELSEIF( nn_sssr == 2 ) THEN               ! Salinity damping term (volume flux, emp and emps) 
    196198!CDIR COLLAPSE 
    197199               ! use zerp scalar to optimize memory access (speedup the loop) 
    198200               DO jj = 1, jpj 
    199201                  DO ji = 1, jpi                             
    200                      zerp = deds * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vivinity of river mouths 
     202                     zsrp = deds / rday                               ! from [mm/day] to [kg/m2/s] 
     203                     zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    201204                        &        * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj) )   & 
    202205                        &        / ( sss_m(ji,jj) + 1.e-20   ) 
Note: See TracChangeset for help on using the changeset viewer.