61 USE modd_glt_param
, ONLY : xtstep=>dtt, lwg, lp1, lp2, lp3, lp4, lp5, &
62 nprinto, gelato_dim=>nx
69 USE modi_gltools_chkinp
70 USE modi_gltools_chkout
72 USE mode_gltools_swfrzt
89 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
90 REAL,
INTENT(IN) :: PTIMEC
91 REAL,
INTENT(IN) :: PTSTEP
95 REAL,
DIMENSION( SIZE(S%XSST)) :: ZSST
96 REAL,
DIMENSION( SIZE(S%XSST)) :: ZSIC
105 REAL :: ZICE_COUPLING_TSTEP
109 REAL(KIND=JPRB) :: ZHOOK_HANDLE
113 IF (
lhook)
CALL dr_hook(
'SEAICE_GELATO1D',0,zhook_handle)
119 gelato_dim=
SIZE(s%XSSS)
123 IF (s%XSEAICE_TSTEP ==
xundef)
THEN 130 IF ( ptstep < s%XSEAICE_TSTEP )
THEN 131 CALL abor1_sfx(
"XSEAICE_TSTEP SHOULD BE EQUAL OR LESS THAN ATMOSPHERIC TIME STEP")
133 it=nint(ptstep/s%XSEAICE_TSTEP)
145 s%TGLT%oce_all(:,1)%sml=s%XSSS(:)
152 zsst=reshape(glt_swfrzt2d(reshape(s%XSSS,(/
SIZE(s%XSSS),1/))) +
xtt,(/
SIZE(s%XSSS)/))
157 IF (s%LINTERPOL_SIC)
THEN 159 WHERE ( zsic(:) < 1.e-10 .AND. s%XSST(:) > zsst(:) )
164 WHERE (s%XSST(:) -
xtt > s%XFREEZING_SST + 0.1 )
179 lp1 = (lwg.AND.nprinto>=1)
180 lp2 = (lwg.AND.nprinto>=2)
181 lp3 = (lwg.AND.nprinto>=3)
182 lp4 = (lwg.AND.nprinto>=4)
183 lp5 = (lwg.AND.nprinto>=5)
186 IF (
SIZE(s%XSSS) > 0)
THEN 187 s%TGLT%oce_all(:,1)%tml=zsst(:)
188 IF (s%LINTERPOL_SIC) s%TGLT%sit_d(1,:,1)%fsi=zsic(:)
189 IF (s%LINTERPOL_SIT) s%TGLT%sit_d(1,:,1)%hsi=s%XFSIT(:)
192 s%TGLT%oce_all(:,1)%qoc=0.
194 s%TGLT%oce_all(:,1)%qml=0.
196 s%TGLT%oce_all(:,1)%ssh=0.
203 s%TGLT%atm_all(:,1)%lip=s%XCPL_SEA_RAIN(:) / ptstep
204 s%TGLT%atm_all(:,1)%sop=s%XCPL_SEA_SNOW(:) / ptstep
206 s%TGLT%atm_wat(:,1)%eva=s%XCPL_SEA_EVAP(:) / ptstep
207 s%TGLT%atm_wat(:,1)%swa=s%XCPL_SEA_SNET(:) / ptstep
208 s%TGLT%atm_wat(:,1)%nsf=s%XCPL_SEA_HEAT(:) / ptstep
209 s%TGLT%atm_wat(:,1)%dfl=s%XSI_FLX_DRV
211 s%TGLT%atm_ice(1,:,1)%eva=s%XCPL_SEAICE_EVAP(:) / ptstep
212 s%TGLT%atm_ice(1,:,1)%swa=s%XCPL_SEAICE_SNET(:) / ptstep
213 s%TGLT%atm_ice(1,:,1)%nsf=s%XCPL_SEAICE_HEAT(:) / ptstep
214 s%TGLT%atm_ice(1,:,1)%dfl=s%XSI_FLX_DRV
219 CALL glt_getmlrf( s%TGLT%oce_all,s%TGLT%tml )
220 CALL glt_getatmf( s%TGLT )
221 CALL gltools_chkinp( 20010101,s%TGLT )
225 s%TGLT%IND%CUR = ( ptimec + jt * xtstep ) / xtstep
229 CALL glt_gelato( s%TGLT )
233 CALL glt_sndatmf( s%TGLT )
234 CALL glt_sndmlrf( s%TGLT%bat,s%TGLT%dom,s%TGLT%atm_all,s%TGLT%tml, &
235 s%TGLT%dia,s%TGLT%sit,s%TGLT%tfl,s%TGLT%ust,s%TGLT%all_oce )
236 CALL wridia_ar5( s%TGLT )
237 CALL gltools_chkout( 20010101,s%TGLT )
239 s%XSIC = s%XSIC + s%TGLT%ice_atm(1,:,1)%fsi * xtstep
240 s%XTICE = s%XTICE + s%TGLT%ice_atm(1,:,1)%tsf * xtstep
241 s%XICE_ALB = s%XICE_ALB + s%TGLT%ice_atm(1,:,1)%alb * xtstep
245 s%XSIC = s%XSIC / (it * xtstep)
246 s%XTICE = s%XTICE / (it * xtstep)
247 s%XICE_ALB = s%XICE_ALB / (it * xtstep)
256 s%XCPL_SEAICE_EVAP=0.
257 s%XCPL_SEAICE_SNET=0.
258 s%XCPL_SEAICE_HEAT=0.
260 IF (
lhook)
CALL dr_hook(
'SEAICE_GELATO1D',1,zhook_handle)
subroutine seaice_gelato1d_n(S, HPROGRAM, PTIMEC, PTSTEP)
subroutine abor1_sfx(YTEXT)
subroutine get_luout(HPROGRAM, KLUOUT)