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 6772 for branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2_crs.F90 – NEMO

Ignore:
Timestamp:
2016-07-01T18:02:45+02:00 (8 years ago)
Author:
cbricaud
Message:

clean in coarsening branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2_crs.F90

    r5601 r6772  
    6161   ! 
    6262   PUBLIC   eos_crs        ! called by step, istate, tranpc and zpsgrd modules 
    63    PUBLIC   bn2_crs        ! called by step module 
    6463   PUBLIC   eos_rab_crs    ! called by ldfslp, zdfddm, trabbl 
    6564   PUBLIC   eos_init_crs   ! called by istate module 
     
    392391               DO ji = 1, jpi_crs 
    393392                  ! 
    394                   zh  = gdept_crs(ji,jj,jk) * r1_Z0                                ! depth 
     393                  zh  = fsdept_crs(ji,jj,jk) * r1_Z0                                ! depth 
    395394                  zt  = pts (ji,jj,jk,jp_tem) * r1_T0                           ! temperature 
    396395                  zs  = SQRT( ABS( pts(ji,jj,jk,jp_sal) + rdeltaS ) * r1_S0 )   ! square root salinity 
     
    450449                  zt  = pts (ji,jj,jk,jp_tem) - 10._wp   ! pot. temperature anomaly (t-T0) 
    451450                  zs  = pts (ji,jj,jk,jp_sal) - 35._wp   ! abs. salinity anomaly (s-S0) 
    452                   zh  = gdept_crs(ji,jj,jk)                 ! depth in meters at t-point 
     451                  zh  = fsdept_crs(ji,jj,jk)                 ! depth in meters at t-point 
    453452                  ztm = tmask_crs(ji,jj,jk)                  ! land/sea bottom mask = surf. mask 
    454453                  ! 
     
    689688      ! 
    690689   END SUBROUTINE rab_crs_0d 
    691  
    692  
    693    SUBROUTINE bn2_crs( pts, pab, pn2 ) 
    694       !!---------------------------------------------------------------------- 
    695       !!                  ***  ROUTINE bn2  *** 
    696       !! 
    697       !! ** Purpose :   Compute the local Brunt-Vaisala frequency at the  
    698       !!                time-step of the input arguments 
    699       !! 
    700       !! ** Method  :   pn2 = grav * (alpha dk[T] + beta dk[S] ) / e3w 
    701       !!      where alpha and beta are given in pab, and computed on T-points. 
    702       !!      N.B. N^2 is set one for all to zero at jk=1 in istate module. 
    703       !! 
    704       !! ** Action  :   pn2 : square of the brunt-vaisala frequency at w-point  
    705       !! 
    706       !!---------------------------------------------------------------------- 
    707       REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk,jpts), INTENT(in   ) ::  pts   ! pot. temperature and salinity   [Celcius,psu] 
    708       REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk,jpts), INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celcius-1,psu-1] 
    709       REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk     ), INTENT(  out) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
    710       ! 
    711       INTEGER  ::   ji, jj, jk      ! dummy loop indices 
    712       REAL(wp) ::   zaw, zbw, zrw   ! local scalars 
    713       !!---------------------------------------------------------------------- 
    714       ! 
    715       pn2(:,:,:)=0._wp 
    716  
    717       IF( nn_timing == 1 ) CALL timing_start('bn2') 
    718       ! 
    719       DO jk = 2, jpkm1           ! interior points only (2=< jk =< jpkm1 ) 
    720          DO jj = 1, jpj_crs          ! surface and bottom value set to zero one for all in istate.F90 
    721             DO ji = 1, jpi_crs 
    722                !zrw =   ( gdepw_crs(ji,jj,jk  ) - gdept_crs(ji,jj,jk) )   & 
    723                !   &  / ( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) )  
    724                zrw =   gdepw_crs(ji,jj,jk  ) - gdept_crs(ji,jj,jk)     
    725                !?IF( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) .NE. 0._wp )THEN 
    726                IF( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) .LT. 0._wp )THEN 
    727                   zrw = zrw  / ( gdept_crs(ji,jj,jk-1) - gdept_crs(ji,jj,jk) )  
    728                ELSE 
    729                   zrw = 0._wp 
    730                ENDIF 
    731                ! 
    732                zaw = pab(ji,jj,jk,jp_tem) * (1._wp - zrw) + pab(ji,jj,jk-1,jp_tem) * zrw  
    733                zbw = pab(ji,jj,jk,jp_sal) * (1._wp - zrw) + pab(ji,jj,jk-1,jp_sal) * zrw 
    734                ! 
    735                IF( e3w_max_crs(ji,jj,jk) .NE. 0._wp ) THEN 
    736                   pn2(ji,jj,jk) = grav * (  zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) )     & 
    737                      &                    - zbw * ( pts(ji,jj,jk-1,jp_sal) - pts(ji,jj,jk,jp_sal) )  )  & 
    738                   &                    * tmask_crs(ji,jj,jk)  / e3w_max_crs(ji,jj,jk) 
    739                ENDIF 
    740             END DO 
    741          END DO 
    742       END DO 
    743       ! 
    744       IF( nn_timing == 1 )   CALL timing_stop('bn2') 
    745       ! 
    746    END SUBROUTINE bn2_crs 
    747690 
    748691   SUBROUTINE eos_init_crs 
Note: See TracChangeset for help on using the changeset viewer.