6 SUBROUTINE put_sfx_sea (S, U, W, KLUOUT,OCPL_SEAICE,OWATER,PSEA_SST,PSEA_UCU, &
7 PSEA_VCU,PSEAICE_SIT,PSEAICE_CVR,PSEAICE_ALB )
66 INTEGER,
INTENT(IN) :: KLUOUT
67 LOGICAL,
INTENT(IN) :: OCPL_SEAICE
68 LOGICAL,
INTENT(IN) :: OWATER
70 REAL,
DIMENSION(:),
INTENT(IN) :: PSEA_SST
71 REAL,
DIMENSION(:),
INTENT(IN) :: PSEA_UCU
72 REAL,
DIMENSION(:),
INTENT(IN) :: PSEA_VCU
73 REAL,
DIMENSION(:),
INTENT(IN) :: PSEAICE_SIT
74 REAL,
DIMENSION(:),
INTENT(IN) :: PSEAICE_CVR
75 REAL,
DIMENSION(:),
INTENT(IN) :: PSEAICE_ALB
81 CHARACTER(LEN=50) :: YCOMMENT
83 REAL(KIND=JPRB) :: ZHOOK_HANDLE
105 IF(owater.AND.u%NSIZE_WATER>0)
THEN 123 INTEGER,
INTENT(IN) :: KLU
125 REAL,
DIMENSION(KLU) :: ZSST
126 REAL,
DIMENSION(KLU) :: ZICE_FRAC
129 CHARACTER(LEN=50) :: YCOMMENT
131 REAL(KIND=JPRB) :: ZHOOK_HANDLE
133 IF (
lhook)
CALL dr_hook(
'PUT_SFX_SEA:TREAT_SEA',0,zhook_handle)
135 ycomment=
'Sea surface temperature' 137 WHERE (zsst(:)/=0.0) s%XSST(:)=zsst(:)
140 ztmin=minval(s%XSST(:))
141 ztmax=maxval(s%XSST(:))
143 IF(ztmin<=0.0.OR.ztmax>500.)
THEN 144 WRITE(kluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 145 WRITE(kluout,*)
'SST from ocean model not define or not physic' 146 WRITE(kluout,*)
'SST MIN =',ztmin,
'SST MAX =',ztmax
147 WRITE(kluout,*)
'There is certainly a problem between ' 148 WRITE(kluout,*)
'SURFEX and OASIS sea/land mask ' 149 WRITE(kluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 150 CALL abor1_sfx(
'PUT_SFX_SEA: SST from ocean model not define or not physic' 153 ycomment=
'Sea u-current stress' 157 ycomment=
'Sea v-current stress' 163 ycomment=
'Sea-ice Temperature' 167 ycomment=
'Sea-ice cover' 171 WHERE(zice_frac(:)>=
xicec)
172 s%XSST(:) = min(s%XSST(:),
xtts-0.01)
174 s%XSST(:) = max(s%XSST(:),
xtts)
177 ycomment=
'Sea-ice albedo' 183 WHERE(s%XSST(:) <
xtts)
184 s%XDIR_ALB(:)=s%XICE_ALB(:)
185 s%XSCA_ALB(:)=s%XICE_ALB(:)
190 IF (
lhook)
CALL dr_hook(
'PUT_SFX_SEA:TREAT_SEA',1,zhook_handle)
201 INTEGER,
INTENT(IN) :: KLU
203 REAL,
DIMENSION(KLU) :: ZICE_FRAC
206 CHARACTER(LEN=50) :: YCOMMENT
208 REAL(KIND=JPRB) :: ZHOOK_HANDLE
210 IF (
lhook)
CALL dr_hook(
'PUT_SFX_SEA:TREAT_WATER',0,zhook_handle)
212 ycomment=
'Water surface temperature' 216 ztmin=minval(w%XTS(:))
217 ztmax=maxval(w%XTS(:))
219 IF(ztmin<=0.0.OR.ztmax>500.)
THEN 220 WRITE(kluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 221 WRITE(kluout,*)
'TS_WATER from ocean model not define or not physic' 222 WRITE(kluout,*)
'TS_WATER MIN =',ztmin,
'TS_WATER MAX =',ztmax
223 WRITE(kluout,*)
'There is certainly a problem between ' 224 WRITE(kluout,*)
'SURFEX and OASIS sea/land mask ' 225 WRITE(kluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 226 CALL abor1_sfx(
'PUT_SFX_SEA: SST from ocean model not define or not physic' 229 ycomment=
'Water-ice Temperature' 233 ycomment=
'Water-ice cover' 237 WHERE(zice_frac(:)>=
xicec)
238 w%XTS(:) = min(w%XTS(:),
xtt-0.01)
240 w%XTS(:) = max(w%XTS(:),
xtt)
243 ycomment=
'Water-ice albedo' 249 WHERE(w%XTS(:) <
xtt)
250 w%XDIR_ALB(:)=w%XICE_ALB(:)
251 w%XSCA_ALB(:)=w%XICE_ALB(:)
254 IF (
lhook)
CALL dr_hook(
'PUT_SFX_SEA:TREAT_WATER',1,zhook_handle)
264 CHARACTER(LEN=*),
INTENT(IN) :: HCOMMENT
265 REAL,
DIMENSION(:),
INTENT(IN) :: PFIELD
267 REAL(KIND=JPRB) :: ZHOOK_HANDLE
269 IF (
lhook)
CALL dr_hook(
'PUT_SFX_SEA:CHECK_SEA',0,zhook_handle)
271 IF(any(pfield(:)>=
xundef))
THEN 272 WRITE(kluout,*)
'PUT_SFX_SEA: problem after get '//
trim(hcomment)//
' from OASIS' 273 WRITE(kluout,*)
'PUT_SFX_SEA: some points not defined = ',
count(pfield(
274 CALL abor1_sfx(
'PUT_SFX_SEA: problem after get '//
trim(hcomment)//
' from OASIS' 277 IF (
lhook)
CALL dr_hook(
'PUT_SFX_SEA:CHECK_SEA',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine treat_water(KLU)
subroutine treat_sea(KLU)
subroutine abor1_sfx(YTEXT)
subroutine put_sfx_sea(S, U, W, KLUOUT, OCPL_SEAICE, OWATER, PSEA_SS
subroutine check_sea(HCOMMENT, PFIELD)