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 9987 for branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90 – NEMO

Ignore:
Timestamp:
2018-07-23T11:33:03+02:00 (6 years ago)
Author:
emmafiedler
Message:

Merge with GO6 FOAMv14 package branch r9288

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r7960 r9987  
    2222   !!             -   ! 2013-04  (F. Roquet, G. Madec)  add eos_rab, change bn2 computation and reorganize the module 
    2323   !!             -   ! 2014-09  (F. Roquet)  add TEOS-10, S-EOS, and modify EOS-80 
     24   !!             -   ! 2015-06  (P.A. Bouttier) eos_fzp functions changed to subroutines for AGRIF 
    2425   !!---------------------------------------------------------------------- 
    2526 
     
    311312      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::   pts    ! 1 : potential temperature  [Celcius] 
    312313      !                                                                ! 2 : salinity               [psu] 
    313       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(  out) ::   prd    ! in situ density            [-] 
    314       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(  out) ::   prhop  ! potential density (surface referenced) 
     314      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(inout) ::   prd    ! in situ density            [-] 
     315      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(inout) ::   prhop  ! potential density (surface referenced) 
    315316      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pdep   ! depth                      [m] 
    316317      ! 
     
    456457      END SELECT 
    457458      ! 
     459      CALL lbc_lnk( prd, 'T', 1.0_wp ) 
     460      ! 
    458461      IF(ln_ctl)   CALL prt_ctl( tab3d_1=prd, clinfo1=' eos-pot: ', tab3d_2=prhop, clinfo2=' pot : ', ovlap=1, kdim=jpk ) 
    459462      ! 
     
    901904      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::  pts   ! pot. temperature and salinity   [Celcius,psu] 
    902905      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in   ) ::  pab   ! thermal/haline expansion coef.  [Celcius-1,psu-1] 
    903       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(  out) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
     906      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(inout) ::  pn2   ! Brunt-Vaisala frequency squared [1/s^2] 
    904907      ! 
    905908      INTEGER  ::   ji, jj, jk      ! dummy loop indices 
     
    991994 
    992995 
    993    FUNCTION eos_fzp_2d( psal, pdep ) RESULT( ptf ) 
     996   SUBROUTINE  eos_fzp_2d( psal, ptf, pdep ) 
    994997      !!---------------------------------------------------------------------- 
    995998      !!                 ***  ROUTINE eos_fzp  *** 
     
    10051008      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   )           ::   psal   ! salinity   [psu] 
    10061009      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ), OPTIONAL ::   pdep   ! depth      [m] 
    1007       REAL(wp), DIMENSION(jpi,jpj)                          ::   ptf   ! freezing temperature [Celcius] 
     1010      REAL(wp), DIMENSION(jpi,jpj), INTENT(out  )           ::   ptf    ! freezing temperature [Celcius] 
    10081011      ! 
    10091012      INTEGER  ::   ji, jj   ! dummy loop indices 
     
    10171020         DO jj = 1, jpj 
    10181021            DO ji = 1, jpi 
    1019                zs= SQRT( ABS( psal(ji,jj) ) * r1_S0 )           ! square root salinity 
     1022               zs= SQRT( ABS( psal(ji,jj) ) / 35.16504_wp )           ! square root salinity 
    10201023               ptf(ji,jj) = ((((1.46873e-03_wp*zs-9.64972e-03_wp)*zs+2.28348e-02_wp)*zs & 
    10211024                  &          - 3.12775e-02_wp)*zs+2.07679e-02_wp)*zs-5.87701e-02_wp 
     
    10381041         nstop = nstop + 1 
    10391042         ! 
    1040       END SELECT 
    1041       ! 
    1042    END FUNCTION eos_fzp_2d 
    1043  
    1044   FUNCTION eos_fzp_0d( psal, pdep ) RESULT( ptf ) 
     1043      END SELECT       
     1044      ! 
     1045  END SUBROUTINE eos_fzp_2d 
     1046 
     1047  SUBROUTINE eos_fzp_0d( psal, ptf, pdep ) 
    10451048      !!---------------------------------------------------------------------- 
    10461049      !!                 ***  ROUTINE eos_fzp  *** 
     
    10541057      !! Reference  :   UNESCO tech. papers in the marine science no. 28. 1978 
    10551058      !!---------------------------------------------------------------------- 
    1056       REAL(wp), INTENT(in)           ::   psal   ! salinity   [psu] 
    1057       REAL(wp), INTENT(in), OPTIONAL ::   pdep   ! depth      [m] 
    1058       REAL(wp)                       ::   ptf   ! freezing temperature [Celcius] 
     1059      REAL(wp), INTENT(in )           ::   psal         ! salinity   [psu] 
     1060      REAL(wp), INTENT(in ), OPTIONAL ::   pdep         ! depth      [m] 
     1061      REAL(wp), INTENT(out)           ::   ptf          ! freezing temperature [Celcius] 
    10591062      ! 
    10601063      REAL(wp) :: zs   ! local scalars 
     
    10651068      CASE ( -1, 1 )                !==  CT,SA (TEOS-10 formulation) ==! 
    10661069         ! 
    1067          zs  = SQRT( ABS( psal ) * r1_S0 )           ! square root salinity 
     1070         zs  = SQRT( ABS( psal ) / 35.16504_wp )           ! square root salinity 
    10681071         ptf = ((((1.46873e-03_wp*zs-9.64972e-03_wp)*zs+2.28348e-02_wp)*zs & 
    10691072                  &          - 3.12775e-02_wp)*zs+2.07679e-02_wp)*zs-5.87701e-02_wp 
     
    10861089      END SELECT 
    10871090      ! 
    1088    END FUNCTION eos_fzp_0d 
     1091   END SUBROUTINE eos_fzp_0d 
    10891092 
    10901093 
     
    12551258            WRITE(numout,*) '             model does not use Conservative Temperature' 
    12561259         ENDIF 
     1260      ENDIF 
     1261      ! 
     1262      ! Consistency check on ln_useCT and nn_eos 
     1263      IF ((nn_eos .EQ. -1) .AND. (.NOT. ln_useCT)) THEN 
     1264         CALL ctl_stop("ln_useCT should be set to True if using TEOS-10 (nn_eos=-1)") 
     1265      ELSE IF ((nn_eos .NE. -1) .AND. (ln_useCT)) THEN 
     1266         CALL ctl_stop("ln_useCT should be set to False if using TEOS-80 or simplified equation of state (nn_eos=0 or nn_eos=1)") 
    12571267      ENDIF 
    12581268      ! 
Note: See TracChangeset for help on using the changeset viewer.