File indexing completed on 2018-03-02 18:41:36 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
2fa42a6013 Alis*0001 #include "KPP_OPTIONS.h"
141e734c73 Jean*0002 #ifdef ALLOW_GMREDI
0003 # include "GMREDI_OPTIONS.h"
0004 #endif
3b6d2d02e0 Mart*0005 #undef MULTIPLE_RECORD_KPP_STATE_FILES
8b6db0f7a7 Jean*0006
3b6d2d02e0 Mart*0007
cd56dd0428 Jean*0008
c9c3d7103f Ed H*0009
3b6d2d02e0 Mart*0010
cd56dd0428 Jean*0011 SUBROUTINE KPP_OUTPUT( myTime, myIter, myThid )
c9c3d7103f Ed H*0012
cd56dd0428 Jean*0013
0014
c9c3d7103f Ed H*0015
0016
0017
0018
cd56dd0428 Jean*0019
c9c3d7103f Ed H*0020
0021
0022
0023
0024
0025
cd56dd0428 Jean*0026
c9c3d7103f Ed H*0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
3b6d2d02e0 Mart*0041
ef080e1d37 Dimi*0042
2fa42a6013 Alis*0043 IMPLICIT NONE
0044 #include "SIZE.h"
0045 #include "EEPARAMS.h"
0046 #include "PARAMS.h"
0047 #include "KPP.h"
0048 #include "KPP_PARAMS.h"
cd56dd0428 Jean*0049 #include "KPP_TAVE.h"
141e734c73 Jean*0050 #ifdef ALLOW_GMREDI
0051 # include "GMREDI.h"
0052 #endif
0053 #ifdef ALLOW_MNC
0054 # include "MNC_PARAMS.h"
0055 #endif
02f4da180f Oliv*0056 #ifdef ALLOW_OFFLINE
0057 # include "OFFLINE_SWITCH.h"
0058 #endif
2fa42a6013 Alis*0059
3b6d2d02e0 Mart*0060
cd56dd0428 Jean*0061
0062
0063
fc64655a31 Dimi*0064 _RL myTime
2fa42a6013 Alis*0065 INTEGER myIter
0066 INTEGER myThid
0067
0068 #ifdef ALLOW_KPP
0069
8b6db0f7a7 Jean*0070
94a46dfe0d Jean*0071 LOGICAL DIFFERENT_MULTIPLE
0072 EXTERNAL DIFFERENT_MULTIPLE
141e734c73 Jean*0073 #ifdef ALLOW_DIAGNOSTICS
0074 LOGICAL DIAGNOSTICS_IS_ON
0075 EXTERNAL DIAGNOSTICS_IS_ON
0076 #endif
8b6db0f7a7 Jean*0077
0078
141e734c73 Jean*0079
0080 INTEGER kpp_drctrec
0081 COMMON / KPP_RECORDNUM1 / kpp_drctrec
0082
df5a9764ba Jean*0083 CHARACTER*(10) suff
141e734c73 Jean*0084 #if (defined ALLOW_TIMEAVE) || (defined ALLOW_DIAGNOSTICS)
8b6db0f7a7 Jean*0085 INTEGER bi, bj
141e734c73 Jean*0086 INTEGER i, j, k
0087 _RL tmpFac
0088 #endif
0089 #ifdef ALLOW_TIMEAVE
956c0a5824 Patr*0090 _RL DDTT
fc64655a31 Dimi*0091 LOGICAL dumpFiles
8b6db0f7a7 Jean*0092 #endif
141e734c73 Jean*0093 #ifdef ALLOW_DIAGNOSTICS
0094 _RL tmpLoc(1:sNx,1:sNy,Nr)
0095 #endif
8b6db0f7a7 Jean*0096 #ifdef ALLOW_MNC
b22b541fe9 Ed H*0097 CHARACTER*(1) pf
8b6db0f7a7 Jean*0098 #endif
ef080e1d37 Dimi*0099
2fa42a6013 Alis*0100
8b6db0f7a7 Jean*0101
0102
02f4da180f Oliv*0103 #ifdef ALLOW_OFFLINE
0104 IF ( .NOT.(useOffLine.AND.offlineLoadKPP) ) THEN
0105 #else
0106 IF ( .TRUE. ) THEN
0107 #endif
0108
8b6db0f7a7 Jean*0109
0110 IF ( myIter.EQ.nIter0 ) THEN
0111 _BEGIN_MASTER( myThid )
0112 kpp_drctrec = 1
0113 #ifdef ALLOW_TIMEAVE
0114 kpp_drctrecTave = 1
0115 #endif
0116 _END_MASTER( myThid )
0117 _BARRIER
b22b541fe9 Ed H*0118 ENDIF
0119
2fa42a6013 Alis*0120
0121
0122
cd56dd0428 Jean*0123 IF ( myIter.NE.nIter0 .AND.
94a46dfe0d Jean*0124 & DIFFERENT_MULTIPLE(kpp_dumpFreq,myTime,deltaTClock)
2fa42a6013 Alis*0125 & ) THEN
cd56dd0428 Jean*0126
c9c3d7103f Ed H*0127 IF (KPPwriteState .AND. snapshot_mdsio) THEN
3b6d2d02e0 Mart*0128 #ifdef MULTIPLE_RECORD_KPP_STATE_FILES
c9c3d7103f Ed H*0129
108c31e771 Ed H*0130
0131
c9c3d7103f Ed H*0132 CALL WRITE_REC_XYZ_RL('KPPviscAz',KPPviscAz,kpp_drctrec,
0133 & myIter,myThid)
0134 CALL WRITE_REC_XYZ_RL('KPPdiffKzT',KPPdiffKzT,kpp_drctrec,
0135 & myIter,myThid)
0136 CALL WRITE_REC_XYZ_RL('KPPdiffKzS',KPPdiffKzS,kpp_drctrec,
0137 & myIter,myThid)
0138 CALL WRITE_REC_XYZ_RL('KPPghat',KPPghat,kpp_drctrec,
0139 & myIter,myThid)
0140 CALL WRITE_REC_XY_RL('KPPhbl',KPPhbl,kpp_drctrec,
0141 & myIter,myThid)
cd56dd0428 Jean*0142
0143 _BARRIER
0144 _BEGIN_MASTER( myThid )
0145 kpp_drctrec = kpp_drctrec + 1
0146 _END_MASTER( myThid )
0147 _BARRIER
3b6d2d02e0 Mart*0148 #else /* MULTIPLE_RECORD_KPP_STATE_FILES */
c9c3d7103f Ed H*0149
108c31e771 Ed H*0150
0151
df5a9764ba Jean*0152 IF ( rwSuffixType.EQ.0 ) THEN
0153 WRITE(suff,'(I10.10)') myIter
0154 ELSE
0155 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
0156 ENDIF
c9c3d7103f Ed H*0157 CALL WRITE_FLD_XYZ_RL('KPPviscAz.',suff,KPPviscAz,
0158 & myIter,myThid)
0159 CALL WRITE_FLD_XYZ_RL('KPPdiffKzT.',suff,KPPdiffKzT,
0160 & myIter,myThid)
0161 CALL WRITE_FLD_XYZ_RL('KPPdiffKzS.',suff,KPPdiffKzS,
0162 & myIter,myThid)
0163 CALL WRITE_FLD_XYZ_RL('KPPghat.',suff,KPPghat,
0164 & myIter,myThid)
0165 CALL WRITE_FLD_XY_RL('KPPhbl.',suff,KPPhbl,
0166 & myIter,myThid)
3b6d2d02e0 Mart*0167 #endif /* MULTIPLE_RECORD_KPP_STATE_FILES */
c9c3d7103f Ed H*0168 ENDIF
2fa42a6013 Alis*0169
c9c3d7103f Ed H*0170 #ifdef ALLOW_MNC
6e5c016417 Patr*0171 IF (KPPwriteState .AND. useMNC .AND. snapshot_mnc) THEN
8b6db0f7a7 Jean*0172 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
0173 pf(1:1) = 'D'
0174 ELSE
0175 pf(1:1) = 'R'
0176 ENDIF
c9c3d7103f Ed H*0177 CALL MNC_CW_SET_UDIM('kpp_state', -1, myThid)
987ff12cb6 Ed H*0178 CALL MNC_CW_RL_W_S('D','kpp_state',0,0,'T',myTime,myThid)
5220a1ccab Ed H*0179 CALL MNC_CW_SET_UDIM('kpp_state', 0, myThid)
987ff12cb6 Ed H*0180 CALL MNC_CW_I_W_S('I','kpp_state',0,0,'iter',myIter,myThid)
b22b541fe9 Ed H*0181 CALL MNC_CW_RL_W(pf,'kpp_state',0,0,
c9c3d7103f Ed H*0182 & 'KPPviscAz', KPPviscAz, myThid)
b22b541fe9 Ed H*0183 CALL MNC_CW_RL_W(pf,'kpp_state',0,0,
c9c3d7103f Ed H*0184 & 'KPPdiffKzT', KPPdiffKzT, myThid)
b22b541fe9 Ed H*0185 CALL MNC_CW_RL_W(pf,'kpp_state',0,0,
c9c3d7103f Ed H*0186 & 'KPPdiffKzS', KPPdiffKzS, myThid)
b22b541fe9 Ed H*0187 CALL MNC_CW_RL_W(pf,'kpp_state',0,0,
6e5c016417 Patr*0188 & 'KPPGHAT', KPPghat, myThid)
b22b541fe9 Ed H*0189 CALL MNC_CW_RL_W(pf,'kpp_state',0,0,
6e5c016417 Patr*0190 & 'KPPHBL', KPPhbl, myThid)
c9c3d7103f Ed H*0191 ENDIF
0192 #endif /* ALLOW_MNC */
2fa42a6013 Alis*0193
0194 ENDIF
cd56dd0428 Jean*0195
2fa42a6013 Alis*0196
0197
0198
0ac82346d7 Jean*0199 #ifdef ALLOW_TIMEAVE
8b6db0f7a7 Jean*0200 IF ( KPP_taveFreq .GT. 0. _d 0 ) THEN
2fa42a6013 Alis*0201
0202
8b6db0f7a7 Jean*0203 IF ( myIter.EQ.nIter0 ) THEN
0e5cee27f0 Jean*0204
c9c3d7103f Ed H*0205 DO bj = myByLo(myThid), myByHi(myThid)
0206 DO bi = myBxLo(myThid), myBxHi(myThid)
0207 CALL TIMEAVE_RESET(KPPviscAztave, Nr,bi,bj,myThid)
0208 CALL TIMEAVE_RESET(KPPdiffKzTtave,Nr,bi,bj,myThid)
141e734c73 Jean*0209 CALL TIMEAVE_RESET(KPPghatKStave, Nr,bi,bj,myThid)
c9c3d7103f Ed H*0210 CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)
0211 CALL TIMEAVE_RESET(KPPhbltave, 1, bi,bj,myThid)
8b6db0f7a7 Jean*0212 KPP_timeAve(bi,bj) = 0.
c9c3d7103f Ed H*0213 ENDDO
0214 ENDDO
0e5cee27f0 Jean*0215
8b6db0f7a7 Jean*0216 ELSE
cd56dd0428 Jean*0217
2fa42a6013 Alis*0218
df5a9764ba Jean*0219 DDTT = deltaTClock
141e734c73 Jean*0220 IF ( useGMRedi .AND. KPP_ghatUseTotalDiffus ) THEN
0221 tmpFac = 1. _d 0
0222 ELSE
0223 tmpFac = 0. _d 0
0224 ENDIF
8b6db0f7a7 Jean*0225 DO bj = myByLo(myThid), myByHi(myThid)
0226 DO bi = myBxLo(myThid), myBxHi(myThid)
c9c3d7103f Ed H*0227 CALL TIMEAVE_CUMULATE(
0228 & KPPviscAztave, KPPviscAz, Nr,DDTT,bi,bj,myThid)
0229 CALL TIMEAVE_CUMULATE(
0230 & KPPdiffKzTtave,KPPdiffKzT,Nr,DDTT,bi,bj,myThid)
0231 CALL TIMEAVE_CUMULATE(
0232 & KPPdiffKzStave,KPPdiffKzS,Nr,DDTT,bi,bj,myThid)
141e734c73 Jean*0233 DO k=2,Nr
0234 DO j=1,sNy
0235 DO i=1,sNx
0236 KPPghatKStave(i,j,k,bi,bj) = KPPghatKStave(i,j,k,bi,bj)
0237 & + ( KPPdiffKzS(i,j,k,bi,bj)
0238 #ifdef ALLOW_GMREDI
0239 & +tmpFac*Kwz(i,j,k,bi,bj)
0240 #endif
0241 & )*KPPghat(i,j,k-1,bi,bj)*DDTT
0242 ENDDO
0243 ENDDO
0244 ENDDO
c9c3d7103f Ed H*0245 CALL TIMEAVE_CUMULATE(
0246 & KPPhbltave, KPPhbl, 1, DDTT,bi,bj,myThid)
0247
8b6db0f7a7 Jean*0248 KPP_timeAve(bi,bj) = KPP_timeAve(bi,bj)+DDTT
0249 ENDDO
c9c3d7103f Ed H*0250 ENDDO
0e5cee27f0 Jean*0251
8b6db0f7a7 Jean*0252 ENDIF
cd56dd0428 Jean*0253
c9c3d7103f Ed H*0254
8b6db0f7a7 Jean*0255 dumpFiles = .FALSE.
0256 IF ( myIter .NE. nIter0 ) THEN
742cf4499c Jean*0257 dumpFiles =
0258 & DIFFERENT_MULTIPLE(KPP_taveFreq,myTime,deltaTClock)
fc64655a31 Dimi*0259 #ifdef ALLOW_CAL
742cf4499c Jean*0260 IF ( useCAL ) THEN
7a31080eb8 Jean*0261 CALL CAL_TIME2DUMP( zeroRL, KPP_taveFreq, deltaTClock,
742cf4499c Jean*0262 U dumpFiles,
0263 I myTime, myIter, myThid )
0264 ENDIF
fc64655a31 Dimi*0265 #endif
8b6db0f7a7 Jean*0266 ENDIF
fc64655a31 Dimi*0267
8b6db0f7a7 Jean*0268 IF (dumpFiles) THEN
c9c3d7103f Ed H*0269
0270 DO bj = myByLo(myThid), myByHi(myThid)
0271 DO bi = myBxLo(myThid), myBxHi(myThid)
8b6db0f7a7 Jean*0272 CALL TIMEAVE_NORMALIZE( KPPviscAztave,
0273 & KPP_timeAve, Nr, bi, bj, myThid )
0274 CALL TIMEAVE_NORMALIZE( KPPdiffKzTtave,
0275 & KPP_timeAve, Nr, bi, bj, myThid )
141e734c73 Jean*0276 CALL TIMEAVE_NORMALIZE( KPPghatKStave,
8b6db0f7a7 Jean*0277 & KPP_timeAve, Nr, bi, bj, myThid )
0278 CALL TIMEAVE_NORMALIZE( KPPdiffKzStave,
0279 & KPP_timeAve, Nr, bi, bj, myThid )
0280 CALL TIMEAVE_NORMALIZE( KPPhbltave,
0281 & KPP_timeAve, 1 , bi, bj, myThid )
c9c3d7103f Ed H*0282 ENDDO
0283 ENDDO
cd56dd0428 Jean*0284
108c31e771 Ed H*0285 IF (KPPwriteState .AND. timeave_mdsio) THEN
c9c3d7103f Ed H*0286 #ifdef MULTIPLE_RECORD_KPP_STATE_FILES
108c31e771 Ed H*0287
c9c3d7103f Ed H*0288
108c31e771 Ed H*0289
141e734c73 Jean*0290 CALL WRITE_REC_XYZ_RL('KPPviscAz-T',KPPviscAztave,
c9c3d7103f Ed H*0291 & kpp_drctrecTave,myIter,myThid)
141e734c73 Jean*0292 CALL WRITE_REC_XYZ_RL('KPPdiffKzT-T',KPPdiffKzTtave,
c9c3d7103f Ed H*0293 & kpp_drctrecTave,myIter,myThid)
141e734c73 Jean*0294 CALL WRITE_REC_XYZ_RL('KPPdiffKzS-T',KPPdiffKzStave,
c9c3d7103f Ed H*0295 & kpp_drctrecTave,myIter,myThid)
141e734c73 Jean*0296 CALL WRITE_REC_XYZ_RL('KPPghatKS-T',KPPghatKStave,
c9c3d7103f Ed H*0297 & kpp_drctrecTave,myIter,myThid)
141e734c73 Jean*0298 CALL WRITE_REC_XY_RL('KPPhbl-T',KPPhbltave,
c9c3d7103f Ed H*0299 & kpp_drctrecTave,myIter,myThid)
0300
cd56dd0428 Jean*0301 _BARRIER
0302 _BEGIN_MASTER( myThid )
c9c3d7103f Ed H*0303 kpp_drctrecTave = kpp_drctrecTave + 1
cd56dd0428 Jean*0304 _END_MASTER( myThid )
0305 _BARRIER
c9c3d7103f Ed H*0306 #else /* MULTIPLE_RECORD_KPP_STATE_FILES */
108c31e771 Ed H*0307
0308
0309
df5a9764ba Jean*0310 IF ( rwSuffixType.EQ.0 ) THEN
0311 WRITE(suff,'(I10.10)') myIter
0312 ELSE
0313 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
0314 ENDIF
141e734c73 Jean*0315 CALL WRITE_FLD_XYZ_RL('KPPviscAz-T.',suff,KPPviscAztave,
c9c3d7103f Ed H*0316 & myIter,myThid)
141e734c73 Jean*0317 CALL WRITE_FLD_XYZ_RL('KPPdiffKzT-T.',suff,KPPdiffKzTtave,
c9c3d7103f Ed H*0318 & myIter,myThid)
141e734c73 Jean*0319 CALL WRITE_FLD_XYZ_RL('KPPdiffKzS-T.',suff,KPPdiffKzStave,
c9c3d7103f Ed H*0320 & myIter,myThid)
141e734c73 Jean*0321 CALL WRITE_FLD_XYZ_RL('KPPghatKS-T.',suff,KPPghatKStave,
c9c3d7103f Ed H*0322 & myIter,myThid)
141e734c73 Jean*0323 CALL WRITE_FLD_XY_RL('KPPhbl-T.',suff,KPPhbltave,
c9c3d7103f Ed H*0324 & myIter,myThid)
cd56dd0428 Jean*0325 #endif /* MULTIPLE_RECORD_KPP_STATE_FILES */
c9c3d7103f Ed H*0326 ENDIF
cd56dd0428 Jean*0327
c9c3d7103f Ed H*0328 #ifdef ALLOW_MNC
6e5c016417 Patr*0329 IF (KPPwriteState .AND. useMNC .AND. timeave_mnc) THEN
8b6db0f7a7 Jean*0330 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
0331 pf(1:1) = 'D'
0332 ELSE
0333 pf(1:1) = 'R'
0334 ENDIF
c9c3d7103f Ed H*0335 CALL MNC_CW_SET_UDIM('kpp_timeave', -1, myThid)
987ff12cb6 Ed H*0336 CALL MNC_CW_RL_W_S('D','kpp_timeave',0,0,'T',myTime,myThid)
5220a1ccab Ed H*0337 CALL MNC_CW_SET_UDIM('kpp_timeave', 0, myThid)
987ff12cb6 Ed H*0338 CALL MNC_CW_I_W_S('I','kpp_timeave',0,0,'iter',myIter,myThid)
b22b541fe9 Ed H*0339 CALL MNC_CW_RL_W(pf,'kpp_timeave',0,0,
141e734c73 Jean*0340 & 'KPPviscAz', KPPviscAztave, myThid)
b22b541fe9 Ed H*0341 CALL MNC_CW_RL_W(pf,'kpp_timeave',0,0,
141e734c73 Jean*0342 & 'KPPdiffKzT', KPPdiffKzTtave, myThid)
b22b541fe9 Ed H*0343 CALL MNC_CW_RL_W(pf,'kpp_timeave',0,0,
141e734c73 Jean*0344 & 'KPPdiffKzS', KPPdiffKzStave, myThid)
b22b541fe9 Ed H*0345 CALL MNC_CW_RL_W(pf,'kpp_timeave',0,0,
141e734c73 Jean*0346 & 'KPPghatKS', KPPghatKStave, myThid)
b22b541fe9 Ed H*0347 CALL MNC_CW_RL_W(pf,'kpp_timeave',0,0,
141e734c73 Jean*0348 & 'KPPHBL', KPPhbltave, myThid)
c9c3d7103f Ed H*0349 ENDIF
0350 #endif /* ALLOW_MNC */
0351
0352
0353 DO bj = myByLo(myThid), myByHi(myThid)
0354 DO bi = myBxLo(myThid), myBxHi(myThid)
0355 CALL TIMEAVE_RESET(KPPviscAztave, Nr,bi,bj,myThid)
0356 CALL TIMEAVE_RESET(KPPdiffKzTtave,Nr,bi,bj,myThid)
141e734c73 Jean*0357 CALL TIMEAVE_RESET(KPPghatKStave, Nr,bi,bj,myThid)
c9c3d7103f Ed H*0358 CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)
0359 CALL TIMEAVE_RESET(KPPhbltave, 1, bi,bj,myThid)
8b6db0f7a7 Jean*0360 KPP_timeAve(bi,bj) = 0.
c9c3d7103f Ed H*0361 ENDDO
0362 ENDDO
cd56dd0428 Jean*0363
8b6db0f7a7 Jean*0364
0365 ENDIF
cd56dd0428 Jean*0366
8b6db0f7a7 Jean*0367
0368 ENDIF
0e5cee27f0 Jean*0369 #endif /* ALLOW_TIMEAVE */
7e819019d5 Dimi*0370
0371 #ifdef ALLOW_DIAGNOSTICS
c3cd6c250f Jean*0372
afb6ba5661 Oliv*0373 IF ( useDiagnostics .AND. myIter.NE.nIter0 ) THEN
7e819019d5 Dimi*0374 CALL DIAGNOSTICS_FILL(KPPviscAz ,'KPPviscA',0,Nr,0,1,1,myThid)
0375 CALL DIAGNOSTICS_FILL(KPPdiffKzS,'KPPdiffS',0,Nr,0,1,1,myThid)
0376 CALL DIAGNOSTICS_FILL(KPPdiffKzT,'KPPdiffT',0,Nr,0,1,1,myThid)
141e734c73 Jean*0377 IF ( DIAGNOSTICS_IS_ON( 'KPPghatK', myThid ) ) THEN
0378 IF ( useGMRedi .AND. KPP_ghatUseTotalDiffus ) THEN
0379 tmpFac = 1. _d 0
0380 ELSE
0381 tmpFac = 0. _d 0
0382 ENDIF
0383 DO bj = myByLo(myThid), myByHi(myThid)
0384 DO bi = myBxLo(myThid), myBxHi(myThid)
0385 DO j=1,sNy
0386 DO i=1,sNx
0387 tmpLoc(i,j,1) = 0. _d 0
0388 ENDDO
0389 ENDDO
0390 DO k=2,Nr
0391 DO j=1,sNy
0392 DO i=1,sNx
0393 tmpLoc(i,j,k) = KPPghat(i,j,k-1,bi,bj)*
0394 & ( KPPdiffKzS(i,j,k,bi,bj)
0395 #ifdef ALLOW_GMREDI
0396 & + tmpFac*Kwz(i,j,k,bi,bj)
0397 #endif
0398 & )
0399 ENDDO
0400 ENDDO
0401 ENDDO
0402 CALL DIAGNOSTICS_FILL(tmpLoc,'KPPghatK',0,Nr,3,bi,bj,myThid)
0403 ENDDO
0404 ENDDO
0405 ENDIF
7e819019d5 Dimi*0406 CALL DIAGNOSTICS_FILL(KPPhbl ,'KPPhbl ',0,1 ,0,1,1,myThid)
0407 CALL DIAGNOSTICS_FILL(KPPfrac ,'KPPfrac ',0,1 ,0,1,1,myThid)
30c6f5b1cd An T*0408 #ifdef ALLOW_SALT_PLUME
0409 CALL DIAGNOSTICS_FILL(KPPplumefrac,'KPPpfrac',0,1 ,0,1,1,myThid)
0410 #endif /* ALLOW_SALT_PLUME */
7e819019d5 Dimi*0411 ENDIF
0412 #endif /* ALLOW_DIAGNOSTICS */
cd56dd0428 Jean*0413
02f4da180f Oliv*0414
0415 ENDIF
0416
0e5cee27f0 Jean*0417 #endif /* ALLOW_KPP */
cd56dd0428 Jean*0418
2fa42a6013 Alis*0419 RETURN
0420 END