123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- !!----------------------------------------------------------------------
- !! *** ldftra_c3d.h90 ***
- !!----------------------------------------------------------------------
- !!----------------------------------------------------------------------
- !! NEMO/OPA 3.3 , NEMO Consortium (2010)
- !! $Id: ldftra_c3d.h90 3634 2012-11-22 17:32:14Z acc $
- !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
- !!----------------------------------------------------------------------
- SUBROUTINE ldf_tra_c3d( ld_print )
- !!----------------------------------------------------------------------
- !! *** ROUTINE ldftra_c3d ***
- !!
- !! ** Purpose :
- !! initializations of non uniform horizontal eddy diffusivity coef.
- !!
- !! ** Method :
- !! 3D eddy diffusivity coefficients ( longitude, latitude, depth )
- !!
- !! 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
- !!----------------------------------------------------------------------
- USE ioipsl
- !
- LOGICAL, INTENT (in) :: ld_print ! If true, output arrays on numout
- !!----------------------------------------------------------------------
- IF( lk_traldf_eiv ) THEN
- IF(lwp) WRITE(numout,*)
- IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity and eddy induced velocity coefficients'
- IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~ -- '
- IF(lwp) WRITE(numout,*) ' Coefficients set to constant'
- ELSE
- IF(lwp) WRITE(numout,*)
- IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity coefficient'
- IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~ -- '
- IF(lwp) WRITE(numout,*) ' Coefficients set to constant'
- ENDIF
- ! biharmonic operator (T-point)
- ! -------------------
- ahtt(:,:,:) = aht0 ! set ahtt at T-point (here no space variation)
- CALL lbc_lnk( ahtt, 'T', 1. ) ! Lateral boundary conditions on ( ahtt )
- IF(lwp .AND. ld_print ) THEN ! Control print
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: ahtt at k = 1'
- CALL prihre( ahtt(:,:,1), jpi, jpj, 1, jpi, 1, &
- & 1, jpj, 1, 1.e-3, numout )
- ENDIF
- ! harmonic operator (U-, V-, W-points)
- ! -----------------
- ahtu(:,:,:) = aht0 ! set ahtu = ahtv at u- and v-points,
- ahtv(:,:,:) = aht0 ! and ahtw at w-point
- ahtw(:,:,:) = aht0 ! (here example: no space variation)
-
- CALL lbc_lnk( ahtu, 'U', 1. ) ! Lateral boundary conditions
- CALL lbc_lnk( ahtv, 'V', 1. )
- CALL lbc_lnk( ahtw, 'W', 1. )
- IF(lwp .AND. ld_print ) THEN ! Control print
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: ahtu at k = 1'
- CALL prihre( ahtu(:,:,1), jpi, jpj, 1, jpi, 1, &
- & 1, jpj, 1, 1.e-3, numout )
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: ahtv at k = 1'
- CALL prihre( ahtv(:,:,1), jpi, jpj, 1, jpi, 1, &
- & 1, jpj, 1, 1.e-3, numout )
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: ahtw at k = 1'
- CALL prihre( ahtw(:,:,1), jpi, jpj, 1, jpi, 1, &
- & 1, jpj, 1, 1.e-3, numout )
- ENDIF
- # if defined key_traldf_eiv
- aeiu(:,:,:) = aeiv0 ! set aeiu = aeiv at u- and v-points,
- aeiv(:,:,:) = aeiv0 ! and aeiw at w-point
- aeiw(:,:,:) = aeiv0 ! (here example: no space variation)
- 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
- CALL lbc_lnk( aeiu, 'U', 1. ) ! Lateral boundary conditions
- CALL lbc_lnk( aeiv, 'V', 1. )
- CALL lbc_lnk( aeiw, 'W', 1. )
- IF(lwp .AND. ld_print ) THEN
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: aeiu at k = 1'
- CALL prihre(aeiu(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: aeiv at k = 1'
- CALL prihre(aeiv(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
- WRITE(numout,*)
- WRITE(numout,*) 'inildf: aeiw at k = 1'
- CALL prihre(aeiw(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
- ENDIF
- # endif
- END SUBROUTINE ldf_tra_c3d
|