!!---------------------------------------------------------------------- !! *** ldftra_c2d.h90 *** !!---------------------------------------------------------------------- !!---------------------------------------------------------------------- !! OPA 9.0 , LOCEAN-IPSL (2005) !! $Id: ldftra_c2d.h90 1152 2008-06-26 14:11:13Z rblod $ !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt !!---------------------------------------------------------------------- SUBROUTINE ldf_tra_c2d( ld_print ) !!---------------------------------------------------------------------- !! *** ROUTINE ldftra_c2d *** !! !! ** Purpose : initializations of horizontally non uniform eddy !! diffusivity coefficients !! !! ** Method : !! biharmonic operator : ahtt = defined at T-level !! ahtu,ahtv,ahtw never used !! harmonic operator (ahtt never used) !! iso-model level : ahtu, ahtv defined at u-, v-points !! isopycnal : ahtu, ahtv, ahtw defined at u-, v-, w-pts !! or geopotential !! eddy induced velocity !! always harmonic : aeiu, aeiv, aeiw defined at u-, v-, w-pts !! !!---------------------------------------------------------------------- !! * Arguments LOGICAL, INTENT (in) :: ld_print ! If true, print arrays in numout !! * Local variables # if defined key_traldf_eiv && defined key_orca_r4 INTEGER :: ji, jj ! dummy loop indices # endif # if defined key_orca_r4 INTEGER :: i1, i2, j1, j2 # endif REAL(wp) :: za00, zdx_max !!---------------------------------------------------------------------- IF( lk_traldf_eiv ) THEN IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) ' inildf : 2D eddy diffusivity and eddy' IF(lwp) WRITE(numout,*) ' ~~~~~~ -- induced velocity coefficients' IF(lwp) WRITE(numout,*) ELSE IF(lwp) WRITE(numout,*) IF(lwp) WRITE(numout,*) ' inildf : 2D eddy diffusivity coefficient' IF(lwp) WRITE(numout,*) ' ~~~~~~ --' IF(lwp) WRITE(numout,*) ENDIF ! harmonic operator : (U-, V-, W-points) ! ================== IF( ln_traldf_lap ) THEN ahtu(:,:) = aht0 ! set ahtu = ahtv at u- and v-points, ahtv(:,:) = aht0 ! and ahtw at w-point (idem T-point) ahtw(:,:) = aht0 ! CALL lbc_lnk( ahtu, 'U', 1. ) ! Lateral boundary conditions CALL lbc_lnk( ahtv, 'V', 1. ) ! (no change of sign) CALL lbc_lnk( ahtw, 'W', 1. ) ! Control print IF( lwp .AND. ld_print ) THEN WRITE(numout,*) WRITE(numout,*) 'inildf: ahtu array' CALL prihre( ahtu, jpi, jpj, 1, jpi, 1, & & 1, jpj, 1, 1.e-3, numout ) WRITE(numout,*) WRITE(numout,*) 'inildf: ahtv array' CALL prihre( ahtv, jpi, jpj, 1, jpi, 1, & & 1, jpj, 1, 1.e-3, numout ) WRITE(numout,*) WRITE(numout,*) 'inildf: ahtw array' CALL prihre( ahtw, jpi, jpj, 1, jpi, 1, & & 1, jpj, 1, 1.e-3, numout ) ENDIF ENDIF ! biharmonic operator : (T-point) ! ==================== IF( ln_traldf_bilap ) THEN ! (USER: modify ahtt following your desiderata) ! Here: ahm is proportional to the cube of the maximum of the gridspacing ! in the to horizontal direction zdx_max = MAXVAL( e1t(:,:) ) IF( lk_mpp ) CALL mpp_max( zdx_max ) ! max over the global domain za00 = aht0 / ( zdx_max * zdx_max * zdx_max ) ahtt(:,:) = za00 * e1t(:,:) * e1t(:,:) *e1t(:,:) ! set ahtt at T-point CALL lbc_lnk( ahtt, 'T', 1. ) ! Lateral boundary conditions on ( ahtt ) ! Control print IF( lwp .AND. ld_print ) THEN WRITE(numout,*) WRITE(numout,*) 'inildf: 2D ahtt array' CALL prihre( ahtt, jpi, jpj, 1, jpi, 1, & & 1, jpj, 1, 1.e-3, numout ) ENDIF ENDIF # if defined key_traldf_eiv ! set aeiu = aeiv at u- and v-points, and aeiw at w-point (idem T-point) ! (here no space variation) aeiu(:,:) = aeiv0 aeiv(:,:) = aeiv0 aeiw(:,:) = aeiv0 IF( cp_cfg == "orca" .AND. jp_cfg == 4 ) THEN ! ! Cancel eiv in Gibraltar strait aeiu( mi0(68):mi1(71) , mj0(50):mj1(53) ) = 0.e0 aeiv( mi0(68):mi1(71) , mj0(50):mj1(53) ) = 0.e0 aeiw( mi0(68):mi1(71) , mj0(50):mj1(53) ) = 0.e0 ! ! Cancel eiv in Mediterrannean sea aeiu( mi0(70):mi1(90) , mj0(49):mj1(56) ) = 0.e0 aeiv( mi0(70):mi1(90) , mj0(49):mj1(56) ) = 0.e0 aeiw( mi0(70):mi1(90) , mj0(49):mj1(56) ) = 0.e0 ENDIF ! Lateral boundary conditions on ( aeiu, aeiv, aeiw ) CALL lbc_lnk( aeiu, 'U', 1. ) CALL lbc_lnk( aeiv, 'V', 1. ) CALL lbc_lnk( aeiw, 'W', 1. ) ! Control print IF( lwp .AND. ld_print ) THEN WRITE(numout,*) WRITE(numout,*) 'inildf: aeiu array' CALL prihre(aeiu,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) WRITE(numout,*) WRITE(numout,*) 'inildf: aeiv array' CALL prihre(aeiv,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) WRITE(numout,*) WRITE(numout,*) 'inildf: aeiw array' CALL prihre(aeiw,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) ENDIF # endif END SUBROUTINE ldf_tra_c2d