Changeset 6862 for branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC
- Timestamp:
- 2016-08-12T15:16:24+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r6140 r6862 33 33 USE trdtra 34 34 USE tranxt 35 USE bdy_oce , ONLY: ln_bdy 35 36 USE trcbdy ! BDY open boundaries 36 USE bdy_par, only: lk_bdy37 37 # if defined key_agrif 38 38 USE agrif_top_interp … … 99 99 END DO 100 100 101 IF( l k_bdy ) CALL trc_bdy( kt )101 IF( ln_bdy ) CALL trc_bdy( kt ) 102 102 103 103 ! ! set time step size (Euler/Leapfrog) -
branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
r6309 r6862 25 25 USE trcsbc ! surface boundary condition (trc_sbc routine) 26 26 USE zpshde ! partial step: hor. derivative (zps_hde routine) 27 USE bdy_oce , ONLY: ln_bdy 27 28 USE trcbdy ! BDY open boundaries 28 USE bdy_par, only: lk_bdy29 29 30 30 #if defined key_agrif … … 65 65 IF( lk_trabbl ) CALL trc_bbl ( kt ) ! advective (and/or diffusive) bottom boundary layer scheme 66 66 IF( ln_trcdmp ) CALL trc_dmp ( kt ) ! internal damping trends 67 IF( l k_bdy ) CALL trc_bdy_dmp( kt ) ! BDY damping trends67 IF( ln_bdy ) CALL trc_bdy_dmp( kt ) ! BDY damping trends 68 68 CALL trc_adv ( kt ) ! horizontal & vertical advection 69 69 ! ! Partial top/bottom cell: GRADh( trb ) -
branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC/trc.F90
r6140 r6862 14 14 USE par_oce 15 15 USE par_trc 16 #if defined key_bdy 17 USE bdy_oce, only: nb_bdy, OBC_DATA 18 #endif 16 USE bdy_oce, only: ln_bdy, nb_bdy, OBC_DATA 19 17 20 18 IMPLICIT NONE … … 189 187 # endif 190 188 ! 191 #if defined key_bdy192 189 CHARACTER(len=20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: cn_trc_dflt ! Default OBC condition for all tracers 193 190 CHARACTER(len=20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: cn_trc ! Choice of boundary condition for tracers … … 195 192 ! External data structure of BDY for TOP. Available elements: cn_obc, ll_trc, trcnow, dmp 196 193 TYPE(OBC_DATA), PUBLIC, ALLOCATABLE, DIMENSION(:,:), TARGET :: trcdta_bdy !: bdy external data (local process) 197 #endif198 194 ! 199 195 … … 210 206 !!------------------------------------------------------------------- 211 207 USE lib_mpp, ONLY: ctl_warn 208 INTEGER :: ierr(2) 212 209 !!------------------------------------------------------------------- 213 210 ! 211 ierr(:) = 0 214 212 ALLOCATE( trn(jpi,jpj,jpk,jptra), trb(jpi,jpj,jpk,jptra), tra(jpi,jpj,jpk,jptra), & 215 213 & trc_i(jpi,jpj,jptra) , trc_o(jpi,jpj,jptra) , & … … 223 221 & ln_trc_sbc(jptra) , ln_trc_cbc(jptra) , ln_trc_obc(jptra) , & 224 222 #endif 225 #if defined key_bdy 226 & cn_trc_dflt(nb_bdy) , cn_trc(nb_bdy) , nn_trcdmp_bdy(nb_bdy) , & 223 & STAT = ierr(1) ) 224 225 IF ( ln_bdy ) THEN 226 ALLOCATE( cn_trc_dflt(nb_bdy) , cn_trc(nb_bdy) , nn_trcdmp_bdy(nb_bdy) , & 227 227 & trcdta_bdy(jptra,nb_bdy) , & 228 #endif 229 & STAT = trc_alloc ) 228 & STAT = ierr(2) ) 229 ENDIF 230 ! 231 trc_alloc = MAXVAL( ierr ) 230 232 231 233 IF( trc_alloc /= 0 ) CALL ctl_warn('trc_alloc: failed to allocate arrays') -
branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC/trcbc.F90
r6140 r6862 19 19 USE lib_mpp ! MPP library 20 20 USE fldread ! read input fields 21 #if defined key_bdy 22 USE bdy_oce, only: nb_bdy , idx_bdy, ln_coords_file, rn_time_dmp, rn_time_dmp_out 23 #endif 21 USE bdy_oce, ONLY: ln_bdy, nb_bdy , idx_bdy, ln_coords_file, rn_time_dmp, rn_time_dmp_out 24 22 25 23 IMPLICIT NONE … … 78 76 !! 79 77 NAMELIST/namtrc_bc/ cn_dir_sbc, cn_dir_cbc, cn_dir_obc, sn_trcobc, rn_trofac, sn_trcsbc, rn_trsfac, sn_trccbc, rn_trcfac 80 #if defined key_bdy81 78 NAMELIST/namtrc_bdy/ cn_trc_dflt, cn_trc, nn_trcdmp_bdy 82 #endif 79 83 80 !!---------------------------------------------------------------------- 84 81 IF( nn_timing == 1 ) CALL timing_start('trc_bc_init') … … 128 125 IF(lwm) WRITE ( numont, namtrc_bc ) 129 126 130 #if defined key_bdy 131 REWIND( numnat_ref ) ! Namelist namtrc_bc in reference namelist : Passive tracer data structure 132 READ ( numnat_ref, namtrc_bdy, IOSTAT = ios, ERR = 903) 133 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in reference namelist', lwp ) 134 135 REWIND( numnat_cfg ) ! Namelist namtrc_bc in configuration namelist : Passive tracer data structure 136 READ ( numnat_cfg, namtrc_bdy, IOSTAT = ios, ERR = 904 ) 137 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in configuration namelist', lwp ) 138 IF(lwm) WRITE ( numont, namtrc_bdy ) 139 ! setup up preliminary informations for BDY structure 140 DO jn = 1, ntrc 141 DO ib = 1, nb_bdy 142 ! Set type of obc in BDY data structure (around here we may plug user override of obc type from nml) 143 IF ( ln_trc_obc(jn) ) THEN 144 trcdta_bdy(jn,ib)%cn_obc = TRIM( cn_trc(ib) ) 145 ELSE 146 trcdta_bdy(jn,ib)%cn_obc = TRIM( cn_trc_dflt(ib) ) 147 ENDIF 148 ! set damping use in BDY data structure 149 trcdta_bdy(jn,ib)%dmp = .false. 150 IF(nn_trcdmp_bdy(ib) .EQ. 1 .AND. ln_trc_obc(jn) ) trcdta_bdy(jn,ib)%dmp = .true. 151 IF(nn_trcdmp_bdy(ib) .EQ. 2 ) trcdta_bdy(jn,ib)%dmp = .true. 152 IF(trcdta_bdy(jn,ib)%cn_obc == 'frs' .AND. nn_trcdmp_bdy(ib) .NE. 0 ) & 153 & CALL ctl_stop( 'Use FRS OR relaxation' ) 154 IF (nn_trcdmp_bdy(ib) .LT. 0 .OR. nn_trcdmp_bdy(ib) .GT. 2) & 155 & CALL ctl_stop( 'Not a valid option for nn_trcdmp_bdy. Allowed: 0,1,2.' ) 127 IF ( ln_bdy ) THEN 128 REWIND( numnat_ref ) ! Namelist namtrc_bdy in reference namelist : Passive tracer data structure 129 READ ( numnat_ref, namtrc_bdy, IOSTAT = ios, ERR = 903) 130 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in reference namelist', lwp ) 131 132 REWIND( numnat_cfg ) ! Namelist namtrc_bdy in configuration namelist : Passive tracer data structure 133 READ ( numnat_cfg, namtrc_bdy, IOSTAT = ios, ERR = 904 ) 134 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in configuration namelist', lwp ) 135 IF(lwm) WRITE ( numont, namtrc_bdy ) 136 137 ! setup up preliminary informations for BDY structure 138 DO jn = 1, ntrc 139 DO ib = 1, nb_bdy 140 ! Set type of obc in BDY data structure (around here we may plug user override of obc type from nml) 141 IF ( ln_trc_obc(jn) ) THEN 142 trcdta_bdy(jn,ib)%cn_obc = TRIM( cn_trc(ib) ) 143 ELSE 144 trcdta_bdy(jn,ib)%cn_obc = TRIM( cn_trc_dflt(ib) ) 145 ENDIF 146 ! set damping use in BDY data structure 147 trcdta_bdy(jn,ib)%dmp = .false. 148 IF(nn_trcdmp_bdy(ib) .EQ. 1 .AND. ln_trc_obc(jn) ) trcdta_bdy(jn,ib)%dmp = .true. 149 IF(nn_trcdmp_bdy(ib) .EQ. 2 ) trcdta_bdy(jn,ib)%dmp = .true. 150 IF(trcdta_bdy(jn,ib)%cn_obc == 'frs' .AND. nn_trcdmp_bdy(ib) .NE. 0 ) & 151 & CALL ctl_stop( 'Use FRS OR relaxation' ) 152 IF (nn_trcdmp_bdy(ib) .LT. 0 .OR. nn_trcdmp_bdy(ib) .GT. 2) & 153 & CALL ctl_stop( 'Not a valid option for nn_trcdmp_bdy. Allowed: 0,1,2.' ) 154 ENDDO 156 155 ENDDO 157 ENDDO 158 159 #else 160 ! Force all tracers OBC to false if bdy not used 161 ln_trc_obc = .false. 162 #endif 156 ELSE 157 ! Force all tracers OBC to false if bdy not used 158 ln_trc_obc = .false. 159 ENDIF 160 163 161 ! compose BC data indexes 164 162 DO jn = 1, ntrc … … 198 196 WRITE(numout,*) ' ' 199 197 WRITE(numout,'(a,i3)') ' Total tracers to be initialized with OPEN BCs data:', nb_trcobc 200 #if defined key_bdy 201 IF ( nb_trcobc > 0 ) THEN198 199 IF ( ln_bdy .AND. nb_trcobc > 0 ) THEN 202 200 WRITE(numout,*) ' #trc NAME Boundary Mult.Fact. OBC Settings' 203 201 DO jn = 1, ntrc … … 217 215 ENDDO 218 216 ENDIF 219 #endif 217 220 218 WRITE(numout,'(2a)') ' OPEN BC data repository : ', TRIM(cn_dir_obc) 221 219 ENDIF … … 225 223 226 224 ! 227 #if defined key_bdy228 225 ! OPEN Lateral boundary conditions 229 IF( nb_trcobc > 0 ) THEN226 IF( ln_bdy .AND. nb_trcobc > 0 ) THEN 230 227 ALLOCATE ( sf_trcobc(nb_trcobc), rf_trofac(nb_trcobc), nbmap_ptr(nb_trcobc), STAT=ierr1 ) 231 228 IF( ierr1 > 0 ) THEN … … 272 269 CALL fld_fill( sf_trcobc, slf_i, cn_dir_obc, 'trc_bc_init', 'Passive tracer OBC data', 'namtrc_bc' ) 273 270 ENDIF 274 #endif 271 275 272 ! SURFACE Boundary conditions 276 273 IF( nb_trcsbc > 0 ) THEN ! allocate only if the number of tracer to initialise is greater than zero -
branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC/trcbdy.F90
r6140 r6862 10 10 !! 3.6 ! 2015 (T. Lovato) Adapt BDY for tracers in TOP component 11 11 !!---------------------------------------------------------------------- 12 #if defined key_bdy && key_top 13 !!---------------------------------------------------------------------- 14 !! 'key_bdy' Unstructured Open Boundary Conditions 12 #if defined key_top 15 13 !!---------------------------------------------------------------------- 16 14 !! trc_bdy : Apply open boundary conditions to T and S … … 24 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 23 USE in_out_manager ! I/O manager 26 USE bdy_oce, only: idx_bdy, OBC_INDEX, BDYTMASK, l k_bdy ! ocean open boundary conditions24 USE bdy_oce, only: idx_bdy, OBC_INDEX, BDYTMASK, ln_bdy ! ocean open boundary conditions 27 25 28 26 IMPLICIT NONE -
branches/2016/dev_r6522_SIMPLIF_3/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r6140 r6862 20 20 #endif 21 21 #if defined key_zdfgls 22 USE zdfgls , ONLY: en22 USE zdfgls , ONLY: en 23 23 #endif 24 24 USE trabbl … … 26 26 USE domvvl 27 27 USE divhor ! horizontal divergence (div_hor routine) 28 USE sbcrnf , ONLY: h_rnf, nk_rnf ! River runoff29 USE bdy_oce 28 USE sbcrnf , ONLY: h_rnf, nk_rnf ! River runoff 29 USE bdy_oce , ONLY: ln_bdy, bdytmask ! BDY 30 30 #if defined key_agrif 31 31 USE agrif_opa_update … … 505 505 CALL agrif_ssh( kt ) 506 506 #endif 507 #if defined key_bdy 508 ssha(:,:) = ssha(:,:) * bdytmask(:,:)509 CALL lbc_lnk( ssha, 'T', 1. )510 #endif 507 IF( ln_bdy ) THEN 508 ssha(:,:) = ssha(:,:) * bdytmask(:,:) 509 CALL lbc_lnk( ssha, 'T', 1. ) 510 ENDIF 511 511 #endif 512 512 ! … … 520 520 & - ( e3t_a(:,:,jk) - e3t_b(:,:,jk) ) & 521 521 & * tmask(:,:,jk) * z1_2dt 522 #if defined key_bdy 523 wn(:,:,jk) = wn(:,:,jk) * bdytmask(:,:) 524 #endif 522 IF( ln_bdy ) wn(:,:,jk) = wn(:,:,jk) * bdytmask(:,:) 525 523 END DO 526 524 !
Note: See TracChangeset
for help on using the changeset viewer.