- Timestamp:
- 2015-11-13T08:01:08+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90
r5845 r5883 12 12 13 13 !!---------------------------------------------------------------------- 14 !! tra_bbc : update the tracer trend at ocean bottom15 !! tra_bbc_init : initialization of geothermal heat flux trend14 !! tra_bbc : update the tracer trend at ocean bottom 15 !! tra_bbc_init : initialization of geothermal heat flux trend 16 16 !!---------------------------------------------------------------------- 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 30 31 31 32 IMPLICIT NONE … … 42 43 REAL(wp), PUBLIC , ALLOCATABLE, DIMENSION(:,:) :: qgh_trd0 ! geothermal heating trend 43 44 44 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_qgh 45 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_qgh ! structure of input qgh (file informations, fields read) 45 46 46 47 !!---------------------------------------------------------------------- … … 67 68 !! Where Qsf is the geothermal heat flux. 68 69 !! 69 !! ** Action : - update the temperature trends (ta) with the trend of70 !! the ocean bottom boundary condition70 !! ** Action : - update the temperature trends with geothermal heating trend 71 !! - send the trend for further diagnostics (ln_trdtra=T) 71 72 !! 72 73 !! References : Stein, C. A., and S. Stein, 1992, Nature, 359, 123-129. … … 74 75 !!---------------------------------------------------------------------- 75 76 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 79 79 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt 80 80 !!---------------------------------------------------------------------- … … 82 82 IF( nn_timing == 1 ) CALL timing_start('tra_bbc') 83 83 ! 84 IF( l_trdtra ) THEN ! Save t a and sa trends85 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 ) 86 86 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 87 87 ENDIF 88 ! 89 ! ! Add the geothermal heat flux trend on temperature 88 ! ! Add the geothermal trend on temperature 90 89 DO jj = 2, jpjm1 91 90 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)) 95 92 END DO 96 93 END DO … … 98 95 CALL lbc_lnk( tsa(:,:,:,jp_tem) , 'T', 1. ) 99 96 ! 100 IF( l_trdtra ) THEN ! S ave the geothermal heat fluxtrend for diagnostics97 IF( l_trdtra ) THEN ! Send the trend for diagnostics 101 98 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 102 99 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 ) 104 101 ENDIF 105 102 ! … … 126 123 !! ** Action : - read/fix the geothermal heat qgh_trd0 127 124 !!---------------------------------------------------------------------- 128 USE iom129 !!130 125 INTEGER :: ji, jj ! dummy loop indices 131 126 INTEGER :: inum ! temporary logical unit … … 138 133 NAMELIST/nambbc/ln_trabbc, nn_geoflx, rn_geoflx_cst, sn_qgh, cn_dir 139 134 !!---------------------------------------------------------------------- 140 135 ! 141 136 REWIND( numnam_ref ) ! Namelist nambbc in reference namelist : Bottom momentum boundary condition 142 137 READ ( numnam_ref, nambbc, IOSTAT = ios, ERR = 901) 143 138 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambbc in reference namelist', lwp ) 144 139 ! 145 140 REWIND( numnam_cfg ) ! Namelist nambbc in configuration namelist : Bottom momentum boundary condition 146 141 READ ( numnam_cfg, nambbc, IOSTAT = ios, ERR = 902 ) 147 142 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambbc in configuration namelist', lwp ) 148 143 IF(lwm) WRITE ( numond, nambbc ) 149 144 ! 150 145 IF(lwp) THEN ! Control print 151 146 WRITE(numout,*) … … 158 153 WRITE(numout,*) 159 154 ENDIF 160 155 ! 161 156 IF( ln_trabbc ) THEN !== geothermal heating ==! 162 157 ! … … 189 184 WRITE(ctmp1,*) ' bad flag value for nn_geoflx = ', nn_geoflx 190 185 CALL ctl_stop( ctmp1 ) 191 !192 186 END SELECT 193 187 !
Note: See TracChangeset
for help on using the changeset viewer.