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 1497 for trunk/NEMO – NEMO

Changeset 1497 for trunk/NEMO


Ignore:
Timestamp:
2009-07-20T16:34:02+02:00 (15 years ago)
Author:
cetlod
Message:

update the offline part of opa.F90 and eosbn2.F90 modules, see ticket:473

Location:
trunk/NEMO/OFF_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OFF_SRC/eosbn2.F90

    r1326 r1497  
    55   !!                                               - Brunt-Vaisala frequency  
    66   !!============================================================================== 
     7   !! History :       !  89-03  (O. Marti)  Original code 
     8   !!            6.0  !  94-07  (G. Madec, M. Imbard)  add bn2 
     9   !!            6.0  !  94-08  (G. Madec)  Add Jackett & McDougall eos 
     10   !!            7.0  !  96-01  (G. Madec)  statement function for e3 
     11   !!            8.1  !  97-07  (G. Madec)  introduction of neos, OPA8.1 
     12   !!            8.1  !  97-07  (G. Madec)  density instead of volumic mass 
     13   !!                 !  99-02  (G. Madec, N. Grima) semi-implicit pressure gradient 
     14   !!                 !  01-09  (M. Ben Jelloul)  bugfix onlinear eos 
     15   !!            8.5  !  02-10  (G. Madec)  add eos_init 
     16   !!            8.5  !  02-11  (G. Madec, A. Bozec)  partial step, eos_insitu_2d 
     17   !!            9.0  !  03-08  (G. Madec)  F90, free form 
     18   !!            9.0  !  06-08  (G. Madec)  add tfreez function 
     19   !!---------------------------------------------------------------------- 
    720 
    821   !!---------------------------------------------------------------------- 
     
    1326   !!   eos_insitu_2d  : Compute the in situ density for 2d fields 
    1427   !!   eos_bn2        : Compute the Brunt-Vaisala frequency 
     28   !!   tfreez         : Compute the surface freezing temperature 
    1529   !!   eos_init       : set eos parameters (namelist) 
    1630   !!---------------------------------------------------------------------- 
    17    !! * Modules used 
    1831   USE dom_oce         ! ocean space and time domain 
    1932   USE phycst          ! physical constants 
     
    3346   END INTERFACE  
    3447 
    35    !! * Routine accessibility 
    36    PUBLIC eos        ! called by step.F90, inidtr.F90, tranpc.F90 and intgrd.F90 
    37    PUBLIC bn2        ! called by step.F90 
    38  
    39    !! * Share module variables 
    40    INTEGER , PUBLIC ::   &  !: nameos : ocean physical parameters 
    41       neos      = 0,     &  !: = 0/1/2 type of eq. of state and Brunt-Vaisala frequ. 
    42       neos_init = 0         !: control flag for initialization 
    43  
    44    REAL(wp), PUBLIC ::   &  !: nameos : ocean physical parameters 
    45       ralpha = 2.0e-4,   &  !: thermal expension coeff. (linear equation of state) 
    46       rbeta  = 7.7e-4       !: saline  expension coeff. (linear equation of state) 
     48   PUBLIC   eos        ! called by step, istate, tranpc and zpsgrd modules 
     49   PUBLIC   eos_init   ! called by istate module 
     50   PUBLIC   bn2        ! called by step module 
     51   PUBLIC   tfreez     ! called by sbcice_... modules 
     52 
     53   !!* Namelist (nameos) 
     54   INTEGER , PUBLIC ::   neos   = 0        !: = 0/1/2 type of eq. of state and Brunt-Vaisala frequ. 
     55   REAL(wp), PUBLIC ::   ralpha = 2.0e-4   !: thermal expension coeff. (linear equation of state) 
     56   REAL(wp), PUBLIC ::   rbeta  = 7.7e-4   !: saline  expension coeff. (linear equation of state) 
    4757    
    4858   !! * Substitutions 
     
    5060#  include "vectopt_loop_substitute.h90" 
    5161   !!---------------------------------------------------------------------- 
    52    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    53    !! $Id$  
    54    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     62   !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     63   !! $Id$ 
     64   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    5565   !!---------------------------------------------------------------------- 
    5666 
    5767CONTAINS 
    5868 
    59    SUBROUTINE eos_insitu ( ptem, psal, prd ) 
     69   SUBROUTINE eos_insitu( ptem, psal, prd ) 
    6070      !!---------------------------------------------------------------------- 
    6171      !!                   ***  ROUTINE eos_insitu  *** 
     
    91101      !! ** Action  :   compute prd , the in situ density (no units) 
    92102      !! 
    93       !! References : 
    94       !!      Jackett, D.R., and T.J. McDougall. J. Atmos. Ocean. Tech., 1994 
    95       !! 
    96       !! History : 
    97       !!        !  89-03 (o. Marti)  Original code 
    98       !!        ! 94-08 (G. Madec) 
    99       !!        !  96-01 (G. Madec) statement function for e3 
    100       !!        !  97-07 (G. Madec) introduction of neos, OPA8.1 
    101       !!        !  97-07 (G. Madec) density instead of volumic mass 
    102       !!        !  99-02 (G. Madec, N. Grima) semi-implicit pressure gradient 
    103       !!        !  01-09 (M. Ben Jelloul) bugfix    
    104       !!---------------------------------------------------------------------- 
    105       !! * Arguments 
    106       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::   & 
    107          ptem,                 &  ! potential temperature 
    108          psal                     ! salinity 
    109       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out ) ::   & 
    110          prd                      ! potential density (surface referenced) 
    111  
    112       !! * Local declarations 
     103      !! References :   Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 
     104      !!---------------------------------------------------------------------- 
     105      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   ptem   ! potential temperature  [Celcius] 
     106      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   psal   ! salinity               [psu] 
     107      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(  out) ::   prd    ! in situ density  
     108      !! 
    113109      INTEGER ::  ji, jj, jk      ! dummy loop indices 
    114110      REAL(wp) ::   &           
     
    118114         zd , zc , zaw, za ,   &  !    "         " 
    119115         zb1, za1, zkw, zk0       !    "         " 
    120       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
    121          zws                      ! temporary workspace 
    122       !!---------------------------------------------------------------------- 
    123  
    124  
    125       ! initialization (in not already done) 
    126       IF( neos_init == 0 ) CALL eos_init 
    127  
     116      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zws   ! temporary workspace 
     117      !!---------------------------------------------------------------------- 
    128118 
    129119      SELECT CASE ( neos ) 
    130  
     120      ! 
    131121      CASE ( 0 )               ! Jackett and McDougall (1994) formulation 
    132  
     122         ! 
    133123!CDIR NOVERRCHK 
    134124         zws(:,:,:) = SQRT( ABS( psal(:,:,:) ) ) 
    135  
    136125         !                                                ! =============== 
    137126         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    180169         END DO                                           !   End of slab 
    181170         !                                                ! =============== 
    182  
    183  
     171         ! 
    184172      CASE ( 1 )               ! Linear formulation function of temperature only 
    185  
     173         ! 
    186174         !                                                ! =============== 
    187175         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    198186         END DO                                           !   End of slab 
    199187         !                                                ! =============== 
    200  
    201  
     188         ! 
    202189      CASE ( 2 )               ! Linear formulation function of temperature and salinity 
    203  
     190         ! 
    204191         !                                                ! =============== 
    205192         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    216203         END DO                                           !   End of slab 
    217204         !                                                ! =============== 
    218  
     205         ! 
    219206      CASE DEFAULT 
    220  
     207         ! 
    221208         WRITE(ctmp1,*) '          bad flag value for neos = ', neos 
    222209         CALL ctl_stop( ctmp1 ) 
    223  
     210         ! 
    224211      END SELECT 
    225  
    226       IF(ln_ctl)   THEN 
    227          CALL prt_ctl(tab3d_1=prd, clinfo1=' eos  : ', ovlap=1, kdim=jpk) 
    228       ENDIF 
    229  
     212      ! 
     213      IF(ln_ctl)   CALL prt_ctl(tab3d_1=prd, clinfo1=' eos  : ', ovlap=1, kdim=jpk) 
     214      ! 
    230215   END SUBROUTINE eos_insitu 
    231216 
    232217 
    233    SUBROUTINE eos_insitu_pot ( ptem, psal, prd, prhop) 
     218   SUBROUTINE eos_insitu_pot( ptem, psal, prd, prhop ) 
    234219      !!---------------------------------------------------------------------- 
    235220      !!                  ***  ROUTINE eos_insitu_pot  *** 
     
    274259      !!              - prhop, the potential volumic mass (Kg/m3) 
    275260      !! 
    276       !! References : 
    277       !!      Jackett, D.R., and T.J. McDougall. J. Atmos. Ocean. Tech., 1994 
    278       !!      Brown, J. A. and K. A. Campana. Mon. Weather Rev., 1978 
    279       !! 
    280       !! History : 
    281       !!   4.0  !  89-03  (O. Marti) 
    282       !!        !  94-08  (G. Madec) 
    283       !!        !  96-01  (G. Madec) statement function for e3 
    284       !!        !  97-07  (G. Madec) introduction of neos, OPA8.1 
    285       !!        !  97-07  (G. Madec) density instead of volumic mass 
    286       !!        !  99-02  (G. Madec, N. Grima) semi-implicit pressure gradient 
    287       !!        !  01-09  (M. Ben Jelloul) bugfix    
    288       !!   9.0  !  03-08  (G. Madec)  F90, free form 
    289       !!---------------------------------------------------------------------- 
    290       !! * Arguments 
    291       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::   & 
    292          ptem,   &  ! potential temperature 
    293          psal       ! salinity 
    294       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out ) ::   & 
    295          prd,    &  ! potential density (surface referenced) 
    296          prhop      ! potential density (surface referenced) 
    297  
    298       !! * Local declarations 
     261      !! References :   Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 
     262      !!                Brown and Campana, Mon. Weather Rev., 1978 
     263      !!---------------------------------------------------------------------- 
     264      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   ptem   ! potential temperature  [Celcius] 
     265      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   psal   ! salinity               [psu] 
     266      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(  out) ::   prd    ! in situ density  
     267      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(  out) ::   prhop  ! potential density (surface referenced) 
     268 
    299269      INTEGER  ::  ji, jj, jk                ! dummy loop indices 
    300270      REAL(wp) ::   &             ! temporary scalars 
    301271         zt, zs, zh, zsr, zr1, zr2, zr3, zr4, zrhop, ze, zbw,   & 
    302272         zb, zd, zc, zaw, za, zb1, za1, zkw, zk0 
    303       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zws 
    304       !!---------------------------------------------------------------------- 
    305  
    306       ! initialization (in not already done) 
    307       IF( neos_init == 0 ) CALL eos_init 
    308  
     273      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zws 
     274      !!---------------------------------------------------------------------- 
    309275 
    310276      SELECT CASE ( neos ) 
    311  
     277      ! 
    312278      CASE ( 0 )               ! Jackett and McDougall (1994) formulation 
    313  
     279         ! 
    314280!CDIR NOVERRCHK 
    315281         zws(:,:,:) = SQRT( ABS( psal(:,:,:) ) ) 
    316  
    317282         !                                                ! =============== 
    318283         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    325290                  zh = fsdept(ji,jj,jk) 
    326291                  ! square root salinity 
    327 !!Edmee           zsr= SQRT( ABS( zs ) ) 
    328292                  zsr= zws(ji,jj,jk) 
    329293                  ! compute volumic mass pure water at atm pressure 
     
    365329         END DO                                           !   End of slab 
    366330         !                                                ! =============== 
    367  
    368  
     331         ! 
    369332      CASE ( 1 )               ! Linear formulation function of temperature only 
    370  
     333         ! 
    371334         !                                                ! =============== 
    372335         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    384347         END DO                                           !   End of slab 
    385348         !                                                ! =============== 
    386  
    387  
     349         ! 
    388350      CASE ( 2 )               ! Linear formulation function of temperature and salinity 
    389  
     351         ! 
    390352         !                                                ! =============== 
    391353         DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    403365         END DO                                           !   End of slab 
    404366         !                                                ! =============== 
    405  
     367         ! 
    406368      CASE DEFAULT 
    407  
     369         ! 
    408370         WRITE(ctmp1,*) '          bad flag value for neos = ', neos 
    409371         CALL ctl_stop( ctmp1 ) 
    410  
     372         ! 
    411373      END SELECT 
    412  
    413       IF(ln_ctl)   THEN 
    414          CALL prt_ctl(tab3d_1=prd, clinfo1=' eos-p: ', tab3d_2=prhop, clinfo2=' pot : ', ovlap=1, kdim=jpk) 
    415       ENDIF 
    416  
     374      ! 
     375      IF(ln_ctl)   CALL prt_ctl( tab3d_1=prd, clinfo1=' eos-p: ', tab3d_2=prhop, clinfo2=' pot : ', ovlap=1, kdim=jpk ) 
     376      ! 
    417377   END SUBROUTINE eos_insitu_pot 
    418378 
    419    SUBROUTINE eos_insitu_2d ( ptem, psal, pdep, prd ) 
     379 
     380   SUBROUTINE eos_insitu_2d( ptem, psal, pdep, prd ) 
    420381      !!---------------------------------------------------------------------- 
    421382      !!                  ***  ROUTINE eos_insitu_2d  *** 
     
    451412      !! ** Action  : - prd , the in situ density (no units) 
    452413      !! 
    453       !! References : 
    454       !!      Jackett, D.R., and T.J. McDougall. J. Atmos. Ocean. Tech., 1994 
    455       !! 
    456       !! History : 
    457       !!   8.5  !  02-11  (G. Madec, A. Bozec)  partial step 
    458       !!---------------------------------------------------------------------- 
    459       !! * Arguments 
    460       REAL(wp), DIMENSION(jpi,jpj), INTENT( in ) ::   & 
    461          ptem,                           &  ! potential temperature 
    462          psal,                           &  ! salinity 
    463          pdep                               ! depth 
    464       REAL(wp), DIMENSION(jpi,jpj), INTENT( out ) ::   & 
    465          prd                                ! potential density (surface referenced) 
    466  
    467       !! * Local declarations 
    468       INTEGER ::  ji, jj                    ! dummy loop indices 
     414      !! References :   Jackett and McDougall, J. Atmos. Ocean. Tech., 1994 
     415      !!---------------------------------------------------------------------- 
     416      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   ptem   ! potential temperature  [Celcius] 
     417      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity               [psu] 
     418      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   pdep   ! depth                  [m] 
     419      REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) ::   prd    ! in situ density  
     420      !! 
     421      INTEGER  ::  ji, jj                    ! dummy loop indices 
    469422      REAL(wp) ::   &             ! temporary scalars 
    470423         zt, zs, zh, zsr, zr1, zr2, zr3, zr4, zrhop, ze, zbw,   & 
    471424         zb, zd, zc, zaw, za, zb1, za1, zkw, zk0,               & 
    472425         zmask 
    473       REAL(wp), DIMENSION(jpi,jpj) :: zws 
    474       !!---------------------------------------------------------------------- 
    475  
    476  
    477       ! initialization (in not already done) 
    478       IF( neos_init == 0 ) CALL eos_init 
     426      REAL(wp), DIMENSION(jpi,jpj) ::   zws 
     427      !!---------------------------------------------------------------------- 
    479428 
    480429      prd(:,:) = 0.e0 
    481430 
    482431      SELECT CASE ( neos ) 
    483  
     432      ! 
    484433      CASE ( 0 )               ! Jackett and McDougall (1994) formulation 
    485  
     434      ! 
    486435!CDIR NOVERRCHK 
    487436         DO jj = 1, jpjm1 
     
    491440            END DO 
    492441         END DO 
    493  
    494442         !                                                ! =============== 
    495443         DO jj = 1, jpjm1                                 ! Horizontal slab 
     
    533481               ! masked in situ density anomaly 
    534482               prd(ji,jj) = ( zrhop / (  1.0 - zh / ( zk0 - zh * ( za - zh * zb ) )  ) - rau0 )   & 
    535                           / rau0 * zmask 
    536             END DO 
    537             !                                             ! =============== 
    538          END DO                                           !   End of slab 
    539          !                                                ! =============== 
    540  
    541  
     483                  &       / rau0 * zmask 
     484            END DO 
     485            !                                             ! =============== 
     486         END DO                                           !   End of slab 
     487         !                                                ! =============== 
     488         ! 
    542489      CASE ( 1 )               ! Linear formulation function of temperature only 
    543  
     490         ! 
    544491         !                                                ! =============== 
    545492         DO jj = 1, jpjm1                                 ! Horizontal slab 
     
    551498         END DO                                           !   End of slab 
    552499         !                                                ! =============== 
    553  
    554  
     500         ! 
    555501      CASE ( 2 )               ! Linear formulation function of temperature and salinity 
    556  
     502         ! 
    557503         !                                                ! =============== 
    558504         DO jj = 1, jpjm1                                 ! Horizontal slab 
     
    564510         END DO                                           !   End of slab 
    565511         !                                                ! =============== 
    566  
     512         ! 
    567513      CASE DEFAULT 
    568  
     514         ! 
    569515         WRITE(ctmp1,*) '          bad flag value for neos = ', neos 
    570516         CALL ctl_stop( ctmp1 ) 
    571  
     517         ! 
    572518      END SELECT 
    573519 
    574       IF(ln_ctl)   CALL prt_ctl(tab2d_1=prd, clinfo1=' eos2d: ') 
    575  
     520      IF(ln_ctl)   CALL prt_ctl( tab2d_1=prd, clinfo1=' eos2d: ' ) 
     521      ! 
    576522   END SUBROUTINE eos_insitu_2d 
    577523 
     
    605551      !! ** Action  : - pn2 : the brunt-vaisala frequency 
    606552      !! 
    607       !! References : 
    608       !!      McDougall, T. J., J. Phys. Oceanogr., 17, 1950-1964, 1987. 
    609       !! 
    610       !! History : 
    611       !!   6.0  !  94-07  (G. Madec, M. Imbard)  Original code 
    612       !!   8.0  !  97-07  (G. Madec) introduction of statement functions 
    613       !!   8.5  !  02-07  (G. Madec) Free form, F90 
    614       !!   8.5  !  02-08  (G. Madec) introduction of arguments 
    615       !!---------------------------------------------------------------------- 
    616       !! * Arguments 
    617       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::   & 
    618          ptem,                           &  ! potential temperature 
    619          psal                               ! salinity 
    620       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out ) ::   & 
    621          pn2                               ! Brunt-Vaisala frequency 
    622  
    623       !! * Local declarations 
     553      !! References :   McDougall, J. Phys. Oceanogr., 17, 1950-1964, 1987. 
     554      !!---------------------------------------------------------------------- 
     555      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   ptem   ! potential temperature   [Celcius] 
     556      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   psal   ! salinity                [psu] 
     557      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(  out) ::   pn2    ! Brunt-Vaisala frequency [s-1] 
     558 
    624559      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    625       REAL(wp) ::   & 
    626          zgde3w, zt, zs, zh,  &  ! temporary scalars  
    627          zalbet, zbeta           !    "         " 
     560      REAL(wp) ::   zgde3w, zt, zs, zh,  &  ! temporary scalars  
     561         &          zalbet, zbeta           !    "         " 
    628562#if defined key_zdfddm 
    629563      REAL(wp) ::   zds          ! temporary scalars 
    630564#endif 
    631565      !!---------------------------------------------------------------------- 
    632       !!  OPA8.5, LODYC-IPSL (2002) 
    633       !!---------------------------------------------------------------------- 
    634566 
    635567      ! pn2 : first and last levels 
     
    642574 
    643575      SELECT CASE ( neos ) 
    644  
     576      ! 
    645577      CASE ( 0 )               ! Jackett and McDougall (1994) formulation 
    646  
     578         ! 
    647579         !                                                ! =============== 
    648580         DO jk = 2, jpkm1                                 ! Horizontal slab 
     
    694626         END DO                                           !   End of slab 
    695627         !                                                ! =============== 
    696  
    697  
     628         ! 
    698629      CASE ( 1 )               ! Linear formulation function of temperature only 
    699  
     630         ! 
    700631         !                                                ! =============== 
    701632         DO jk = 2, jpkm1                                 ! Horizontal slab 
     
    710641         END DO                                           !   End of slab 
    711642         !                                                ! =============== 
    712  
    713  
     643         ! 
    714644      CASE ( 2 )               ! Linear formulation function of temperature and salinity 
    715  
     645         ! 
    716646         !                                                ! =============== 
    717647         DO jk = 2, jpkm1                                 ! Horizontal slab 
     
    738668         END DO                                           !   End of slab 
    739669         !                                                ! =============== 
    740  
     670         ! 
    741671      CASE DEFAULT 
    742  
     672         ! 
    743673         WRITE(ctmp1,*) '          bad flag value for neos = ', neos 
    744674         CALL ctl_stop( ctmp1 ) 
    745  
     675         ! 
    746676      END SELECT 
    747677 
    748       IF(ln_ctl)   THEN 
    749          CALL prt_ctl(tab3d_1=pn2, clinfo1=' bn2  : ', ovlap=1, kdim=jpk) 
     678      IF(ln_ctl)   CALL prt_ctl(tab3d_1=pn2, clinfo1=' bn2  : ', ovlap=1, kdim=jpk) 
    750679#if defined key_zdfddm 
    751          CALL prt_ctl(tab3d_1=rrau, clinfo1=' rrau : ', ovlap=1, kdim=jpk) 
     680      IF(ln_ctl)   CALL prt_ctl(tab3d_1=rrau, clinfo1=' rrau : ', ovlap=1, kdim=jpk) 
    752681#endif 
    753       ENDIF 
    754  
     682      ! 
    755683   END SUBROUTINE eos_bn2 
    756684 
    757685 
     686   FUNCTION tfreez( psal ) RESULT( ptf ) 
     687      !!---------------------------------------------------------------------- 
     688      !!                 ***  ROUTINE eos_init  *** 
     689      !! 
     690      !! ** Purpose :   Compute the sea surface freezing temperature [Celcius] 
     691      !! 
     692      !! ** Method  :   UNESCO freezing point at the surface (pressure = 0???) 
     693      !!       freezing point [Celcius]=(-.0575+1.710523e-3*sqrt(abs(s))-2.154996e-4*s)*s-7.53e-4*p 
     694      !!       checkvalue: tf= -2.588567 Celsius for s=40.0psu, p=500. decibars 
     695      !! 
     696      !! Reference  :   UNESCO tech. papers in the marine science no. 28. 1978 
     697      !!---------------------------------------------------------------------- 
     698      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity             [psu] 
     699      REAL(wp), DIMENSION(jpi,jpj)                ::   ptf    ! freezing temperature [Celcius] 
     700      !!---------------------------------------------------------------------- 
     701      ptf(:,:) = ( - 0.0575 + 1.710523e-3 * SQRT( psal(:,:) )   & 
     702         &                  - 2.154996e-4 *       psal(:,:)   ) * psal(:,:) 
     703   END FUNCTION tfreez 
     704 
     705 
    758706   SUBROUTINE eos_init 
    759707      !!---------------------------------------------------------------------- 
     
    762710      !! ** Purpose :   initializations for the equation of state 
    763711      !! 
    764       !! ** Method  :   Read the namelist nameos 
    765       !! 
    766       !! ** Action  :   blahblah.... 
    767       !! 
    768       !! History : 
    769       !!   8.5  !  02-10  (G. Madec)  Original code 
     712      !! ** Method  :   Read the namelist nameos and control the parameters 
    770713      !!---------------------------------------------------------------------- 
    771714      NAMELIST/nameos/ neos, ralpha, rbeta 
    772       !!---------------------------------------------------------------------- 
    773       !!  OPA 8.5, LODYC-IPSL (2002) 
    774       !!---------------------------------------------------------------------- 
    775  
    776       ! set the initialization flag to 1 
    777       neos_init = 1           ! indicate that the initialization has been done 
    778  
    779       ! namelist nameos : ocean physical parameters 
    780  
    781       ! Read Namelist nameos : equation of state 
    782       REWIND( numnam ) 
     715 
     716      REWIND( numnam )            ! Read Namelist nameos : equation of state 
    783717      READ  ( numnam, nameos ) 
    784718 
     
    789723         WRITE(numout,*) '~~~~~~~~' 
    790724         WRITE(numout,*) '          Namelist nameos : set eos parameters' 
    791          WRITE(numout,*) 
    792725         WRITE(numout,*) '             flag for eq. of state and N^2  neos   = ', neos 
    793726         WRITE(numout,*) '             thermal exp. coef. (linear)    ralpha = ', ralpha 
    794727         WRITE(numout,*) '             saline  exp. coef. (linear)    rbeta  = ', rbeta 
    795          WRITE(numout,*) 
    796728      ENDIF 
    797729 
     
    799731 
    800732      CASE ( 0 )               ! Jackett and McDougall (1994) formulation 
    801  
     733         IF(lwp) WRITE(numout,*) 
    802734         IF(lwp) WRITE(numout,*) '          use of Jackett & McDougall (1994) equation of state and' 
    803735         IF(lwp) WRITE(numout,*) '                 McDougall (1987) Brunt-Vaisala frequency' 
    804  
     736         ! 
    805737      CASE ( 1 )               ! Linear formulation function of temperature only 
    806  
     738         IF(lwp) WRITE(numout,*) 
    807739         IF(lwp) WRITE(numout,*) '          use of linear eos rho(T) = rau0 * ( 1.0285 - ralpha * T )' 
    808740         IF( lk_zdfddm ) CALL ctl_stop( '          double diffusive mixing parameterization requires',   & 
    809741              &                         ' that T and S are used as state variables' ) 
    810  
     742         ! 
    811743      CASE ( 2 )               ! Linear formulation function of temperature and salinity 
    812  
     744         IF(lwp) WRITE(numout,*) 
    813745         IF(lwp) WRITE(numout,*) '          use of linear eos rho(T,S) = rau0 * ( rbeta * S - ralpha * T )' 
    814  
    815       CASE DEFAULT 
    816  
     746         ! 
     747      CASE DEFAULT             ! E R R O R in neos  
    817748         WRITE(ctmp1,*) '          bad flag value for neos = ', neos 
    818749         CALL ctl_stop( ctmp1 ) 
    819  
    820750      END SELECT 
    821751 
  • trunk/NEMO/OFF_SRC/opa.F90

    r1457 r1497  
    218218      CALL phy_cst                          ! Physical constants 
    219219 
     220      CALL eos_init                         ! Equation of state 
     221 
    220222      CALL dom_cfg                          ! Domain configuration 
    221223 
Note: See TracChangeset for help on using the changeset viewer.