source: issm/trunk/test/MITgcm/code/CPP_EEOPTIONS.h@ 22758

Last change on this file since 22758 was 22758, checked in by Mathieu Morlighem, 7 years ago

merged trunk-jpl and trunk for revision 22757

File size: 7.0 KB
Line 
1C $Header: /u/gcmpack/MITgcm/eesupp/inc/CPP_EEOPTIONS.h,v 1.43 2017/09/14 19:47:35 jmc Exp $
2C $Name: $
3
4CBOP
5C !ROUTINE: CPP_EEOPTIONS.h
6C !INTERFACE:
7C include "CPP_EEOPTIONS.h"
8C
9C !DESCRIPTION:
10C *==========================================================*
11C | CPP\_EEOPTIONS.h |
12C *==========================================================*
13C | C preprocessor "execution environment" supporting |
14C | flags. Use this file to set flags controlling the |
15C | execution environment in which a model runs - as opposed |
16C | to the dynamical problem the model solves. |
17C | Note: Many options are implemented with both compile time|
18C | and run-time switches. This allows options to be |
19C | removed altogether, made optional at run-time or |
20C | to be permanently enabled. This convention helps |
21C | with the data-dependence analysis performed by the |
22C | adjoint model compiler. This data dependency |
23C | analysis can be upset by runtime switches that it |
24C | is unable to recoginise as being fixed for the |
25C | duration of an integration. |
26C | A reasonable way to use these flags is to |
27C | set all options as selectable at runtime but then |
28C | once an experimental configuration has been |
29C | identified, rebuild the code with the appropriate |
30C | options set at compile time. |
31C *==========================================================*
32CEOP
33
34#ifndef _CPP_EEOPTIONS_H_
35#define _CPP_EEOPTIONS_H_
36
37C In general the following convention applies:
38C ALLOW - indicates an feature will be included but it may
39C CAN have a run-time flag to allow it to be switched
40C on and off.
41C If ALLOW or CAN directives are "undef'd" this generally
42C means that the feature will not be available i.e. it
43C will not be included in the compiled code and so no
44C run-time option to use the feature will be available.
45C
46C ALWAYS - indicates the choice will be fixed at compile time
47C so no run-time option will be present
48
49C=== Macro related options ===
50C-- Control storage of floating point operands
51C On many systems it improves performance only to use
52C 8-byte precision for time stepped variables.
53C Constant in time terms ( geometric factors etc.. )
54C can use 4-byte precision, reducing memory utilisation and
55C boosting performance because of a smaller working set size.
56C However, on vector CRAY systems this degrades performance.
57C Enable to switch REAL4_IS_SLOW from genmake2 (with LET_RS_BE_REAL4):
58#ifdef LET_RS_BE_REAL4
59#undef REAL4_IS_SLOW
60#else /* LET_RS_BE_REAL4 */
61#define REAL4_IS_SLOW
62#endif /* LET_RS_BE_REAL4 */
63
64C-- Control use of "double" precision constants.
65C Use D0 where it means REAL*8 but not where it means REAL*16
66#define D0 d0
67
68C-- Enable some old macro conventions for backward compatibility
69#undef USE_OLD_MACROS_R4R8toRSRL
70
71C=== IO related options ===
72C-- Flag used to indicate whether Fortran formatted write
73C and read are threadsafe. On SGI the routines can be thread
74C safe, on Sun it is not possible - if you are unsure then
75C undef this option.
76#undef FMTFTN_IO_THREAD_SAFE
77
78C-- Flag used to indicate whether Binary write to Local file (i.e.,
79C a different file for each tile) and read are thread-safe.
80#undef LOCBIN_IO_THREAD_SAFE
81
82C-- Flag to turn off the writing of error message to ioUnit zero
83#undef DISABLE_WRITE_TO_UNIT_ZERO
84
85C-- Alternative formulation of BYTESWAP, faster than
86C compiler flag -byteswapio on the Altix.
87#undef FAST_BYTESWAP
88
89C-- Flag to turn on old default of opening scratch files with the
90C STATUS='SCRATCH' option. This method, while perfectly FORTRAN-standard,
91C caused filename conflicts on some multi-node/multi-processor platforms
92C in the past and has been replace by something (hopefully) more robust.
93#undef USE_FORTRAN_SCRATCH_FILES
94
95C-- Flag defined for eeboot_minimal.F, eeset_parms.F and open_copy_data_file.F
96C to write STDOUT, STDERR and scratch files from process 0 only.
97C WARNING: to use only when absolutely confident that the setup is working
98C since any message (error/warning/print) from any proc <> 0 will be lost.
99#undef SINGLE_DISK_IO
100
101C=== MPI, EXCH and GLOBAL_SUM related options ===
102C-- Flag turns off MPI_SEND ready_to_receive polling in the
103C gather_* subroutines to speed up integrations.
104#undef DISABLE_MPI_READY_TO_RECEIVE
105
106C-- Control MPI based parallel processing
107CXXX We no longer select the use of MPI via this file (CPP_EEOPTIONS.h)
108CXXX To use MPI, use an appropriate genmake2 options file or use
109CXXX genmake2 -mpi .
110CXXX #undef ALLOW_USE_MPI
111
112C-- Control use of communication that might overlap computation.
113C Under MPI selects/deselects "non-blocking" sends and receives.
114#define ALLOW_ASYNC_COMMUNICATION
115#undef ALLOW_ASYNC_COMMUNICATION
116#undef ALWAYS_USE_ASYNC_COMMUNICATION
117C-- Control use of communication that is atomic to computation.
118C Under MPI selects/deselects "blocking" sends and receives.
119#define ALLOW_SYNC_COMMUNICATION
120#undef ALWAYS_USE_SYNC_COMMUNICATION
121
122C-- Control XY periodicity in processor to grid mappings
123C Note: Model code does not need to know whether a domain is
124C periodic because it has overlap regions for every box.
125C Model assume that these values have been
126C filled in some way.
127#undef ALWAYS_PREVENT_X_PERIODICITY
128#undef ALWAYS_PREVENT_Y_PERIODICITY
129#define CAN_PREVENT_X_PERIODICITY
130#define CAN_PREVENT_Y_PERIODICITY
131
132C-- disconnect tiles (no exchange between tiles, just fill-in edges
133C assuming locally periodic subdomain)
134#undef DISCONNECTED_TILES
135
136C-- Always cumulate tile local-sum in the same order by applying MPI allreduce
137C to array of tiles ; can get slower with large number of tiles (big set-up)
138#define GLOBAL_SUM_ORDER_TILES
139
140C-- Alternative way of doing global sum without MPI allreduce call
141C but instead, explicit MPI send & recv calls. Expected to be slower.
142#undef GLOBAL_SUM_SEND_RECV
143
144C-- Alternative way of doing global sum on a single CPU
145C to eliminate tiling-dependent roundoff errors. Note: This is slow.
146#undef CG2D_SINGLECPU_SUM
147
148C=== Other options (to add/remove pieces of code) ===
149C-- Flag to turn on checking for errors from all threads and procs
150C (calling S/R STOP_IF_ERROR) before stopping.
151#define USE_ERROR_STOP
152
153C-- Control use of communication with other component:
154C allow to import and export from/to Coupler interface.
155#undef COMPONENT_MODULE
156
157C-- Options used to couple MITgcm and ISSM
158C Eventually this option can probably be merged with COMPONENT_MODULE
159#define ALLOW_CPL_ISSM
160
161C-- Activate some pieces of code for coupling to GEOS AGCM
162#undef HACK_FOR_GMAO_CPL
163
164#endif /* _CPP_EEOPTIONS_H_ */
165
166#include "CPP_EEMACROS.h"
167
Note: See TracBrowser for help on using the repository browser.