Ignore:
Timestamp:
Mar 20, 2014 4:38:49 PM (10 years ago)
Author:
raasch
Message:

REAL functions and a lot of REAL constants provided with KIND-attribute,
some small bugfixes

File:
1 edited

Legend:

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

    r1321 r1322  
    2020! Current revisions:
    2121! -----------------
     22! REAL constants defined as wp_kind
    2223!
    2324! Former revisions:
     
    167168!--       Calculate the radius class bounds with logarithmic distances
    168169!--       in the interval [1.0E-6, 2.0E-4] m
    169           rclass_lbound = LOG( 1.0E-6 )
    170           rclass_ubound = LOG( 2.0E-4 )
     170          rclass_lbound = LOG( 1.0E-6_wp )
     171          rclass_ubound = LOG( 2.0E-4_wp )
    171172          radclass(1)   = 1.0E-6
    172173          DO  i = 2, radius_classes
     
    182183!--       Set the class bounds for dissipation in interval [0.0, 0.1] m**2/s**3
    183184          DO  i = 1, dissipation_classes
    184              epsclass(i) = 0.1 * REAL( i ) / dissipation_classes
     185             epsclass(i) = 0.1 * REAL( i, KIND=wp ) / dissipation_classes
    185186!             IF ( myid == 0 )  THEN
    186187!                PRINT*, 'i=', i, ' eps = ', epsclass(i)
     
    197198
    198199             epsilon = epsclass(k)
    199              urms    = 2.02 * ( epsilon / 0.04 )**( 1.0 / 3.0 )
     200             urms    = 2.02 * ( epsilon / 0.04_wp )**( 1.0_wp / 3.0_wp )
    200201
    201202             CALL turbsd
     
    313314          epsilon = 0.0
    314315       ENDIF
    315        urms    = 2.02 * ( epsilon / 0.04 )**( 0.33333333333 )
     316       urms    = 2.02 * ( epsilon / 0.04_wp )**( 0.33333333333_wp )
    316317
    317318       IF ( wang_kernel  .AND.  epsilon > 1.0E-7 )  THEN
     
    431432       ENDIF
    432433
    433        lambda    = urms * SQRT( 15.0 * molecular_viscosity / epsilon )    ! in m
    434        lambda_re = urms**2 * SQRT( 15.0 / epsilon / molecular_viscosity )
     434       lambda    = urms * SQRT( 15.0_wp * molecular_viscosity / epsilon ) ! in m
     435       lambda_re = urms**2 * SQRT( 15.0_wp / epsilon / molecular_viscosity )
    435436       tl        = urms**2 / epsilon                       ! in s
    436437       lf        = 0.5 * urms**3 / epsilon                 ! in m
    437438       tauk      = SQRT( molecular_viscosity / epsilon )                  ! in s
    438        eta       = ( molecular_viscosity**3 / epsilon )**0.25             ! in m
     439       eta       = ( molecular_viscosity**3 / epsilon )**0.25_wp          ! in m
    439440       vk        = eta / tauk
    440441
    441442       ao = ( 11.0 + 7.0 * lambda_re ) / ( 205.0 + lambda_re )
    442        tt = SQRT( 2.0 * lambda_re / ( SQRT( 15.0 ) * ao ) ) * tauk   ! in s
     443       tt = SQRT( 2.0 * lambda_re / ( SQRT( 15.0_wp ) * ao ) ) * tauk   ! in s
    443444
    444445       CALL fallg    ! gives winf in m/s
     
    452453!--    Calculate wr (from Aayala 2008b, page 38f)
    453454       z   = tt / tl
    454        be  = SQRT( 2.0 ) * lambda / lf
     455       be  = SQRT( 2.0_wp ) * lambda / lf
    455456       bbb = SQRT( 1.0 - 2.0 * be**2 )
    456457       d1  = ( 1.0 + bbb ) / ( 2.0 * bbb )
     
    504505             wrtur2xy = vrms1xy**2 + vrms2xy**2 - 2.0 * v1v2xy   ! in m**2/s**2
    505506             IF ( wrtur2xy < 0.0 )  wrtur2xy = 0.0
    506              wrgrav2  = pi / 8.0 * ( winf(j) - winf(i) )**2
    507              wrfin    = SQRT( ( 2.0 / pi ) * ( wrtur2xy + wrgrav2) )  ! in m/s
     507             wrgrav2  = pi / 8.0_wp * ( winf(j) - winf(i) )**2
     508             wrfin    = SQRT( ( 2.0_wp / pi ) * ( wrtur2xy + wrgrav2) ) ! in m/s
    508509
    509510!
     
    518519                   5.3406 * sst
    519520             IF ( xx < 0.0 )  xx = 0.0
    520              yy = 0.1886 * EXP( 20.306 / lambda_re )
     521             yy = 0.1886 * EXP( 20.306_wp / lambda_re )
    521522
    522523             c1_gr  =  xx / ( g / vk * tauk )**yy
    523524
    524              ao_gr  = ao + ( pi / 8.0) * ( g / vk * tauk )**2
     525             ao_gr  = ao + ( pi / 8.0_wp) * ( g / vk * tauk )**2
    525526             fao_gr = 20.115 * SQRT( ao_gr / lambda_re )
    526527             rc     = SQRT( fao_gr * ABS( st(j) - st(i) ) ) * eta   ! in cm
     
    652653          stb   = 32.0 * rho_a * ( rho_l - rho_a) * g / (3.0 * eta * eta)
    653654          phy   = sigma**3 * rho_a**2 / ( eta**4 * g * ( rho_l - rho_a ) )
    654           py    = phy**( 1.0 / 6.0 )
     655          py    = phy**( 1.0_wp / 6.0_wp )
    655656
    656657       ENDIF
     
    685686             ENDIF
    686687
    687              x = LOG( 16.0 * bond * py / 3.0 )
     688             x = LOG( 16.0 * bond * py / 3.0_wp )
    688689             y = 0.0
    689690
     
    695696
    696697             IF ( radclass(j) > 0.0035 )  THEN
    697                 winf(j) = xrey * eta / ( 2.0 * rho_a * 0.0035 )
     698                winf(j) = xrey * eta / ( 2.0 * rho_a * 0.0035_wp )
    698699             ELSE
    699700                winf(j) = xrey * eta / ( 2.0 * rho_a * radclass(j) )
     
    799800       ALLOCATE( ira(1:radius_classes) )
    800801       DO  j = 1, radius_classes
    801           particle_radius = radclass(j) * 1.0E6
     802          particle_radius = radclass(j) * 1.0E6_wp
    802803          DO  k = 1, 15
    803804             IF ( particle_radius < r0(k) )  THEN
     
    822823             IF ( ir < 16 )  THEN
    823824                IF ( ir >= 2 )  THEN
    824                    pp = ( ( radclass(j) * 1.0E06 ) - r0(ir-1) ) / &
     825                   pp = ( ( radclass(j) * 1.0E06_wp ) - r0(ir-1) ) / &
    825826                        ( r0(ir) - r0(ir-1) )
    826827                   qq = ( rq- rat(iq-1) ) / ( rat(iq) - rat(iq-1) )
     
    930931
    931932       DO  j = 1, radius_classes
    932           particle_radius = radclass(j) * 1.0E6
     933          particle_radius = radclass(j) * 1.0E6_wp
    933934          DO  k = 1, 7
    934935             IF ( particle_radius < r0(k) )  THEN
     
    10391040       REAL(wp), DIMENSION(1:9,1:19), SAVE ::  ef = 0.0          !:
    10401041
    1041        mean_rm = mean_r * 1.0E06
    1042        rm      = r      * 1.0E06
     1042       mean_rm = mean_r * 1.0E06_wp
     1043       rm      = r      * 1.0E06_wp
    10431044
    10441045       IF ( first )  THEN
Note: See TracChangeset for help on using the changeset viewer.