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 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obsinter_h2d.h90 – NEMO

Ignore:
Timestamp:
2021-11-26T12:27:56+01:00 (3 years ago)
Author:
sparonuz
Message:

Mixed precision version, tested up to 30 years on ORCA2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obsinter_h2d.h90

    r10353 r15540  
    8686                                ! = 3 bilinear (quadrilateral grid) 
    8787                                ! = 4 polynomial (quadrilateral grid) 
    88       REAL(KIND=wp), INTENT(INOUT) :: & 
     88      REAL(KIND=dp), INTENT(INOUT) :: & 
    8989         & plam, & 
    9090         & pphi                 ! Geographical (lat,lon) coordinates of 
    9191                                ! observation 
    92       REAL(KIND=wp), DIMENSION(2,2), INTENT(IN) :: & 
     92      REAL(KIND=dp), DIMENSION(2,2), INTENT(IN) :: & 
    9393         & pglam, &             ! Model variable lat 
    9494         & pgphi                ! Model variable lon 
    95       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     95      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    9696         & pmask                ! Model variable mask 
    97       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(OUT) ::  & 
     97      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(OUT) ::  & 
    9898         & pweig                ! Weights for interpolation 
    99       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) ::  & 
     99      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) ::  & 
    100100         & pobsmask             ! Vertical mask for observations 
    101101      INTEGER, INTENT(IN), OPTIONAL :: & 
     
    110110         & iamb1, & 
    111111         & iamb2 
    112       REAL(KIND=wp) :: & 
     112      REAL(KIND=dp) :: & 
    113113         & zphimm,  & 
    114114         & zphimp,  & 
     
    123123         & zlammin, & 
    124124         & zlammax 
    125       REAL(KIND=wp), DIMENSION(kpk2) :: & 
     125      REAL(KIND=dp), DIMENSION(kpk2) :: & 
    126126         & z2dmm,  & 
    127127         & z2dmp,  & 
     
    390390         & kpk,   &             ! Parameter values for automatic arrays 
    391391         & kpk2 
    392       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     392      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    393393         & pweig                ! Interpolation weights 
    394       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     394      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    395395         & pmod                 ! Model variable to interpolate 
    396       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) ::  & 
     396      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) ::  & 
    397397         & pobsk                ! Model profile interpolated to obs (i,j) pt 
    398398 
     
    402402      INTEGER :: & 
    403403         & ikmax 
    404       REAL(KIND=wp) :: & 
     404      REAL(KIND=dp) :: & 
    405405         & zsum 
    406406      !------------------------------------------------------------------------ 
     
    462462         & kpk2, &             ! Parameter values for automatic arrays 
    463463         & kmax 
    464       REAL(KIND=wp), INTENT(IN) :: & 
     464      REAL(KIND=dp), INTENT(IN) :: & 
    465465         & pphi,   &           ! Geographical location of observation 
    466466         & plam,   & 
     
    473473         & plampm, & 
    474474         & plampp 
    475       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     475      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    476476         & pmask               ! Model variable mask  
    477       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) :: & 
     477      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) :: & 
    478478         & p2dmm, &            ! Interpolation weights 
    479479         & p2dmp, & 
     
    484484      INTEGER :: & 
    485485         & jk 
    486       REAL(KIND=wp) :: & 
     486      REAL(KIND=dp) :: & 
    487487         & zphi2,   & 
    488488         & zlam2,   & 
     
    611611         & kpk2, &             ! Parameter values for automatic arrays 
    612612         & kmax 
    613       REAL(KIND=wp), INTENT(IN) ::        & 
     613      REAL(KIND=dp), INTENT(IN) ::        & 
    614614         & pphi,   &           ! Geographical location of observation 
    615615         & plam,   & 
     
    622622         & plampm, & 
    623623         & plampp 
    624       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     624      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    625625         & pmask               ! Model variable mask  
    626       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) :: & 
     626      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) :: & 
    627627         & p2dmm, &            ! Interpolation weights 
    628628         & p2dmp, & 
     
    633633      INTEGER :: & 
    634634         & jk 
    635       REAL(KIND=wp) :: & 
     635      REAL(KIND=dp) :: & 
    636636         & zcosp,   & 
    637637         & zdlmm,   & 
     
    709709         & kpk2, &             ! Parameter values for automatic arrays 
    710710         & kmax 
    711       REAL(KIND=wp), INTENT(IN) :: & 
     711      REAL(KIND=dp), INTENT(IN) :: & 
    712712         & pphi,   &           ! Geographical location of observation 
    713713         & plam,   & 
     
    716716         & plammp, & 
    717717         & plampp 
    718       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN)  :: & 
     718      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN)  :: & 
    719719         & pmask               ! Model variable mask 
    720       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) :: & 
     720      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) :: & 
    721721         & p2dmm, &            ! Interpolation weights 
    722722         & p2dmp, & 
     
    727727      INTEGER :: & 
    728728         & jk 
    729       REAL(KIND=wp) :: & 
     729      REAL(KIND=dp) :: & 
    730730         & zdlmp, & 
    731731         & zdppm, & 
     
    776776         & kpk2, &             ! Parameter values for automatic arrays 
    777777         & kmax 
    778       REAL(KIND=wp), INTENT(IN) ::        & 
     778      REAL(KIND=dp), INTENT(IN) ::        & 
    779779         & pphi,   &           ! Geographical location of observation 
    780780         & plam,   & 
     
    787787         & plampm, & 
    788788         & plampp 
    789       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     789      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    790790         & pmask               ! Model variable mask  
    791       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) :: & 
     791      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) :: & 
    792792         & p2dmm, &            ! Interpolation weights 
    793793         & p2dmp, & 
     
    799799      INTEGER :: & 
    800800         & jk 
    801       REAL(KIND=wp) :: & 
     801      REAL(KIND=dp) :: & 
    802802         & zbiwmm, & 
    803803         & zbiwmp, & 
     
    858858         & kpk2,   &           ! Parameter values for automatic arrays  
    859859         & kmax 
    860       REAL(KIND=wp), INTENT(IN) :: & 
     860      REAL(KIND=dp), INTENT(IN) :: & 
    861861         & pphi,   &           ! Geographical location of observation 
    862862         & plam,   & 
     
    869869         & plampm, & 
    870870         & plampp 
    871       REAL(KIND=wp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
     871      REAL(KIND=dp), DIMENSION(2,2,kpk2), INTENT(IN) :: & 
    872872         & pmask               ! Model variable mask 
    873       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) :: & 
     873      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) :: & 
    874874         & p2dmm,  &           ! Interpolation weights 
    875875         & p2dmp,  & 
     
    880880      INTEGER :: & 
    881881         & jk 
    882       REAL(KIND=wp) :: & 
     882      REAL(KIND=dp) :: & 
    883883         & zplp 
    884       REAL(KIND=wp), DIMENSION(4,4) :: & 
     884      REAL(KIND=dp), DIMENSION(4,4) :: & 
    885885         & zmat,  & 
    886886         & zmati 
     
    960960  
    961961      !! * Arguments 
    962       REAL(KIND=wp), INTENT(IN) :: & 
     962      REAL(KIND=dp), INTENT(IN) :: & 
    963963         & pphi,   &           ! Geographical location of observation 
    964964         & plam,   & 
     
    971971         & plampm, & 
    972972         & plampp 
    973       REAL(KIND=wp), INTENT(OUT) :: & 
     973      REAL(KIND=dp), INTENT(OUT) :: & 
    974974         & pbiwmm, &           ! Interpolation weights 
    975975         & pbiwmp, & 
     
    984984      INTEGER :: & 
    985985         & itermax 
    986       REAL(KIND=wp) :: & 
     986      REAL(KIND=dp) :: & 
    987987         & zphi,    &           ! Geographical location of observation 
    988988         & zlam,    & 
     
    11611161      INTEGER, INTENT(IN) :: & 
    11621162         & kdim             ! Array dimension 
    1163       REAL(KIND=wp), DIMENSION(kdim,kdim), INTENT(IN) :: & 
     1163      REAL(KIND=dp), DIMENSION(kdim,kdim), INTENT(IN) :: & 
    11641164         & pmatin  
    1165       REAL(KIND=wp), DIMENSION(kdim,kdim), INTENT(OUT) :: & 
     1165      REAL(KIND=dp), DIMENSION(kdim,kdim), INTENT(OUT) :: & 
    11661166         & pmatou  
    11671167   
     
    11721172      INTEGER, DIMENSION(kdim) :: & 
    11731173         & indx 
    1174       REAL(KIND=wp), DIMENSION(kdim,kdim) :: & 
     1174      REAL(KIND=dp), DIMENSION(kdim,kdim) :: & 
    11751175         & zmat 
    1176       REAL(KIND=wp) :: & 
     1176      REAL(KIND=dp) :: & 
    11771177         & zd 
    11781178 
     
    12171217      INTEGER, DIMENSION(kdim1), INTENT(OUT) :: & 
    12181218         & kindex 
    1219       REAL(KIND=wp), INTENT(OUT) :: & 
     1219      REAL(KIND=dp), INTENT(OUT) :: & 
    12201220         & pflt 
    1221       REAL(KIND=wp), DIMENSION(kdim2,kdim2), INTENT(INOUT) :: & 
     1221      REAL(KIND=dp), DIMENSION(kdim2,kdim2), INTENT(INOUT) :: & 
    12221222         & pmatin  
    12231223   
     
    12251225      INTEGER, PARAMETER :: & 
    12261226         & jpmax = 100 
    1227       REAL(KIND=wp), PARAMETER :: & 
     1227      REAL(KIND=dp), PARAMETER :: & 
    12281228         & pptiny = 1.0e-20_wp 
    1229       REAL(KIND=wp), DIMENSION(jpmax) :: & 
     1229      REAL(KIND=dp), DIMENSION(jpmax) :: & 
    12301230         & zvv 
    12311231      INTEGER :: & 
     
    12351235      INTEGER :: & 
    12361236         & imax 
    1237       REAL(KIND=wp) :: & 
     1237      REAL(KIND=dp) :: & 
    12381238         & zsum,  & 
    12391239         & zdum,  & 
     
    13201320      INTEGER, DIMENSION(kdim1), INTENT(IN) :: & 
    13211321         & kindex 
    1322       REAL(KIND=wp), DIMENSION(kdim1), INTENT(INOUT) :: & 
     1322      REAL(KIND=dp), DIMENSION(kdim1), INTENT(INOUT) :: & 
    13231323         & pvect 
    1324       REAL(KIND=wp), DIMENSION(kdim2,kdim2), INTENT(IN) :: & 
     1324      REAL(KIND=dp), DIMENSION(kdim2,kdim2), INTENT(IN) :: & 
    13251325         & pmat 
    13261326   
     
    13311331         & jj,  & 
    13321332         & jll 
    1333       REAL(KIND=wp) :: & 
     1333      REAL(KIND=dp) :: & 
    13341334         & zsum 
    13351335 
Note: See TracChangeset for help on using the changeset viewer.