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 13247 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbcnfd.F90 – NEMO

Ignore:
Timestamp:
2020-07-03T19:15:31+02:00 (4 years ago)
Author:
francesca
Message:

dev_r12558_HPC-08_epico_Extra_Halo: merge with trunk@13227, see #2366

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbcnfd.F90

    r12586 r13247  
    2626 
    2727   INTERFACE lbc_nfd 
    28       MODULE PROCEDURE   lbc_nfd_2d    , lbc_nfd_3d    , lbc_nfd_4d 
    29       MODULE PROCEDURE   lbc_nfd_2d_ptr, lbc_nfd_3d_ptr, lbc_nfd_4d_ptr 
    30       MODULE PROCEDURE   lbc_nfd_2d_ext 
     28      MODULE PROCEDURE   lbc_nfd_2d_sp    , lbc_nfd_3d_sp    , lbc_nfd_4d_sp 
     29      MODULE PROCEDURE   lbc_nfd_2d_ptr_sp, lbc_nfd_3d_ptr_sp, lbc_nfd_4d_ptr_sp 
     30      MODULE PROCEDURE   lbc_nfd_2d_ext_sp 
     31      MODULE PROCEDURE   lbc_nfd_2d_dp    , lbc_nfd_3d_dp    , lbc_nfd_4d_dp 
     32      MODULE PROCEDURE   lbc_nfd_2d_ptr_dp, lbc_nfd_3d_ptr_dp, lbc_nfd_4d_ptr_dp 
     33      MODULE PROCEDURE   lbc_nfd_2d_ext_dp 
    3134   END INTERFACE 
    3235   ! 
    3336   INTERFACE lbc_nfd_nogather 
    3437!                        ! Currently only 4d array version is needed 
    35      MODULE PROCEDURE   lbc_nfd_nogather_2d    , lbc_nfd_nogather_3d 
    36      MODULE PROCEDURE   lbc_nfd_nogather_4d 
    37      MODULE PROCEDURE   lbc_nfd_nogather_2d_ptr, lbc_nfd_nogather_3d_ptr 
     38     MODULE PROCEDURE   lbc_nfd_nogather_2d_sp    , lbc_nfd_nogather_3d_sp 
     39     MODULE PROCEDURE   lbc_nfd_nogather_4d_sp 
     40     MODULE PROCEDURE   lbc_nfd_nogather_2d_ptr_sp, lbc_nfd_nogather_3d_ptr_sp 
     41     MODULE PROCEDURE   lbc_nfd_nogather_2d_dp    , lbc_nfd_nogather_3d_dp 
     42     MODULE PROCEDURE   lbc_nfd_nogather_4d_dp 
     43     MODULE PROCEDURE   lbc_nfd_nogather_2d_ptr_dp, lbc_nfd_nogather_3d_ptr_dp 
    3844!     MODULE PROCEDURE   lbc_nfd_nogather_4d_ptr 
    3945   END INTERFACE 
    4046 
    41    TYPE, PUBLIC ::   PTR_2D   !: array of 2D pointers (also used in lib_mpp) 
    42       REAL(wp), DIMENSION (:,:)    , POINTER ::   pt2d 
    43    END TYPE PTR_2D 
    44    TYPE, PUBLIC ::   PTR_3D   !: array of 3D pointers (also used in lib_mpp) 
    45       REAL(wp), DIMENSION (:,:,:)  , POINTER ::   pt3d 
    46    END TYPE PTR_3D 
    47    TYPE, PUBLIC ::   PTR_4D   !: array of 4D pointers (also used in lib_mpp) 
    48       REAL(wp), DIMENSION (:,:,:,:), POINTER ::   pt4d 
    49    END TYPE PTR_4D 
     47   TYPE, PUBLIC ::   PTR_2D_dp   !: array of 2D pointers (also used in lib_mpp) 
     48      REAL(dp), DIMENSION (:,:)    , POINTER ::   pt2d 
     49   END TYPE PTR_2D_dp 
     50   TYPE, PUBLIC ::   PTR_3D_dp   !: array of 3D pointers (also used in lib_mpp) 
     51      REAL(dp), DIMENSION (:,:,:)  , POINTER ::   pt3d 
     52   END TYPE PTR_3D_dp 
     53   TYPE, PUBLIC ::   PTR_4D_dp   !: array of 4D pointers (also used in lib_mpp) 
     54      REAL(dp), DIMENSION (:,:,:,:), POINTER ::   pt4d 
     55   END TYPE PTR_4D_dp 
     56 
     57   TYPE, PUBLIC ::   PTR_2D_sp   !: array of 2D pointers (also used in lib_mpp) 
     58      REAL(sp), DIMENSION (:,:)    , POINTER ::   pt2d 
     59   END TYPE PTR_2D_sp 
     60   TYPE, PUBLIC ::   PTR_3D_sp   !: array of 3D pointers (also used in lib_mpp) 
     61      REAL(sp), DIMENSION (:,:,:)  , POINTER ::   pt3d 
     62   END TYPE PTR_3D_sp 
     63   TYPE, PUBLIC ::   PTR_4D_sp   !: array of 4D pointers (also used in lib_mpp) 
     64      REAL(sp), DIMENSION (:,:,:,:), POINTER ::   pt4d 
     65   END TYPE PTR_4D_sp 
     66 
    5067 
    5168   PUBLIC   lbc_nfd            ! north fold conditions 
     
    7693   !!---------------------------------------------------------------------- 
    7794   ! 
    78    !                       !==  2D array and array of 2D pointer  ==! 
    79    ! 
    80 #  define DIM_2d 
    81 #     define ROUTINE_NFD           lbc_nfd_2d 
    82 #     include "lbc_nfd_generic.h90" 
    83 #     undef ROUTINE_NFD 
    84 #     define MULTI 
    85 #     define ROUTINE_NFD           lbc_nfd_2d_ptr 
     95   !                       !==  SINGLE PRECISION VERSIONS 
     96   ! 
     97   ! 
     98   !                       !==  2D array and array of 2D pointer  ==! 
     99   ! 
     100#  define SINGLE_PRECISION 
     101#  define DIM_2d 
     102#     define ROUTINE_NFD           lbc_nfd_2d_sp 
     103#     include "lbc_nfd_generic.h90" 
     104#     undef ROUTINE_NFD 
     105#     define MULTI 
     106#     define ROUTINE_NFD           lbc_nfd_2d_ptr_sp 
    86107#     include "lbc_nfd_generic.h90" 
    87108#     undef ROUTINE_NFD 
     
    92113   ! 
    93114#  define DIM_2d 
    94 #     define ROUTINE_NFD           lbc_nfd_2d_ext 
     115#     define ROUTINE_NFD           lbc_nfd_2d_ext_sp 
    95116#     include "lbc_nfd_ext_generic.h90" 
    96117#     undef ROUTINE_NFD 
     
    100121   ! 
    101122#  define DIM_3d 
    102 #     define ROUTINE_NFD           lbc_nfd_3d 
    103 #     include "lbc_nfd_generic.h90" 
    104 #     undef ROUTINE_NFD 
    105 #     define MULTI 
    106 #     define ROUTINE_NFD           lbc_nfd_3d_ptr 
    107 #     include "lbc_nfd_generic.h90" 
    108 #     undef ROUTINE_NFD 
    109 #     undef MULTI 
    110 #  undef DIM_3d 
    111    ! 
    112    !                       !==  4D array and array of 4D pointer  ==! 
    113    ! 
    114 #  define DIM_4d 
    115 #     define ROUTINE_NFD           lbc_nfd_4d 
    116 #     include "lbc_nfd_generic.h90" 
    117 #     undef ROUTINE_NFD 
    118 #     define MULTI 
    119 #     define ROUTINE_NFD           lbc_nfd_4d_ptr 
     123#     define ROUTINE_NFD           lbc_nfd_3d_sp 
     124#     include "lbc_nfd_generic.h90" 
     125#     undef ROUTINE_NFD 
     126#     define MULTI 
     127#     define ROUTINE_NFD           lbc_nfd_3d_ptr_sp 
     128#     include "lbc_nfd_generic.h90" 
     129#     undef ROUTINE_NFD 
     130#     undef MULTI 
     131#  undef DIM_3d 
     132   ! 
     133   !                       !==  4D array and array of 4D pointer  ==! 
     134   ! 
     135#  define DIM_4d 
     136#     define ROUTINE_NFD           lbc_nfd_4d_sp 
     137#     include "lbc_nfd_generic.h90" 
     138#     undef ROUTINE_NFD 
     139#     define MULTI 
     140#     define ROUTINE_NFD           lbc_nfd_4d_ptr_sp 
    120141#     include "lbc_nfd_generic.h90" 
    121142#     undef ROUTINE_NFD 
     
    128149   ! 
    129150#  define DIM_2d 
    130 #     define ROUTINE_NFD           lbc_nfd_nogather_2d 
    131 #     include "lbc_nfd_nogather_generic.h90" 
    132 #     undef ROUTINE_NFD 
    133 #     define MULTI 
    134 #     define ROUTINE_NFD           lbc_nfd_nogather_2d_ptr 
    135 #     include "lbc_nfd_nogather_generic.h90" 
    136 #     undef ROUTINE_NFD 
    137 #     undef MULTI 
    138 #  undef DIM_2d 
    139    ! 
    140    !                       !==  3D array and array of 3D pointer  ==! 
    141    ! 
    142 #  define DIM_3d 
    143 #     define ROUTINE_NFD           lbc_nfd_nogather_3d 
    144 #     include "lbc_nfd_nogather_generic.h90" 
    145 #     undef ROUTINE_NFD 
    146 #     define MULTI 
    147 #     define ROUTINE_NFD           lbc_nfd_nogather_3d_ptr 
    148 #     include "lbc_nfd_nogather_generic.h90" 
    149 #     undef ROUTINE_NFD 
    150 #     undef MULTI 
    151 #  undef DIM_3d 
    152    ! 
    153    !                       !==  4D array and array of 4D pointer  ==! 
    154    ! 
    155 #  define DIM_4d 
    156 #     define ROUTINE_NFD           lbc_nfd_nogather_4d 
     151#     define ROUTINE_NFD           lbc_nfd_nogather_2d_sp 
     152#     include "lbc_nfd_nogather_generic.h90" 
     153#     undef ROUTINE_NFD 
     154#     define MULTI 
     155#     define ROUTINE_NFD           lbc_nfd_nogather_2d_ptr_sp 
     156#     include "lbc_nfd_nogather_generic.h90" 
     157#     undef ROUTINE_NFD 
     158#     undef MULTI 
     159#  undef DIM_2d 
     160   ! 
     161   !                       !==  3D array and array of 3D pointer  ==! 
     162   ! 
     163#  define DIM_3d 
     164#     define ROUTINE_NFD           lbc_nfd_nogather_3d_sp 
     165#     include "lbc_nfd_nogather_generic.h90" 
     166#     undef ROUTINE_NFD 
     167#     define MULTI 
     168#     define ROUTINE_NFD           lbc_nfd_nogather_3d_ptr_sp 
     169#     include "lbc_nfd_nogather_generic.h90" 
     170#     undef ROUTINE_NFD 
     171#     undef MULTI 
     172#  undef DIM_3d 
     173   ! 
     174   !                       !==  4D array and array of 4D pointer  ==! 
     175   ! 
     176#  define DIM_4d 
     177#     define ROUTINE_NFD           lbc_nfd_nogather_4d_sp 
    157178#     include "lbc_nfd_nogather_generic.h90" 
    158179#     undef ROUTINE_NFD 
     
    163184!#     undef MULTI 
    164185#  undef DIM_4d 
    165  
    166    !!---------------------------------------------------------------------- 
     186#  undef SINGLE_PRECISION 
     187 
     188   !!---------------------------------------------------------------------- 
     189   ! 
     190   !                       !==  DOUBLE PRECISION VERSIONS 
     191   ! 
     192   ! 
     193   !                       !==  2D array and array of 2D pointer  ==! 
     194   ! 
     195#  define DIM_2d 
     196#     define ROUTINE_NFD           lbc_nfd_2d_dp 
     197#     include "lbc_nfd_generic.h90" 
     198#     undef ROUTINE_NFD 
     199#     define MULTI 
     200#     define ROUTINE_NFD           lbc_nfd_2d_ptr_dp 
     201#     include "lbc_nfd_generic.h90" 
     202#     undef ROUTINE_NFD 
     203#     undef MULTI 
     204#  undef DIM_2d 
     205   ! 
     206   !                       !==  2D array with extra haloes  ==! 
     207   ! 
     208#  define DIM_2d 
     209#     define ROUTINE_NFD           lbc_nfd_2d_ext_dp 
     210#     include "lbc_nfd_ext_generic.h90" 
     211#     undef ROUTINE_NFD 
     212#  undef DIM_2d 
     213   ! 
     214   !                       !==  3D array and array of 3D pointer  ==! 
     215   ! 
     216#  define DIM_3d 
     217#     define ROUTINE_NFD           lbc_nfd_3d_dp 
     218#     include "lbc_nfd_generic.h90" 
     219#     undef ROUTINE_NFD 
     220#     define MULTI 
     221#     define ROUTINE_NFD           lbc_nfd_3d_ptr_dp 
     222#     include "lbc_nfd_generic.h90" 
     223#     undef ROUTINE_NFD 
     224#     undef MULTI 
     225#  undef DIM_3d 
     226   ! 
     227   !                       !==  4D array and array of 4D pointer  ==! 
     228   ! 
     229#  define DIM_4d 
     230#     define ROUTINE_NFD           lbc_nfd_4d_dp 
     231#     include "lbc_nfd_generic.h90" 
     232#     undef ROUTINE_NFD 
     233#     define MULTI 
     234#     define ROUTINE_NFD           lbc_nfd_4d_ptr_dp 
     235#     include "lbc_nfd_generic.h90" 
     236#     undef ROUTINE_NFD 
     237#     undef MULTI 
     238#  undef DIM_4d 
     239   ! 
     240   !  lbc_nfd_nogather routines 
     241   ! 
     242   !                       !==  2D array and array of 2D pointer  ==! 
     243   ! 
     244#  define DIM_2d 
     245#     define ROUTINE_NFD           lbc_nfd_nogather_2d_dp 
     246#     include "lbc_nfd_nogather_generic.h90" 
     247#     undef ROUTINE_NFD 
     248#     define MULTI 
     249#     define ROUTINE_NFD           lbc_nfd_nogather_2d_ptr_dp 
     250#     include "lbc_nfd_nogather_generic.h90" 
     251#     undef ROUTINE_NFD 
     252#     undef MULTI 
     253#  undef DIM_2d 
     254   ! 
     255   !                       !==  3D array and array of 3D pointer  ==! 
     256   ! 
     257#  define DIM_3d 
     258#     define ROUTINE_NFD           lbc_nfd_nogather_3d_dp 
     259#     include "lbc_nfd_nogather_generic.h90" 
     260#     undef ROUTINE_NFD 
     261#     define MULTI 
     262#     define ROUTINE_NFD           lbc_nfd_nogather_3d_ptr_dp 
     263#     include "lbc_nfd_nogather_generic.h90" 
     264#     undef ROUTINE_NFD 
     265#     undef MULTI 
     266#  undef DIM_3d 
     267   ! 
     268   !                       !==  4D array and array of 4D pointer  ==! 
     269   ! 
     270#  define DIM_4d 
     271#     define ROUTINE_NFD           lbc_nfd_nogather_4d_dp 
     272#     include "lbc_nfd_nogather_generic.h90" 
     273#     undef ROUTINE_NFD 
     274!#     define MULTI 
     275!#     define ROUTINE_NFD           lbc_nfd_nogather_4d_ptr 
     276!#     include "lbc_nfd_nogather_generic.h90" 
     277!#     undef ROUTINE_NFD 
     278!#     undef MULTI 
     279#  undef DIM_4d 
     280 
     281   !!---------------------------------------------------------------------- 
     282 
    167283 
    168284 
Note: See TracChangeset for help on using the changeset viewer.