- Timestamp:
- 2020-06-02T17:46:26+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/ldfdyn.F90
r12822 r13005 25 25 USE lib_mpp ! distribued memory computing library 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 27 ! 28 USE usrdef_nam , ONLY : ln_dynldf_lap_PM 29 ! 28 30 IMPLICIT NONE 29 31 PRIVATE … … 60 62 INTEGER , PUBLIC :: nldf_dyn !: type of lateral diffusion used defined from ln_dynldf_... (namlist logicals) 61 63 LOGICAL , PUBLIC :: l_ldfdyn_time !: flag for time variation of the lateral eddy viscosity coef. 62 64 !!an 65 !LOGICAL , PUBLIC :: ll_dynldf_lap_PM !: flag for P.Marchand modification on viscosity 66 !!an 63 67 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ahmt, ahmf !: eddy viscosity coef. at T- and F-points [m2/s or m4/s] 64 68 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dtensq !: horizontal tension squared (Smagorinsky only) … … 323 327 IF( .NOT.l_ldfdyn_time ) THEN !* No time variation 324 328 IF( ln_dynldf_lap ) THEN ! laplacian operator (mask only) 325 ahmt(:,:,1:jpkm1) = ahmt(:,:,1:jpkm1) * tmask(:,:,1:jpkm1) 326 WRITE(numout,*) ' ahmt tmask ' 329 !!an ! 330 WRITE(numout,*) ' ln_dynldf_lap_PM = ',ln_dynldf_lap_PM 331 IF( ln_dynldf_lap_PM ) THEN ! laplacian operator (mask only) 327 332 !! mask tension at the coast (equivalent of ghostpoints at T) 328 ! DO jk = 1, jpk 329 ! DO jj = 1, jpjm1 330 ! DO ji = 1, jpim1 ! NO vector opt. 331 ! ! si sum(fmask)==3 = mouillé (on touche pas) 332 ! ! si sum = 2 alors on met a 0 zsum = fmask + fmask + fmask,.. et si zsum < 2 -> 0 sinon = 1 333 ! zsum = fmask(ji,jj ,jk) + fmask(ji+1,jj ,jk) & 334 ! & + fmask(ji,jj+1,jk) + fmask(ji+1,jj+1,jk) 335 ! IF ( zsum < 2._wp ) ahmt(ji,jj,jk) = 0 336 ! ! 337 ! !ahmt(ji,jj,jk) = ahmt(ji,jj,jk) * fmask(ji,jj ,jk) * fmask(ji+1,jj ,jk) & 338 ! ! & * fmask(ji,jj+1,jk) * fmask(ji+1,jj+1,jk) 339 ! END DO 340 ! END DO 341 ! END DO 342 ! ahmt(jpi,:,1:jpkm1) = 0._wp 343 ! ahmt(:,jpj,1:jpkm1) = 0._wp 344 ! WRITE(numout,*) ' an45 ahmt x0' 345 346 ahmf(:,:,1:jpkm1) = ahmf(:,:,1:jpkm1) * fmask(:,:,1:jpkm1) 347 WRITE(numout,*) ' ahmf fmask ' 348 !!an apply no slip at the coast (ssfmask = 1 within the domain and at the coast contrary to fmask in free slip) 349 ! DO jk = 1, jpkm1 350 ! ahmf(:,:,jk) = ahmf(:,:,jk) * ( 2._wp * ssfmask(:,:) - fmask(:,:,jk) ) 351 ! END DO 352 ! WRITE(numout,*) ' an45 ahmf x2' 353 333 DO jk = 1, jpk 334 DO jj = 1, jpjm1 335 DO ji = 1, jpim1 ! NO vector opt. 336 ! si sum(fmask)==3 = mouillé (on touche pas) 337 ! si sum = 2 alors on met a 0 zsum = fmask + fmask + fmask,.. et si zsum < 2 -> 0 sinon = 1 338 zsum = fmask(ji,jj ,jk) + fmask(ji+1,jj ,jk) & 339 & + fmask(ji,jj+1,jk) + fmask(ji+1,jj+1,jk) 340 IF ( zsum < 2._wp ) ahmt(ji,jj,jk) = 0 341 ! 342 !ahmt(ji,jj,jk) = ahmt(ji,jj,jk) * fmask(ji,jj ,jk) * fmask(ji+1,jj ,jk) & 343 ! & * fmask(ji,jj+1,jk) * fmask(ji+1,jj+1,jk) 344 END DO 345 END DO 346 END DO 347 ahmt(jpi,:,1:jpkm1) = 0._wp 348 ahmt(:,jpj,1:jpkm1) = 0._wp 349 WRITE(numout,*) ' ahmt x0' 350 !! apply no slip at the coast (ssfmask = 1 within the domain and at the coast contrary to fmask in free slip) 351 DO jk = 1, jpkm1 352 ahmf(:,:,jk) = ahmf(:,:,jk) * ( 2._wp * ssfmask(:,:) - fmask(:,:,jk) ) 353 END DO 354 WRITE(numout,*) ' ahmf x2' 355 ELSE 356 ! classic boundary condition on the viscosity coefficient 357 ahmt(:,:,1:jpkm1) = ahmt(:,:,1:jpkm1) * tmask(:,:,1:jpkm1) 358 WRITE(numout,*) ' ahmt tmasked ' 359 ahmf(:,:,1:jpkm1) = ahmf(:,:,1:jpkm1) * fmask(:,:,1:jpkm1) 360 WRITE(numout,*) ' ahmf fmasked ' 361 ENDIF 362 !!an ! 354 363 ELSEIF( ln_dynldf_blp ) THEN ! bilaplacian operator (square root + mask) 355 364 ahmt(:,:,1:jpkm1) = SQRT( ahmt(:,:,1:jpkm1) ) * tmask(:,:,1:jpkm1)
Note: See TracChangeset
for help on using the changeset viewer.