- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/TOP/TRP/trcldf.F90
r10068 r13463 25 25 USE trdtra ! trends manager: tracers 26 26 ! 27 USE prtctl _trc! Print control27 USE prtctl ! Print control 28 28 29 29 IMPLICIT NONE … … 43 43 44 44 !! * Substitutions 45 # include "vectopt_loop_substitute.h90" 45 # include "do_loop_substitute.h90" 46 # include "domzgr_substitute.h90" 46 47 !!---------------------------------------------------------------------- 47 48 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 51 52 CONTAINS 52 53 53 SUBROUTINE trc_ldf( kt )54 SUBROUTINE trc_ldf( kt, Kbb, Kmm, ptr, Krhs ) 54 55 !!---------------------------------------------------------------------- 55 56 !! *** ROUTINE tra_ldf *** … … 58 59 !! 59 60 !!---------------------------------------------------------------------- 60 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 INTEGER, INTENT(in ) :: kt ! ocean time-step index 62 INTEGER, INTENT(in ) :: Kbb, Kmm, Krhs ! ocean time-level index 63 REAL(wp), DIMENSION(jpi,jpj,jpk,jptra,jpt), INTENT(inout) :: ptr ! passive tracers and RHS of tracer equation 61 64 ! 62 65 INTEGER :: ji, jj, jk, jn 63 66 REAL(wp) :: zdep 64 67 CHARACTER (len=22) :: charout 65 REAL(wp), DIMENSION(jpi,jpj,jpk):: zahu, zahv66 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrtrd68 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zahu, zahv 69 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrtrd 67 70 !!---------------------------------------------------------------------- 68 71 ! … … 73 76 IF( l_trdtrc ) THEN 74 77 ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) ) 75 ztrtrd(:,:,:,:) = tra(:,:,:,:)78 ztrtrd(:,:,:,:) = ptr(:,:,:,:,Krhs) 76 79 ENDIF 77 80 ! !* set the lateral diffusivity coef. for passive tracer … … 79 82 zahv(:,:,:) = rldf * ahtv(:,:,:) 80 83 ! !* Enhanced zonal diffusivity coefficent in the equatorial domain 81 DO jk= 1, jpk 82 DO jj = 1, jpj 83 DO ji = 1, jpi 84 IF( gdept_n(ji,jj,jk) > 200. .AND. gphit(ji,jj) < 5. .AND. gphit(ji,jj) > -5. ) THEN 85 zdep = MAX( gdept_n(ji,jj,jk) - 1000., 0. ) / 1000. 86 zahu(ji,jj,jk) = zahu(ji,jj,jk) * MAX( 1., rn_fact_lap * EXP( -zdep ) ) 87 ENDIF 88 END DO 89 END DO 90 END DO 84 DO_3D( 1, 1, 1, 1, 1, jpk ) 85 IF( gdept(ji,jj,jk,Kmm) > 200. .AND. gphit(ji,jj) < 5. .AND. gphit(ji,jj) > -5. ) THEN 86 zdep = MAX( gdept(ji,jj,jk,Kmm) - 1000., 0. ) / 1000. 87 zahu(ji,jj,jk) = zahu(ji,jj,jk) * MAX( 1., rn_fact_lap * EXP( -zdep ) ) 88 ENDIF 89 END_3D 91 90 ! 92 91 SELECT CASE ( nldf_trc ) !* compute lateral mixing trend and add it to the general trend 93 92 ! 94 CASE ( np_lap ) ! iso-level laplacian 95 CALL tra_ldf_lap ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb, tra, jptra, 1 ) 96 CASE ( np_lap_i ) ! laplacian : standard iso-neutral operator (Madec) 97 CALL tra_ldf_iso ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb, trb, tra, jptra, 1 ) 98 CASE ( np_lap_it ) ! laplacian : triad iso-neutral operator (griffies) 99 CALL tra_ldf_triad( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb, trb, tra, jptra, 1 ) 100 CASE ( np_blp , np_blp_i , np_blp_it ) ! bilaplacian: all operator (iso-level, -neutral) 101 CALL tra_ldf_blp ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb , tra, jptra, nldf_trc ) 93 CASE ( np_lap ) ! iso-level laplacian 94 CALL tra_ldf_lap ( kt, Kmm, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, & 95 & ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Krhs), jptra, 1 ) 96 CASE ( np_lap_i ) ! laplacian : standard iso-neutral operator (Madec) 97 CALL tra_ldf_iso ( kt, Kmm, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, & 98 & ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Krhs), jptra, 1 ) 99 CASE ( np_lap_it ) ! laplacian : triad iso-neutral operator (griffies) 100 CALL tra_ldf_triad( kt, Kmm, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, & 101 & ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Kbb), ptr(:,:,:,:,Krhs), jptra, 1 ) 102 CASE ( np_blp , np_blp_i , np_blp_it ) ! bilaplacian: all operator (iso-level, -neutral) 103 CALL tra_ldf_blp ( kt, Kmm, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, & 104 & ptr(:,:,:,:,Kbb) , ptr(:,:,:,:,Krhs), jptra, nldf_trc ) 102 105 END SELECT 103 106 ! 104 107 IF( l_trdtrc ) THEN ! send the trends for further diagnostics 105 108 DO jn = 1, jptra 106 ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn)107 CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) )109 ztrtrd(:,:,:,jn) = ptr(:,:,:,jn,Krhs) - ztrtrd(:,:,:,jn) 110 CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 108 111 END DO 109 112 DEALLOCATE( ztrtrd ) 110 113 ENDIF 111 114 ! 112 IF( ln_ctl ) THEN! print mean trends (used for debugging)115 IF( sn_cfctl%l_prttrc ) THEN ! print mean trends (used for debugging) 113 116 WRITE(charout, FMT="('ldf ')") 114 CALL prt_ctl_ trc_info(charout)115 CALL prt_ctl _trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )117 CALL prt_ctl_info( charout, cdcomp = 'top' ) 118 CALL prt_ctl( tab4d_1=ptr(:,:,:,:,Krhs), mask1=tmask, clinfo=ctrcnm, clinfo3='trd' ) 116 119 ENDIF 117 120 ! … … 143 146 ENDIF 144 147 ! 145 REWIND( numnat_ref ) ! namtrc_ldf in reference namelist146 148 READ ( numnat_ref, namtrc_ldf, IOSTAT = ios, ERR = 903) 147 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in reference namelist' , lwp)149 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in reference namelist' ) 148 150 ! 149 REWIND( numnat_cfg ) ! namtrc_ldf in configuration namelist150 151 READ ( numnat_cfg, namtrc_ldf, IOSTAT = ios, ERR = 904 ) 151 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in configuration namelist' , lwp)152 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in configuration namelist' ) 152 153 IF(lwm) WRITE ( numont, namtrc_ldf ) 153 154 ! … … 167 168 IF( ln_trcldf_OFF ) THEN ; nldf_trc = np_no_ldf ; ioptio = ioptio + 1 ; ENDIF 168 169 IF( ln_trcldf_tra ) THEN ; nldf_trc = nldf_tra ; ioptio = ioptio + 1 ; ENDIF 169 IF( ioptio /= 1 ) CALL ctl_stop( 'trc_ldf_ini: use ONE of the 2 operator options ( NONE/tra)' )170 IF( ioptio /= 1 ) CALL ctl_stop( 'trc_ldf_ini: use ONE of the 2 operator options (OFF/tra)' ) 170 171 171 172 ! ! multiplier : passive/active tracers ration
Note: See TracChangeset
for help on using the changeset viewer.