Changeset 14623 for utils/tools/DOMAINcfg/src/lbclnk.F90
- Timestamp:
- 2021-03-21T19:40:22+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
utils/tools/DOMAINcfg/src/lbclnk.F90
r13204 r14623 7 7 !! NEMO 1.0 ! 2002-09 (G. Madec) F90: Free form and module 8 8 !! 3.2 ! 2009-03 (R. Benshila) External north fold treatment 9 !! 3.5 ! 2012 (S.Mocavero, I. Epicoco) optimization of BDY comm. 9 !! 3.5 ! 2012 (S.Mocavero, I. Epicoco) optimization of BDY comm. via lbc_bdy_lnk and lbc_obc_lnk 10 10 !! 3.4 ! 2012-12 (R. Bourdalle-Badie, G. Reffray) add a C1D case 11 11 !! 3.6 ! 2015-06 (O. Tintó and M. Castrillo) add lbc_lnk_multi … … 14 14 !! - ! 2017-05 (G. Madec) create generic.h90 files to generate all lbc and north fold routines 15 15 !!---------------------------------------------------------------------- 16 #if defined key_mpp_mpi17 !!----------------------------------------------------------------------18 !! 'key_mpp_mpi' MPI massively parallel processing library19 !!----------------------------------------------------------------------20 16 !! define the generic interfaces of lib_mpp routines 21 17 !!---------------------------------------------------------------------- 22 18 !! lbc_lnk : generic interface for mpp_lnk_3d and mpp_lnk_2d routines defined in lib_mpp 23 !!---------------------------------------------------------------------- 24 USE par_oce ! ocean dynamics and tracers 19 !! lbc_bdy_lnk : generic interface for mpp_lnk_bdy_2d and mpp_lnk_bdy_3d routines defined in lib_mpp 20 !!---------------------------------------------------------------------- 21 USE dom_oce ! ocean space and time domain 25 22 USE lib_mpp ! distributed memory computing library 26 23 USE lbcnfd ! north fold 24 USE in_out_manager ! I/O manager 25 26 IMPLICIT NONE 27 PRIVATE 27 28 28 29 INTERFACE lbc_lnk 29 MODULE PROCEDURE mpp_lnk_2d , mpp_lnk_3d , mpp_lnk_4d 30 MODULE PROCEDURE mpp_lnk_2d_sp , mpp_lnk_3d_sp , mpp_lnk_4d_sp 31 MODULE PROCEDURE mpp_lnk_2d_dp , mpp_lnk_3d_dp , mpp_lnk_4d_dp 30 32 END INTERFACE 31 33 INTERFACE lbc_lnk_ptr 32 MODULE PROCEDURE mpp_lnk_2d_ptr , mpp_lnk_3d_ptr , mpp_lnk_4d_ptr 34 MODULE PROCEDURE mpp_lnk_2d_ptr_sp , mpp_lnk_3d_ptr_sp , mpp_lnk_4d_ptr_sp 35 MODULE PROCEDURE mpp_lnk_2d_ptr_dp , mpp_lnk_3d_ptr_dp , mpp_lnk_4d_ptr_dp 33 36 END INTERFACE 34 37 INTERFACE lbc_lnk_multi 35 MODULE PROCEDURE lbc_lnk_2d_multi, lbc_lnk_3d_multi, lbc_lnk_4d_multi 38 MODULE PROCEDURE lbc_lnk_2d_multi_sp , lbc_lnk_3d_multi_sp, lbc_lnk_4d_multi_sp 39 MODULE PROCEDURE lbc_lnk_2d_multi_dp , lbc_lnk_3d_multi_dp, lbc_lnk_4d_multi_dp 36 40 END INTERFACE 37 41 ! 38 42 INTERFACE lbc_lnk_icb 39 MODULE PROCEDURE mpp_lnk_2d_icb 43 MODULE PROCEDURE mpp_lnk_2d_icb_dp, mpp_lnk_2d_icb_sp 44 END INTERFACE 45 46 INTERFACE mpp_nfd 47 MODULE PROCEDURE mpp_nfd_2d_sp , mpp_nfd_3d_sp , mpp_nfd_4d_sp 48 MODULE PROCEDURE mpp_nfd_2d_dp , mpp_nfd_3d_dp , mpp_nfd_4d_dp 49 MODULE PROCEDURE mpp_nfd_2d_ptr_sp, mpp_nfd_3d_ptr_sp, mpp_nfd_4d_ptr_sp 50 MODULE PROCEDURE mpp_nfd_2d_ptr_dp, mpp_nfd_3d_ptr_dp, mpp_nfd_4d_ptr_dp 51 40 52 END INTERFACE 41 53 … … 44 56 PUBLIC lbc_lnk_icb ! iceberg lateral boundary conditions 45 57 58 #if defined key_mpp_mpi 59 !$AGRIF_DO_NOT_TREAT 60 INCLUDE 'mpif.h' 61 !$AGRIF_END_DO_NOT_TREAT 62 #endif 63 64 INTEGER, PUBLIC, PARAMETER :: jpfillnothing = 1 65 INTEGER, PUBLIC, PARAMETER :: jpfillcst = 2 66 INTEGER, PUBLIC, PARAMETER :: jpfillcopy = 3 67 INTEGER, PUBLIC, PARAMETER :: jpfillperio = 4 68 INTEGER, PUBLIC, PARAMETER :: jpfillmpi = 5 69 70 !! * Substitutions 71 # include "do_loop_substitute.h90" 46 72 !!---------------------------------------------------------------------- 47 73 !! NEMO/OCE 4.0 , NEMO Consortium (2018) 48 !! $Id: lbclnk.F90 1 0425 2018-12-19 21:54:16Z smasson$74 !! $Id: lbclnk.F90 13226 2020-07-02 14:24:31Z orioltp $ 49 75 !! Software governed by the CeCILL license (see ./LICENSE) 50 76 !!---------------------------------------------------------------------- 51 77 CONTAINS 52 53 #else54 !!----------------------------------------------------------------------55 !! Default option shared memory computing56 !!----------------------------------------------------------------------57 !! routines setting the appropriate values58 !! on first and last row and column of the global domain59 !!----------------------------------------------------------------------60 !! lbc_lnk_sum_3d: compute sum over the halos on a 3D variable on ocean mesh61 !! lbc_lnk_sum_3d: compute sum over the halos on a 2D variable on ocean mesh62 !! lbc_lnk : generic interface for lbc_lnk_3d and lbc_lnk_2d63 !! lbc_lnk_3d : set the lateral boundary condition on a 3D variable on ocean mesh64 !! lbc_lnk_2d : set the lateral boundary condition on a 2D variable on ocean mesh65 !!----------------------------------------------------------------------66 USE dom_oce ! ocean space and time domain67 USE in_out_manager ! I/O manager68 USE lbcnfd ! north fold69 70 IMPLICIT NONE71 PRIVATE72 73 INTERFACE lbc_lnk74 MODULE PROCEDURE lbc_lnk_2d , lbc_lnk_3d , lbc_lnk_4d75 END INTERFACE76 INTERFACE lbc_lnk_ptr77 MODULE PROCEDURE lbc_lnk_2d_ptr , lbc_lnk_3d_ptr , lbc_lnk_4d_ptr78 END INTERFACE79 INTERFACE lbc_lnk_multi80 MODULE PROCEDURE lbc_lnk_2d_multi, lbc_lnk_3d_multi, lbc_lnk_4d_multi81 END INTERFACE82 !83 INTERFACE lbc_lnk_icb84 MODULE PROCEDURE lbc_lnk_2d_icb85 END INTERFACE86 87 PUBLIC lbc_lnk ! ocean/ice lateral boundary conditions88 PUBLIC lbc_lnk_multi ! modified ocean/ice lateral boundary conditions89 PUBLIC lbc_lnk_icb ! iceberg lateral boundary conditions90 91 !!----------------------------------------------------------------------92 !! NEMO/OCE 4.0 , NEMO Consortium (2018)93 !! $Id: lbclnk.F90 10425 2018-12-19 21:54:16Z smasson $94 !! Software governed by the CeCILL license (see ./LICENSE)95 !!----------------------------------------------------------------------96 CONTAINS97 98 !!======================================================================99 !! Default option 3D shared memory computing100 !!======================================================================101 !! routines setting land point, or east-west cyclic,102 !! or north-south cyclic, or north fold values103 !! on first and last row and column of the global domain104 !!----------------------------------------------------------------------105 106 !!----------------------------------------------------------------------107 !! *** routine lbc_lnk_(2,3,4)d ***108 !!109 !! * Argument : dummy argument use in lbc_lnk_... routines110 !! ptab : array or pointer of arrays on which the boundary condition is applied111 !! cd_nat : nature of array grid-points112 !! psgn : sign used across the north fold boundary113 !! kfld : optional, number of pt3d arrays114 !! cd_mpp : optional, fill the overlap area only115 !! pval : optional, background value (used at closed boundaries)116 !!----------------------------------------------------------------------117 !118 ! !== 2D array and array of 2D pointer ==!119 !120 # define DIM_2d121 # define ROUTINE_LNK lbc_lnk_2d122 # include "lbc_lnk_generic.h90"123 # undef ROUTINE_LNK124 # define MULTI125 # define ROUTINE_LNK lbc_lnk_2d_ptr126 # include "lbc_lnk_generic.h90"127 # undef ROUTINE_LNK128 # undef MULTI129 # undef DIM_2d130 !131 ! !== 3D array and array of 3D pointer ==!132 !133 # define DIM_3d134 # define ROUTINE_LNK lbc_lnk_3d135 # include "lbc_lnk_generic.h90"136 # undef ROUTINE_LNK137 # define MULTI138 # define ROUTINE_LNK lbc_lnk_3d_ptr139 # include "lbc_lnk_generic.h90"140 # undef ROUTINE_LNK141 # undef MULTI142 # undef DIM_3d143 !144 ! !== 4D array and array of 4D pointer ==!145 !146 # define DIM_4d147 # define ROUTINE_LNK lbc_lnk_4d148 # include "lbc_lnk_generic.h90"149 # undef ROUTINE_LNK150 # define MULTI151 # define ROUTINE_LNK lbc_lnk_4d_ptr152 # include "lbc_lnk_generic.h90"153 # undef ROUTINE_LNK154 # undef MULTI155 # undef DIM_4d156 157 !!======================================================================158 !! identical routines in both C1D and shared memory computing159 !!======================================================================160 161 !!----------------------------------------------------------------------162 163 !!gm This routine should be removed with an optional halos size added in argument of generic routines164 165 SUBROUTINE lbc_lnk_2d_icb( cdname, pt2d, cd_type, psgn, ki, kj )166 !!----------------------------------------------------------------------167 CHARACTER(len=*) , INTENT(in ) :: cdname ! name of the calling subroutine168 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pt2d ! 2D array on which the lbc is applied169 CHARACTER(len=1) , INTENT(in ) :: cd_type ! nature of pt3d grid-points170 REAL(wp) , INTENT(in ) :: psgn ! sign used across north fold171 INTEGER , INTENT(in ) :: ki, kj ! sizes of extra halo (not needed in non-mpp)172 !!----------------------------------------------------------------------173 CALL lbc_lnk_2d( cdname, pt2d, cd_type, psgn )174 END SUBROUTINE lbc_lnk_2d_icb175 !!gm end176 177 #endif178 179 !!======================================================================180 !! identical routines in both distributed and shared memory computing181 !!======================================================================182 78 183 79 !!---------------------------------------------------------------------- … … 202 98 !!---------------------------------------------------------------------- 203 99 204 # define DIM_2d 205 # define ROUTINE_MULTI lbc_lnk_2d_multi 206 # define ROUTINE_LOAD load_ptr_2d 207 # include "lbc_lnk_multi_generic.h90" 208 # undef ROUTINE_MULTI 209 # undef ROUTINE_LOAD 210 # undef DIM_2d 211 212 213 # define DIM_3d 214 # define ROUTINE_MULTI lbc_lnk_3d_multi 215 # define ROUTINE_LOAD load_ptr_3d 216 # include "lbc_lnk_multi_generic.h90" 217 # undef ROUTINE_MULTI 218 # undef ROUTINE_LOAD 219 # undef DIM_3d 220 221 222 # define DIM_4d 223 # define ROUTINE_MULTI lbc_lnk_4d_multi 224 # define ROUTINE_LOAD load_ptr_4d 225 # include "lbc_lnk_multi_generic.h90" 226 # undef ROUTINE_MULTI 227 # undef ROUTINE_LOAD 100 !! 101 !! ---- SINGLE PRECISION VERSIONS 102 !! 103 # define SINGLE_PRECISION 104 # define DIM_2d 105 # define ROUTINE_LOAD load_ptr_2d_sp 106 # define ROUTINE_MULTI lbc_lnk_2d_multi_sp 107 # include "lbc_lnk_multi_generic.h90" 108 # undef ROUTINE_MULTI 109 # undef ROUTINE_LOAD 110 # undef DIM_2d 111 112 # define DIM_3d 113 # define ROUTINE_LOAD load_ptr_3d_sp 114 # define ROUTINE_MULTI lbc_lnk_3d_multi_sp 115 # include "lbc_lnk_multi_generic.h90" 116 # undef ROUTINE_MULTI 117 # undef ROUTINE_LOAD 118 # undef DIM_3d 119 120 # define DIM_4d 121 # define ROUTINE_LOAD load_ptr_4d_sp 122 # define ROUTINE_MULTI lbc_lnk_4d_multi_sp 123 # include "lbc_lnk_multi_generic.h90" 124 # undef ROUTINE_MULTI 125 # undef ROUTINE_LOAD 126 # undef DIM_4d 127 # undef SINGLE_PRECISION 128 !! 129 !! ---- DOUBLE PRECISION VERSIONS 130 !! 131 132 # define DIM_2d 133 # define ROUTINE_LOAD load_ptr_2d_dp 134 # define ROUTINE_MULTI lbc_lnk_2d_multi_dp 135 # include "lbc_lnk_multi_generic.h90" 136 # undef ROUTINE_MULTI 137 # undef ROUTINE_LOAD 138 # undef DIM_2d 139 140 # define DIM_3d 141 # define ROUTINE_LOAD load_ptr_3d_dp 142 # define ROUTINE_MULTI lbc_lnk_3d_multi_dp 143 # include "lbc_lnk_multi_generic.h90" 144 # undef ROUTINE_MULTI 145 # undef ROUTINE_LOAD 146 # undef DIM_3d 147 148 # define DIM_4d 149 # define ROUTINE_LOAD load_ptr_4d_dp 150 # define ROUTINE_MULTI lbc_lnk_4d_multi_dp 151 # include "lbc_lnk_multi_generic.h90" 152 # undef ROUTINE_MULTI 153 # undef ROUTINE_LOAD 154 # undef DIM_4d 155 156 !!---------------------------------------------------------------------- 157 !! *** routine mpp_lnk_(2,3,4)d *** 158 !! 159 !! * Argument : dummy argument use in mpp_lnk_... routines 160 !! ptab : array or pointer of arrays on which the boundary condition is applied 161 !! cd_nat : nature of array grid-points 162 !! psgn : sign used across the north fold boundary 163 !! kfld : optional, number of pt3d arrays 164 !! kfillmode : optional, method to be use to fill the halos (see jpfill* variables) 165 !! pfillval : optional, background value (used with jpfillcopy) 166 !!---------------------------------------------------------------------- 167 ! 168 ! !== 2D array and array of 2D pointer ==! 169 ! 170 !! 171 !! ---- SINGLE PRECISION VERSIONS 172 !! 173 # define SINGLE_PRECISION 174 # define DIM_2d 175 # define ROUTINE_LNK mpp_lnk_2d_sp 176 # include "mpp_lnk_generic.h90" 177 # undef ROUTINE_LNK 178 # define MULTI 179 # define ROUTINE_LNK mpp_lnk_2d_ptr_sp 180 # include "mpp_lnk_generic.h90" 181 # undef ROUTINE_LNK 182 # undef MULTI 183 # undef DIM_2d 184 ! 185 ! !== 3D array and array of 3D pointer ==! 186 ! 187 # define DIM_3d 188 # define ROUTINE_LNK mpp_lnk_3d_sp 189 # include "mpp_lnk_generic.h90" 190 # undef ROUTINE_LNK 191 # define MULTI 192 # define ROUTINE_LNK mpp_lnk_3d_ptr_sp 193 # include "mpp_lnk_generic.h90" 194 # undef ROUTINE_LNK 195 # undef MULTI 196 # undef DIM_3d 197 ! 198 ! !== 4D array and array of 4D pointer ==! 199 ! 200 # define DIM_4d 201 # define ROUTINE_LNK mpp_lnk_4d_sp 202 # include "mpp_lnk_generic.h90" 203 # undef ROUTINE_LNK 204 # define MULTI 205 # define ROUTINE_LNK mpp_lnk_4d_ptr_sp 206 # include "mpp_lnk_generic.h90" 207 # undef ROUTINE_LNK 208 # undef MULTI 209 # undef DIM_4d 210 # undef SINGLE_PRECISION 211 212 !! 213 !! ---- DOUBLE PRECISION VERSIONS 214 !! 215 # define DIM_2d 216 # define ROUTINE_LNK mpp_lnk_2d_dp 217 # include "mpp_lnk_generic.h90" 218 # undef ROUTINE_LNK 219 # define MULTI 220 # define ROUTINE_LNK mpp_lnk_2d_ptr_dp 221 # include "mpp_lnk_generic.h90" 222 # undef ROUTINE_LNK 223 # undef MULTI 224 # undef DIM_2d 225 ! 226 ! !== 3D array and array of 3D pointer ==! 227 ! 228 # define DIM_3d 229 # define ROUTINE_LNK mpp_lnk_3d_dp 230 # include "mpp_lnk_generic.h90" 231 # undef ROUTINE_LNK 232 # define MULTI 233 # define ROUTINE_LNK mpp_lnk_3d_ptr_dp 234 # include "mpp_lnk_generic.h90" 235 # undef ROUTINE_LNK 236 # undef MULTI 237 # undef DIM_3d 238 ! 239 ! !== 4D array and array of 4D pointer ==! 240 ! 241 # define DIM_4d 242 # define ROUTINE_LNK mpp_lnk_4d_dp 243 # include "mpp_lnk_generic.h90" 244 # undef ROUTINE_LNK 245 # define MULTI 246 # define ROUTINE_LNK mpp_lnk_4d_ptr_dp 247 # include "mpp_lnk_generic.h90" 248 # undef ROUTINE_LNK 249 # undef MULTI 250 # undef DIM_4d 251 252 253 !!---------------------------------------------------------------------- 254 !! *** routine mpp_nfd_(2,3,4)d *** 255 !! 256 !! * Argument : dummy argument use in mpp_nfd_... routines 257 !! ptab : array or pointer of arrays on which the boundary condition is applied 258 !! cd_nat : nature of array grid-points 259 !! psgn : sign used across the north fold boundary 260 !! kfld : optional, number of pt3d arrays 261 !! kfillmode : optional, method to be use to fill the halos (see jpfill* variables) 262 !! pfillval : optional, background value (used with jpfillcopy) 263 !!---------------------------------------------------------------------- 264 ! 265 ! !== 2D array and array of 2D pointer ==! 266 ! 267 !! 268 !! ---- SINGLE PRECISION VERSIONS 269 !! 270 # define SINGLE_PRECISION 271 # define DIM_2d 272 # define ROUTINE_NFD mpp_nfd_2d_sp 273 # include "mpp_nfd_generic.h90" 274 # undef ROUTINE_NFD 275 # define MULTI 276 # define ROUTINE_NFD mpp_nfd_2d_ptr_sp 277 # include "mpp_nfd_generic.h90" 278 # undef ROUTINE_NFD 279 # undef MULTI 280 # undef DIM_2d 281 ! 282 ! !== 3D array and array of 3D pointer ==! 283 ! 284 # define DIM_3d 285 # define ROUTINE_NFD mpp_nfd_3d_sp 286 # include "mpp_nfd_generic.h90" 287 # undef ROUTINE_NFD 288 # define MULTI 289 # define ROUTINE_NFD mpp_nfd_3d_ptr_sp 290 # include "mpp_nfd_generic.h90" 291 # undef ROUTINE_NFD 292 # undef MULTI 293 # undef DIM_3d 294 ! 295 ! !== 4D array and array of 4D pointer ==! 296 ! 297 # define DIM_4d 298 # define ROUTINE_NFD mpp_nfd_4d_sp 299 # include "mpp_nfd_generic.h90" 300 # undef ROUTINE_NFD 301 # define MULTI 302 # define ROUTINE_NFD mpp_nfd_4d_ptr_sp 303 # include "mpp_nfd_generic.h90" 304 # undef ROUTINE_NFD 305 # undef MULTI 306 # undef DIM_4d 307 # undef SINGLE_PRECISION 308 309 !! 310 !! ---- DOUBLE PRECISION VERSIONS 311 !! 312 # define DIM_2d 313 # define ROUTINE_NFD mpp_nfd_2d_dp 314 # include "mpp_nfd_generic.h90" 315 # undef ROUTINE_NFD 316 # define MULTI 317 # define ROUTINE_NFD mpp_nfd_2d_ptr_dp 318 # include "mpp_nfd_generic.h90" 319 # undef ROUTINE_NFD 320 # undef MULTI 321 # undef DIM_2d 322 ! 323 ! !== 3D array and array of 3D pointer ==! 324 ! 325 # define DIM_3d 326 # define ROUTINE_NFD mpp_nfd_3d_dp 327 # include "mpp_nfd_generic.h90" 328 # undef ROUTINE_NFD 329 # define MULTI 330 # define ROUTINE_NFD mpp_nfd_3d_ptr_dp 331 # include "mpp_nfd_generic.h90" 332 # undef ROUTINE_NFD 333 # undef MULTI 334 # undef DIM_3d 335 ! 336 ! !== 4D array and array of 4D pointer ==! 337 ! 338 # define DIM_4d 339 # define ROUTINE_NFD mpp_nfd_4d_dp 340 # include "mpp_nfd_generic.h90" 341 # undef ROUTINE_NFD 342 # define MULTI 343 # define ROUTINE_NFD mpp_nfd_4d_ptr_dp 344 # include "mpp_nfd_generic.h90" 345 # undef ROUTINE_NFD 346 # undef MULTI 228 347 # undef DIM_4d 229 348 230 349 !!====================================================================== 350 351 352 !!====================================================================== 353 !!--------------------------------------------------------------------- 354 !! *** routine mpp_lbc_north_icb *** 355 !! 356 !! ** Purpose : Ensure proper north fold horizontal bondary condition 357 !! in mpp configuration in case of jpn1 > 1 and for 2d 358 !! array with outer extra halo 359 !! 360 !! ** Method : North fold condition and mpp with more than one proc 361 !! in i-direction require a specific treatment. We gather 362 !! the 4+kextj northern lines of the global domain on 1 363 !! processor and apply lbc north-fold on this sub array. 364 !! Then we scatter the north fold array back to the processors. 365 !! This routine accounts for an extra halo with icebergs 366 !! and assumes ghost rows and columns have been suppressed. 367 !! 368 !!---------------------------------------------------------------------- 369 # define SINGLE_PRECISION 370 # define ROUTINE_LNK mpp_lbc_north_icb_sp 371 # include "mpp_lbc_north_icb_generic.h90" 372 # undef ROUTINE_LNK 373 # undef SINGLE_PRECISION 374 # define ROUTINE_LNK mpp_lbc_north_icb_dp 375 # include "mpp_lbc_north_icb_generic.h90" 376 # undef ROUTINE_LNK 377 378 379 !!---------------------------------------------------------------------- 380 !! *** routine mpp_lnk_2d_icb *** 381 !! 382 !! ** Purpose : Message passing management for 2d array (with extra halo for icebergs) 383 !! This routine receives a (1-kexti:jpi+kexti,1-kexti:jpj+kextj) 384 !! array (usually (0:jpi+1, 0:jpj+1)) from lbc_lnk_icb calls. 385 !! 386 !! ** Method : Use mppsend and mpprecv function for passing mask 387 !! between processors following neighboring subdomains. 388 !! domain parameters 389 !! jpi : first dimension of the local subdomain 390 !! jpj : second dimension of the local subdomain 391 !! kexti : number of columns for extra outer halo 392 !! kextj : number of rows for extra outer halo 393 !! nbondi : mark for "east-west local boundary" 394 !! nbondj : mark for "north-south local boundary" 395 !! noea : number for local neighboring processors 396 !! nowe : number for local neighboring processors 397 !! noso : number for local neighboring processors 398 !! nono : number for local neighboring processors 399 !!---------------------------------------------------------------------- 400 401 # define SINGLE_PRECISION 402 # define ROUTINE_LNK mpp_lnk_2d_icb_sp 403 # include "mpp_lnk_icb_generic.h90" 404 # undef ROUTINE_LNK 405 # undef SINGLE_PRECISION 406 # define ROUTINE_LNK mpp_lnk_2d_icb_dp 407 # include "mpp_lnk_icb_generic.h90" 408 # undef ROUTINE_LNK 409 231 410 END MODULE lbclnk 232 411
Note: See TracChangeset
for help on using the changeset viewer.