New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4488 for branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2014-02-06T11:43:09+01:00 (10 years ago)
Author:
rfurner
Message:

fixes to enable proper calulation of slopes for geopotential diffusion in scoords

Location:
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90

    r3294 r4488  
    2020   USE dynldf_iso     ! lateral mixing            (dyn_ldf_iso    routine) 
    2121   USE dynldf_lap     ! lateral mixing            (dyn_ldf_lap    routine) 
     22   USE ldftra_oce, ONLY: ln_traldf_hor     ! ocean tracers lateral physics 
    2223   USE trdmod         ! ocean dynamics and tracer trends 
    2324   USE trdmod_oce     ! ocean variables trends 
     
    152153      IF( ioptio >  1 ) CALL ctl_stop( '          use only ONE direction (level/hor/iso)' ) 
    153154 
     155      IF( ln_dynldf_iso .AND. ln_traldf_hor ) CALL ctl_stop( 'Not sensible to use geopotential diffusion for tracers with isoneutral diffusion for dynamics' ) 
     156 
    154157      !                                   ! Set nldf, the type of lateral diffusion, from ln_dynldf_... logicals 
    155158      ierr = 0 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90

    r3634 r4488  
    1919   USE dom_oce         ! ocean space and time domain 
    2020   USE ldfdyn_oce      ! ocean dynamics lateral physics 
     21   USE ldftra_oce, ONLY: ln_traldf_iso 
    2122   USE zdf_oce         ! ocean vertical physics 
    2223   USE trdmod          ! ocean dynamics trends  
     
    2930   USE wrk_nemo        ! Memory Allocation 
    3031   USE timing          ! Timing 
    31  
    3232 
    3333   IMPLICIT NONE 
     
    104104         IF( dyn_ldf_bilapg_alloc() /= 0 )   CALL ctl_stop('STOP', 'dyn_ldf_bilapg: failed to allocate arrays') 
    105105      ENDIF 
    106       ! 
     106 
     107      ! s-coordinate: Iso-level diffusion on tracer, but geopotential level diffusion on momentum 
     108      IF( ln_dynldf_hor .AND. ln_traldf_iso ) THEN 
     109         ! 
     110         DO jk = 1, jpk         ! set the slopes of iso-level 
     111            DO jj = 2, jpjm1 
     112               DO ji = 2, jpim1 
     113                  uslp (ji,jj,jk) = -1./e1u(ji,jj) * ( fsdept_b(ji+1,jj,jk) - fsdept_b(ji ,jj ,jk) ) * umask(ji,jj,jk) 
     114                  vslp (ji,jj,jk) = -1./e2v(ji,jj) * ( fsdept_b(ji,jj+1,jk) - fsdept_b(ji ,jj ,jk) ) * vmask(ji,jj,jk) 
     115                  wslpi(ji,jj,jk) = -1./e1t(ji,jj) * ( fsdepw_b(ji+1,jj,jk) - fsdepw_b(ji-1,jj,jk) ) * tmask(ji,jj,jk) * 0.5 
     116                  wslpj(ji,jj,jk) = -1./e2t(ji,jj) * ( fsdepw_b(ji,jj+1,jk) - fsdepw_b(ji,jj-1,jk) ) * tmask(ji,jj,jk) * 0.5 
     117               END DO 
     118            END DO 
     119         END DO 
     120         ! Lateral boundary conditions on the slopes 
     121         CALL lbc_lnk( uslp , 'U', -1. )      ;      CALL lbc_lnk( vslp , 'V', -1. ) 
     122         CALL lbc_lnk( wslpi, 'W', -1. )      ;      CALL lbc_lnk( wslpj, 'W', -1. ) 
     123  
     124!!bug 
     125         IF( kt == nit000 ) then 
     126            IF(lwp) WRITE(numout,*) ' max slop: u', SQRT( MAXVAL(uslp*uslp)), ' v ', SQRT(MAXVAL(vslp)),  & 
     127               &                             ' wi', sqrt(MAXVAL(wslpi))     , ' wj', sqrt(MAXVAL(wslpj)) 
     128         endif 
     129!!end 
     130      ENDIF 
     131 
    107132      zwk1(:,:,:) = 0.e0   ;   zwk3(:,:,:) = 0.e0 
    108133      zwk2(:,:,:) = 0.e0   ;   zwk4(:,:,:) = 0.e0 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90

    r3294 r4488  
    131131      ENDIF 
    132132 
    133       ! s-coordinate: Iso-level diffusion on momentum but not on tracer 
     133      ! s-coordinate: Iso-level diffusion on tracer, but geopotential level diffusion on momentum 
    134134      IF( ln_dynldf_hor .AND. ln_traldf_iso ) THEN 
    135135         ! 
    136136         DO jk = 1, jpk         ! set the slopes of iso-level 
    137137            DO jj = 2, jpjm1 
    138                DO ji = fs_2, fs_jpim1   ! vector opt. 
    139                   uslp (ji,jj,jk) = -1./e1u(ji,jj) * ( fsdept(ji+1,jj,jk) - fsdept(ji ,jj ,jk) ) * umask(ji,jj,jk) 
    140                   vslp (ji,jj,jk) = -1./e2v(ji,jj) * ( fsdept(ji,jj+1,jk) - fsdept(ji ,jj ,jk) ) * vmask(ji,jj,jk) 
    141                   wslpi(ji,jj,jk) = -1./e1t(ji,jj) * ( fsdepw(ji+1,jj,jk) - fsdepw(ji-1,jj,jk) ) * tmask(ji,jj,jk) * 0.5 
    142                   wslpj(ji,jj,jk) = -1./e2t(ji,jj) * ( fsdepw(ji,jj+1,jk) - fsdepw(ji,jj-1,jk) ) * tmask(ji,jj,jk) * 0.5 
     138               DO ji = 2, jpim1 
     139                  uslp (ji,jj,jk) = -1./e1u(ji,jj) * ( fsdept_b(ji+1,jj,jk) - fsdept_b(ji ,jj ,jk) ) * umask(ji,jj,jk) 
     140                  vslp (ji,jj,jk) = -1./e2v(ji,jj) * ( fsdept_b(ji,jj+1,jk) - fsdept_b(ji ,jj ,jk) ) * vmask(ji,jj,jk) 
     141                  wslpi(ji,jj,jk) = -1./e1t(ji,jj) * ( fsdepw_b(ji+1,jj,jk) - fsdepw_b(ji-1,jj,jk) ) * tmask(ji,jj,jk) * 0.5 
     142                  wslpj(ji,jj,jk) = -1./e2t(ji,jj) * ( fsdepw_b(ji,jj+1,jk) - fsdepw_b(ji,jj-1,jk) ) * tmask(ji,jj,jk) * 0.5 
    143143               END DO 
    144144            END DO 
Note: See TracChangeset for help on using the changeset viewer.