57 #if ! defined in_surfex
60 TYPE(t_glt),
INTENT(inout) :: &
68 TYPE(t_tfl),
DIMENSION(nx,ny),
INTENT(inout) :: &
76 TYPE(t_dom),
DIMENSION(nx,ny),
INTENT(in) :: &
78 TYPE(t_mxl),
DIMENSION(nx,ny),
INTENT(in) :: &
80 TYPE(t_sit),
DIMENSION(nt,nx,ny),
INTENT(inout) :: &
84 SUBROUTINE inidia(tpind,tpdia,pcumdia0,pcumdia)
87 TYPE(t_ind),
INTENT(in) :: &
89 TYPE(t_dia),
DIMENSION(nx,ny),
INTENT(inout) :: &
91 REAL,
DIMENSION(ndiamax,1,1),
INTENT(out) :: &
93 REAL,
DIMENSION(ndiamax,nx,ny),
INTENT(out) :: &
106 #if ! defined in_surfex
121 USE modi_gltools_mskerr
124 TYPE(t_glt),
INTENT(inout) :: &
129 INTEGER,
DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
131 INTEGER,
DIMENSION(nxglo,nyglo) :: &
133 REAL,
DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
135 REAL,
DIMENSION(nxglo,nyglo) :: &
147 WRITE(noutlu,*)
' *** LEVEL 3 - SUBROUTINE INIDMN'
152 WRITE(noutlu,*)
' The grid we use is : '//cn_grdname
165 yfname =
'opamesh.asc'
168 WRITE(noutlu,
'("Processor ",I5," : read grid from ",A)') &
175 OPEN(unit=ngrdlu,file=yfname,form=
'FORMATTED')
178 READ(ngrdlu,*) iwork2(:,:)
182 CALL scatter2d( iwork2,iwork2_p )
183 tpglt%dom(:,:)%tmk = iwork2_p(:,:)
189 READ(ngrdlu,*) iwork2
195 READ(ngrdlu,*) iwork2
201 READ(ngrdlu,*) zwork2
202 zwork2(:,:) = zwork2(:,:) * pi / 180.
203 CALL scatter2d( zwork2,zwork2_p )
204 tpglt%dom(:,:)%lat = zwork2_p(:,:)
210 READ(ngrdlu,*) zwork2
211 zwork2(:,:) = zwork2(:,:) * pi / 180.
212 CALL scatter2d( zwork2,zwork2_p )
213 tpglt%dom(:,:)%lon = zwork2_p(:,:)
219 READ(ngrdlu,*) zwork2
220 CALL scatter2d( zwork2,zwork2_p )
221 tpglt%dom(:,:)%dxc = zwork2_p(:,:)
225 READ(ngrdlu,*) zwork2
226 CALL scatter2d( zwork2,zwork2_p )
227 tpglt%dom(:,:)%dyc = zwork2_p(:,:)
238 WRITE(noutlu,*)
' *** LEVEL 3 - END SUBROUTINE INIDMN'
256 USE mode_gltools_bound
260 TYPE(t_glt),
INTENT(inout) :: &
265 INTEGER,
DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
267 REAL,
DIMENSION(SIZE(tpglt%dom,1),SIZE(tpglt%dom,2)) :: &
279 WRITE(noutlu,*)
' *** LEVEL 3 - SUBROUTINE BNDDMN'
290 zwork2_p(:,:) = float( tpglt%dom(:,:)%tmk )
291 CALL gltools_bound(
'T',
'scalar',zwork2_p )
292 tpglt%dom(:,:)%tmk = int( zwork2_p(:,:) )
295 iwork2_p(:,:) = tpglt%dom(:,:)%tmk
296 iwork2_p(1:jpreci,:) = 0
297 iwork2_p(nlci-jpreci+1:nx,:) = 0
298 iwork2_p(:,1:jprecj) = 0
299 iwork2_p(:,nlcj-jprecj+1:ny) = 0
300 tpglt%dom(:,:)%imk = iwork2_p(:,:)
309 tpglt%dom(ji,jj)%indi = nimpp+ji-nldi
310 tpglt%dom(ji,jj)%indj = njmpp+jj-nldj
313 zwork2_p(:,:) = float( tpglt%dom(:,:)%indi )
314 CALL gltools_bound(
'T',
'scalar',zwork2_p )
315 tpglt%dom(:,:)%indi = int( zwork2_p(:,:) )
316 zwork2_p(:,:) = float( tpglt%dom(:,:)%indj )
317 CALL gltools_bound(
'T',
'scalar',zwork2_p )
318 tpglt%dom(:,:)%indj = int( zwork2_p(:,:) )
326 iwork2_p(ji,jj) = tpglt%dom(ji+1,jj)%tmk * tpglt%dom(ji,jj)%tmk
330 zwork2_p(:,:) = float( iwork2_p(:,:) )
331 CALL gltools_bound(
'U',
'scalar',zwork2_p )
332 tpglt%dom(:,:)%umk = int( zwork2_p(:,:) )
340 iwork2_p(ji,jj) = tpglt%dom(ji,jj+1)%tmk * tpglt%dom(ji,jj)%tmk
344 zwork2_p(:,:) = float( iwork2_p(:,:) )
345 CALL gltools_bound(
'V',
'scalar',zwork2_p )
346 tpglt%dom(:,:)%vmk = int( zwork2_p(:,:) )
350 zwork2_p(:,:) = tpglt%dom(:,:)%lat
351 CALL gltools_bound(
'T',
'scalar',zwork2_p )
352 tpglt%dom(:,:)%lat = zwork2_p(:,:)
356 zwork2_p(:,:) = tpglt%dom(:,:)%lon
357 CALL gltools_bound(
'T',
'scalar',zwork2_p )
358 tpglt%dom(:,:)%lon = zwork2_p(:,:)
362 zwork2_p(:,:) = tpglt%dom(:,:)%dxc
363 CALL gltools_bound(
'T',
'scafac',zwork2_p )
364 tpglt%dom(:,:)%dxc = zwork2_p(:,:)
368 zwork2_p(:,:) = tpglt%dom(:,:)%dyc
369 CALL gltools_bound(
'T',
'scafac',zwork2_p )
370 tpglt%dom(:,:)%dyc = zwork2_p(:,:)
375 zwork2_p(:,:) = tpglt%dom(:,:)%dxc*tpglt%dom(:,:)%dyc
380 tpglt%dom(:,:)%srf = zwork2_p(:,:)
388 xdomsrf = sum( tpglt%dom(:,:)%srf, mask=(tpglt%dom(:,:)%tmk==1) )
400 WRITE(noutlu,*)
' *** LEVEL 3 - END SUBROUTINE BNDDMN'
418 TYPE(t_tfl),
DIMENSION(nx,ny),
INTENT(inout) :: &
445 ( tpdom,tpmxl,tpsit )
452 TYPE(t_dom),
DIMENSION(nx,ny),
INTENT(in) :: &
454 TYPE(t_mxl),
DIMENSION(nx,ny),
INTENT(in) :: &
456 TYPE(t_sit),
DIMENSION(nt,nx,ny),
INTENT(inout) :: &
470 IF ( any( tpsit(:,:,:)%ssi < -0.5 ) )
THEN
471 IF ( nicesal==1 )
THEN
473 tpsit(jk,:,:)%ssi = &
474 ssinew / ssw0 * tpmxl(:,:)%sml * float( tpdom(:,:)%tmk )
477 tpsit(:,:,:)%ssi = sice
490 SUBROUTINE inidia(tpind,tpdia,pcumdia0,pcumdia)
495 TYPE(t_ind),
INTENT(inout) :: &
497 TYPE(t_dia),
DIMENSION(nx,ny),
INTENT(inout) :: &
499 REAL,
DIMENSION(ndiamax,1,1),
INTENT(out) :: &
501 REAL,
DIMENSION(ndiamax,nx,ny),
INTENT(out) :: &
546 tpdia(:,:)%s_prsn = 0.
548 tpdia(:,:)%o_prsn = 0.
549 tpdia(:,:)%l_prsn = 0.
550 tpdia(:,:)%subcio = 0.
551 tpdia(:,:)%snicio = 0.
552 tpdia(:,:)%hsicio = 0.
553 tpdia(:,:)%lmlcio = 0.
554 tpdia(:,:)%salcio = 0.
559 IF( tpind%cur==tpind%beg )
THEN
586 IF ( ntimers==1 )
THEN
587 CALL cpu_time( xtime )
subroutine inidia(tpind, tpdia, pcumdia0, pcumdia)
subroutine inisal(tpdom, tpmxl, tpsit)