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 5883 for branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90 – NEMO

Ignore:
Timestamp:
2015-11-13T08:01:08+01:00 (8 years ago)
Author:
gm
Message:

#1613: vvl by default: TRA/TRC remove optimization associated with linear free surface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90

    r5845 r5883  
    1212 
    1313   !!---------------------------------------------------------------------- 
    14    !!   tra_bbc      : update the tracer trend at ocean bottom  
    15    !!   tra_bbc_init : initialization of geothermal heat flux trend 
     14   !!   tra_bbc       : update the tracer trend at ocean bottom  
     15   !!   tra_bbc_init  : initialization of geothermal heat flux trend 
    1616   !!---------------------------------------------------------------------- 
    17    USE oce             ! ocean variables 
    18    USE dom_oce         ! domain: ocean 
    19    USE phycst          ! physical constants 
    20    USE trd_oce         ! trends: ocean variables 
    21    USE trdtra          ! trends manager: tracers  
    22    USE in_out_manager  ! I/O manager 
    23    USE iom             ! I/O manager 
    24    USE fldread         ! read input fields 
    25    USE lbclnk            ! ocean lateral boundary conditions (or mpp link) 
    26    USE lib_mpp           ! distributed memory computing library 
    27    USE prtctl          ! Print control 
    28    USE wrk_nemo        ! Memory Allocation 
    29    USE timing          ! Timing 
     17   USE oce            ! ocean variables 
     18   USE dom_oce        ! domain: ocean 
     19   USE phycst         ! physical constants 
     20   USE trd_oce        ! trends: ocean variables 
     21   USE trdtra         ! trends manager: tracers  
     22   ! 
     23   USE in_out_manager ! I/O manager 
     24   USE iom            ! xIOS  
     25   USE fldread        ! read input fields 
     26   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     27   USE lib_mpp        ! distributed memory computing library 
     28   USE prtctl         ! Print control 
     29   USE wrk_nemo       ! Memory Allocation 
     30   USE timing         ! Timing 
    3031 
    3132   IMPLICIT NONE 
     
    4243   REAL(wp), PUBLIC , ALLOCATABLE, DIMENSION(:,:) ::   qgh_trd0   ! geothermal heating trend 
    4344 
    44    TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_qgh              ! structure of input qgh (file informations, fields read) 
     45   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_qgh   ! structure of input qgh (file informations, fields read) 
    4546  
    4647   !!---------------------------------------------------------------------- 
     
    6768      !!       Where Qsf is the geothermal heat flux. 
    6869      !! 
    69       !! ** Action  : - update the temperature trends (ta) with the trend of 
    70       !!                the ocean bottom boundary condition 
     70      !! ** Action  : - update the temperature trends with geothermal heating trend 
     71      !!              - send the trend for further diagnostics (ln_trdtra=T) 
    7172      !! 
    7273      !! References : Stein, C. A., and S. Stein, 1992, Nature, 359, 123-129. 
     
    7475      !!---------------------------------------------------------------------- 
    7576      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    76       !! 
    77       INTEGER  ::   ji, jj, ik    ! dummy loop indices 
    78       REAL(wp) ::   zqgh_trd      ! geothermal heat flux trend 
     77      ! 
     78      INTEGER  ::   ji, jj    ! dummy loop indices 
    7979      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt 
    8080      !!---------------------------------------------------------------------- 
     
    8282      IF( nn_timing == 1 )  CALL timing_start('tra_bbc') 
    8383      ! 
    84       IF( l_trdtra )   THEN         ! Save ta and sa trends 
    85          CALL wrk_alloc( jpi, jpj, jpk, ztrdt ) 
     84      IF( l_trdtra )   THEN         ! Save the input temperature trend 
     85         CALL wrk_alloc( jpi,jpj,jpk,  ztrdt ) 
    8686         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    8787      ENDIF 
    88       ! 
    89       !                             !  Add the geothermal heat flux trend on temperature 
     88      !                             !  Add the geothermal trend on temperature 
    9089      DO jj = 2, jpjm1 
    9190         DO ji = 2, jpim1 
    92             ik = mbkt(ji,jj) 
    93             zqgh_trd = qgh_trd0(ji,jj) / e3t_n(ji,jj,ik) 
    94             tsa(ji,jj,ik,jp_tem) = tsa(ji,jj,ik,jp_tem) + zqgh_trd 
     91            tsa(ji,jj,mbkt(ji,jj),jp_tem) = tsa(ji,jj,mbkt(ji,jj),jp_tem) + qgh_trd0(ji,jj) / e3t_n(ji,jj,mbkt(ji,jj)) 
    9592         END DO 
    9693      END DO 
     
    9895      CALL lbc_lnk( tsa(:,:,:,jp_tem) , 'T', 1. ) 
    9996      ! 
    100       IF( l_trdtra ) THEN        ! Save the geothermal heat flux trend for diagnostics 
     97      IF( l_trdtra ) THEN        ! Send the trend for diagnostics 
    10198         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    10299         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt ) 
    103          CALL wrk_dealloc( jpi, jpj, jpk, ztrdt ) 
     100         CALL wrk_dealloc( jpi,jpj,jpk,  ztrdt ) 
    104101      ENDIF 
    105102      ! 
     
    126123      !! ** Action  : - read/fix the geothermal heat qgh_trd0 
    127124      !!---------------------------------------------------------------------- 
    128       USE iom 
    129       !! 
    130125      INTEGER  ::   ji, jj              ! dummy loop indices 
    131126      INTEGER  ::   inum                ! temporary logical unit 
     
    138133      NAMELIST/nambbc/ln_trabbc, nn_geoflx, rn_geoflx_cst, sn_qgh, cn_dir  
    139134      !!---------------------------------------------------------------------- 
    140  
     135      ! 
    141136      REWIND( numnam_ref )              ! Namelist nambbc in reference namelist : Bottom momentum boundary condition 
    142137      READ  ( numnam_ref, nambbc, IOSTAT = ios, ERR = 901) 
    143138901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambbc in reference namelist', lwp ) 
    144  
     139      ! 
    145140      REWIND( numnam_cfg )              ! Namelist nambbc in configuration namelist : Bottom momentum boundary condition 
    146141      READ  ( numnam_cfg, nambbc, IOSTAT = ios, ERR = 902 ) 
    147142902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambbc in configuration namelist', lwp ) 
    148143      IF(lwm) WRITE ( numond, nambbc ) 
    149  
     144      ! 
    150145      IF(lwp) THEN                     ! Control print 
    151146         WRITE(numout,*) 
     
    158153         WRITE(numout,*) 
    159154      ENDIF 
    160  
     155      ! 
    161156      IF( ln_trabbc ) THEN             !==  geothermal heating  ==! 
    162157         ! 
     
    189184            WRITE(ctmp1,*) '     bad flag value for nn_geoflx = ', nn_geoflx 
    190185            CALL ctl_stop( ctmp1 ) 
    191             ! 
    192186         END SELECT 
    193187         ! 
Note: See TracChangeset for help on using the changeset viewer.