ROMS
Loading...
Searching...
No Matches
sum_imp.F
Go to the documentation of this file.
1#include "cppdefs.h"
3#if defined WEAK_CONSTRAINT && defined RPCG
4!
5!git $Id$
6!================================================== Hernan G. Arango ===
7! Copyright (c) 2002-2025 The ROMS Group Andrew M. Moore !
8! Licensed under a MIT/X style license !
9! See License_ROMS.md !
10!=======================================================================
11!
12 implicit none
13
14 PRIVATE
15 PUBLIC sum_imp
16
17 CONTAINS
18!
19!***********************************************************************
20 SUBROUTINE sum_imp (ng, tile, Lout)
21!***********************************************************************
22!
23 USE mod_param
24# ifdef ADJUST_BOUNDARY
25 USE mod_boundary
26# endif
27# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
28 USE mod_forces
29# endif
30 USE mod_ocean
31!
32! Imported variable declarations.
33!
34 integer, intent(in) :: ng, tile, lout
35!
36! Local variable declarations.
37!
38# include "tile.h"
39!
40 CALL sum_imp_tile (ng, tile, &
41 & lbi, ubi, lbj, ubj, lbij, ubij, &
42 & imins, imaxs, jmins, jmaxs, &
43 & lout, &
44# ifdef SOLVE3D
45 & ocean(ng) % tl_t, &
46 & ocean(ng) % tl_u, &
47 & ocean(ng) % tl_v, &
48 & ocean(ng) % f_t, &
49 & ocean(ng) % f_u, &
50 & ocean(ng) % f_v, &
51# else
52 & ocean(ng) % tl_ubar, &
53 & ocean(ng) % tl_vbar, &
54 & ocean(ng) % f_ubar, &
55 & ocean(ng) % f_vbar, &
56# endif
57 & ocean(ng) % tl_zeta, &
58 & ocean(ng) % f_zeta)
59 RETURN
60 END SUBROUTINE sum_imp
61!
62!***********************************************************************
63 SUBROUTINE sum_imp_tile (ng, tile, &
64 & LBi, UBi, LBj, UBj, LBij, UBij, &
65 & IminS, ImaxS, JminS, JmaxS, &
66 & Lout, &
67# ifdef SOLVE3D
68 & tl_t, tl_u, tl_v, &
69 & f_t, f_u, f_v, &
70# else
71 & tl_ubar, tl_vbar, &
72 & f_ubar, f_vbar, &
73# endif
74 & tl_zeta, f_zeta)
75!***********************************************************************
76!
77 USE mod_param
78 USE mod_ncparam
79!
80! Imported variable declarations.
81!
82 integer, intent(in) :: ng, tile
83 integer, intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
84 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
85 integer, intent(in) :: Lout
86!
87# ifdef ASSUMED_SHAPE
88# ifdef SOLVE3D
89 real(r8), intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
90 real(r8), intent(inout) :: tl_u(LBi:,LBj:,:,:)
91 real(r8), intent(inout) :: tl_v(LBi:,LBj:,:,:)
92 real(r8), intent(inout) :: f_t(LBi:,LBj:,:,:)
93 real(r8), intent(inout) :: f_u(LBi:,LBj:,:)
94 real(r8), intent(inout) :: f_v(LBi:,LBj:,:)
95# else
96 real(r8), intent(inout) :: tl_ubar(LBi:,LBj:,:)
97 real(r8), intent(inout) :: tl_vbar(LBi:,LBj:,:)
98 real(r8), intent(inout) :: f_ubar(LBi:,LBj:)
99 real(r8), intent(inout) :: f_vbar(LBi:,LBj:)
100# endif
101 real(r8), intent(inout) :: tl_zeta(LBi:,LBj:,:)
102 real(r8), intent(inout) :: f_zeta(LBi:,LBj:)
103# else
104# ifdef SOLVE3D
105 real(r8), intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
106 real(r8), intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
107 real(r8), intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
108 real(r8), intent(inout) :: f_t(LBi:UBi,LBj:UBj,N(ng),NT(ng))
109 real(r8), intent(inout) :: f_u(LBi:UBi,LBj:UBj,N(ng))
110 real(r8), intent(inout) :: f_v(LBi:UBi,LBj:UBj,N(ng))
111# else
112 real(r8), intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
113 real(r8), intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
114 real(r8), intent(inout) :: f_ubar(LBi:UBi,LBj:UBj)
115 real(r8), intent(inout) :: f_vbar(LBi:UBi,LBj:UBj)
116# endif
117 real(r8), intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
118 real(r8), intent(inout) :: f_zeta(LBi:UBi,LBj:UBj)
119# endif
120!
121! Local variable declarations.
122!
123 integer :: i, ib, ir, j, k
124# ifdef SOLVE3D
125 integer :: itrc
126# endif
127
128# include "set_bounds.h"
129!
130! Free-surface.
131!
132 DO j=jstrr,jendr
133 DO i=istrr,iendr
134 tl_zeta(i,j,lout)=f_zeta(i,j)+tl_zeta(i,j,lout)
135 END DO
136 END DO
137
138# ifndef SOLVE3D
139!
140! 2D U-momentum component.
141!
142 DO j=jstrr,jendr
143 DO i=istr,iendr
144 tl_ubar(i,j,lout)=f_ubar(i,j)+tl_ubar(i,j,lout)
145 END DO
146 END DO
147!
148! 2D V-momentum.
149!
150 DO j=jstr,jendr
151 DO i=istrr,iendr
152 tl_vbar(i,j,lout)=f_vbar(i,j)+tl_vbar(i,j,lout)
153 END DO
154 END DO
155# endif
156
157# ifdef SOLVE3D
158!
159! 3D U-momentum component.
160!
161 DO k=1,n(ng)
162 DO j=jstrr,jendr
163 DO i=istr,iendr
164 tl_u(i,j,k,lout)=f_u(i,j,k)+tl_u(i,j,k,lout)
165 END DO
166 END DO
167 END DO
168
169!
170! 3D V-momentum component.
171!
172 DO k=1,n(ng)
173 DO j=jstr,jendr
174 DO i=istrr,iendr
175 tl_v(i,j,k,lout)=f_v(i,j,k)+tl_v(i,j,k,lout)
176 END DO
177 END DO
178 END DO
179
180!
181! Tracers.
182!
183 DO itrc=1,nt(ng)
184 DO k=1,n(ng)
185 DO j=jstrr,jendr
186 DO i=istrr,iendr
187 tl_t(i,j,k,lout,itrc)=f_t(i,j,k,itrc)+tl_t(i,j,k,lout,itrc)
188 END DO
189 END DO
190 END DO
191 END DO
192# endif
193
194 RETURN
195 END SUBROUTINE sum_imp_tile
196#endif
197 END MODULE sum_imp_mod
type(t_ocean), dimension(:), allocatable ocean
Definition mod_ocean.F:351
subroutine sum_imp_tile(ng, tile, lbi, ubi, lbj, ubj, lbij, ubij, imins, imaxs, jmins, jmaxs, lout, tl_t, tl_u, tl_v, f_t, f_u, f_v, tl_zeta, f_zeta)
Definition sum_imp.F:75
subroutine, public sum_imp(ng, tile, lout)
Definition sum_imp.F:21