7 hprogram,ptimec, ptstep,tpglt, psst, psss, &
8 pfsic, pfsit, psic, ptice, pice_alb)
64 USE modd_glt_param , ONLY : xtstep=>dtt, lwg, lp1, lp2, lp3, lp4, lp5, &
65 nprinto, gelato_dim=>nx
72 USE modi_gltools_chkinp
73 USE modi_gltools_chkout
81 USE yomhook
,ONLY : lhook, dr_hook
82 USE parkind1
,ONLY : jprb
92 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
93 REAL,
INTENT(IN) :: ptimec
94 REAL,
INTENT(IN) :: ptstep
95 TYPE(t_glt) ,
INTENT(INOUT) :: tpglt
96 REAL,
DIMENSION(:) ,
INTENT(IN) :: psst
97 REAL,
DIMENSION(:) ,
INTENT(IN) :: psss
98 REAL,
DIMENSION(:) ,
INTENT(IN) :: pfsic
99 REAL,
DIMENSION(:) ,
INTENT(IN) :: pfsit
101 REAL,
DIMENSION(:) ,
INTENT(OUT) :: psic
102 REAL,
DIMENSION(:) ,
INTENT(OUT) :: ptice
103 REAL,
DIMENSION(:) ,
INTENT(OUT) :: pice_alb
107 REAL,
DIMENSION( SIZE(PSST)) :: zsst
108 REAL,
DIMENSION( SIZE(PSST)) :: zsic
117 REAL :: zice_coupling_tstep
121 REAL(KIND=JPRB) :: zhook_handle
125 IF (lhook) CALL dr_hook(
'SEAICE_GELATO1D',0,zhook_handle)
131 gelato_dim=
SIZE(psss)
135 IF (s%XSEAICE_TSTEP == xundef)
THEN
142 IF ( ptstep < s%XSEAICE_TSTEP )
THEN
143 CALL
abor1_sfx(
"XSEAICE_TSTEP SHOULD BE EQUAL OR LESS THAN ATMOSPHERIC TIME STEP")
145 it=nint(ptstep/s%XSEAICE_TSTEP)
157 tpglt%oce_all(:,1)%sml=psss(:)
164 zsst=reshape(
glt_swfrzt2d(reshape(psss,(/
SIZE(psss),1/))) + xtt,(/
SIZE(psss)/))
169 IF (s%LINTERPOL_SIC)
THEN
171 WHERE ( zsic(:) < 1.e-10 .AND. psst(:) > zsst(:) )
176 WHERE (psst(:) - xtt > s%XFREEZING_SST + 0.1 )
191 lp1 = (lwg.AND.nprinto>=1)
192 lp2 = (lwg.AND.nprinto>=2)
193 lp3 = (lwg.AND.nprinto>=3)
194 lp4 = (lwg.AND.nprinto>=4)
195 lp5 = (lwg.AND.nprinto>=5)
198 IF (
SIZE(psss) > 0)
THEN
199 tpglt%oce_all(:,1)%tml=zsst(:)
200 IF (s%LINTERPOL_SIC) tpglt%sit_d(1,:,1)%fsi=zsic(:)
201 IF (s%LINTERPOL_SIT) tpglt%sit_d(1,:,1)%hsi=pfsit(:)
204 tpglt%oce_all(:,1)%qoc=0.
206 tpglt%oce_all(:,1)%qml=0.
208 tpglt%oce_all(:,1)%ssh=0.
215 tpglt%atm_all(:,1)%lip=s%XCPL_SEA_RAIN(:) / ptstep
216 tpglt%atm_all(:,1)%sop=s%XCPL_SEA_SNOW(:) / ptstep
218 tpglt%atm_wat(:,1)%eva=s%XCPL_SEA_EVAP(:) / ptstep
219 tpglt%atm_wat(:,1)%swa=s%XCPL_SEA_SNET(:) / ptstep
220 tpglt%atm_wat(:,1)%nsf=s%XCPL_SEA_HEAT(:) / ptstep
221 tpglt%atm_wat(:,1)%dfl=s%XSI_FLX_DRV
223 tpglt%atm_ice(1,:,1)%eva=s%XCPL_SEAICE_EVAP(:) / ptstep
224 tpglt%atm_ice(1,:,1)%swa=s%XCPL_SEAICE_SNET(:) / ptstep
225 tpglt%atm_ice(1,:,1)%nsf=s%XCPL_SEAICE_HEAT(:) / ptstep
226 tpglt%atm_ice(1,:,1)%dfl=s%XSI_FLX_DRV
237 tpglt%IND%CUR = ( ptimec + jt * xtstep ) / xtstep
246 CALL
glt_sndmlrf( tpglt%bat,tpglt%dom,tpglt%atm_all,tpglt%tml, &
247 tpglt%dia,tpglt%sit,tpglt%tfl,tpglt%ust,tpglt%all_oce )
251 psic = psic + tpglt%ice_atm(1,:,1)%fsi * xtstep
252 ptice = ptice + tpglt%ice_atm(1,:,1)%tsf * xtstep
253 pice_alb = pice_alb + tpglt%ice_atm(1,:,1)%alb * xtstep
257 psic = psic / (it * xtstep)
258 ptice = ptice / (it * xtstep)
259 pice_alb = pice_alb / (it * xtstep)
268 s%XCPL_SEAICE_EVAP=0.
269 s%XCPL_SEAICE_SNET=0.
270 s%XCPL_SEAICE_HEAT=0.
272 IF (lhook) CALL dr_hook(
'SEAICE_GELATO1D',1,zhook_handle)
subroutine seaice_gelato1d_n(S, HPROGRAM, PTIMEC, PTSTEP, TPGLT, PSST, PSSS, PFSIC, PFSIT, PSIC, PTICE, PICE_ALB)
subroutine glt_gelato(tpglt)
subroutine glt_sndmlrf(pbathy, tpdom, tpatc, tpml, tpdia, tpsit, tptfl, pustar, tpall_oce)
subroutine glt_getatmf(tpglt)
subroutine abor1_sfx(YTEXT)
subroutine wridia_ar5(tpglt)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine glt_sndatmf(tpglt, xtmlf)
subroutine glt_getmlrf(tpoce_all, tpml)