1 | !> \file masque-0.2.F |
---|
2 | !! COAST MASK, ICE MASK, SLOPE |
---|
3 | !< |
---|
4 | |
---|
5 | !> SUBROUTINE: MASQUE() |
---|
6 | !! \author ... |
---|
7 | !! \date 20/04/95 |
---|
8 | !! @note Cette routine permet de calculer COAST MASK, ICE MASK, SLOPE |
---|
9 | !! @note Used modules: |
---|
10 | !! @note - use module3D_phy |
---|
11 | !! |
---|
12 | !< |
---|
13 | |
---|
14 | ! Char SccsId[] = "@(#)masque.f 1.7 date delta=04/20/95 heure delta=13:45:15 date lecture=05/30/95" |
---|
15 | |
---|
16 | |
---|
17 | subroutine MASQUE() |
---|
18 | |
---|
19 | c ************************************************ |
---|
20 | c (******** COAST MASK, ICE MASK, SLOPE *********) |
---|
21 | c ************************************************ |
---|
22 | |
---|
23 | USE module3D_phy |
---|
24 | |
---|
25 | implicit none |
---|
26 | |
---|
27 | if (itracebug.eq.1) then |
---|
28 | call tracebug(' Entree dans routine masque') |
---|
29 | end if |
---|
30 | |
---|
31 | if (GEOPLACE.eq.'eismint') then |
---|
32 | do i=1,nx |
---|
33 | do j=1,ny |
---|
34 | mk(i,j)=1 |
---|
35 | MNEG(I,J)=1-MK(I,J) |
---|
36 | end do |
---|
37 | end do |
---|
38 | |
---|
39 | else if (((geoplace.eq.'anteis1').or.(geoplace.eq.'ant20km').or. |
---|
40 | & (geoplace(1:5).eq.'hemin')).and.(marine)) then |
---|
41 | do i=1,nx |
---|
42 | do j=1,ny |
---|
43 | if (flot(i,j)) then |
---|
44 | mk(i,j)=1 |
---|
45 | else |
---|
46 | mk(i,j)=0 |
---|
47 | endif |
---|
48 | end do |
---|
49 | end do |
---|
50 | |
---|
51 | |
---|
52 | else if (((geoplace.eq.'anteis1').or.(geoplace.eq.'ant20km').or. |
---|
53 | & (geoplace(1:5).eq.'hemin')).and.(.not.marine)) then |
---|
54 | do i=1,nx |
---|
55 | do j=1,ny |
---|
56 | |
---|
57 | c elimination des points poses isoles |
---|
58 | c mk(i,j)= mk0(i-1,j)+mk0(i+1,j)+mk0(i,j-1)+mk0(i,j+1) |
---|
59 | c if (mk(i,j).gt.0) then |
---|
60 | mk(i,j)=mk0(i,j) |
---|
61 | c endif |
---|
62 | |
---|
63 | end do |
---|
64 | end do |
---|
65 | |
---|
66 | else |
---|
67 | |
---|
68 | do i=1,nx |
---|
69 | do j=1,ny |
---|
70 | c maintenant, mk est affecte juste apres le nouveau calcul de H |
---|
71 | c dans icethick2, sauf au premier tour, et avant la boucle |
---|
72 | if ((NT.le.1).or.(TIME.eq.TBEGIN)) then |
---|
73 | mk(i,j)=0 |
---|
74 | if (b(i,j).ge.sealevel) then |
---|
75 | mk(i,j)=1 |
---|
76 | else if (h(i,j).gt.(SEALEVEL-B(I,J))/DICE) then |
---|
77 | MK(I,J)=1 |
---|
78 | endif |
---|
79 | mk(i,j)=mk(i,j)*mk0(i,j) |
---|
80 | endif |
---|
81 | c calcul de imk(i,j) dans tous les appels a masque |
---|
82 | MNEG(I,J)=1-MK(I,J) |
---|
83 | end do |
---|
84 | end do |
---|
85 | |
---|
86 | endif |
---|
87 | 940 format('%%%% ',a,' time=',f8.0,' %%%%') |
---|
88 | |
---|
89 | end |
---|