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 – 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.

Location:
NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS
Files:
28 edited

Legend:

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

    r14986 r15540  
    8888   INTEGER , DIMENSION(:), ALLOCATABLE ::   nextrprof, nextrsurf   ! Number of profile & surface extra variables 
    8989   INTEGER , DIMENSION(:), ALLOCATABLE ::   n2dintsurf             ! Interpolation option for surface variables 
    90    REAL(wp), DIMENSION(:), ALLOCATABLE ::   zavglamscl, zavgphiscl ! E/W & N/S diameter of averaging footprint for surface variables 
     90   REAL(dp), DIMENSION(:), ALLOCATABLE ::   zavglamscl, zavgphiscl ! E/W & N/S diameter of averaging footprint for surface variables 
    9191   LOGICAL , DIMENSION(:), ALLOCATABLE ::   lfpindegs              ! T=> surface obs footprint size specified in degrees, F=> in metres 
    9292   LOGICAL , DIMENSION(:), ALLOCATABLE ::   llnightav              ! Logical for calculating night-time averages 
     
    169169      REAL(wp) :: ztype_avglamscl ! Local version of rn_*_avglamscl 
    170170      REAL(wp) :: ztype_avgphiscl ! Local version of rn_*_avgphiscl 
    171       REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: zglam   ! Model longitudes for profile variables 
    172       REAL(wp), DIMENSION(:,:,:),   ALLOCATABLE :: zgphi   ! Model latitudes  for profile variables 
    173       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: zmask   ! Model land/sea mask associated with variables 
     171      REAL(dp), DIMENSION(:,:,:),   ALLOCATABLE :: zglam   ! Model longitudes for profile variables 
     172      REAL(dp), DIMENSION(:,:,:),   ALLOCATABLE :: zgphi   ! Model latitudes  for profile variables 
     173      REAL(dp), DIMENSION(:,:,:,:), ALLOCATABLE :: zmask   ! Model land/sea mask associated with variables 
    174174      !! 
    175175      NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              & 
     
    628628      INTEGER :: jvar              ! Variable number 
    629629      INTEGER :: ji, jj, jk        ! Loop counters 
    630       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
     630      REAL(dp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
    631631         & zprofvar                ! Model values for variables in a prof ob 
    632       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
     632      REAL(dp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
    633633         & zprofmask               ! Mask associated with zprofvar 
    634       REAL(wp), DIMENSION(jpi,jpj) :: & 
     634      REAL(dp), DIMENSION(jpi,jpj) :: & 
    635635         & zsurfvar, &             ! Model values equivalent to surface ob. 
    636636         & zsurfmask               ! Mask associated with surface variable 
    637       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     637      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    638638         & zglam,    &             ! Model longitudes for prof variables 
    639639         & zgphi                   ! Model latitudes for prof variables 
    640       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zdept, zdepw 
     640      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: zdept, zdepw 
    641641 
    642642      !----------------------------------------------------------------------- 
     
    787787      INTEGER :: jtype                    ! Data set loop variable 
    788788      INTEGER :: jo, jvar, jk 
    789       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
    790          & zu, & 
    791          & zv 
     789      REAL(dp), DIMENSION(:), ALLOCATABLE ::  zu, zv 
     790 
     791 
     792 
    792793 
    793794      !----------------------------------------------------------------------- 
     
    10831084      INTEGER, DIMENSION(ntypes), INTENT(INOUT) :: & 
    10841085         &                    n2dint  
    1085       REAL(wp), DIMENSION(ntypes), INTENT(INOUT) :: & 
    1086          &                    ravglamscl, ravgphiscl 
     1086      REAL(dp), DIMENSION(ntypes), INTENT(INOUT) ::  ravglamscl, ravgphiscl 
     1087 
     1088 
    10871089      LOGICAL, DIMENSION(ntypes), INTENT(INOUT) :: & 
    10881090         &                    lfpindegs, lavnight 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/grt_cir_dis.h90

    r13226 r15540  
    55   !!---------------------------------------------------------------------- 
    66 
    7    REAL(KIND=wp) FUNCTION grt_cir_dis( pa1, pa2, pb1, pb2, pc1, pc2 ) 
     7   REAL(KIND=dp) FUNCTION grt_cir_dis( pa1, pa2, pb1, pb2, pc1, pc2 ) 
    88      !!---------------------------------------------------------------------- 
    99      !!                     *** FUNCTION grt_cir_dis *** 
     
    2121       
    2222      !! * Arguments 
    23       REAL(KIND=wp) :: pa1   !  sin(lat1) 
    24       REAL(KIND=wp) :: pa2   !  sin(lat2) 
    25       REAL(KIND=wp) :: pb1   !  cos(lat1) * cos(lon1) 
    26       REAL(KIND=wp) :: pb2   !  cos(lat2) * cos(lon2) 
    27       REAL(KIND=wp) :: pc1   !  cos(lat1) * sin(lon1) 
    28       REAL(KIND=wp) :: pc2   !  cos(lat2) * sin(lon2) 
     23      REAL(KIND=dp) :: pa1   !  sin(lat1) 
     24      REAL(KIND=dp) :: pa2   !  sin(lat2) 
     25      REAL(KIND=dp) :: pb1   !  cos(lat1) * cos(lon1) 
     26      REAL(KIND=dp) :: pb2   !  cos(lat2) * cos(lon2) 
     27      REAL(KIND=dp) :: pc1   !  cos(lat1) * sin(lon1) 
     28      REAL(KIND=dp) :: pc2   !  cos(lat2) * sin(lon2) 
    2929 
    30       REAL(KIND=wp) :: cosdist ! cosine of great circle distance 
     30      REAL(KIND=dp) :: cosdist ! cosine of great circle distance 
    3131 
    3232      ! Compute cosine of great circle distance, constraining it to be between 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/grt_cir_dis_saa.h90

    r10068 r15540  
    55   !!---------------------------------------------------------------------- 
    66 
    7    REAL(KIND=wp) FUNCTION grt_cir_dis_saa( pa, pb, pc ) 
     7   REAL(KIND=dp) FUNCTION grt_cir_dis_saa( pa, pb, pc ) 
    88      !!---------------------------------------------------------------------- 
    99      !!                     *** FUNCTION grt_cir_dis_saa *** 
     
    2323       
    2424      !! * Arguments 
    25       REAL(KIND=wp) :: pa   !  lon1 - lon2 
    26       REAL(KIND=wp) :: pb   !  lat1 - lat2 
    27       REAL(KIND=wp) :: pc   !  cos(lat2) 
     25      REAL(KIND=dp) :: pa   !  lon1 - lon2 
     26      REAL(KIND=dp) :: pb   !  lat1 - lat2 
     27      REAL(KIND=dp) :: pc   !  cos(lat2) 
    2828 
    2929      grt_cir_dis_saa = SQRT( pa * pa + ( pb * pc )**2 ) 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/jul2greg.h90

    r9690 r15540  
    5252         & iyea,    & 
    5353         & iref 
    54       REAL(KIND=wp) :: & 
    55          & zday, & 
    56          & zref 
     54      REAL(KIND=dp) ::  zday, zref 
     55 
     56 
     57 
    5758      CHARACTER(len=200) :: & 
    5859         & cerr 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/linquad.h90

    r10068 r15540  
    2424 
    2525      !! * Arguments 
    26       REAL(KIND=wp), INTENT(IN) :: px        ! (lon) of the point P(x,y)  
    27       REAL(KIND=wp), INTENT(IN) :: py        ! (lat) of the point P(x,y)                
    28       REAL(KIND=wp), DIMENSION(4), INTENT(IN) :: & 
    29          & pxv,  &                  ! (lon, lat) of the surrounding cell 
    30          & pyv                      
     26      REAL(KIND=dp), INTENT(IN) :: px        ! (lon) of the point P(x,y)  
     27      REAL(KIND=dp), INTENT(IN) :: py        ! (lat) of the point P(x,y)                
     28      REAL(KIND=dp), DIMENSION(4), INTENT(IN) ::  pxv, pyv ! (lon, lat) of the surrounding cell 
     29 
     30 
     31 
    3132   
    3233      !! * Local declarations 
    33       REAL(KIND=wp) :: zst1 
    34       REAL(KIND=wp) :: zst2 
    35       REAL(KIND=wp) :: zst3 
    36       REAL(KIND=wp) :: zst4 
     34      REAL(KIND=dp) :: zst1 
     35      REAL(KIND=dp) :: zst2 
     36      REAL(KIND=dp) :: zst3 
     37      REAL(KIND=dp) :: zst4 
    3738 
    3839      !----------------------------------------------------------------------- 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/maxdist.h90

    r14894 r15540  
    55   !!---------------------------------------------------------------------- 
    66 
    7    REAL(wp) FUNCTION maxdist( pxv, pyv ) 
     7   REAL(dp) FUNCTION maxdist( pxv, pyv ) 
    88      !!---------------------------------------------------------------------- 
    99      !!                    ***  FUNCTION maxdist *** 
     
    2727 
    2828      !! * Local declarations 
    29       REAL(KIND=wp), DIMENSION(4) :: & 
    30           &  zxv, & 
    31           &  zyv, & 
    32           &  za,  & 
    33           &  zb,  & 
    34           &  zc 
    35       REAL(KIND=wp) :: zdist 
     29      REAL(KIND=dp), DIMENSION(4) ::  zxv, zyv, za, zb, zc 
     30 
     31 
     32 
     33 
     34 
     35 
     36      REAL(KIND=dp) :: zdist 
    3637       
    3738      INTEGER :: ji 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_averg_h2d.F90

    r14644 r15540  
    8282         & kmaxjfp,  &          ! Max size of model points in j-direction for obs footprint 
    8383         & k2dint               ! Averaging scheme options - see header 
    84       REAL(KIND=wp), INTENT(INOUT) :: & 
     84      REAL(KIND=dp), INTENT(INOUT) :: & 
    8585         & plam, &              ! Geographical (lat,lon) coordinates of 
    8686         & pphi                 ! observation 
    87       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp), INTENT(IN) :: & 
     87      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp), INTENT(IN) :: & 
    8888         & pglam, &             ! Model variable lon 
    8989         & pgphi                ! Model variable lat 
    90       REAL(KIND=wp), DIMENSION(kmaxifp+1,kmaxjfp+1), INTENT(IN) :: & 
     90      REAL(KIND=dp), DIMENSION(kmaxifp+1,kmaxjfp+1), INTENT(IN) :: & 
    9191         & pglamf, &            ! Model variable lon at corners of grid-boxes 
    9292         & pgphif               ! Model variable lat at corners of grid-boxes 
    93       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
     93      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
    9494         & pmask                ! Model variable mask 
    95       REAL(KIND=wp), INTENT(IN) :: & 
     95      REAL(KIND=dp), INTENT(IN) :: & 
    9696         & plamscl, &           ! Diameter (lat,lon) of obs footprint in metres 
    9797         & pphiscl              ! This is the full width (rather than half-width) 
    9898      LOGICAL, INTENT(IN) :: & 
    9999         & lindegrees           ! T=> obs footprint specified in degrees, F=> in metres 
    100       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
     100      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
    101101         & pweig                ! Weights for averaging 
    102102      INTEGER, INTENT(IN), OPTIONAL :: & 
     
    170170         & kmaxjfp              ! Max size of model points in j-direction for obs footprint 
    171171 
    172       REAL(KIND=wp), INTENT(IN) :: & 
    173          & plam, & 
    174          & pphi                 ! Geographical (lat,lon) coordinates of 
     172      REAL(KIND=dp), INTENT(IN) ::  plam, pphi 
     173 
     174 
     175 
    175176                                ! observation 
    176       REAL(KIND=wp), INTENT(IN) :: & 
     177      REAL(KIND=dp), INTENT(IN) :: & 
    177178         & plamscl, &           ! Diameter (lat,lon) of obs footprint in metres or degrees (see below) 
    178179         & pphiscl              ! This is the full width (rather than half-width) 
    179180      LOGICAL, INTENT(IN) :: & 
    180181         & lindegrees           ! T=>scales specified in degrees, F=> in metres 
    181       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
     182      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
    182183         & pmask                ! Model variable mask 
    183       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp), INTENT(IN) :: & 
     184      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp), INTENT(IN) :: & 
    184185         & pglam, &             ! Model variable lon 
    185186         & pgphi                ! Model variable lat 
    186       REAL(KIND=wp), DIMENSION(kmaxifp+1,kmaxjfp+1), INTENT(IN) :: & 
     187      REAL(KIND=dp), DIMENSION(kmaxifp+1,kmaxjfp+1), INTENT(IN) :: & 
    187188         & pglamf, &             ! Model variable lon at corners of grid boxes 
    188189         & pgphif                ! Model variable lat at corners of grid boxes 
    189       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
     190      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
    190191         & pweig                ! Weights for interpolation 
    191192 
     
    197198         & jnumsubgrid = 20     ! The number of sub grid-boxes (in x and y directions) used to approximate area of obs fp 
    198199 
    199       REAL(KIND=wp), DIMENSION(4) :: & 
     200      REAL(KIND=dp), DIMENSION(4) :: & 
    200201         & zxvert, zyvert, &    ! The lon/lat of the vertices(corners) of the grid box in m relative to centre of obs fp 
    201202         & zdist                ! Distance of each vertex to the centre of the obs footprint 
    202       REAL(KIND=wp), DIMENSION(4) :: & 
     203      REAL(KIND=dp), DIMENSION(4) :: & 
    203204         & zxgrid, zygrid, &      ! Distance of each vertex of grid box to the centre of the grid box in x/y directions 
    204205         & zdgrid 
    205       REAL(KIND=wp) :: & 
     206      REAL(KIND=dp) :: & 
    206207         & zdx, zdy, &          ! The sub grid-box sizes (in metres) 
    207208         & zarea_subbox, &      ! The area of each sub grid-box (in metres squared) 
     
    210211         & zarea_fp, &          ! Total area of obs footprint within the grid box 
    211212         & zareabox             ! Total area of the grid box 
    212       REAL(KIND=wp) :: & 
     213      REAL(KIND=dp) :: & 
    213214         & zphiscl_m, &         ! Diameter of obs footprint in metres 
    214215         & zlamscl_m 
     
    353354         & kmaxjfp              ! Max size of model points in j-direction for obs footprint 
    354355 
    355       REAL(KIND=wp), INTENT(IN) :: & 
    356          & plam, & 
    357          & pphi                 ! Geographical (lat,lon) coordinates of 
     356      REAL(KIND=dp), INTENT(IN) ::  plam, pphi ! Geographical (lat,lon) coordinates of 
     357 
     358 
     359 
    358360                                ! observation 
    359       REAL(KIND=wp), INTENT(IN) :: & 
    360          & plamscl, & 
    361          & pphiscl              ! Width in x/y directions of obs footprint in metres 
     361      REAL(KIND=dp), INTENT(IN) ::  plamscl, pphiscl  ! Width in x/y directions of obs footprint in metres 
     362 
     363 
     364 
    362365                                ! This is the full width (rather than half-width) 
    363366      LOGICAL, INTENT(IN) :: & 
    364367         & lindegrees           !T=> scales specified in degrees, F=> in metres 
    365       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
     368      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
    366369         & pmask                ! Model variable mask 
    367       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp), INTENT(IN) :: & 
     370      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp), INTENT(IN) :: & 
    368371         & pglam, &             ! Model variable lat at centre of grid boxes 
    369372         & pgphi                ! Model variable lon at centre of grid boxes 
    370       REAL(KIND=wp), DIMENSION(kmaxifp+1,kmaxjfp+1), INTENT(IN) :: & 
     373      REAL(KIND=dp), DIMENSION(kmaxifp+1,kmaxjfp+1), INTENT(IN) :: & 
    371374         & pglamf, &             ! Model variable lat at corners of grid boxes 
    372375         & pgphif                ! Model variable lon at corners of grid boxes 
    373       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
     376      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
    374377         & pweig                ! Weights for interpolation 
    375378 
     
    379382      INTEGER, DIMENSION(4) :: & 
    380383         & jnumvert 
    381       REAL(KIND=wp), DIMENSION(4) :: & 
     384      REAL(KIND=dp), DIMENSION(4) :: & 
    382385         & zxvert, zyvert         ! The lon/lat of the vertices(corners) of the grid box in m relative to centre of obs fp 
    383       REAL(KIND=wp), DIMENSION(4) :: & 
     386      REAL(KIND=dp), DIMENSION(4) :: & 
    384387         & zdist                  ! Distance of each vertex to the centre of the obs footprint 
    385       REAL(KIND=wp), DIMENSION(4) :: & 
     388      REAL(KIND=dp), DIMENSION(4) :: & 
    386389         & zxgrid, zygrid, &      ! Distance of each vertex of grid box to the centre of the grid box in x/y directions 
    387390         & zdgrid 
    388       REAL(KIND=wp) :: & 
     391      REAL(KIND=dp) :: & 
    389392         & zareabox, &            ! Total area of grid box 
    390393         & zarea_fp, &            ! Total area of obs footprint 
    391394         & zarea_intersect        ! Area of the intersection between the grid box and the obs footprint 
    392       REAL(KIND=wp) :: & 
     395      REAL(KIND=dp) :: & 
    393396         & zlamscl_m, & 
    394397         & zphiscl_m              ! Total width (lat,lon) of obs footprint in metres 
    395       REAL(KIND=wp) :: & 
     398      REAL(KIND=dp) :: & 
    396399         & z_awidth, z_aheight, & ! Width and height of model grid box 
    397400         & z_cwidth, z_cheight    ! Width and height of union of model grid box and obs footprint 
    398       REAL(KIND=wp) :: & 
     401      REAL(KIND=dp) :: & 
    399402         & zleft, zright, &       ! Distance (metres) of corners area of intersection 
    400403         & ztop, zbottom          ! between grid box and obs footprint 
     
    507510         & kmaxifp,   &         ! Max size of model points in i-direction for obs footprint 
    508511         & kmaxjfp              ! Max size of model points in j-direction for obs footprint 
    509       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
     512      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
    510513         & pweig                ! Interpolation weights 
    511       REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
     514      REAL(KIND=dp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(IN) :: & 
    512515         & pmod                 ! Model variable to interpolate 
    513       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) ::  & 
     516      REAL(KIND=dp), DIMENSION(kpk2), INTENT(OUT) ::  & 
    514517         & pobsk                ! Model profile interpolated to obs (i,j) pt 
    515518 
     
    518521      INTEGER :: & 
    519522         & ikmax 
    520       REAL(KIND=wp) :: & 
    521          & zsum 
     523      REAL(KIND=dp) ::  zsum 
     524 
     525 
    522526 
    523527      !------------------------------------------------------------------------ 
     
    574578      INTEGER , INTENT(IN) :: & 
    575579         & k2dint                   !Type of interpolation/averaging used 
    576       REAL(KIND=wp), INTENT(IN) :: & 
     580      REAL(KIND=dp), INTENT(IN) :: & 
    577581         & plamscl,   &             !Total width/radius in metres of the observation footprint 
    578582         & pphiscl                  ! 
    579583      LOGICAL, INTENT(IN) :: & 
    580584         & lindegrees               !T=> plamscl and pphiscl are specified in degrees 
    581       REAL(KIND=wp), DIMENSION(jpi,jpj), INTENT(IN) :: & 
     585      REAL(KIND=dp), DIMENSION(jpi,jpj), INTENT(IN) :: & 
    582586         & pmask                    !Land/sea mask 
    583587                                    !F=> plamscl and pphiscl are specified in metres 
     
    587591 
    588592      !! * Local variables 
    589       REAL(KIND=wp) :: & 
     593      REAL(KIND=dp) :: & 
    590594         & ze1min,     &            !Minimum global grid-size in i,j directions 
    591595         & ze2min 
    592       REAL(KIND=wp) :: & 
     596      REAL(KIND=dp) :: & 
    593597         & zphiscl_m, & 
    594598         & zlamscl_m 
     
    605609            !If the scales are specified in degrees, work out the max  
    606610            !distance (metres) in x/y directions 
    607             CALL obs_deg2dist( jpi, jpj, CASTWP(glamt), CASTWP(gphit), & 
     611            CALL obs_deg2dist( jpi, jpj, glamt, gphit, & 
    608612               &               plamscl, pphiscl, zlamscl_m, zphiscl_m ) 
    609613         ELSE 
     
    655659      INTEGER , INTENT(IN) :: & 
    656660         & ki, kj                   !x/y dimensions of input lat/lon variables 
    657       REAL(KIND=wp), INTENT(IN), DIMENSION(ki,kj) :: & 
     661      REAL(KIND=dp), INTENT(IN), DIMENSION(ki,kj) :: & 
    658662         & pglam, pgphi             !Longitude and latitudes of grid points 
    659       REAL(KIND=wp), INTENT(IN) :: & 
     663      REAL(KIND=dp), INTENT(IN) :: & 
    660664         & plamscl_deg,   &         !Size in degrees of the observation footprint 
    661665         & pphiscl_deg              ! 
    662       REAL(KIND=wp), INTENT(OUT) :: & 
     666      REAL(KIND=dp), INTENT(OUT) :: & 
    663667         & plamscl_max, &           !Maximum size of obs footprint in metres 
    664668         & pphiscl_max 
     
    667671      INTEGER :: & 
    668672         & ji, jj                   !Counters 
    669       REAL(KIND=wp) :: & 
     673      REAL(KIND=dp) :: & 
    670674         & zlon1, zlon2, &          !Lon values surrounding centre of grid point 
    671675         & zlat1, zlat2, &          !Lat values surrounding centre of grid point 
    672676         & zdlat, zdlon             !Distance in radians in lat/lon directions 
    673       REAL(KIND=wp) :: & 
     677      REAL(KIND=dp) :: & 
    674678         & za1, za2, za, zc, zd 
    675679       
     
    740744      !! * Modules used 
    741745      !! * Arguments 
    742          REAL(KIND=wp), INTENT(IN) :: & 
     746         REAL(KIND=dp), INTENT(IN) :: & 
    743747            &  pglam_bl, pglam_br, &       !lon at corners of grid box 
    744748            &  pglam_tl, pglam_tr 
    745          REAL(KIND=wp), INTENT(IN) :: & 
     749         REAL(KIND=dp), INTENT(IN) :: & 
    746750            &  pgphi_bl, pgphi_br, &       !lat at corners of grid box 
    747751            &  pgphi_tl, pgphi_tr 
    748          REAL(KIND=wp), INTENT(IN) :: & 
     752         REAL(KIND=dp), INTENT(IN) :: & 
    749753            &  pphi, plam                  !lat/lon of centre of obs footprint 
    750          REAL(KIND=wp), DIMENSION(4), INTENT(OUT) :: & 
     754         REAL(KIND=dp), DIMENSION(4), INTENT(OUT) :: & 
    751755            &  pxvert, pyvert              !x/y location (in metres relative to centre of obs footprint) of corners 
    752          REAL(KIND=wp), DIMENSION(4), INTENT(OUT) :: & 
     756         REAL(KIND=dp), DIMENSION(4), INTENT(OUT) :: & 
    753757            &  pdist                       !distance (in metres) of each corner relative to centre of obs footprint 
    754758 
     
    756760         INTEGER :: & 
    757761            &  jvert                       !Counter for corners 
    758          REAL(KIND=wp) :: & 
     762         REAL(KIND=dp) :: & 
    759763            &  zphi, zlam                  !Local values for lon/lat of corners 
    760          REAL(KIND=wp) :: &  
     764         REAL(KIND=dp) :: &  
    761765            &  za1, za2,  &                !For great circle distance calculations 
    762766            &  zb1, zb2,  & 
    763767            &  zc1, zc2 
    764          REAL(KIND=wp) :: & 
     768         REAL(KIND=dp) :: & 
    765769            &  zdist_centre_lat, &         !Distances in lat/lon directions (in metres) 
    766770            &  zdist_centre_lon 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_conv.F90

    r10068 r15540  
    2020   !! * Modules used 
    2121   USE par_kind, ONLY : & ! Precision variables 
    22       & wp    
     22      & dp, wp    
    2323   IMPLICIT NONE 
    2424  
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_conv_functions.h90

    r10068 r15540  
    55   !!---------------------------------------------------------------------- 
    66 
    7   REAL(KIND=wp) FUNCTION potemp( ps, pt, pp, ppr ) 
     7  REAL(KIND=dp) FUNCTION potemp( ps, pt, pp, ppr ) 
    88      !!---------------------------------------------------------------------- 
    99      !!                    ***  FUNCTION potemp  *** 
     
    3232      REAL(KIND=wp), INTENT(IN) :: ps 
    3333      REAL(KIND=wp), INTENT(IN) :: pt 
    34       REAL(KIND=wp), INTENT(IN) :: pp 
     34      REAL(KIND=dp), INTENT(IN) :: pp 
    3535      REAL(KIND=wp), INTENT(IN) :: ppr 
    3636 
    3737      !! * Local declarations 
    38       REAL(KIND=wp) :: zpol 
    39       REAL(KIND=wp), PARAMETER :: a1 =  1.067610e-05 
    40       REAL(KIND=wp), PARAMETER :: a2 = -1.434297e-06 
    41       REAL(KIND=wp), PARAMETER :: a3 = -7.566349e-09 
    42       REAL(KIND=wp), PARAMETER :: a4 = -8.535585e-06 
    43       REAL(KIND=wp), PARAMETER :: a5 =  3.074672e-08 
    44       REAL(KIND=wp), PARAMETER :: a6 =  1.918639e-08 
    45       REAL(KIND=wp), PARAMETER :: a7 =  1.788718e-10 
     38      REAL(KIND=dp) :: zpol 
     39      REAL(KIND=dp), PARAMETER :: a1 =  1.067610e-05 
     40      REAL(KIND=dp), PARAMETER :: a2 = -1.434297e-06 
     41      REAL(KIND=dp), PARAMETER :: a3 = -7.566349e-09 
     42      REAL(KIND=dp), PARAMETER :: a4 = -8.535585e-06 
     43      REAL(KIND=dp), PARAMETER :: a5 =  3.074672e-08 
     44      REAL(KIND=dp), PARAMETER :: a6 =  1.918639e-08 
     45      REAL(KIND=dp), PARAMETER :: a7 =  1.788718e-10 
    4646 
    4747      zpol = a1 + a2 * ps + a3 * ( pp + ppr ) + a4 * pt & 
     
    5252   END FUNCTION potemp 
    5353 
    54    REAL(KIND=wp) FUNCTION fspott( pft, pfs, pfp ) 
     54   REAL(KIND=dp) FUNCTION fspott( pft, pfs, pfp ) 
    5555      !!---------------------------------------------------------------------- 
    5656      !!                    ***  FUNCTION fspott  *** 
     
    7171 
    7272      !! * Arguments 
    73       REAL(KIND=wp) :: pft   ! in situ temperature in degrees Celsius 
    74       REAL(KIND=wp) :: pfs   ! salinity in psu 
    75       REAL(KIND=wp) :: pfp   ! pressure in bars 
     73      REAL(KIND=dp) :: pft   ! in situ temperature in degrees Celsius 
     74      REAL(KIND=dp) :: pfs   ! salinity in psu 
     75      REAL(KIND=dp) :: pfp   ! pressure in bars 
    7676       
    7777      fspott = & 
     
    9191   END FUNCTION fspott 
    9292 
    93    REAL(KIND=wp) FUNCTION atg( p_s, p_t, p_p ) 
     93   REAL(KIND=dp) FUNCTION atg( p_s, p_t, p_p ) 
    9494      !!---------------------------------------------------------------------- 
    9595      !!                    ***  FUNCTION atg  *** 
     
    115115 
    116116      REAL(KIND=wp), INTENT(IN) :: p_s    ! Salinity in PSU 
    117       REAL(KIND=wp), INTENT(IN) :: p_t    ! Temperature in centigrades 
    118       REAL(KIND=wp), INTENT(IN) :: p_p    ! Pressure in decibars. 
    119  
    120       !! * Local declarations 
    121        
    122       REAL(KIND=wp) :: z_ds 
     117      REAL(KIND=dp), INTENT(IN) :: p_t    ! Temperature in centigrades 
     118      REAL(KIND=dp), INTENT(IN) :: p_p    ! Pressure in decibars. 
     119 
     120      !! * Local declarations 
     121       
     122      REAL(KIND=dp) :: z_ds 
    123123 
    124124      z_ds = p_s - 35.0 
     
    131131   END FUNCTION atg 
    132132       
    133    REAL(KIND=wp) FUNCTION theta( p_s, p_t0, p_p0, p_pr ) 
     133   REAL(KIND=dp) FUNCTION theta( p_s, p_t0, p_p0, p_pr ) 
    134134      !!---------------------------------------------------------------------- 
    135135      !!                    ***  FUNCTION theta  *** 
     
    159159 
    160160      !! * Local declarations 
    161       REAL(KIND=wp) :: z_p 
    162       REAL(KIND=wp) :: z_t 
    163       REAL(KIND=wp) :: z_h 
    164       REAL(KIND=wp) :: z_xk 
    165       REAL(KIND=wp) :: z_q 
     161      REAL(KIND=dp) :: z_p 
     162      REAL(KIND=dp) :: z_t 
     163      REAL(KIND=dp) :: z_h 
     164      REAL(KIND=dp) :: z_xk 
     165      REAL(KIND=dp) :: z_q 
    166166 
    167167      z_p = p_p0 
     
    184184   END FUNCTION theta 
    185185 
    186    REAL(KIND=wp) FUNCTION depth( p_p, p_lat ) 
     186   REAL(KIND=dp) FUNCTION depth( p_p, p_lat ) 
    187187      !!---------------------------------------------------------------------- 
    188188      !!                    ***  FUNCTION depth  *** 
     
    210210 
    211211      !! * Local declarations 
    212       REAL(KIND=wp) :: z_x 
    213       REAL(KIND=wp) :: z_gr 
     212      REAL(KIND=dp) :: z_x 
     213      REAL(KIND=dp) :: z_gr 
    214214       
    215215      z_x = SIN( p_lat / 57.29578 ) 
     
    221221   END FUNCTION depth 
    222222 
    223    REAL(KIND=wp) FUNCTION p_to_dep( p_p, p_lat ) 
     223   REAL(KIND=dp) FUNCTION p_to_dep( p_p, p_lat ) 
    224224      !!---------------------------------------------------------------------- 
    225225      !!                    ***  FUNCTION p_to_dep  *** 
     
    245245 
    246246      !! * Local declarations 
    247       REAL(KIND=wp) :: z_x 
    248       REAL(KIND=wp) :: z_c1 
    249       REAL(KIND=wp) :: z_c2 
     247      REAL(KIND=dp) :: z_x 
     248      REAL(KIND=dp) :: z_c1 
     249      REAL(KIND=dp) :: z_c2 
    250250 
    251251      z_x = SIN( p_lat / 57.29578 ) 
     
    257257   END FUNCTION p_to_dep 
    258258 
    259    REAL(KIND=wp) FUNCTION dep_to_p( p_dep, p_lat ) 
     259   REAL(KIND=dp) FUNCTION dep_to_p( p_dep, p_lat ) 
    260260      !!---------------------------------------------------------------------- 
    261261      !!                    ***  FUNCTION dep_to_p  *** 
     
    280280 
    281281      !! * Local declarations 
    282       REAL(KIND=wp) :: z_x 
    283       REAL(KIND=wp) :: z_c1 
    284       REAL(KIND=wp) :: z_c2 
    285       REAL(KIND=wp) :: z_d 
     282      REAL(KIND=dp) :: z_x 
     283      REAL(KIND=dp) :: z_c1 
     284      REAL(KIND=dp) :: z_c2 
     285      REAL(KIND=dp) :: z_d 
    286286 
    287287      z_x = SIN( p_lat / 57.29578 ) 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_grd_bruteforce.h90

    r10068 r15540  
    3434      INTEGER, INTENT(IN) :: kmyproc            ! Processor number for MPP 
    3535      INTEGER, INTENT(IN) :: ktotproc           ! Total number of processors 
    36       REAL(KIND=wp), DIMENSION(kpi,kpj), INTENT(IN) :: & 
     36      REAL(KIND=dp), DIMENSION(kpi,kpj), INTENT(IN) :: & 
    3737         & pglam,   &               ! Grid point longitude 
    3838         & pgphi,   &               ! Grid point latitude 
    3939         & pmask                    ! Grid point mask 
    4040      INTEGER,INTENT(IN) :: kobs                ! Size of the observation arrays 
    41       REAL(KIND=wp), DIMENSION(kobs), INTENT(IN) :: & 
     41      REAL(KIND=dp), DIMENSION(kobs), INTENT(IN) :: & 
    4242         & plam, &                  ! Longitude of obsrvations  
    4343         & pphi                     ! Latitude of observations 
     
    4848   
    4949      !! * Local declarations 
    50       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
    51          & zplam, zpphi 
    52       REAL(wp) :: zlammax 
    53       REAL(wp) :: zlam 
     50      REAL(dp), DIMENSION(:), ALLOCATABLE ::  zplam, zpphi 
     51      REAL(dp) :: zlammax 
     52      REAL(dp) :: zlam 
    5453      INTEGER :: ji 
    5554      INTEGER :: jj 
     
    6059      INTEGER :: joffset 
    6160      INTEGER :: jostride 
    62       REAL(KIND=wp), DIMENSION(:,:), ALLOCATABLE :: & 
     61      REAL(KIND=dp), DIMENSION(:,:), ALLOCATABLE :: & 
    6362         & zlamg, & 
    6463         & zphig, & 
     
    7069      LOGICAL, DIMENSION(:,:), ALLOCATABLE :: & 
    7170         & llinvalidcell 
    72       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     71      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    7372         & zlamtm,  & 
    7473         & zphitm 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_grid.F90

    r14894 r15540  
    5555   INTEGER, PRIVATE :: gsearch_nlons_def    ! Num of longitudes 
    5656   INTEGER, PRIVATE :: gsearch_nlats_def    ! Num of latitudes 
    57    REAL(wp), PRIVATE :: gsearch_lonmin_def  ! Min longitude 
    58    REAL(wp), PRIVATE :: gsearch_latmin_def  ! Min latitude 
    59    REAL(wp), PRIVATE :: gsearch_dlon_def    ! Lon spacing 
    60    REAL(wp), PRIVATE :: gsearch_dlat_def    ! Lat spacing 
     57   REAL(dp), PRIVATE :: gsearch_lonmin_def  ! Min longitude 
     58   REAL(dp), PRIVATE :: gsearch_latmin_def  ! Min latitude 
     59   REAL(dp), PRIVATE :: gsearch_dlon_def    ! Lon spacing 
     60   REAL(dp), PRIVATE :: gsearch_dlat_def    ! Lat spacing 
    6161   !! Variable versions 
    6262   INTEGER, PRIVATE :: nlons     ! Num of longitudes 
    6363   INTEGER, PRIVATE :: nlats     ! Num of latitudes 
    64    REAL(wp), PRIVATE :: lonmin ! Min longitude 
    65    REAL(wp), PRIVATE :: latmin ! Min latitude 
    66    REAL(wp), PRIVATE :: dlon     ! Lon spacing 
    67    REAL(wp), PRIVATE :: dlat     ! Lat spacing 
     64   REAL(dp), PRIVATE :: lonmin ! Min longitude 
     65   REAL(dp), PRIVATE :: latmin ! Min latitude 
     66   REAL(dp), PRIVATE :: dlon     ! Lon spacing 
     67   REAL(dp), PRIVATE :: dlat     ! Lat spacing 
    6868    
    6969   INTEGER, PRIVATE :: maxxdiff, maxydiff ! Max diffs between model points 
     
    7171    
    7272   ! Data storage 
    73    REAL(wp), PRIVATE, DIMENSION(:,:), ALLOCATABLE :: & 
    74       & lons,  & 
    75       & lats 
     73   REAL(dp), PRIVATE, DIMENSION(:,:), ALLOCATABLE ::  lons, lats 
     74 
     75 
     76 
    7677   INTEGER, PRIVATE, DIMENSION(:,:), ALLOCATABLE :: & 
    7778      & ixpos, & 
     
    115116      INTEGER :: & 
    116117         & kobsin                     ! Size of the observation arrays 
    117       REAL(KIND=wp), DIMENSION(kobsin), INTENT(IN) :: & 
     118      REAL(KIND=dp), DIMENSION(kobsin), INTENT(IN) :: & 
    118119         & plam, &                  ! Longitude of obsrvations  
    119120         & pphi                     ! Latitude of observations 
     
    135136                  &                             1, jpi, 1, jpj,           & 
    136137                  &                             narea-1, jpnij,           & 
    137                   &                             CASTWP(glamt), CASTWP(gphit), tmask,      & 
     138                  &                             glamt, gphit, tmask,      & 
    138139                  &                             kobsin, plam, pphi,       & 
    139140                  &                             kobsi, kobsj, kproc ) 
     
    156157                  &                             1, jpi, 1, jpj,           & 
    157158                  &                             narea-1, jpnij,           & 
    158                   &                             CASTWP(glamf), CASTWP(gphif), fmask,      & 
     159                  &                             glamf, gphif, fmask,      & 
    159160                  &                             kobsin, plam, pphi,       & 
    160161                  &                             kobsi, kobsj, kproc ) 
     
    190191      !! * Arguments 
    191192      INTEGER :: kobs                     ! Size of the observation arrays 
    192       REAL(KIND=wp), DIMENSION(kobs), INTENT(IN) :: & 
     193      REAL(KIND=dp), DIMENSION(kobs), INTENT(IN) :: & 
    193194         & plam, &                  ! Longitude of obsrvations  
    194195         & pphi                     ! Latitude of observations 
     
    199200   
    200201      !! * Local declarations 
    201       REAL(KIND=wp), DIMENSION(:), ALLOCATABLE :: & 
    202          & zplam 
    203       REAL(wp) :: zlammax 
    204       REAL(wp) :: zlam 
     202      REAL(KIND=dp), DIMENSION(:), ALLOCATABLE ::  zplam 
     203      REAL(dp) :: zlammax 
     204      REAL(dp) :: zlam 
    205205      INTEGER :: ji 
    206206      INTEGER :: jj 
     
    228228      INTEGER :: joffset 
    229229      INTEGER :: jostride 
    230       REAL(KIND=wp), DIMENSION(:,:), ALLOCATABLE :: & 
     230      REAL(KIND=dp), DIMENSION(:,:), ALLOCATABLE :: & 
    231231         & zlamg, & 
    232232         & zphig, & 
     
    238238      LOGICAL, DIMENSION(:,:), ALLOCATABLE :: & 
    239239         & llinvalidcell 
    240       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     240      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    241241         & zlamtm,  & 
    242242         & zphitm 
     
    669669      INTEGER, DIMENSION(2) :: incdim 
    670670      CHARACTER(LEN=20) :: datestr=" ",timestr=" " 
    671       REAL(wp) :: tmpx1, tmpx2, tmpy1, tmpy2 
    672       REAL(wp) :: meanxdiff, meanydiff 
    673       REAL(wp) :: meanxdiff1, meanydiff1 
    674       REAL(wp) :: meanxdiff2, meanydiff2 
     671      REAL(dp) :: tmpx1, tmpx2, tmpy1, tmpy2 
     672      REAL(dp) :: meanxdiff, meanydiff 
     673      REAL(dp) :: meanxdiff1, meanydiff1 
     674      REAL(dp) :: meanxdiff2, meanydiff2 
    675675      INTEGER :: numx1, numx2, numy1, numy2, df 
    676676      INTEGER :: jimin, jimax, jjmin, jjmax 
    677       REAL(wp), DIMENSION(:,:), ALLOCATABLE :: & 
    678          & lonsi,     & 
    679          & latsi 
     677      REAL(dp), DIMENSION(:,:), ALLOCATABLE ::  lonsi, latsi 
    680678      INTEGER, DIMENSION(:,:), ALLOCATABLE :: &   
    681679         & ixposi,    & 
     
    685683      INTEGER, DIMENSION(histsize) :: & 
    686684         & histx1, histx2, histy1, histy2 
    687       REAL(wp), DIMENSION(histsize) :: & 
     685      REAL(dp), DIMENSION(histsize) :: & 
    688686         & fhistx1, fhistx2, fhisty1, fhisty2 
    689       REAL(wp) :: histtol 
     687      REAL(dp) :: histtol 
    690688      CHARACTER(LEN=26) :: clfmt            ! writing format 
    691689      INTEGER           :: idg              ! number of digits 
     
    825823               &                     1, jpi, 1, jpj,            & 
    826824               &                     narea-1, jpnij,            & 
    827                &                     CASTWP(glamt), CASTWP(gphit), tmask,       & 
     825               &                     glamt, gphit, tmask,       & 
    828826               &                     nlons*nlats, lonsi, latsi, & 
    829827               &                     ixposi, iyposi, iproci ) 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_inter_sup.F90

    r10068 r15540  
    6464      INTEGER, OPTIONAL, DIMENSION(kptsi,kptsj,kobs), INTENT(IN) :: & 
    6565         & kproc            ! Precomputed processor for each i,j,iobs points 
    66       REAL(KIND=wp), DIMENSION(kpi,kpj,kpk), INTENT(IN) ::& 
     66      REAL(KIND=dp), DIMENSION(kpi,kpj,kpk), INTENT(IN) ::& 
    6767         & pval             ! Local 3D array to extract data from 
    68       REAL(KIND=wp), DIMENSION(kptsi,kptsj,kpk,kobs), INTENT(OUT) ::& 
     68      REAL(KIND=dp), DIMENSION(kptsi,kptsj,kpk,kobs), INTENT(OUT) ::& 
    6969         & pgval            ! Stencil at each point 
    7070      !! * Local declarations 
     
    119119      INTEGER, OPTIONAL, DIMENSION(kptsi,kptsj,kobs), INTENT(IN) :: & 
    120120         & kproc            ! Precomputed processor for each i,j,iobs points 
    121       REAL(KIND=wp), DIMENSION(kpi,kpj), INTENT(IN) ::& 
     121      REAL(KIND=dp), DIMENSION(kpi,kpj), INTENT(IN) ::& 
    122122         & pval             ! Local 3D array to extra data from 
    123       REAL(KIND=wp), DIMENSION(kptsi,kptsj,kobs), INTENT(OUT) ::& 
     123      REAL(KIND=dp), DIMENSION(kptsi,kptsj,kobs), INTENT(OUT) ::& 
    124124         & pgval            ! Stencil at each point 
    125125      !! * Local declarations 
    126       REAL(KIND=wp), DIMENSION(jpi,jpj,1) ::   zval 
    127       REAL(KIND=wp), DIMENSION(kptsi,kptsj,1,kobs) ::& 
    128          & zgval  
     126      REAL(KIND=dp), DIMENSION(jpi,jpj,1) ::   zval 
     127      REAL(KIND=dp), DIMENSION(kptsi,kptsj,1,kobs) ::  zgval 
    129128 
    130129      ! Set up local "3D" buffer 
     
    179178      INTEGER, OPTIONAL, DIMENSION(kptsi,kptsj,kobs), INTENT(IN) :: & 
    180179         & kproc            ! Precomputed processor for each i,j,iobs points 
    181       REAL(KIND=wp), DIMENSION(kpi,kpj,kpk), INTENT(IN) ::& 
     180      REAL(KIND=dp), DIMENSION(kpi,kpj,kpk), INTENT(IN) ::& 
    182181         & pval             ! Local 3D array to extract data from 
    183       REAL(KIND=wp), DIMENSION(kptsi,kptsj,kpk,kobs), INTENT(OUT) ::& 
     182      REAL(KIND=dp), DIMENSION(kptsi,kptsj,kpk,kobs), INTENT(OUT) ::& 
    184183         & pgval            ! Stencil at each point 
    185184      !! * Local declarations 
    186       REAL(KIND=wp), DIMENSION(:,:), ALLOCATABLE :: & 
     185      REAL(KIND=dp), DIMENSION(:,:), ALLOCATABLE :: & 
    187186         & zsend, & 
    188187         & zrecv 
     
    348347         & kgrdi, &         ! i,j indicies for each stencil 
    349348         & kgrdj 
    350       REAL(KIND=wp), DIMENSION(kpi,kpj,kpk), INTENT(IN) ::& 
     349      REAL(KIND=dp), DIMENSION(kpi,kpj,kpk), INTENT(IN) ::& 
    351350         & pval             ! Local 3D array to extract data from 
    352       REAL(KIND=wp), DIMENSION(kptsi,kptsj,kpk,kobs), INTENT(OUT) ::& 
     351      REAL(KIND=dp), DIMENSION(kptsi,kptsj,kpk,kobs), INTENT(OUT) ::& 
    353352         & pgval            ! Stencil at each point 
    354353      !! * Local declarations 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_inter_z1d.F90

    r10068 r15540  
    1313   !! * Modules used 
    1414   USE par_kind, ONLY : &  ! Precision variables 
    15       & wp 
     15      & dp, wp 
    1616 
    1717   IMPLICIT NONE 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_level_search.h90

    r10068 r15540  
    2525      !! * Arguments 
    2626      INTEGER, INTENT(IN) :: kgrd     ! Number of gridpoints 
    27       REAL(KIND=wp), DIMENSION(kgrd), INTENT(INOUT) :: & 
     27      REAL(KIND=dp), DIMENSION(kgrd), INTENT(INOUT) :: & 
    2828         &   pgrddep  ! Depths of gridpoints 
    2929      INTEGER, INTENT(IN) :: & 
    3030         &   kobs     ! Number of observations 
    31       REAL(KIND=wp), DIMENSION(kobs), INTENT(INOUT) :: & 
     31      REAL(KIND=dp), DIMENSION(kobs), INTENT(INOUT) :: & 
    3232         &   pobsdep  ! Depths of observations 
    3333      INTEGER ,DIMENSION(kobs), INTENT(OUT) :: & 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_mpp.F90

    r14650 r15540  
    265265      !! References : http://www.mpi-forum.org 
    266266      !!---------------------------------------------------------------------- 
    267       REAL(KIND=wp), DIMENSION(jpiglo,jpjglo), INTENT(inout) ::   pval 
    268       ! 
    269       INTEGER :: ierr 
    270       ! 
    271 #if ! defined key_mpi_off 
    272       ! 
    273 INCLUDE 'mpif.h' 
    274       REAL(KIND=wp), DIMENSION(:,:), ALLOCATABLE ::   zcp 
     267      REAL(KIND=dp), DIMENSION(jpiglo,jpjglo), INTENT(inout) ::   pval 
     268      ! 
     269      INTEGER :: ierr 
     270      ! 
     271#if ! defined key_mpi_off 
     272      ! 
     273      REAL(KIND=dp), DIMENSION(:,:), ALLOCATABLE ::   zcp 
     274INCLUDE 'mpif.h' 
    275275      !!---------------------------------------------------------------------- 
    276276 
     
    361361#if ! defined key_mpi_off 
    362362      ! 
    363 INCLUDE 'mpif.h' 
    364363      INTEGER, DIMENSION(jpnij) ::   irdsp, isdsp 
     364INCLUDE 'mpif.h' 
    365365      !----------------------------------------------------------------------- 
    366366      ! Compute displacements 
     
    405405      INTEGER                    , INTENT(in   ) :: knoout 
    406406      INTEGER , DIMENSION(jpnij) , INTENT(in   ) ::   kinv, koutv 
    407       REAL(wp), DIMENSION(knoin) , INTENT(in   ) ::   pvalsin 
    408       REAL(wp), DIMENSION(knoout), INTENT(  out) ::   pvalsout 
     407      REAL(dp), DIMENSION(knoin) , INTENT(in   ) ::   pvalsin 
     408      REAL(dp), DIMENSION(knoout), INTENT(  out) ::   pvalsout 
    409409      !! 
    410410      INTEGER :: ierr 
     
    413413#if ! defined key_mpi_off 
    414414      ! 
    415 INCLUDE 'mpif.h' 
    416415      INTEGER, DIMENSION(jpnij) ::   irdsp, isdsp 
     416INCLUDE 'mpif.h' 
    417417      !!---------------------------------------------------------------------- 
    418418      ! 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_oper.F90

    r14219 r15540  
    108108      INTEGER       , INTENT(in   ) ::   kdaystp         ! Number of time steps per day 
    109109      INTEGER       , INTENT(in   ) ::   kvar            ! Number of variables in prodatqc 
    110       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pvar             ! Model field 
    111       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pmask            ! Land-sea mask 
    112       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   plam             ! Model longitude 
    113       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   pphi             ! Model latitudes 
    114       REAL(KIND=wp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pgdept, pgdepw   ! depth of T and W levels  
     110      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pvar             ! Model field 
     111      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pmask            ! Land-sea mask 
     112      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   plam             ! Model longitude 
     113      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj)     ::   pphi             ! Model latitudes 
     114      REAL(KIND=dp) , INTENT(in   ), DIMENSION(kpi,kpj,kpk) ::   pgdept, pgdepw   ! depth of T and W levels  
    115115      INTEGER, DIMENSION(imaxavtypes), OPTIONAL ::   kdailyavtypes             ! Types for daily averages 
    116116 
     
    135135      INTEGER, ALLOCATABLE, DIMENSION(:) :: iv_indic 
    136136 
    137       REAL(KIND=wp) :: zlam 
    138       REAL(KIND=wp) :: zphi 
    139       REAL(KIND=wp) :: zdaystp 
    140       REAL(KIND=wp), DIMENSION(kpk) :: & 
     137      REAL(KIND=dp) :: zlam 
     138      REAL(KIND=dp) :: zphi 
     139      REAL(KIND=dp) :: zdaystp 
     140      REAL(KIND=dp), DIMENSION(kpk) :: & 
    141141         & zobsk,  & 
    142142         & zobs2k 
    143       REAL(KIND=wp), DIMENSION(2,2,1) :: & 
     143      REAL(KIND=dp), DIMENSION(2,2,1) :: & 
    144144         & zweig1, & 
    145145         & zweig 
    146       REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
     146      REAL(dp), DIMENSION(:,:,:,:), ALLOCATABLE :: & 
    147147         & zmask,  & 
    148148         & zint,   & 
     
    150150         & zgdept, &  
    151151         & zgdepw 
    152       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     152      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    153153         & zglam,  & 
    154154         & zgphi 
    155       REAL(KIND=wp), DIMENSION(1) :: zmsk 
    156       REAL(KIND=wp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner 
     155      REAL(KIND=dp), DIMENSION(1) :: zmsk 
     156      REAL(KIND=dp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner 
    157157 
    158158      LOGICAL :: ld_dailyav 
     
    492492      INTEGER, INTENT(IN) :: kdaystp   ! Number of time steps per day 
    493493      INTEGER, INTENT(IN) :: k2dint    ! Horizontal interpolation type (see header) 
    494       REAL(wp), INTENT(IN), DIMENSION(kpi,kpj) :: & 
     494      REAL(dp), INTENT(IN), DIMENSION(kpi,kpj) :: & 
    495495         & psurf,  &                   ! Model surface field 
    496496         & psurfmask                   ! Land-sea mask 
    497497      LOGICAL, INTENT(IN) :: ldnightav ! Logical for averaging night-time data 
    498       REAL(KIND=wp), INTENT(IN) :: & 
     498      REAL(KIND=dp), INTENT(IN) :: & 
    499499         & plamscl, &                  ! Diameter in metres of obs footprint in E/W, N/S directions 
    500500         & pphiscl                     ! This is the full width (rather than half-width) 
     
    520520         & icount_night,      & 
    521521         & imask_night 
    522       REAL(wp) :: zlam 
    523       REAL(wp) :: zphi 
    524       REAL(wp), DIMENSION(1) :: zext, zobsmask 
    525       REAL(wp) :: zdaystp 
    526       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     522      REAL(dp) :: zlam 
     523      REAL(dp) :: zphi 
     524      REAL(dp), DIMENSION(1) :: zext, zobsmask 
     525      REAL(dp) :: zdaystp 
     526      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    527527         & zweig,  & 
    528528         & zmask,  & 
     
    535535         & zgphif 
    536536 
    537       REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE :: & 
     537      REAL(dp), DIMENSION(:,:), SAVE, ALLOCATABLE :: & 
    538538         & zintmp,  & 
    539539         & zouttmp, & 
     
    655655 
    656656      CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 
    657          &                  igrdi, igrdj, CASTWP(glamt), zglam ) 
     657         &                  igrdi, igrdj, glamt, zglam ) 
    658658      CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 
    659          &                  igrdi, igrdj, CASTWP(gphit), zgphi ) 
     659         &                  igrdi, igrdj, gphit, zgphi ) 
    660660      CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 
    661661         &                  igrdi, igrdj, psurfmask, zmask ) 
     
    663663         &                  igrdi, igrdj, psurf, zsurf ) 
    664664      CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 
    665          &                  igrdip1, igrdjp1, CASTWP(glamf), zglamf ) 
     665         &                  igrdip1, igrdjp1, glamf, zglamf ) 
    666666      CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 
    667          &                  igrdip1, igrdjp1, CASTWP(gphif), zgphif ) 
     667         &                  igrdip1, igrdjp1, gphif, zgphif ) 
    668668 
    669669      ! At the end of the day get interpolated means 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_prep.F90

    r14986 r15540  
    154154         &                 surfdata%mi,   surfdata%mj,   &  
    155155         &                 surfdata%rlam, surfdata%rphi, & 
    156          &                 CASTWP(glamt),        CASTWP(gphit),        & 
     156         &                 glamt,        gphit,        & 
    157157         &                 tmask(:,:,1), surfdata%nqc,  & 
    158158         &                 iosdsobs,     ilansobs,     & 
     
    279279      INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: & 
    280280         & kdailyavtypes                          ! Types for daily averages 
    281       REAL(wp), INTENT(IN), DIMENSION(kpi,kpj,kpk,profdata%nvar) :: & 
     281      REAL(dp), INTENT(IN), DIMENSION(kpi,kpj,kpk,profdata%nvar) :: & 
    282282         & zmask 
    283       REAL(wp), INTENT(IN), DIMENSION(kpi,kpj,profdata%nvar) :: & 
     283      REAL(dp), INTENT(IN), DIMENSION(kpi,kpj,profdata%nvar) :: & 
    284284         & pglam, & 
    285285         & pgphi 
     
    609609      INTEGER :: iskip 
    610610      INTEGER :: idaystp 
    611       REAL(KIND=wp) :: zminstp 
    612       REAL(KIND=wp) :: zhoustp 
    613       REAL(KIND=wp) :: zobsstp  
     611      REAL(KIND=dp) :: zminstp 
     612      REAL(KIND=dp) :: zhoustp 
     613      REAL(KIND=dp) :: zobsstp  
    614614      INTEGER, DIMENSION(12) ::   imonth_len    !: length in days of the months of the current year 
    615615  
     
    887887      INTEGER , INTENT(in   )                     ::   kpi    , kpj      ! Number of grid points in (i,j) 
    888888      INTEGER , INTENT(in   ), DIMENSION(kobsno)  ::   kobsi  , kobsj    ! Observation (i,j) coordinates 
    889       REAL(wp), INTENT(in   ), DIMENSION(kobsno)  ::   pobslam, pobsphi  ! Observation (lon,lat) coordinates 
    890       REAL(wp), INTENT(in   ), DIMENSION(kpi,kpj) ::   plam   , pphi     ! Model (lon,lat) coordinates 
    891       REAL(wp), INTENT(in   ), DIMENSION(kpi,kpj) ::   pmask             ! Land mask array 
     889      REAL(dp), INTENT(in   ), DIMENSION(kobsno)  ::   pobslam, pobsphi  ! Observation (lon,lat) coordinates 
     890      REAL(dp), INTENT(in   ), DIMENSION(kpi,kpj) ::   plam   , pphi     ! Model (lon,lat) coordinates 
     891      REAL(dp), INTENT(in   ), DIMENSION(kpi,kpj) ::   pmask             ! Land mask array 
    892892      INTEGER , INTENT(inout), DIMENSION(kobsno)  ::   kobsqc            ! Observation quality control 
    893893      INTEGER , INTENT(inout)                     ::   kosdobs           ! Observations outside space domain 
     
    899899      INTEGER , INTENT(in   )                     ::   kqc_cutoff        ! Cutoff QC value 
    900900      ! 
    901       REAL(KIND=wp), DIMENSION(2,2,kobsno) ::   zgmsk          ! Grid mask 
    902       REAL(KIND=wp), DIMENSION(2,2,kobsno) ::   zbmsk          ! Boundary mask 
    903       REAL(KIND=wp), DIMENSION(jpi,jpj)    ::   zbdymask 
    904       REAL(KIND=wp), DIMENSION(2,2,kobsno) ::   zglam, zgphi   ! Model Lon/lat at grid points 
     901      REAL(KIND=dp), DIMENSION(2,2,kobsno) ::   zgmsk          ! Grid mask 
     902      REAL(KIND=dp), DIMENSION(2,2,kobsno) ::   zbmsk          ! Boundary mask 
     903      REAL(KIND=dp), DIMENSION(jpi,jpj)    ::   zbdymask 
     904      REAL(KIND=dp), DIMENSION(2,2,kobsno) ::   zglam, zgphi   ! Model Lon/lat at grid points 
    905905      INTEGER      , DIMENSION(2,2,kobsno) ::   igrdi, igrdj   ! Grid i,j 
    906906      LOGICAL ::   lgridobs           ! Is observation on a model grid point. 
     
    10961096      INTEGER, DIMENSION(kobsno), INTENT(IN) :: & 
    10971097         & kobsk              ! Observation k coordinate 
    1098       REAL(KIND=wp), DIMENSION(kprofno), INTENT(IN) :: & 
     1098      REAL(KIND=dp), DIMENSION(kprofno), INTENT(IN) :: & 
    10991099         & pobslam, &         ! Observation (lon,lat) coordinates 
    11001100         & pobsphi 
    1101       REAL(KIND=wp), DIMENSION(kobsno), INTENT(INOUT) :: & 
     1101      REAL(KIND=dp), DIMENSION(kobsno), INTENT(INOUT) :: & 
    11021102         & pobsdep            ! Observation depths   
    1103       REAL(KIND=wp), DIMENSION(kpi,kpj), INTENT(IN) :: & 
     1103      REAL(KIND=dp), DIMENSION(kpi,kpj), INTENT(IN) :: & 
    11041104         & plam, pphi         ! Model (lon,lat) coordinates 
    1105       REAL(KIND=wp), DIMENSION(kpk), INTENT(IN) :: & 
     1105      REAL(KIND=dp), DIMENSION(kpk), INTENT(IN) :: & 
    11061106         & pdep               ! Model depth coordinates 
    1107       REAL(KIND=wp), DIMENSION(kpi,kpj,kpk), INTENT(IN) :: & 
     1107      REAL(KIND=dp), DIMENSION(kpi,kpj,kpk), INTENT(IN) :: & 
    11081108         & pmask              ! Land mask array 
    11091109      INTEGER, DIMENSION(kprofno), INTENT(INOUT) :: & 
     
    11211121 
    11221122      !! * Local declarations 
    1123       REAL(KIND=wp), DIMENSION(2,2,kpk,kprofno) :: & 
     1123      REAL(KIND=dp), DIMENSION(2,2,kpk,kprofno) :: & 
    11241124         & zgmsk              ! Grid mask 
    1125       REAL(KIND=wp), DIMENSION(2,2,kprofno) :: & 
     1125      REAL(KIND=dp), DIMENSION(2,2,kprofno) :: & 
    11261126         & zbmsk              ! Boundary mask 
    1127       REAL(KIND=wp), DIMENSION(jpi,jpj) :: zbdymask 
    1128       REAL(KIND=wp), DIMENSION(2,2,kpk,kprofno) :: & 
     1127      REAL(KIND=dp), DIMENSION(jpi,jpj) :: zbdymask 
     1128      REAL(KIND=dp), DIMENSION(2,2,kpk,kprofno) :: & 
    11291129         & zgdepw 
    1130       REAL(KIND=wp), DIMENSION(2,2,kprofno) :: & 
     1130      REAL(KIND=dp), DIMENSION(2,2,kprofno) :: & 
    11311131         & zglam, &           ! Model longitude at grid points 
    11321132         & zgphi              ! Model latitude at grid points 
    1133       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepw 
     1133      REAL(dp), DIMENSION(jpi,jpj,jpk) :: zdepw 
    11341134      INTEGER, DIMENSION(2,2,kprofno) :: & 
    11351135         & igrdi, &           ! Grid i,j 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_profiles_def.F90

    r14650 r15540  
    6969         & idqc           !: Depth QC flag 
    7070 
    71       REAL(KIND=wp), POINTER, DIMENSION(:) :: & 
     71      REAL(KIND=dp), POINTER, DIMENSION(:) :: & 
    7272         & vdep,  &       !: Depth coordinate of profile data 
    7373         & vobs,  &       !: Profile data 
    7474         & vmod           !: Model counterpart of the profile data vector 
    7575 
    76       REAL(KIND=wp), POINTER, DIMENSION(:,:) :: & 
     76      REAL(KIND=dp), POINTER, DIMENSION(:,:) :: & 
    7777         & vext           !: Extra variables 
    7878 
     
    127127         & itqc           !: Time QC 
    128128 
    129       REAL(KIND=wp), POINTER, DIMENSION(:) :: & 
     129      REAL(KIND=dp), POINTER, DIMENSION(:) :: & 
    130130         & rlam, &        !: Longitude coordinate of profile data 
    131131         & rphi           !: Latitude coordinate of profile data 
     
    176176      ! variables 
    177177 
    178       REAL(KIND=wp), POINTER, DIMENSION(:,:,:,:) :: & 
     178      REAL(KIND=dp), POINTER, DIMENSION(:,:,:,:) :: & 
    179179         & vdmean        !: Daily averaged model field 
    180180 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_read_altbias.F90

    r14219 r15540  
    9292      INTEGER :: i_var_id 
    9393 
    94       REAL(wp), DIMENSION(1) :: & 
     94      REAL(dp), DIMENSION(1) :: & 
    9595         & zext, & 
    9696         & zobsmask 
    97       REAL(wp), DIMENSION(2,2,1) :: & 
     97      REAL(dp), DIMENSION(2,2,1) :: & 
    9898         & zweig 
    99       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     99      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    100100         & zmask, & 
    101101         & zbias, & 
    102102         & zglam, & 
    103103         & zgphi 
    104       REAL(wp), DIMENSION(jpi,jpj) ::   z_altbias 
    105       REAL(wp) :: zlam 
    106       REAL(wp) :: zphi 
     104      REAL(dp), DIMENSION(jpi,jpj) ::   z_altbias 
     105      REAL(dp) :: zlam 
     106      REAL(dp) :: zphi 
    107107      INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: & 
    108108         & igrdi, & 
     
    166166 
    167167      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, & 
    168          &                  igrdi, igrdj, CASTWP(glamt), zglam ) 
    169       CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, & 
    170          &                  igrdi, igrdj, CASTWP(gphit), zgphi ) 
     168         &                  igrdi, igrdj, glamt, zglam ) 
     169      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, & 
     170         &                  igrdi, igrdj, gphit, zgphi ) 
    171171      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, & 
    172172         &                  igrdi, igrdj, tmask(:,:,1), zmask ) 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_read_prof.F90

    r14644 r15540  
    130130      INTEGER, DIMENSION(kvars) :: & 
    131131         & iv3dt 
    132       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
     132      REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
    133133         & zphi, & 
    134134         & zlam 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_read_surf.F90

    r14644 r15540  
    110110         & ifileidx, & 
    111111         & isurfidx 
    112       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
     112      REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
    113113         & zphi, & 
    114114         & zlam 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_readmdt.F90

    r14219 r15540  
    7474      INTEGER ::   nummdt 
    7575      ! 
    76       REAL(wp), DIMENSION(1)     ::   zext, zobsmask 
    77       REAL(wp), DIMENSION(2,2,1) ::   zweig 
    78       ! 
    79       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   zmask, zmdtl, zglam, zgphi 
     76      REAL(dp), DIMENSION(1)     ::   zext, zobsmask 
     77      REAL(dp), DIMENSION(2,2,1) ::   zweig 
     78      ! 
     79      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE ::   zmask, zmdtl, zglam, zgphi 
    8080      INTEGER , DIMENSION(:,:,:), ALLOCATABLE ::   igrdi, igrdj 
    8181      ! 
    82       REAL(wp), DIMENSION(jpi,jpj) ::  z_mdt, mdtmask 
     82      REAL(dp), DIMENSION(jpi,jpj) ::  z_mdt, mdtmask 
    8383          
    84       REAL(wp) :: zlam, zphi, zfill, zinfill    ! local scalar 
     84      REAL(dp) :: zlam, zphi, zfill, zinfill    ! local scalar 
    8585      !!---------------------------------------------------------------------- 
    8686 
     
    137137      END DO 
    138138 
    139       CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, igrdi, igrdj, CASTWP(glamt)  , zglam ) 
    140       CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, igrdi, igrdj, CASTWP(gphit)  , zgphi ) 
     139      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, igrdi, igrdj, glamt  , zglam ) 
     140      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, igrdi, igrdj, gphit  , zgphi ) 
    141141      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, igrdi, igrdj, mdtmask, zmask ) 
    142142      CALL obs_int_comm_2d( 2, 2, sladata%nsurf, jpi, jpj, igrdi, igrdj, z_mdt  , zmdtl ) 
     
    189189      INTEGER, INTENT(IN) ::  kpi, kpj 
    190190      INTEGER, INTENT(IN) ::  Kmm 
    191       REAL(wp), DIMENSION(kpi,kpj), INTENT(INOUT) ::   mdt     ! MDT used on the model grid 
    192       REAL(wp)                    , INTENT(IN   ) ::   zfill  
     191      REAL(dp), DIMENSION(kpi,kpj), INTENT(INOUT) ::   mdt     ! MDT used on the model grid 
     192      REAL(dp)                    , INTENT(IN   ) ::   zfill  
    193193      !  
    194194      INTEGER  :: ji, jj 
    195       REAL(wp) :: zdxdy, zarea, zeta1, zeta2, zcorr_mdt, zcorr_bcketa, zcorr     ! local scalar 
    196       REAL(wp), DIMENSION(jpi,jpj) :: zpromsk 
     195      REAL(dp) :: zdxdy, zarea, zeta1, zeta2, zcorr_mdt, zcorr_bcketa, zcorr     ! local scalar 
     196      REAL(dp), DIMENSION(jpi,jpj) :: zpromsk 
    197197      CHARACTER(LEN=14), PARAMETER ::   cpname = 'obs_offset_mdt' 
    198198      !!---------------------------------------------------------------------- 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_rot_vel.F90

    r10068 r15540  
    5858      TYPE(obs_prof), INTENT(INOUT) :: profdata    ! Profile data to be read 
    5959      INTEGER, INTENT(IN) :: k2dint     ! Horizontal interpolation methed 
    60       REAL(wp), DIMENSION(*) :: & 
     60      REAL(dp), DIMENSION(*) :: & 
    6161         & pu, & 
    6262         & pv 
    6363      !! * Local declarations 
    64       REAL(wp), DIMENSION(2,2,1) :: zweig 
    65       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     64      REAL(dp), DIMENSION(2,2,1) :: zweig 
     65      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    6666         & zmasku, & 
    6767         & zmaskv, & 
     
    7474         & zglamv, & 
    7575         & zgphiv 
    76       REAL(wp), DIMENSION(1) :: & 
     76      REAL(dp), DIMENSION(1) :: & 
    7777         & zsinu, & 
    7878         & zcosu, & 
    7979         & zsinv, & 
    8080         & zcosv 
    81       REAL(wp) :: zsin 
    82       REAL(wp) :: zcos 
    83       REAL(wp), DIMENSION(1) :: zobsmask 
    84       REAL(wp), DIMENSION(jpi,jpj) :: zsingu,zcosgu,zsingv,zcosgv 
     81      REAL(dp) :: zsin 
     82      REAL(dp) :: zcos 
     83      REAL(dp), DIMENSION(1) :: zobsmask 
     84      REAL(dp), DIMENSION(jpi,jpj) :: zsingu,zcosgu,zsingv,zcosgv 
    8585      INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: & 
    8686         & igrdiu, & 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_sstbias.F90

    r14219 r15540  
    8282      INTEGER, DIMENSION(knumtypes) :: & 
    8383         & ibiastypes             ! Array of the bias types in each file 
    84       REAL(wp), DIMENSION(jpi,jpj,knumtypes) :: &  
     84      REAL(dp), DIMENSION(jpi,jpj,knumtypes) :: &  
    8585         & z_sstbias              ! Array to store the SST bias values 
    86       REAL(wp), DIMENSION(jpi,jpj) :: &  
     86      REAL(dp), DIMENSION(jpi,jpj) :: &  
    8787         & z_sstbias_2d           ! Array to store the SST bias values    
    88       REAL(wp), DIMENSION(1) :: & 
     88      REAL(dp), DIMENSION(1) :: & 
    8989         & zext, & 
    9090         & zobsmask 
    91       REAL(wp), DIMENSION(2,2,1) :: & 
     91      REAL(dp), DIMENSION(2,2,1) :: & 
    9292         & zweig 
    93       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     93      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    9494         & zmask, & 
    9595         & zglam, & 
    9696         & zgphi 
    97       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: & 
     97      REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: & 
    9898         & zmask_tmp, & 
    9999         & zglam_tmp, & 
    100100         & zgphi_tmp    
    101       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  zbias    
    102       REAL(wp) :: zlam 
    103       REAL(wp) :: zphi 
     101      REAL(dp), ALLOCATABLE, DIMENSION(:,:,:) ::  zbias    
     102      REAL(dp) :: zlam 
     103      REAL(dp) :: zphi 
    104104      INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: & 
    105105         & igrdi, & 
     
    171171      END DO 
    172172      CALL obs_int_comm_2d( 2, 2, sstdata%nsurf, jpi, jpj, & 
    173          &                  igrdi, igrdj, CASTWP(glamt), zglam ) 
     173         &                  igrdi, igrdj, glamt, zglam ) 
    174174      CALL obs_int_comm_2d( 2, 2, sstdata%nsurf, jpi, jpj, & 
    175          &                  igrdi, igrdj, CASTWP(gphit), zgphi ) 
     175         &                  igrdi, igrdj, gphit, zgphi ) 
    176176      CALL obs_int_comm_2d( 2, 2, sstdata%nsurf, jpi, jpj, & 
    177177         &                  igrdi, igrdj, tmask(:,:,1), zmask ) 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_surf_def.F90

    r14650 r15540  
    2020   !! * Modules used 
    2121   USE par_kind, ONLY : & ! Precision variables 
    22       & wp          
     22      & dp, wp          
    2323   USE obs_mpp, ONLY : &  ! MPP tools  
    2424      obs_mpp_sum_integer 
     
    7575         & cwmo           !: WMO indentifier 
    7676          
    77       REAL(KIND=wp), POINTER, DIMENSION(:) :: & 
     77      REAL(KIND=dp), POINTER, DIMENSION(:) :: & 
    7878         & rlam, &        !: Longitude coordinate of surface observation 
    7979         & rphi           !: Latitude coordinate of surface observation 
    8080 
    81       REAL(KIND=wp), POINTER, DIMENSION(:,:) :: & 
     81      REAL(KIND=dp), POINTER, DIMENSION(:,:) :: & 
    8282         & robs, &        !: Surface observation  
    8383         & rmod           !: Model counterpart of the surface observation vector 
    8484 
    85       REAL(KIND=wp), POINTER, DIMENSION(:,:) :: & 
     85      REAL(KIND=dp), POINTER, DIMENSION(:,:) :: & 
    8686         & rext           !: Extra fields interpolated to observation points 
    8787 
    88       REAL(KIND=wp), POINTER, DIMENSION(:,:) :: & 
     88      REAL(KIND=dp), POINTER, DIMENSION(:,:) :: & 
    8989         & vdmean         !: Time averaged of model field 
    9090 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obs_write.F90

    r14644 r15540  
    100100      INTEGER :: iadd 
    101101      INTEGER :: iext 
    102       REAL(wp) :: zpres 
     102      REAL(dp) :: zpres 
    103103 
    104104      IF ( PRESENT( padd ) ) THEN 
     
    586586      INTEGER :: inumgoodobs 
    587587      INTEGER :: inumgoodobsmpp 
    588       REAL(wp) :: zsumx 
    589       REAL(wp) :: zsumx2 
    590       REAL(wp) :: zomb 
     588      REAL(dp) :: zsumx 
     589      REAL(dp) :: zsumx2 
     590      REAL(dp) :: zomb 
    591591       
    592592 
  • 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 
  • NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/OBS/obsinter_z1d.h90

    r13226 r15540  
    3434      INTEGER, INTENT(IN), DIMENSION(kdep) :: & 
    3535         & kkco                 ! Array indicies for interpolation 
    36       REAL(KIND=wp), INTENT(IN), DIMENSION(kdep) :: & 
     36      REAL(KIND=dp), INTENT(IN), DIMENSION(kdep) :: & 
    3737         & pobsdep              ! Depth of the observation 
    38       REAL(KIND=wp), INTENT(IN), DIMENSION(kpk) :: & 
     38      REAL(KIND=dp), INTENT(IN), DIMENSION(kpk) :: & 
    3939         & pobsk,  &            ! Model profile at a given (lon,lat) 
    4040         & pobs2k, &            ! 2nd derivative of the interpolating function 
    4141         & pdep,   &            ! Model depth array 
    4242         & pobsmask             ! Vertical mask 
    43       REAL(KIND=wp), INTENT(OUT), DIMENSION(kdep) :: & 
     43      REAL(KIND=dp), INTENT(OUT), DIMENSION(kdep) :: & 
    4444         & pobs                 ! Model equivalent at observation point 
    4545   
    4646      !! * Local declarations 
    47       REAL(KIND=wp) :: z1dm       ! Distance above and below obs to model grid points 
    48       REAL(KIND=wp) :: z1dp          
    49       REAL(KIND=wp) :: zsum       ! Dummy variables for computation 
    50       REAL(KIND=wp) :: zsum2 
     47      REAL(KIND=dp) :: z1dm       ! Distance above and below obs to model grid points 
     48      REAL(KIND=dp) :: z1dp          
     49      REAL(KIND=dp) :: zsum       ! Dummy variables for computation 
     50      REAL(KIND=dp) :: zsum2 
    5151      INTEGER :: jdep             ! Observation depths loop variable 
    5252     
     
    122122      !! * Arguments 
    123123      INTEGER, INTENT(IN) :: kpk               ! Number of vertical levels 
    124       REAL(KIND=wp), INTENT(IN), DIMENSION(kpk) :: & 
     124      REAL(KIND=dp), INTENT(IN), DIMENSION(kpk) :: & 
    125125         & pobsk, &          ! Model profile at a given (lon,lat) 
    126126         & pdep,  &          ! Model depth array 
    127127         & pobsmask          ! Vertical mask 
    128       REAL(KIND=wp), INTENT(OUT), DIMENSION(kpk) :: & 
     128      REAL(KIND=dp), INTENT(OUT), DIMENSION(kpk) :: & 
    129129         & pobs2k            ! 2nd derivative of the interpolating function 
    130130   
    131131      !! * Local declarations 
    132132      INTEGER :: jk 
    133       REAL(KIND=wp) :: za 
    134       REAL(KIND=wp) :: zb 
    135       REAL(KIND=wp) :: zc 
    136       REAL(KIND=wp) :: zpa 
    137       REAL(KIND=wp) :: zkm 
    138       REAL(KIND=wp) :: zkp 
    139       REAL(KIND=wp) :: zk 
    140       REAL(KIND=wp), DIMENSION(kpk-1) :: & 
     133      REAL(KIND=dp) :: za 
     134      REAL(KIND=dp) :: zb 
     135      REAL(KIND=dp) :: zc 
     136      REAL(KIND=dp) :: zpa 
     137      REAL(KIND=dp) :: zkm 
     138      REAL(KIND=dp) :: zkp 
     139      REAL(KIND=dp) :: zk 
     140      REAL(KIND=dp), DIMENSION(kpk-1) :: & 
    141141         & zs, & 
    142142         & zp, & 
Note: See TracChangeset for help on using the changeset viewer.