1 |
C $Header: /u/gcmpack/MITgcm/pkg/icefront/icefront_init_fixed.F,v 1.8 2017/02/07 00:18:59 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "ICEFRONT_OPTIONS.h" |
5 |
#ifdef ALLOW_EXF |
6 |
# include "EXF_OPTIONS.h" |
7 |
#endif /* ALLOW_EXF */ |
8 |
#undef ALLOW_ICEFRONT_DEBUG |
9 |
|
10 |
SUBROUTINE ICEFRONT_INIT_FIXED( myThid ) |
11 |
C *============================================================* |
12 |
C | SUBROUTINE ICEFRONT_INIT_FIXED |
13 |
C | o Routine to initialize ICEFRONT parameters and variables. |
14 |
C *============================================================* |
15 |
C | Initialize ICEFRONT parameters and variables. |
16 |
C *============================================================* |
17 |
IMPLICIT NONE |
18 |
|
19 |
C === Global variables === |
20 |
#include "SIZE.h" |
21 |
#include "EEPARAMS.h" |
22 |
#include "PARAMS.h" |
23 |
#include "GRID.h" |
24 |
#include "ICEFRONT.h" |
25 |
#ifdef ALLOW_EXF |
26 |
# include "EXF_PARAM.h" |
27 |
#endif /* ALLOW_EXF */ |
28 |
|
29 |
C === Routine arguments === |
30 |
C myThid :: my Thread Id Number |
31 |
INTEGER myThid |
32 |
|
33 |
#ifdef ALLOW_ICEFRONT |
34 |
C === Local variables === |
35 |
C I,J,K,bi,bj :: Loop counters |
36 |
C errCount :: error counter |
37 |
INTEGER I, J, K, bi, bj |
38 |
INTEGER errCount |
39 |
#ifdef ALLOW_ICEFRONT_DEBUG |
40 |
INTEGER ISinterface |
41 |
#endif |
42 |
#ifdef ALLOW_EXF |
43 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
44 |
#endif /* ALLOW_EXF */ |
45 |
|
46 |
#ifdef ALLOW_EXF |
47 |
IF ( useEXF .AND. SGRunOffFile .NE. ' ' ) THEN |
48 |
_BEGIN_MASTER( myThid ) |
49 |
errCount = 0 |
50 |
# ifdef ALLOW_DEBUG |
51 |
IF (debugMode) CALL DEBUG_CALL('GETFIELD_START SGRunOff',myThid) |
52 |
# endif |
53 |
CALL EXF_GETFFIELD_START( useExfYearlyFields, |
54 |
I 'icefront', 'SGRunOff', SGRunOffperiod, |
55 |
I SGRunOffstartdate1, SGRunOffstartdate2, |
56 |
U SGRunOffStartTime, errCount, |
57 |
I myThid ) |
58 |
IF ( errCount.GE.1 ) THEN |
59 |
WRITE(msgBuf,'(A,I3,A)') |
60 |
& 'ICEFRONT_INIT_FIXED: detected', errCount,' fatal error(s)' |
61 |
CALL PRINT_ERROR( msgBuf, myThid ) |
62 |
CALL ALL_PROC_DIE( 0 ) |
63 |
STOP 'ABNORMAL END: S/R ICEFRONT_INIT_FIXED' |
64 |
ENDIF |
65 |
_END_MASTER( myThid ) |
66 |
_BARRIER |
67 |
ENDIF |
68 |
#endif /* ALLOW_EXF */ |
69 |
|
70 |
IF ( ICEFRONTlengthFile .NE. ' ' ) THEN |
71 |
CALL READ_FLD_XY_RS( ICEFRONTlengthFile, ' ', |
72 |
& icefrontlength, 0, myThid ) |
73 |
_EXCH_XY_RS( icefrontlength, myThid ) |
74 |
ENDIF |
75 |
|
76 |
IF ( ICEFRONTdepthFile .NE. ' ' ) THEN |
77 |
CALL READ_FLD_XY_RS( ICEFRONTdepthFile, ' ', |
78 |
& R_icefront, 0, myThid ) |
79 |
_EXCH_XY_RS( R_icefront, myThid ) |
80 |
ENDIF |
81 |
|
82 |
C Make sure that R_icefront is positive |
83 |
DO bj = myByLo(myThid), myByHi(myThid) |
84 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
85 |
DO J = 1-OLy, sNy+OLy |
86 |
DO I = 1-OLx, sNx+OLx |
87 |
R_icefront(I,J,bi,bj) = ABS(R_icefront(I,J,bi,bj)) |
88 |
ENDDO |
89 |
ENDDO |
90 |
ENDDO |
91 |
ENDDO |
92 |
|
93 |
DO bj = myByLo(myThid), myByHi(myThid) |
94 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
95 |
DO J = 1-OLy, sNy+OLy |
96 |
DO I = 1-OLx, sNx+OLx |
97 |
K_icefront(i,j,bi,bj) = 0 |
98 |
DO K = 1 , Nr |
99 |
IF ( R_icefront(I,J,bi,bj) .GT. ABS(rF(K))) |
100 |
& K_icefront(I,J,bi,bj) = K |
101 |
ENDDO |
102 |
ENDDO |
103 |
ENDDO |
104 |
ENDDO |
105 |
ENDDO |
106 |
|
107 |
#ifdef ALLOW_ICEFRONT_DEBUG |
108 |
DO bj = myByLo(myThid), myByHi(myThid) |
109 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
110 |
DO J = 1, sNy |
111 |
DO I = 1, sNx |
112 |
C IsInterface=0 |
113 |
IF (ICEFRONTlength(I,J,bi,bj) .GT. 0. _d 0) THEN |
114 |
C print*, 'IsInterface=', '2' , ',xuyun' |
115 |
IsInterface=Isinterface + K_icefront(I,J,bi,bj) |
116 |
ENDIF |
117 |
ENDDO |
118 |
ENDDO |
119 |
ENDDO |
120 |
ENDDO |
121 |
print*, 'Interface # =', IsInterface |
122 |
#endif /* ALLOW_ICEFRONT_DEBUG */ |
123 |
|
124 |
#ifdef ALLOW_DIAGNOSTICS |
125 |
IF ( useDiagnostics ) THEN |
126 |
CALL ICEFRONT_DIAGNOSTICS_INIT( myThid ) |
127 |
ENDIF |
128 |
#endif /* ALLOW_DIAGNOSTICS */ |
129 |
|
130 |
#endif /* ALLOW_ICEFRONT */ |
131 |
|
132 |
RETURN |
133 |
END |