source: CPL/oasis3/trunk/src/mod/oasis3/src/chkpar.f @ 1677

Last change on this file since 1677 was 1677, checked in by aclsce, 12 years ago

Imported oasis3 (tag ipslcm5a) from cvs server to svn server (igcmg project).

File size: 5.5 KB
Line 
1      SUBROUTINE chkpar
2C****
3C               *****************************
4C               * OASIS ROUTINE  -  LEVEL 0 *
5C               * -------------     ------- *
6C               *****************************
7C
8C**** *chkpar*  - Parameter checking
9C
10C     Purpose:
11C     -------
12C     Checks option compatibility between oasis and remote models
13C     as well as some basic dimension checks
14C
15C**   Interface:
16C     ---------
17C       *CALL*  *chkpar*
18C
19C     Input:
20C     -----
21C     None
22C
23C     Output:
24C     ------
25C     None
26C
27C     Workspace:
28C     ---------
29C
30C     Externals:
31C     ---------
32C     imaxim
33C
34C     Reference:
35C     ---------
36C     See OASIS manual (1995) 
37C
38C     History:
39C     -------
40C       Version   Programmer     Date      Description
41C       -------   ----------     ----      ----------- 
42C       2.0       L. Terray      95/10/01  created
43C       2.2       L. Terray      97/11/13  added: check nitfn if cchan
44C                                                 equals NONE
45C       2.3       S. Valcke      99/04/30  added: printing levels
46C       2.3       S. Valcke      99/10/12  check if nninnfl and nninnflg
47C                                          are different
48C       2.4       S. Valcke      2K/02/03  check CLIM_MaxPOrt and jpfield
49C       2.4       S. Valcke      2K/02/03  check CLIM_MaxSegment and jpparal
50C
51C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52C
53C* --------------- Include files and use of modules---------------------------
54C
55      USE mod_kinds_oasis
56      USE mod_parameter
57      USE mod_string
58      USE mod_extrapol
59      USE mod_experiment
60      USE mod_timestep
61      USE mod_unit
62      USE mod_hardware
63      USE mod_printing
64C
65C* ---------------------------- Local declarations ----------------------
66C
67      INTEGER (kind=ip_intwp_p), DIMENSION(:), ALLOCATABLE :: itime, 
68     $    iexch
69C
70C* ---------------------------- Poema verses ----------------------------
71C
72C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
73C
74C*    1. Allocations and Initializations
75C        -------------------------------
76C
77      IF (nlogprt .GE. 1) THEN
78          WRITE (UNIT = nulou,FMT = *) ' '
79          WRITE (UNIT = nulou,FMT = *) ' '
80          WRITE (UNIT = nulou,FMT = *) 
81     $    '           ROUTINE chkpar  -  Level 0'
82          WRITE (UNIT = nulou,FMT = *) 
83     $    '           **************     *******'
84          WRITE (UNIT = nulou,FMT = *) ' '
85          WRITE (UNIT = nulou,FMT = *) ' control of run time options'
86          WRITE (UNIT = nulou,FMT = *) ' '
87          WRITE (UNIT = nulou,FMT = *) ' '
88          WRITE (UNIT = nulou,FMT = *) ' '
89      ENDIF
90C
91C* In the CLIM CASE, mstep, mfcpl and mdt are not defined anymore in inicmc.f.
92C
93      IF (cchan.ne.'MPI1'.and.cchan.ne.'MPI2') then
94C
95C* Array allocation
96C
97          ALLOCATE (itime(ig_nmodel))
98          ALLOCATE (iexch(ig_nmodel))
99C
100C* Initialization of remote models time variables.
101C
102          DO 110 jm = 1, ig_nmodel
103            itime(jm) = mstep(jm) * mdt(jm)
104            iexch(jm) = mfcpl(jm) * mdt(jm)
105 110      CONTINUE
106
107C
108C*    2. Basic checks
109C        ------------
110C
111C*    3. Time compatibility checks
112C        -------------------------
113C
114          DO 310 jm = 1, ig_nmodel
115            WRITE (UNIT = nulou,FMT = *)'itime ',itime(jm)
116            WRITE (UNIT = nulou,FMT = *)'ntime ',ntime
117            IF (itime(jm) .NE. ntime) THEN
118                WRITE (UNIT = nulou,FMT = *) '        ***WARNING***'
119                WRITE (UNIT = nulou,FMT = *) 
120     $              ' ===>>> : total runtime for model',jm
121                WRITE (UNIT = nulou,FMT = *)
122     $              '          incompatible with coupler total time '
123                WRITE (UNIT = nulou,FMT = *) 
124     $              ' ======         =======              '
125                WRITE (UNIT = nulou,FMT = *) ' '
126                WRITE (UNIT = nulou,FMT = *) 
127     $              ' The current simulation uses asynchroneous
128     $              coupling'
129                WRITE (UNIT = nulou,FMT = *) 
130     $              '                             -------------'
131                WRITE (UNIT = nulou,FMT = *) ' '
132            ENDIF
133C
134C* The exchange frequency data sent from remote models is the
135C  smallest frequency used in a given model. This is a crude 
136C  check of the compatibility of coupling options.
137C
138            WRITE (UNIT = nulou,FMT = *)'iexch ',iexch(jm)
139            WRITE (UNIT = nulou,FMT = *)'nstep ',nstep
140            IF (MOD(iexch(jm),nstep) .NE. 0) THEN
141                WRITE (UNIT = nulou,FMT = *) '        ***WARNING***'
142                WRITE (UNIT = nulou,FMT = *) 
143     $              ' ===>>> : exchange time incompatible with model',
144     $              jm
145                WRITE (UNIT = nulou,FMT = *) 
146     $              ' ======            =====          '
147                WRITE (UNIT = nulou,FMT = *) ' '
148                WRITE (UNIT = nulou,FMT = *) 
149     $              ' We STOP        !!! rerun with new  parameters'
150                WRITE (UNIT = nulou,FMT = *) 
151     $              '                               ---------------'
152                WRITE (UNIT = nulou,FMT = *) ' '
153                CALL HALTE ('STOP in chkpar')
154            ENDIF
155 310      CONTINUE
156          DEALLOCATE (itime)
157          DEALLOCATE (iexch)
158      ENDIF
159C
160C
161C*    4. End of routine
162C        --------------
163C
164      IF (nlogprt .GE. 1) THEN
165          WRITE (UNIT = nulou,FMT = *) ' '
166          WRITE (UNIT = nulou,FMT = *) 
167     $    '          ---------- End of routine chkpar --------'
168          CALL FLUSH (nulou)
169      ENDIF
170      RETURN
171      END
172
173
Note: See TracBrowser for help on using the repository browser.