Ignore:
Timestamp:
Mar 12, 2015, 2:15:18 PM (9 years ago)
Author:
lguez
Message:

Correcting a problem from revision 2218. The type double precision
with option "-fdefault-real-8" of gfortran is promoted to 16-byte
precision and there is no specific procedure in arth with this
precision. Could not add a specific procedure in arth with double
precision because, with ifort, the option "-real-size 64" does not
promote the double precision, so that would make two identical
specific procedures in arth.

In module nrtype, replaced double precision by a parameterized real
kind so that the effective precision does not depend on a compiler
option.

In coefpoly, fxhyp, fyhyp and invert_zoom_x, use the parameterized
real kind defined in nrtype, instead of double precision.

Also, in module nrtype, removed unused derived types sprs2_sp and
sprs2_dp.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dyn3d_common/invert_zoom_x_m.F90

    r2218 r2228  
    1010
    1111    use coefpoly_m, only: coefpoly
    12     use nrtype, only: pi, pi_d, twopi_d
     12    use nrtype, only: pi, pi_d, twopi_d, k8
    1313
    1414    include "dimensions.h"
     
    1818    ! for clon
    1919
    20     DOUBLE PRECISION, intent(in):: Xf(0:), xtild(0:), Xprimt(0:) ! (0:2 * nmax)
     20    REAL(K8), intent(in):: Xf(0:), xtild(0:), Xprimt(0:) ! (0:2 * nmax)
    2121    real, intent(out):: xlon(:), xprimm(:) ! (iim)
    2222
    23     DOUBLE PRECISION, intent(in):: xuv
     23    REAL(K8), intent(in):: xuv
    2424    ! 0. si calcul aux points scalaires
    2525    ! 0.5 si calcul aux points U
    2626
    2727    ! Local:
    28     DOUBLE PRECISION xo1, Xfi, a0, a1, a2, a3, Xf1, Xprimin
     28    REAL(K8) xo1, Xfi, a0, a1, a2, a3, Xf1, Xprimin
    2929    integer i, it, iter
    30     DOUBLE PRECISION, parameter:: my_eps = 1d-6
     30    REAL(K8), parameter:: my_eps = 1e-6_k8
    3131
    32     DOUBLE PRECISION xxprim(iim), xvrai(iim)
     32    REAL(K8) xxprim(iim), xvrai(iim)
    3333    ! intermediary variables because xlon and xprimm are simple precision
    3434
     
    3636
    3737    DO i = 1, iim
    38        Xfi = - pi_d + (i + xuv - 0.75d0) * twopi_d / iim
     38       Xfi = - pi_d + (i + xuv - 0.75_k8) * twopi_d / iim
    3939
    4040       it = 2 * nmax
     
    5454            xtild(it), xtild(it + 1), a0, a1, a2, a3)
    5555       Xf1 = Xf(it)
    56        Xprimin = a1 + xvrai(i) * (2d0 * a2 + xvrai(i) * 3d0 * a3)
     56       Xprimin = a1 + xvrai(i) * (2._k8 * a2 + xvrai(i) * 3._k8 * a3)
    5757       xo1 = xvrai(i)
    5858       iter = 1
     
    6363          xo1 = xvrai(i)
    6464          Xf1 = a0 + xvrai(i) * (a1 + xvrai(i) * (a2 + xvrai(i) * a3))
    65           Xprimin = a1 + xvrai(i) * (2d0 * a2 + xvrai(i) * 3d0 * a3)
     65          Xprimin = a1 + xvrai(i) * (2._k8 * a2 + xvrai(i) * 3._k8 * a3)
    6666       end DO
    6767
Note: See TracChangeset for help on using the changeset viewer.