1 |
C $Header: /u/gcmpack/MITgcm/pkg/monitor/mon_solution.F,v 1.7 2009/05/26 23:04:03 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "MONITOR_OPTIONS.h" |
5 |
|
6 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
CBOP |
8 |
C !ROUTINE: MON_SOLUTION |
9 |
|
10 |
C !INTERFACE: |
11 |
SUBROUTINE MON_SOLUTION( |
12 |
I statsTemp, |
13 |
I myTime, myIter, myThid ) |
14 |
|
15 |
C !DESCRIPTION: |
16 |
C Checks that the solutions is within bounds |
17 |
|
18 |
C !USES: |
19 |
IMPLICIT NONE |
20 |
#include "SIZE.h" |
21 |
#include "EEPARAMS.h" |
22 |
#include "PARAMS.h" |
23 |
#include "DYNVARS.h" |
24 |
#include "GRID.h" |
25 |
#include "MONITOR.h" |
26 |
|
27 |
C !INPUT PARAMETERS: |
28 |
_RL statsTemp(*) |
29 |
_RL myTime |
30 |
INTEGER myIter |
31 |
INTEGER myThid |
32 |
CEOP |
33 |
|
34 |
C !LOCAL VARIABLES: |
35 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
36 |
_RL tMin,tMax,tMean,tSD,tDel2,tVol |
37 |
|
38 |
IF ( statsTemp(1) .LE. statsTemp(2) ) THEN |
39 |
C Take statistics from the input argument "statsTemp": |
40 |
tMin = statsTemp(1) |
41 |
tMax = statsTemp(2) |
42 |
ELSE |
43 |
C Statistics for T |
44 |
CALL MON_STATS_RL( |
45 |
I Nr, theta, maskC,hFacC,rA,drF, |
46 |
O tMin,tMax,tMean,tSD,tDel2,tVol, |
47 |
I myThid ) |
48 |
ENDIF |
49 |
|
50 |
IF ( (tMax-tMin).GT.monSolutionMaxRange ) THEN |
51 |
_BEGIN_MASTER(myThid) |
52 |
WRITE(msgBuf,'(A,1P2E11.3)') |
53 |
& 'SOLUTION IS HEADING OUT OF BOUNDS: tMin,tMax=',tMin,tMax |
54 |
CALL PRINT_MESSAGE(msgBuf,errorMessageUnit,SQUEEZE_RIGHT,myThid) |
55 |
WRITE(msgBuf,'(2A,1PE11.3,A)') ' exceeds allowed range ', |
56 |
& '(monSolutionMaxRange=', monSolutionMaxRange,')' |
57 |
CALL PRINT_MESSAGE(msgBuf,errorMessageUnit,SQUEEZE_RIGHT,myThid) |
58 |
WRITE(msgBuf,'(A,I10)') |
59 |
& 'MON_SOLUTION: STOPPING CALCULATION at Iter=', myIter |
60 |
CALL PRINT_MESSAGE(msgBuf,errorMessageUnit,SQUEEZE_RIGHT,myThid) |
61 |
_END_MASTER(myThid) |
62 |
|
63 |
C jmc: add this "if not ..." to avoid beeing stuck when using coupler; |
64 |
IF ( .NOT.useCoupler ) CALL ALL_PROC_DIE( myThid ) |
65 |
STOP |
66 |
& 'ABNORMAL END: S/R MON_SOLUTION, stops due to EXTREME Pot.Temp' |
67 |
ENDIF |
68 |
|
69 |
RETURN |
70 |
END |