/[MITgcm]/MITgcm/eesupp/src/eeboot.F
ViewVC logotype

Contents of /MITgcm/eesupp/src/eeboot.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.8 - (show annotations) (download)
Mon Mar 27 22:25:40 2000 UTC (24 years, 1 month ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint28, checkpoint29, checkpoint27, branch-atmos-merge-freeze, branch-atmos-merge-start, checkpoint26, branch-atmos-merge-shapiro, checkpoint33, checkpoint32, checkpoint31, checkpoint30, checkpoint34, branch-atmos-merge-zonalfilt, branch-atmos-merge-phase5, branch-atmos-merge-phase4, branch-atmos-merge-phase7, branch-atmos-merge-phase6, branch-atmos-merge-phase1, branch-atmos-merge-phase3, branch-atmos-merge-phase2
Branch point for: branch-atmos-merge
Changes since 1.7: +1 -3 lines
Removed unused variables and fixed some unitialized variables.

1 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/eeboot.F,v 1.7 2000/03/15 16:00:52 adcroft Exp $
2
3 #include "CPP_EEOPTIONS.h"
4
5 CStartOfInterface
6 SUBROUTINE EEBOOT
7 C /==========================================================\
8 C | SUBROUTINE EEBOOT |
9 C | o Set up execution "environment", particularly perform |
10 C | steps to initialise parallel processing. |
11 C |==========================================================|
12 C | Note: This routine can also be compiled with CPP |
13 C | directives set so that no multi-processing is initialised|
14 C | This is OK and should work fine. |
15 C \==========================================================/
16 IMPLICIT NONE
17
18 C == Global variables ==
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "EESUPPORT.h"
22 CEndOfInterface
23
24 C == Local variables ==
25 C I - Loop counter
26 INTEGER I
27
28 C-- Set error reporting flags and I/O streams
29 C fatalError is a flag used to indicate that the program
30 C ended abnormally.
31 C errorMessageUnit is the Fortran unit number used for
32 C writing error messages.
33 C standardMessageUnit is the Fortran unit number used for
34 C writing textual, informational output.
35 C eeBootError is a flag used to indicate an error in the
36 C "execution environment" startup pahse as opposed
37 C to the simulation pahse of the execution.
38 C eeEndError is used to indicate an "execution environment" shutdown
39 C error.
40 C thError flag used to allow a thread to report an error.
41 C This is only really used during the startup process,
42 C although it could be used elsewhere.
43 C allMyEdgesAreSharedMemory flag which says for a particular
44 C set of blocks the only form of communication
45 C it does is using shared memory.
46 C threadIsRunning used during startup to enable check that all
47 C the threads are running.
48 fatalError = .FALSE.
49 errorMessageUnit = 0
50 standardMessageUnit = 6
51 eeBootError = .FALSE.
52 eeEndError = .FALSE.
53 DO I=1, MAX_NO_THREADS
54 thError(I) = .FALSE.
55 allMyEdgesAreSharedMemory(I) = .TRUE.
56 threadIsRunning(I) = .FALSE.
57 threadIsComplete(I) = .FALSE.
58 ioErrorCount(I) = 0
59 ENDDO
60 scrUnit1 = 11
61 scrUnit2 = 12
62 eeDataUnit = 13
63 modelDataUnit = 14
64 C Annoyingly there is no universal way to have the usingMPI
65 C parameter work as one might expect. This is because, on some
66 C systems I/O does not work until MPI_Init has been called. The
67 C solution for now is that the parameter below may need to be changed
68 C manually!
69 #ifdef ALLOW_USE_MPI
70 usingMPI = .TRUE.
71 #endif
72
73 C-- Start minimal environment so that we can do I/O
74 C-- to report errors.
75 C Notes
76 C =====
77 C o Here we start MPI and setup the I/O environment
78 C thatis needed for error reporting.
79 C o Under MPI I/O support is very variable until
80 C MPI is started. This makes is hard to trap the case
81 C where mpirun is used to start a non-MPI run or
82 C we try to start MPI when mpirun was not used.
83 C after it is started.
84 CALL EEBOOT_MINIMAL
85 IF ( eeBootError ) GOTO 999
86
87 C-- Now we can write a startup message
88 CALL EEINTRO_MSG
89
90 C-- Initialise parameters associated with execution environment.
91 CALL EESET_PARMS
92 IF ( eeBootError ) GOTO 999
93
94 C-- Write summary of execution environment configuration for this run
95 CALL EEWRITE_EEENV
96
97 C-- Now do the rest of the multi-process startup.
98 C o Here we map processes to the model grid.
99 C o Print tables of process-grid mappings.
100 C o Do other miscellaneous multi-processing set up steps. For
101 C example under MPI we create datatypes for communication
102 C of array edges.
103 CALL INI_PROCS
104 #ifdef LETS_MAKE_JAM
105 CALL INI_JAM
106 #endif
107 IF ( eeBootError ) GOTO 999
108
109 C-- Initialise variables to support "nThreads" of computation.
110 C o Note the program is still running with a single thread of
111 C execution at this stage.
112 CALL INI_THREADING_ENVIRONMENT
113 IF ( eeBootError ) GOTO 999
114
115 #ifdef USE_DFILE
116 C-- Initiialise the multi-process IO package
117 CALL DFILE_INIT
118 #endif
119
120 999 CONTINUE
121 RETURN
122 END

  ViewVC Help
Powered by ViewVC 1.1.22