forked from altMITgcm/MITgcm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
seaice_obcs_output.F
116 lines (100 loc) · 3.67 KB
/
seaice_obcs_output.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_obcs_output.F,v 1.4 2017/03/24 23:53:17 jmc Exp $
C $Name: $
#include "SEAICE_OPTIONS.h"
#ifdef ALLOW_OBCS
#include "OBCS_OPTIONS.h"
#endif
CBOP
C !ROUTINE: SEAICE_OBCS_OUTPUT
C !INTERFACE:
SUBROUTINE SEAICE_OBCS_OUTPUT( myTime, myIter, myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE SEAICE_OBCS_OUTPUT
C | o General routine for SEAICE Open-Boundary output
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#ifdef ALLOW_OBCS
# include "OBCS_PARAMS.h"
# include "OBCS_SEAICE.h"
#endif
C !INPUT PARAMETERS:
C myTime :: my time in simulation ( s )
C myIter :: my Iteration number
C myThid :: my Thread Id number
_RL myTime
INTEGER myIter
INTEGER myThid
CEOP
#ifdef ALLOW_SEAICE
#ifdef ALLOW_OBCS
C !FUNCTIONS:
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL DIFFERENT_MULTIPLE
c INTEGER ILNBLNK
c EXTERNAL ILNBLNK
C !LOCAL VARIABLES:
CHARACTER*(10) suff
CHARACTER*(MAX_LEN_FNAM) fn
INTEGER prec
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
C-- Write OB aray to binary files (mainly for debugging => use "diagFreq")
IF (
& DIFFERENT_MULTIPLE(diagFreq,myTime,deltaTClock)
& ) THEN
_BARRIER
prec = writeBinaryPrec
c IF ( rwSuffixType.EQ.0 ) THEN
WRITE(suff,'(I10.10)') myIter
c ELSE
c CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
c ENDIF
C Write Sea-Ice OB arrays
# ifdef ALLOW_OBCS_NORTH
WRITE(fn,'(2A)') 'seaice_ob_N.', suff
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBNa, 1,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBNh, 2,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBNsl, 3,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBNsn, 4,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBNuice, 5,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBNvice, 6,myIter,myThid)
# endif
# ifdef ALLOW_OBCS_SOUTH
WRITE(fn,'(2A)') 'seaice_ob_S.', suff
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBSa, 1,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBSh, 2,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBSsl, 3,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBSsn, 4,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBSuice, 5,myIter,myThid)
CALL WRITE_REC_XZ_RL(fn,prec, 1,OBSvice, 6,myIter,myThid)
# endif
# ifdef ALLOW_OBCS_EAST
WRITE(fn,'(2A)') 'seaice_ob_E.', suff
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBEa, 1,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBEh, 2,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBEsl, 3,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBEsn, 4,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBEuice, 5,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBEvice, 6,myIter,myThid)
# endif
# ifdef ALLOW_OBCS_WEST
WRITE(fn,'(2A)') 'seaice_ob_W.', suff
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBWa, 1,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBWh, 2,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBWsl, 3,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBWsn, 4,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBWuice, 5,myIter,myThid)
CALL WRITE_REC_YZ_RL(fn,prec, 1,OBWvice, 6,myIter,myThid)
# endif
_BARRIER
ENDIF
#endif /* ALLOW_OBCS */
#endif /* ALLOW_SEAICE */
RETURN
END