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

Changeset 2127 for branches


Ignore:
Timestamp:
2010-09-28T13:54:33+02:00 (14 years ago)
Author:
rfurner
Message:

Changes to trasbc, rnf effects now dealt with correctly

Location:
branches/DEV_R1821_Rivers/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_R1821_Rivers/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r2118 r2127  
    8484      !! 
    8585      INTEGER  ::   ji, jj   ! dummy loop indices 
    86       INTEGER  ::   ierror   ! temporary integer 
    8786      !!---------------------------------------------------------------------- 
    8887      !                                    
     
    120119               rnf_tmp(:,:) = ( sf_tmp_rnf(1)%fnow(:,:) )   
    121120            ELSE   
    122                rnf_sal(:,:) = 0   
     121               rnf_sal(:,:) = 0.0 
    123122               rnf_tmp(:,:) = -999   
    124123            ENDIF   
     
    142141      !!---------------------------------------------------------------------- 
    143142      CHARACTER(len=32) ::   rn_dep_file   ! runoff file name   
     143      INTEGER  ::   ierror   ! temporary integer 
    144144      !!  
    145145      NAMELIST/namsbc_rnf/ cn_dir, ln_rnf_emp, sn_rnf, sn_cnf, sn_sal_rnf, sn_tmp_rnf, sn_dep_rnf,   &   
  • branches/DEV_R1821_Rivers/NEMO/OPA_SRC/TRA/trasbc.F90

    r2101 r2127  
    149149      END DO 
    150150 
    151       IF ( ln_rnf .AND. ln_rnf_att ) THEN   
    152       ! Concentration / dilution effect on (t,s) due to river runoff   
     151      IF ( ln_rnf ) THEN   
     152 
     153      ! Effect on (t,s) due to river runoff (dilution effect automatically applied via vertical tracer advection)  
    153154        DO jj=1,jpj   
    154155           DO ji=1,jpi   
    155156              zdep = 1. / rnf_dep(ji,jj)   
    156157              zse3t= 1. / fse3t(ji,jj,1)   
    157               IF ( rnf_tmp(ji,jj) == -999 )   rnf_tmp(ji,jj)=tn(ji,jj,1)        ! if not specified set runoff temp to be sst   
    158    
    159               IF ( rnf(ji,jj) .gt. 0.0 ) THEN   
    160    
    161                 IF( lk_vvl) THEN   
    162                   !!!indirect flux, concentration or dilution effect   
    163                   !!!force a dilution effect in all levels;   
    164                   zdheat=0.0   
    165                   zdsalt=0.0   
    166                   DO jk=1, rnf_mod_dep(ji,jj)   
    167                     zta = -tn(ji,jj,jk) * rnf(ji,jj) * zsrau * zdep   
    168                     zsa = -sn(ji,jj,jk) * rnf(ji,jj) * zsrau * zdep   
    169                     ta(ji,jj,jk)=ta(ji,jj,jk)+zta   
    170                     sa(ji,jj,jk)=sa(ji,jj,jk)+zsa   
    171                     zdheat=zdheat+zta*fse3t(ji,jj,jk)   
    172                     zdsalt=zdsalt+zsa*fse3t(ji,jj,jk)   
    173                   ENDDO   
    174                   !!!negate this total change in heat and salt content from top level   
    175                   zta=-zdheat*zse3t   
    176                   zsa=-zdsalt*zse3t   
    177                   ta(ji,jj,1)=ta(ji,jj,1)+zta   
    178                   sa(ji,jj,1)=sa(ji,jj,1)+zsa   
    179      
    180                   !!!direct flux   
    181                   zta = rnf_tmp(ji,jj) * rnf(ji,jj) * zsrau * zdep   
    182                   zsa = rnf_sal(ji,jj) * rnf(ji,jj) * zsrau * zdep   
    183      
    184                   DO jk=1, rnf_mod_dep(ji,jj)   
    185                     ta(ji,jj,jk) = ta(ji,jj,jk) + zta   
    186                     sa(ji,jj,jk) = sa(ji,jj,jk) + zsa   
    187                   ENDDO   
    188     
    189                 ELSE   
    190                   DO jk=1, rnf_mod_dep(ji,jj)   
    191                     zta = ( rnf_tmp(ji,jj)-tn(ji,jj,jk) ) * rnf(ji,jj) * zsrau * zdep   
    192                     zsa = ( rnf_sal(ji,jj)-sn(ji,jj,jk) ) * rnf(ji,jj) * zsrau * zdep   
    193                     ta(ji,jj,jk) = ta(ji,jj,jk) + zta   
    194                     sa(ji,jj,jk) = sa(ji,jj,jk) + zsa   
    195                   ENDDO   
    196                 ENDIF   
    197    
    198               ELSEIF (rnf(ji,jj) .lt. 0.) THEN   !! for use in baltic when flow is out of domain, want no change in temp and sal   
    199    
    200                 IF( lk_vvl) THEN   
    201                   !calculate automatic adjustment to sal and temp due to dilution/concentraion effect    
    202                   zata = tn(ji,jj,1) * rnf(ji,jj) * zsrau * zse3t   
    203                   zasa = sn(ji,jj,1) * rnf(ji,jj) * zsrau * zse3t   
    204                   ta(ji,jj,1)=ta(ji,jj,1) + zata   
    205                   sa(ji,jj,1)=sa(ji,jj,1) + zasa   
    206                 ENDIF   
    207    
    208               ENDIF   
    209    
     158 
     159              IF ( rnf(ji,jj) .gt. 0.0 ) THEN 
     160                 ! ammend t and s due to direct tracer flux 
     161                 IF ( rnf_tmp(ji,jj) == -999 )   rnf_tmp(ji,jj)=tn(ji,jj,1)        ! if not specified set runoff temp to be sst 
     162                 DO jk=1, rnf_mod_dep(ji,jj) 
     163                    ta(ji,jj,jk) = ta(ji,jj,jk) + rnf_tmp(ji,jj) * rnf(ji,jj) * zsrau * zdep 
     164                    sa(ji,jj,jk) = sa(ji,jj,jk) + rnf_sal(ji,jj) * rnf(ji,jj) * zsrau * zdep 
     165                 ENDDO 
     166              ELSEIF (rnf(ji,jj) .lt. 0.) THEN   !! for use in baltic when flow is out of domain, want no change in temp and sal 
     167                 ! negate concentration/dilution effect from traadv, as the tracer leaves domain 
     168                 DO jk=1, rnf_mod_dep(ji,jj) 
     169                    ta(ji,jj,jk) = ta(ji,jj,jk) + tn(ji,jj,jk) * rnf(ji,jj) * zsrau * zdep 
     170                    sa(ji,jj,jk) = sa(ji,jj,jk) + sn(ji,jj,jk) * rnf(ji,jj) * zsrau * zdep 
     171                 ENDDO 
     172              ENDIF 
     173 
    210174           ENDDO   
    211175        ENDDO   
    212176 
    213       ELSE IF( ln_rnf ) THEN 
    214  
    215       ! Concentration dilution effect on (t,s) due to runoff without temperatue, salinity and depth attributes 
    216         DO jj = 2, jpj 
    217            DO ji = fs_2, fs_jpim1   ! vector opt. 
    218 #if ! defined key_zco 
    219               zse3t = 1. / fse3t(ji,jj,1) 
    220 #endif 
    221               IF( lk_vvl) THEN 
    222                  zta =  rnf(ji,jj) * zsrau * tn(ji,jj,1) * zse3t       ! & cooling/heating effect of runoff 
    223                  zsa = 0.e0                                            ! No salinity concent./dilut. effect 
    224               ELSE 
    225                  zta =  0.0                                            ! temperature : heat flux  
    226                  zsa =  - rnf(ji,jj) * zsrau * sn(ji,jj,1) * zse3t     ! salinity :  concent./dilut. effect 
    227               ENDIF 
    228               ta(ji,jj,1) = ta(ji,jj,1) + zta                          ! add the trend to the general tracer trend 
    229               sa(ji,jj,1) = sa(ji,jj,1) + zsa 
    230            END DO 
    231         END DO 
    232   
    233177      ENDIF   
    234178 
Note: See TracChangeset for help on using the changeset viewer.