33 |
c == end of interface == |
c == end of interface == |
34 |
|
|
35 |
c check for consistency |
c check for consistency |
36 |
if (.NOT. |
if (.NOT. |
37 |
& (exf_iprec .EQ. 32 .OR. exf_iprec .EQ. 64) |
& (exf_iprec.EQ.precFloat32 .OR. exf_iprec.EQ.precFloat64) |
38 |
& ) then |
& ) then |
39 |
stop 'S/R EXF_CHECK: value of exf_iprec not allowed' |
stop 'S/R EXF_CHECK: value of exf_iprec not allowed' |
40 |
elseif (.NOT. |
elseif ( exf_yftype.NE.'RL' ) then |
|
& (exf_yftype .EQ. 'RS' .OR. |
|
|
& exf_yftype .EQ. 'RL') |
|
|
& ) then |
|
41 |
stop 'S/R EXF_CHECK: value of exf_yftype not allowed' |
stop 'S/R EXF_CHECK: value of exf_yftype not allowed' |
42 |
endif |
endif |
43 |
|
|
65 |
ENDIF |
ENDIF |
66 |
#endif |
#endif |
67 |
|
|
68 |
|
#ifndef ALLOW_ZENITHANGLE |
69 |
|
IF ( useExfZenAlbedo .OR. useExfZenIncoming .OR. |
70 |
|
& select_ZenAlbedo .NE. 0 ) THEN |
71 |
|
STOP 'S/R EXF_CHECK: unsupported option when |
72 |
|
& ALLOW_ZENITHANGLE is not defined' |
73 |
|
ENDIF |
74 |
|
#endif |
75 |
|
|
76 |
|
#ifdef ALLOW_ZENITHANGLE |
77 |
|
IF ( usingCartesianGrid .OR. usingCylindricalGrid ) then |
78 |
|
STOP 'S/R EXF_CHECK: ALLOW_ZENITHANGLE does not |
79 |
|
& work for carthesian and cylindrical grids' |
80 |
|
ENDIF |
81 |
|
IF ( select_ZenAlbedo.LT.0 .OR. select_ZenAlbedo.GT.3 ) then |
82 |
|
STOP 'S/R EXF_CHECK: unsupported select_ZenAlbedo choice' |
83 |
|
ENDIF |
84 |
|
IF ( select_ZenAlbedo.EQ.2 .) then |
85 |
|
write(standardmessageunit,'(A)') |
86 |
|
& 'EXF WARNING: for daily mean albedo, it is advised to |
87 |
|
& use select_ZenAlbedo.EQ.1 instead of 2' |
88 |
|
ENDIF |
89 |
|
IF ( select_ZenAlbedo.GT.2 .AND. swdownperiod.GT. 21600 ) then |
90 |
|
STOP 'S/R EXF_CHECK: using diurnal albedo formula requires |
91 |
|
& diurnal downward shortwave forcing' |
92 |
|
ENDIF |
93 |
|
IF ( select_ZenAlbedo.GT.2 .AND. swdownperiod.GT. 3600 ) then |
94 |
|
write(standardmessageunit,'(A)') |
95 |
|
& 'EXF WARNING: the diurnal albedo formula is likely not safe |
96 |
|
& for such coarse temporal resolution downward shortwave forcing' |
97 |
|
ENDIF |
98 |
|
#endif |
99 |
|
|
100 |
|
|
101 |
#ifdef USE_EXF_INTERPOLATION |
#ifdef USE_EXF_INTERPOLATION |
102 |
if ( climsst_nlat .GT. MAX_LAT_INC ) |
if ( climsst_nlat .GT. MAX_LAT_INC ) |
103 |
& stop 'stopped in exf_readparms: climsst_nlat > MAX_LAT_INC' |
& stop 'stopped in exf_readparms: climsst_nlat > MAX_LAT_INC' |
113 |
STOP 'wind-stress position defined by Long/Lat' |
STOP 'wind-stress position defined by Long/Lat' |
114 |
ENDIF |
ENDIF |
115 |
if ( usingCurvilinearGrid ) then |
if ( usingCurvilinearGrid ) then |
|
if ( uvecfile .NE. ' ' .and. vvecfile .NE. ' ' ) then |
|
116 |
c some restrictions that can be relaxed later on |
c some restrictions that can be relaxed later on |
117 |
if ( uvecstartdate .ne. vvecstartdate .or. |
if ( ustressfile .NE. ' ' .and. vstressfile .NE. ' ' ) then |
118 |
& uvecperiod .ne. vvecperiod ) then |
if ( ustressstartdate .ne. vstressstartdate .or. |
119 |
|
& ustressperiod .ne. vstressperiod ) then |
120 |
|
print*,'For useCubedSphereExchange, S/R exf_set_uv.F' |
121 |
|
print*,'assumes that the u and v wind stress files' |
122 |
|
print*,'have the same startdate and period.' |
123 |
|
stop |
124 |
|
endif |
125 |
|
endif |
126 |
|
if ( uwindfile .NE. ' ' .and. vwindfile .NE. ' ' ) then |
127 |
|
if ( uwindstartdate .ne. vwindstartdate .or. |
128 |
|
& uwindperiod .ne. vwindperiod ) then |
129 |
print*,'For useCubedSphereExchange, S/R exf_set_uv.F' |
print*,'For useCubedSphereExchange, S/R exf_set_uv.F' |
130 |
print*,'assumes that the u and v wind or wind stress' |
print*,'assumes that the u and v wind files' |
131 |
print*,'files have the same startdate and period.' |
print*,'have the same startdate and period.' |
132 |
stop |
stop |
133 |
endif |
endif |
134 |
endif |
endif |