- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/TRA/trabbc.F90
r12178 r12928 44 44 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_qgh ! structure of input qgh (file informations, fields read) 45 45 46 !! * Substitutions 47 # include "do_loop_substitute.h90" 46 48 !!---------------------------------------------------------------------- 47 49 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 51 53 CONTAINS 52 54 53 SUBROUTINE tra_bbc( kt )55 SUBROUTINE tra_bbc( kt, Kmm, pts, Krhs ) 54 56 !!---------------------------------------------------------------------- 55 57 !! *** ROUTINE tra_bbc *** … … 64 66 !! ocean bottom can be computed once and is added to the temperature 65 67 !! trend juste above the bottom at each time step: 66 !! ta = ta + Qsf / (r au0 rcp e3T) for k= mbkt68 !! ta = ta + Qsf / (rho0 rcp e3T) for k= mbkt 67 69 !! Where Qsf is the geothermal heat flux. 68 70 !! … … 73 75 !! Emile-Geay and Madec, 2009, Ocean Science. 74 76 !!---------------------------------------------------------------------- 75 INTEGER, INTENT(in) :: kt ! ocean time-step index 77 INTEGER, INTENT(in ) :: kt ! ocean time-step index 78 INTEGER, INTENT(in ) :: Kmm, Krhs ! time level indices 79 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 76 80 ! 77 81 INTEGER :: ji, jj ! dummy loop indices … … 83 87 IF( l_trdtra ) THEN ! Save the input temperature trend 84 88 ALLOCATE( ztrdt(jpi,jpj,jpk) ) 85 ztrdt(:,:,:) = tsa(:,:,:,jp_tem)89 ztrdt(:,:,:) = pts(:,:,:,jp_tem,Krhs) 86 90 ENDIF 87 91 ! ! Add the geothermal trend on temperature 88 DO jj = 2, jpjm1 89 DO ji = 2, jpim1 90 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)) 91 END DO 92 END DO 92 DO_2D_00_00 93 pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) = pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) + qgh_trd0(ji,jj) / e3t(ji,jj,mbkt(ji,jj),Kmm) 94 END_2D 93 95 ! 94 CALL lbc_lnk( 'trabbc', tsa(:,:,:,jp_tem) , 'T', 1. )96 CALL lbc_lnk( 'trabbc', pts(:,:,:,jp_tem,Krhs) , 'T', 1. ) 95 97 ! 96 98 IF( l_trdtra ) THEN ! Send the trend for diagnostics 97 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:)98 CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt )99 ztrdt(:,:,:) = pts(:,:,:,jp_tem,Krhs) - ztrdt(:,:,:) 100 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_bbc, ztrdt ) 99 101 DEALLOCATE( ztrdt ) 100 102 ENDIF 101 103 ! 102 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbc - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 104 CALL iom_put ( "hfgeou" , rho0_rcp * qgh_trd0(:,:) ) 105 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab3d_1=pts(:,:,:,jp_tem,Krhs), clinfo1=' bbc - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 103 106 ! 104 107 IF( ln_timing ) CALL timing_stop('tra_bbc') … … 133 136 !!---------------------------------------------------------------------- 134 137 ! 135 REWIND( numnam_ref ) ! Namelist nambbc in reference namelist : Bottom momentum boundary condition136 138 READ ( numnam_ref, nambbc, IOSTAT = ios, ERR = 901) 137 139 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambbc in reference namelist' ) 138 140 ! 139 REWIND( numnam_cfg ) ! Namelist nambbc in configuration namelist : Bottom momentum boundary condition140 141 READ ( numnam_cfg, nambbc, IOSTAT = ios, ERR = 902 ) 141 142 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambbc in configuration namelist' ) … … 161 162 CASE ( 1 ) !* constant flux 162 163 IF(lwp) WRITE(numout,*) ' ==>>> constant heat flux = ', rn_geoflx_cst 163 qgh_trd0(:,:) = r1_r au0_rcp * rn_geoflx_cst164 qgh_trd0(:,:) = r1_rho0_rcp * rn_geoflx_cst 164 165 ! 165 166 CASE ( 2 ) !* variable geothermal heat flux : read the geothermal fluxes in mW/m2 … … 178 179 179 180 CALL fld_read( nit000, 1, sf_qgh ) ! Read qgh data 180 qgh_trd0(:,:) = r1_r au0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2181 qgh_trd0(:,:) = r1_rho0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2 181 182 ! 182 183 CASE DEFAULT
Note: See TracChangeset
for help on using the changeset viewer.