22 USE fun_avg, only: avg_x_h, avg_y_h, avg_z_h
25 USE functions, only: east_of, north_of, top_of
26 USE functions, only: is_on_mype_plus2layers
40 INTEGER,
INTENT(IN) :: M
47 INTEGER :: I, J, K, I1, I2, J1, J2, K1, K2, IJK
48 INTEGER :: IJKE, IJKN, IJKT, IJPK, IJKP, IJKNE, IJKTE
50 DOUBLE PRECISION :: D_f
54 IF (is_defined(l))
THEN 63 IF(i1.LE.
iend2) i1 = max(i1, istart2)
64 IF(j1.LE.
jend2) j1 = max(j1, jstart2)
65 IF(k1.LE.
kend2) k1 = max(k1, kstart2)
66 IF(i2.GE.istart2) i2 = min(i2,
iend2)
67 IF(j2.GE.jstart2) j2 = min(j2,
jend2)
68 IF(k2.GE.kstart2) k2 = min(k2,
kend2)
70 IF (is_plane(l) ==
'N')
THEN 74 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
75 IF (dead_cell_at(i,j,k)) cycle
82 d_f = avg_x_h(avg_y_h(dif(ijk),dif(ijkn),j),&
83 avg_y_h(dif(ijke),dif(ijkne),j),i)*&
92 ELSEIF (is_plane(l) ==
'T')
THEN 97 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
98 IF (dead_cell_at(i,j,k)) cycle
102 ijkte = east_of(ijkt)
105 d_f = avg_x_h(avg_z_h(dif(ijk),dif(ijkt),k),&
106 avg_z_h(dif(ijke),dif(ijkte),k),i)*&
109 a_m(ijk,
top,m) = a_m(ijk,
top,m) - d_f
integer, parameter dimension_is
double precision, dimension(:), allocatable ox_e
integer, dimension(dimension_is) is_i_w
subroutine dif_u_is(DIF, A_M, M)
character, dimension(dimension_is) is_plane
double precision, dimension(:), allocatable axz_u
double precision, dimension(:), allocatable ody_n
logical, dimension(:,:,:), allocatable dead_cell_at
integer, dimension(dimension_is) is_k_b
logical, dimension(dimension_is) is_defined
integer, dimension(dimension_is) is_j_s
integer, dimension(dimension_is) is_j_n
integer, dimension(dimension_is) is_i_e
double precision, dimension(:), allocatable axy_u
double precision, dimension(:), allocatable odz_t
integer, dimension(dimension_is) is_k_t