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 14219 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/lib_fortran.F90 – NEMO

Ignore:
Timestamp:
2020-12-18T18:52:57+01:00 (4 years ago)
Author:
mcastril
Message:

Add Mixed Precision support by Oriol Tintó

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/lib_fortran.F90

    r13327 r14219  
    3737 
    3838   INTERFACE glob_sum 
    39       MODULE PROCEDURE glob_sum_1d, glob_sum_2d, glob_sum_3d 
     39      MODULE PROCEDURE glob_sum_1d_sp, glob_sum_2d_sp, glob_sum_3d_sp 
     40      MODULE PROCEDURE glob_sum_1d_dp, glob_sum_2d_dp, glob_sum_3d_dp 
    4041   END INTERFACE 
    4142   INTERFACE glob_sum_full 
    42       MODULE PROCEDURE glob_sum_full_2d, glob_sum_full_3d 
     43      MODULE PROCEDURE glob_sum_full_2d_sp, glob_sum_full_3d_sp 
     44      MODULE PROCEDURE glob_sum_full_2d_dp, glob_sum_full_3d_dp 
    4345   END INTERFACE 
    4446   INTERFACE local_sum 
     
    4951   END INTERFACE 
    5052   INTERFACE glob_min 
    51       MODULE PROCEDURE glob_min_2d, glob_min_3d 
     53      MODULE PROCEDURE glob_min_2d_sp, glob_min_3d_sp 
     54      MODULE PROCEDURE glob_min_2d_dp, glob_min_3d_dp 
    5255   END INTERFACE 
    5356   INTERFACE glob_max 
    54       MODULE PROCEDURE glob_max_2d, glob_max_3d 
     57      MODULE PROCEDURE glob_max_2d_sp, glob_max_3d_sp 
     58      MODULE PROCEDURE glob_max_2d_dp, glob_max_3d_dp 
    5559   END INTERFACE 
    5660 
     
    7478#  define GLOBSUM_CODE 
    7579 
    76 #     define DIM_1d 
    77 #     define FUNCTION_GLOBSUM           glob_sum_1d 
    78 #     include "lib_fortran_generic.h90" 
    79 #     undef FUNCTION_GLOBSUM 
    80 #     undef DIM_1d 
    81  
    82 #     define DIM_2d 
    83 #     define OPERATION_GLOBSUM 
    84 #     define FUNCTION_GLOBSUM           glob_sum_2d 
    85 #     include "lib_fortran_generic.h90" 
    86 #     undef FUNCTION_GLOBSUM 
    87 #     undef OPERATION_GLOBSUM 
    88 #     define OPERATION_FULL_GLOBSUM 
    89 #     define FUNCTION_GLOBSUM           glob_sum_full_2d 
    90 #     include "lib_fortran_generic.h90" 
    91 #     undef FUNCTION_GLOBSUM 
    92 #     undef OPERATION_FULL_GLOBSUM 
    93 #     undef DIM_2d 
    94  
    95 #     define DIM_3d 
    96 #     define OPERATION_GLOBSUM 
    97 #     define FUNCTION_GLOBSUM           glob_sum_3d 
    98 #     include "lib_fortran_generic.h90" 
    99 #     undef FUNCTION_GLOBSUM 
    100 #     undef OPERATION_GLOBSUM 
    101 #     define OPERATION_FULL_GLOBSUM 
    102 #     define FUNCTION_GLOBSUM           glob_sum_full_3d 
    103 #     include "lib_fortran_generic.h90" 
    104 #     undef FUNCTION_GLOBSUM 
    105 #     undef OPERATION_FULL_GLOBSUM 
    106 #     undef DIM_3d 
     80#     define SINGLE_PRECISION 
     81#        define DIM_1d 
     82#        define FUNCTION_GLOBSUM           glob_sum_1d_sp 
     83#        include "lib_fortran_generic.h90" 
     84#        undef FUNCTION_GLOBSUM 
     85#        undef DIM_1d 
     86 
     87#        define DIM_2d 
     88#        define OPERATION_GLOBSUM 
     89#        define FUNCTION_GLOBSUM           glob_sum_2d_sp 
     90#        include "lib_fortran_generic.h90" 
     91#        undef FUNCTION_GLOBSUM 
     92#        undef OPERATION_GLOBSUM 
     93#        define OPERATION_FULL_GLOBSUM 
     94#        define FUNCTION_GLOBSUM           glob_sum_full_2d_sp 
     95#        include "lib_fortran_generic.h90" 
     96#        undef FUNCTION_GLOBSUM 
     97#        undef OPERATION_FULL_GLOBSUM 
     98#        undef DIM_2d 
     99 
     100#        define DIM_3d 
     101#        define OPERATION_GLOBSUM 
     102#        define FUNCTION_GLOBSUM           glob_sum_3d_sp 
     103#        include "lib_fortran_generic.h90" 
     104#        undef FUNCTION_GLOBSUM 
     105#        undef OPERATION_GLOBSUM 
     106#        define OPERATION_FULL_GLOBSUM 
     107#        define FUNCTION_GLOBSUM           glob_sum_full_3d_sp 
     108#        include "lib_fortran_generic.h90" 
     109#        undef FUNCTION_GLOBSUM 
     110#        undef OPERATION_FULL_GLOBSUM 
     111#        undef DIM_3d 
     112#     undef SINGLE_PRECISION 
     113! Double Precision versions 
     114#        define DIM_1d 
     115#        define FUNCTION_GLOBSUM           glob_sum_1d_dp 
     116#        include "lib_fortran_generic.h90" 
     117#        undef FUNCTION_GLOBSUM 
     118#        undef DIM_1d 
     119 
     120#        define DIM_2d 
     121#        define OPERATION_GLOBSUM 
     122#        define FUNCTION_GLOBSUM           glob_sum_2d_dp 
     123#        include "lib_fortran_generic.h90" 
     124#        undef FUNCTION_GLOBSUM 
     125#        undef OPERATION_GLOBSUM 
     126#        define OPERATION_FULL_GLOBSUM 
     127#        define FUNCTION_GLOBSUM           glob_sum_full_2d_dp 
     128#        include "lib_fortran_generic.h90" 
     129#        undef FUNCTION_GLOBSUM 
     130#        undef OPERATION_FULL_GLOBSUM 
     131#        undef DIM_2d 
     132 
     133#        define DIM_3d 
     134#        define OPERATION_GLOBSUM 
     135#        define FUNCTION_GLOBSUM           glob_sum_3d_dp 
     136#        include "lib_fortran_generic.h90" 
     137#        undef FUNCTION_GLOBSUM 
     138#        undef OPERATION_GLOBSUM 
     139#        define OPERATION_FULL_GLOBSUM 
     140#        define FUNCTION_GLOBSUM           glob_sum_full_3d_dp 
     141#        include "lib_fortran_generic.h90" 
     142#        undef FUNCTION_GLOBSUM 
     143#        undef OPERATION_FULL_GLOBSUM 
     144#        undef DIM_3d 
    107145 
    108146#  undef GLOBSUM_CODE 
    109147 
    110  
     148! Single Precision versions 
    111149#  define GLOBMINMAX_CODE 
    112150 
    113 #     define DIM_2d 
    114 #     define OPERATION_GLOBMIN 
    115 #     define FUNCTION_GLOBMINMAX           glob_min_2d 
    116 #     include "lib_fortran_generic.h90" 
    117 #     undef FUNCTION_GLOBMINMAX 
    118 #     undef OPERATION_GLOBMIN 
    119 #     define OPERATION_GLOBMAX 
    120 #     define FUNCTION_GLOBMINMAX           glob_max_2d 
    121 #     include "lib_fortran_generic.h90" 
    122 #     undef FUNCTION_GLOBMINMAX 
    123 #     undef OPERATION_GLOBMAX 
    124 #     undef DIM_2d 
    125  
    126 #     define DIM_3d 
    127 #     define OPERATION_GLOBMIN 
    128 #     define FUNCTION_GLOBMINMAX           glob_min_3d 
    129 #     include "lib_fortran_generic.h90" 
    130 #     undef FUNCTION_GLOBMINMAX 
    131 #     undef OPERATION_GLOBMIN 
    132 #     define OPERATION_GLOBMAX 
    133 #     define FUNCTION_GLOBMINMAX           glob_max_3d 
    134 #     include "lib_fortran_generic.h90" 
    135 #     undef FUNCTION_GLOBMINMAX 
    136 #     undef OPERATION_GLOBMAX 
    137 #     undef DIM_3d 
     151#     define SINGLE_PRECISION 
     152#        define DIM_2d 
     153#        define OPERATION_GLOBMIN 
     154#        define FUNCTION_GLOBMINMAX           glob_min_2d_sp 
     155#        include "lib_fortran_generic.h90" 
     156#        undef FUNCTION_GLOBMINMAX 
     157#        undef OPERATION_GLOBMIN 
     158#        define OPERATION_GLOBMAX 
     159#        define FUNCTION_GLOBMINMAX           glob_max_2d_sp 
     160#        include "lib_fortran_generic.h90" 
     161#        undef FUNCTION_GLOBMINMAX 
     162#        undef OPERATION_GLOBMAX 
     163#        undef DIM_2d 
     164 
     165#        define DIM_3d 
     166#        define OPERATION_GLOBMIN 
     167#        define FUNCTION_GLOBMINMAX           glob_min_3d_sp 
     168#        include "lib_fortran_generic.h90" 
     169#        undef FUNCTION_GLOBMINMAX 
     170#        undef OPERATION_GLOBMIN 
     171#        define OPERATION_GLOBMAX 
     172#        define FUNCTION_GLOBMINMAX           glob_max_3d_sp 
     173#        include "lib_fortran_generic.h90" 
     174#        undef FUNCTION_GLOBMINMAX 
     175#        undef OPERATION_GLOBMAX 
     176#        undef DIM_3d 
     177#     undef SINGLE_PRECISION 
     178! Double Precision versions 
     179#        define DIM_2d 
     180#        define OPERATION_GLOBMIN 
     181#        define FUNCTION_GLOBMINMAX           glob_min_2d_dp 
     182#        include "lib_fortran_generic.h90" 
     183#        undef FUNCTION_GLOBMINMAX 
     184#        undef OPERATION_GLOBMIN 
     185#        define OPERATION_GLOBMAX 
     186#        define FUNCTION_GLOBMINMAX           glob_max_2d_dp 
     187#        include "lib_fortran_generic.h90" 
     188#        undef FUNCTION_GLOBMINMAX 
     189#        undef OPERATION_GLOBMAX 
     190#        undef DIM_2d 
     191 
     192#        define DIM_3d 
     193#        define OPERATION_GLOBMIN 
     194#        define FUNCTION_GLOBMINMAX           glob_min_3d_dp 
     195#        include "lib_fortran_generic.h90" 
     196#        undef FUNCTION_GLOBMINMAX 
     197#        undef OPERATION_GLOBMIN 
     198#        define OPERATION_GLOBMAX 
     199#        define FUNCTION_GLOBMINMAX           glob_max_3d_dp 
     200#        include "lib_fortran_generic.h90" 
     201#        undef FUNCTION_GLOBMINMAX 
     202#        undef OPERATION_GLOBMAX 
     203#        undef DIM_3d 
    138204#  undef GLOBMINMAX_CODE 
    139205 
Note: See TracChangeset for help on using the changeset viewer.