Ignore:
Timestamp:
Mar 20, 2014 8:40:49 AM (8 years ago)
Author:
raasch
Message:

ONLY-attribute added to USE-statements,
kind-parameters added to all INTEGER and REAL declaration statements,
kinds are defined in new module kinds,
old module precision_kind is removed,
revision history before 2012 removed,
comment fields (!:) to be used for variable explanations added to all variable declaration statements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/eqn_state_seawater.f90

    r1310 r1320  
    11 MODULE eqn_state_seawater_mod
    22
    3 !--------------------------------------------------------------------------------!
     3!------------------------------------------------------------------------------!
    44! This file is part of PALM.
    55!
     
    1616!
    1717! Copyright 1997-2014 Leibniz Universitaet Hannover
    18 !--------------------------------------------------------------------------------!
     18!------------------------------------------------------------------------------!
    1919!
    2020! Current revisions:
    2121! -----------------
    22 !
     22! ONLY-attribute added to USE-statements,
     23! kind-parameters added to all INTEGER and REAL declaration statements,
     24! kinds are defined in new module kinds,
     25! old module precision_kind is removed,
     26! revision history before 2012 removed,
     27! comment fields (!:) to be used for variable explanations added to
     28! all variable declaration statements
    2329!
    2430! Former revisions:
     
    2834! 1036 2012-10-22 13:43:42Z raasch
    2935! code put under GPL (PALM 3.9)
    30 !
    31 ! 388 2009-09-23 09:40:33Z raasch
    32 ! Potential density is additionally calculated in eqn_state_seawater,
    33 ! first constant in array den also defined as type double.
    3436!
    3537! 97 2007-06-21 08:23:15Z raasch
     
    4547! eqn_state_seawater_func calculates density.
    4648!------------------------------------------------------------------------------!
     49   
     50    USE kinds
    4751
    4852    IMPLICIT NONE
     
    5155    PUBLIC eqn_state_seawater, eqn_state_seawater_func
    5256
    53     REAL, DIMENSION(12), PARAMETER ::  nom =                             &
    54                       (/ 9.9984085444849347D2,   7.3471625860981584D0,   &
    55                         -5.3211231792841769D-2,  3.6492439109814549D-4,  &
    56                          2.5880571023991390D0,  -6.7168282786692354D-3,  &
    57                          1.9203202055760151D-3,  1.1798263740430364D-2,  &
    58                          9.8920219266399117D-8,  4.6996642771754730D-6,  &
    59                         -2.5862187075154352D-8, -3.2921414007960662D-12 /)
    60 
    61     REAL, DIMENSION(13), PARAMETER ::  den =                             &
    62                       (/ 1.0D0,                  7.2815210113327091D-3,  &
    63                         -4.4787265461983921D-5,  3.3851002965802430D-7,  &
    64                          1.3651202389758572D-10, 1.7632126669040377D-3,  &
    65                         -8.8066583251206474D-6, -1.8832689434804897D-10, &
    66                          5.7463776745432097D-6,  1.4716275472242334D-9,  &
    67                          6.7103246285651894D-6, -2.4461698007024582D-17, &
    68                         -9.1534417604289062D-18 /)
     57    REAL(wp), DIMENSION(12), PARAMETER ::  nom =                               &
     58                          (/ 9.9984085444849347D2,   7.3471625860981584D0,     &
     59                            -5.3211231792841769D-2,  3.6492439109814549D-4,    &
     60                             2.5880571023991390D0,  -6.7168282786692354D-3,    &
     61                             1.9203202055760151D-3,  1.1798263740430364D-2,    &
     62                             9.8920219266399117D-8,  4.6996642771754730D-6,    &
     63                            -2.5862187075154352D-8, -3.2921414007960662D-12 /)
     64                          !:
     65
     66    REAL(wp), DIMENSION(13), PARAMETER ::  den =                               &
     67                          (/ 1.0D0,                  7.2815210113327091D-3,    &
     68                            -4.4787265461983921D-5,  3.3851002965802430D-7,    &
     69                             1.3651202389758572D-10, 1.7632126669040377D-3,    &
     70                            -8.8066583251206474D-6, -1.8832689434804897D-10,   &
     71                             5.7463776745432097D-6,  1.4716275472242334D-9,    &
     72                             6.7103246285651894D-6, -2.4461698007024582D-17,   &
     73                            -9.1534417604289062D-18 /)
     74                          !:
    6975
    7076    INTERFACE eqn_state_seawater
     
    8591    SUBROUTINE eqn_state_seawater
    8692
    87        USE arrays_3d
    88        USE indices
     93       USE arrays_3d,                                                          &
     94           ONLY:  hyp, prho, pt_p, rho, sa_p
     95       USE indices,                                                            &
     96           ONLY:  nxl, nxr, nyn, nys, nzb_s_inner, nzt
    8997
    9098       IMPLICIT NONE
    9199
    92        INTEGER ::  i, j, k
    93 
    94        REAL ::  pden, pnom, p1, p2, p3, pt1, pt2, pt3, pt4, sa1, sa15, sa2
     100       INTEGER(iwp) ::  i  !:
     101       INTEGER(iwp) ::  j  !:
     102       INTEGER(iwp) ::  k  !:
     103
     104       REAL(wp) ::  pden  !:
     105       REAL(wp) ::  pnom  !:
     106       REAL(wp) ::  p1    !:
     107       REAL(wp) ::  p2    !:
     108       REAL(wp) ::  p3    !:
     109       REAL(wp) ::  pt1   !:
     110       REAL(wp) ::  pt2   !:
     111       REAL(wp) ::  pt3   !:
     112       REAL(wp) ::  pt4   !:
     113       REAL(wp) ::  sa1   !:
     114       REAL(wp) ::  sa15  !:
     115       REAL(wp) ::  sa2   !:
     116       
     117                       
    95118
    96119       DO  i = nxl, nxr
     
    114137                sa2  = sa1 * sa1
    115138
    116                 pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     + &
    117                        nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 + &
     139                pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     +    &
     140                       nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 +    &
    118141                       nom(7)*sa2
    119142
    120                 pden = den(1)           + den(2)*pt1     + den(3)*pt2     + &
    121                        den(4)*pt3       + den(5)*pt4     + den(6)*sa1     + &
    122                        den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    + &
     143                pden = den(1)           + den(2)*pt1     + den(3)*pt2     +    &
     144                       den(4)*pt3       + den(5)*pt4     + den(6)*sa1     +    &
     145                       den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    +    &
    123146                       den(10)*sa15*pt2
    124147
     
    127150                prho(k,j,i) = pnom / pden
    128151
    129                 pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  + &
     152                pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  +    &
    130153                       nom(10)*p1*sa1   + nom(11)*p2     + nom(12)*p2*pt2
    131154
    132                 pden = pden +             den(11)*p1     + den(12)*p2*pt3 + &
     155                pden = pden +             den(11)*p1     + den(12)*p2*pt3 +    &
    133156                       den(13)*p3*pt1
    134157
     
    156179    SUBROUTINE eqn_state_seawater_ij( i, j )
    157180
    158        USE arrays_3d
    159        USE indices
     181       USE arrays_3d,                                                          &
     182           ONLY:  hyp, prho, pt_p, rho, sa_p
     183           
     184       USE indices,                                                            &
     185           ONLY:  nzb_s_inner, nzt
    160186
    161187       IMPLICIT NONE
    162188
    163        INTEGER ::  i, j, k
    164 
    165        REAL ::  pden, pnom, p1, p2, p3, pt1, pt2, pt3, pt4, sa1, sa15, sa2
     189       INTEGER(iwp) ::  i, j, k
     190
     191       REAL(wp)     ::  pden, pnom, p1, p2, p3, pt1, pt2, pt3, pt4, sa1, sa15, &
     192                        sa2
    166193
    167194       DO  k = nzb_s_inner(j,i)+1, nzt
     
    183210          sa2  = sa1 * sa1
    184211
    185           pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     + &
    186                  nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 + &
     212          pnom = nom(1)           + nom(2)*pt1     + nom(3)*pt2     +          &
     213                 nom(4)*pt3       + nom(5)*sa1     + nom(6)*sa1*pt1 +          &
    187214                 nom(7)*sa2
    188215
    189           pden = den(1)           + den(2)*pt1     + den(3)*pt2     + &
    190                  den(4)*pt3       + den(5)*pt4     + den(6)*sa1     + &
    191                  den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    + &
     216          pden = den(1)           + den(2)*pt1     + den(3)*pt2     +          &
     217                 den(4)*pt3       + den(5)*pt4     + den(6)*sa1     +          &
     218                 den(7)*sa1*pt1   + den(8)*sa1*pt3 + den(9)*sa15    +          &
    192219                 den(10)*sa15*pt2
    193220
     
    196223          prho(k,j,i) = pnom / pden
    197224
    198           pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  + &
     225          pnom = pnom +             nom(8)*p1      + nom(9)*p1*pt2  +          &
    199226                 nom(10)*p1*sa1   + nom(11)*p2     + nom(12)*p2*pt2
    200           pden = pden +             den(11)*p1     + den(12)*p2*pt3 + &
     227          pden = pden +             den(11)*p1     + den(12)*p2*pt3 +          &
    201228                 den(13)*p3*pt1
    202229
     
    221248! Equation of state as a function
    222249!------------------------------------------------------------------------------!
    223     REAL FUNCTION eqn_state_seawater_func( p, pt, sa )
     250    REAL(wp) FUNCTION eqn_state_seawater_func( p, pt, sa )
    224251
    225252       IMPLICIT NONE
    226253
    227        REAL ::  p, p1, p2, p3, pt, pt1, pt2, pt3, pt4, sa, sa15, sa2
     254       REAL(wp) ::  p      !:
     255       REAL(wp) ::  p1     !:
     256       REAL(wp) ::  p2     !:
     257       REAL(wp) ::  p3     !:
     258       REAL(wp) ::  pt     !:
     259       REAL(wp) ::  pt1    !:
     260       REAL(wp) ::  pt2    !:
     261       REAL(wp) ::  pt3    !:
     262       REAL(wp) ::  pt4    !:
     263       REAL(wp) ::  sa     !:
     264       REAL(wp) ::  sa15   !:
     265       REAL(wp) ::  sa2    !:
    228266
    229267!
Note: See TracChangeset for help on using the changeset viewer.