Ignore:
Timestamp:
2020-07-02T16:24:31+02:00 (7 months ago)
Author:
orioltp
Message:

Merging dev_r12512_HPC-04_mcastril_Mixed_Precision_implementation into the trunk

Location:
NEMO/trunk/src/OCE/OBS
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/OBS/ddatetoymdhms.h90

    r10068 r13226  
    2121 
    2222      !! * Arguments 
    23       real(wp), INTENT(IN) :: ddate 
     23      real(dp), INTENT(IN) :: ddate 
    2424      INTEGER, INTENT(OUT) :: kyea 
    2525      INTEGER, INTENT(OUT) :: kmon 
  • NEMO/trunk/src/OCE/OBS/grt_cir_dis.h90

    r10068 r13226  
    2828      REAL(KIND=wp) :: pc2   !  cos(lat2) * sin(lon2) 
    2929 
     30      REAL(KIND=wp) :: cosdist ! cosine of great circle distance 
     31 
     32      ! Compute cosine of great circle distance, constraining it to be between 
     33      ! -1 and 1 (rounding errors can take it slightly outside this range 
     34      cosdist = MAX( MIN( pa1 * pa2 + pb1 * pb2 + pc1 * pc2, 1.0_wp), -1.0_wp ) 
     35 
    3036      grt_cir_dis = & 
    31          &  ASIN( SQRT( 1.0 - ( pa1 * pa2 + pb1 * pb2 + pc1 * pc2 )**2 ) ) 
     37         &  ASIN( SQRT( 1.0_wp - cosdist**2.0_wp ) ) 
    3238       
    3339   END FUNCTION grt_cir_dis 
  • NEMO/trunk/src/OCE/OBS/obs_read_prof.F90

    r10068 r13226  
    140140         & zphi, & 
    141141         & zlam 
    142       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
     142      REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
    143143         & zdat 
    144       REAL(wp), DIMENSION(knumfiles) :: & 
     144      REAL(dp), DIMENSION(knumfiles) :: & 
    145145         & djulini, & 
    146146         & djulend 
  • NEMO/trunk/src/OCE/OBS/obs_read_surf.F90

    r10069 r13226  
    112112         & zphi, & 
    113113         & zlam 
    114       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
     114      REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
    115115         & zdat 
    116       REAL(wp), DIMENSION(knumfiles) :: & 
     116      REAL(dp), DIMENSION(knumfiles) :: & 
    117117         & djulini, & 
    118118         & djulend 
  • NEMO/trunk/src/OCE/OBS/obsinter_z1d.h90

    r10068 r13226  
    6262         z1dm = ( pdep(kkco(jdep)) - pobsdep(jdep)      ) 
    6363         z1dp = ( pobsdep(jdep)    - pdep(kkco(jdep)-1) ) 
    64          IF ( pobsmask(kkco(jdep)) == 0.0_wp ) z1dp = 0.0_wp 
     64          
     65         ! If kkco(jdep) is masked then set pobs(jdep) to the lowest value located above bathymetry 
     66         IF ( pobsmask(kkco(jdep)) == 0.0_wp ) THEN 
     67            pobs(jdep) = pobsk(kkco(jdep)-1) 
     68         ELSE 
     69            zsum = z1dm + z1dp 
    6570 
    66          zsum = z1dm + z1dp 
    67           
    68          IF ( k1dint == 0 ) THEN 
     71            IF ( k1dint == 0 ) THEN 
    6972 
    70             !----------------------------------------------------------------- 
    71             !  Linear interpolation 
    72             !----------------------------------------------------------------- 
    73             pobs(jdep) = (   z1dm * pobsk(kkco(jdep)-1) & 
    74                &           + z1dp * pobsk(kkco(jdep)  ) ) / zsum 
     73               !----------------------------------------------------------------- 
     74               !  Linear interpolation 
     75               !----------------------------------------------------------------- 
     76               pobs(jdep) = (   z1dm * pobsk(kkco(jdep)-1) & 
     77                  &           + z1dp * pobsk(kkco(jdep)  ) ) / zsum 
    7578 
    76          ELSEIF ( k1dint == 1 ) THEN 
     79            ELSEIF ( k1dint == 1 ) THEN 
    7780 
    78             !----------------------------------------------------------------- 
    79             ! Cubic spline interpolation 
    80             !----------------------------------------------------------------- 
    81             zsum2 = zsum * zsum 
    82             pobs(jdep)  = (  z1dm                             * pobsk (kkco(jdep)-1) & 
    83                &           + z1dp                             * pobsk (kkco(jdep)  ) & 
    84                &           + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco(jdep)-1) & 
    85                &           +   z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco(jdep)  ) & 
    86                &             ) / 6.0_wp                                              & 
    87                &          ) / zsum 
     81               !----------------------------------------------------------------- 
     82               ! Cubic spline interpolation 
     83               !----------------------------------------------------------------- 
     84               zsum2 = zsum * zsum 
     85               pobs(jdep)  = (  z1dm                             * pobsk (kkco(jdep)-1) & 
     86                  &           + z1dp                             * pobsk (kkco(jdep)  ) & 
     87                  &           + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco(jdep)-1) & 
     88                  &           +   z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco(jdep)  ) & 
     89                  &             ) / 6.0_wp                                              & 
     90                  &          ) / zsum 
    8891 
     92            ENDIF 
    8993         ENDIF 
    9094      END DO 
Note: See TracChangeset for help on using the changeset viewer.