1 | #if defined key_agrif |
---|
2 | SUBROUTINE Agrif_connection |
---|
3 | use dom_oce |
---|
4 | use agrif_parameters |
---|
5 | !!---------------------------------------------------------------------- |
---|
6 | !! *** ROUTINE Agrif_Sponge *** |
---|
7 | !!---------------------------------------------------------------------- |
---|
8 | INTEGER :: ji, jj, ind1, ind2 |
---|
9 | INTEGER :: ispongearea |
---|
10 | REAL(wp) :: z1_spongearea |
---|
11 | !!---------------------------------------------------------------------- |
---|
12 | ! |
---|
13 | ! Define ramp from boundaries towards domain interior at T-points |
---|
14 | ! Store it in ztabramp |
---|
15 | |
---|
16 | ALLOCATE(ztabramp(jpi,jpj)) |
---|
17 | ispongearea = 1 + npt_connect * Agrif_irhox() |
---|
18 | z1_spongearea = 1._wp / REAL( ispongearea ) |
---|
19 | |
---|
20 | ztabramp(:,:) = 0._wp |
---|
21 | |
---|
22 | ! --- West --- ! |
---|
23 | IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN |
---|
24 | ind1 = 1+nbghostcells |
---|
25 | ind2 = 1+nbghostcells + ispongearea |
---|
26 | DO jj = 1, jpj |
---|
27 | DO ji = ind1, ind2 |
---|
28 | ztabramp(ji,jj) = REAL( ind2 - ji ) * z1_spongearea * umask(ind1,jj,1) |
---|
29 | END DO |
---|
30 | ENDDO |
---|
31 | ENDIF |
---|
32 | |
---|
33 | ! --- East --- ! |
---|
34 | IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN |
---|
35 | ind1 = nlci - nbghostcells - ispongearea |
---|
36 | ind2 = nlci - nbghostcells |
---|
37 | DO jj = 1, jpj |
---|
38 | DO ji = ind1, ind2 |
---|
39 | ztabramp(ji,jj) = MAX( ztabramp(ji,jj), REAL( ji - ind1 ) * z1_spongearea * umask(ind2-1,jj,1) ) |
---|
40 | ENDDO |
---|
41 | ENDDO |
---|
42 | ENDIF |
---|
43 | |
---|
44 | ! --- South --- ! |
---|
45 | IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN |
---|
46 | ind1 = 1+nbghostcells |
---|
47 | ind2 = 1+nbghostcells + ispongearea |
---|
48 | DO jj = ind1, ind2 |
---|
49 | DO ji = 1, jpi |
---|
50 | ztabramp(ji,jj) = MAX( ztabramp(ji,jj), REAL( ind2 - jj ) * z1_spongearea * vmask(ji,ind1,1) ) |
---|
51 | END DO |
---|
52 | ENDDO |
---|
53 | ENDIF |
---|
54 | |
---|
55 | ! --- North --- ! |
---|
56 | IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN |
---|
57 | ind1 = nlcj - nbghostcells - ispongearea |
---|
58 | ind2 = nlcj - nbghostcells |
---|
59 | DO jj = ind1, ind2 |
---|
60 | DO ji = 1, jpi |
---|
61 | ztabramp(ji,jj) = MAX( ztabramp(ji,jj), REAL( jj - ind1 ) * z1_spongearea * vmask(ji,ind2-1,1) ) |
---|
62 | END DO |
---|
63 | ENDDO |
---|
64 | ENDIF |
---|
65 | ! |
---|
66 | ! |
---|
67 | END SUBROUTINE Agrif_connection |
---|
68 | |
---|
69 | #else |
---|
70 | subroutine agrif_connection_empty |
---|
71 | end subroutine agrif_connection_empty |
---|
72 | #endif |
---|