ROMS
Loading...
Searching...
No Matches
state_copy_mod Module Reference

Functions/Subroutines

subroutine, public state_copy (ng, tile, lbi, ubi, lbj, ubj, lbij, ubij, linp, lout, s1_t_obc, s2_t_obc, s1_u_obc, s2_u_obc, s1_v_obc, s2_v_obc, s1_ubar_obc, s2_ubar_obc, s1_vbar_obc, s2_vbar_obc, s1_zeta_obc, s2_zeta_obc, s1_sustr, s2_sustr, s1_svstr, s2_svstr, s1_tflux, s2_tflux, s1_t, s2_t, s1_u, s2_u, s1_v, s2_v, s1_ubar, s2_ubar, s1_vbar, s2_vbar, s1_zeta, s2_zeta)
 

Function/Subroutine Documentation

◆ state_copy()

subroutine, public state_copy_mod::state_copy ( integer, intent(in) ng,
integer, intent(in) tile,
integer, intent(in) lbi,
integer, intent(in) ubi,
integer, intent(in) lbj,
integer, intent(in) ubj,
integer, intent(in) lbij,
integer, intent(in) ubij,
integer, intent(in) linp,
integer, intent(in) lout,
real(r8), dimension(lbij:,:,:,:,:,:), intent(inout) s1_t_obc,
real(r8), dimension(lbij:,:,:,:,:,:), intent(in) s2_t_obc,
real(r8), dimension(lbij:,:,:,:,:), intent(inout) s1_u_obc,
real(r8), dimension(lbij:,:,:,:,:), intent(in) s2_u_obc,
real(r8), dimension(lbij:,:,:,:,:), intent(inout) s1_v_obc,
real(r8), dimension(lbij:,:,:,:,:), intent(in) s2_v_obc,
real(r8), dimension(lbij:,:,:,:), intent(inout) s1_ubar_obc,
real(r8), dimension(lbij:,:,:,:), intent(in) s2_ubar_obc,
real(r8), dimension(lbij:,:,:,:), intent(inout) s1_vbar_obc,
real(r8), dimension(lbij:,:,:,:), intent(in) s2_vbar_obc,
real(r8), dimension(lbij:,:,:,:), intent(inout) s1_zeta_obc,
real(r8), dimension(lbij:,:,:,:), intent(in) s2_zeta_obc,
real(r8), dimension(lbi:,lbj:,:,:), intent(inout) s1_sustr,
real(r8), dimension(lbi:,lbj:,:,:), intent(in) s2_sustr,
real(r8), dimension(lbi:,lbj:,:,:), intent(inout) s1_svstr,
real(r8), dimension(lbi:,lbj:,:,:), intent(in) s2_svstr,
real(r8), dimension(lbi:,lbj:,:,:,:), intent(inout) s1_tflux,
real(r8), dimension(lbi:,lbj:,:,:,:), intent(in) s2_tflux,
real(r8), dimension(lbi:,lbj:,:,:,:), intent(inout) s1_t,
real(r8), dimension(lbi:,lbj:,:,:,:), intent(in) s2_t,
real(r8), dimension(lbi:,lbj:,:,:), intent(inout) s1_u,
real(r8), dimension(lbi:,lbj:,:,:), intent(in) s2_u,
real(r8), dimension(lbi:,lbj:,:,:), intent(inout) s1_v,
real(r8), dimension(lbi:,lbj:,:,:), intent(in) s2_v,
real(r8), dimension(lbi:,lbj:,:), intent(inout) s1_ubar,
real(r8), dimension(lbi:,lbj:,:), intent(in) s2_ubar,
real(r8), dimension(lbi:,lbj:,:), intent(inout) s1_vbar,
real(r8), dimension(lbi:,lbj:,:), intent(in) s2_vbar,
real(r8), dimension(lbi:,lbj:,:), intent(inout) s1_zeta,
real(r8), dimension(lbi:,lbj:,:), intent(in) s2_zeta )

Definition at line 24 of file state_copy.F.

57!***********************************************************************
58!
59 USE mod_param
60#if defined ADJUST_BOUNDARY || defined ADJUST_STFLUX || \
61 defined adjust_wstress
62 USE mod_ncparam
63 USE mod_scalars
64#endif
65!
66! Imported variable declarations.
67!
68 integer, intent(in) :: ng, tile
69 integer, intent(in) :: LBi, UBi, LBj, UBj, LBij, UBij
70 integer, intent(in) :: Linp, Lout
71!
72#ifdef ASSUMED_SHAPE
73# ifdef ADJUST_BOUNDARY
74# ifdef SOLVE3D
75 real(r8), intent(in) :: s2_t_obc(LBij:,:,:,:,:,:)
76 real(r8), intent(in) :: s2_u_obc(LBij:,:,:,:,:)
77 real(r8), intent(in) :: s2_v_obc(LBij:,:,:,:,:)
78# endif
79 real(r8), intent(in) :: s2_ubar_obc(LBij:,:,:,:)
80 real(r8), intent(in) :: s2_vbar_obc(LBij:,:,:,:)
81 real(r8), intent(in) :: s2_zeta_obc(LBij:,:,:,:)
82# endif
83# ifdef ADJUST_WSTRESS
84 real(r8), intent(in) :: s2_sustr(LBi:,LBj:,:,:)
85 real(r8), intent(in) :: s2_svstr(LBi:,LBj:,:,:)
86# endif
87# ifdef SOLVE3D
88# ifdef ADJUST_STFLUX
89 real(r8), intent(in) :: s2_tflux(LBi:,LBj:,:,:,:)
90# endif
91 real(r8), intent(in) :: s2_t(LBi:,LBj:,:,:,:)
92 real(r8), intent(in) :: s2_u(LBi:,LBj:,:,:)
93 real(r8), intent(in) :: s2_v(LBi:,LBj:,:,:)
94# if defined WEAK_CONSTRAINT && defined TIME_CONV
95 real(r8), intent(in) :: s2_ubar(LBi:,LBj:,:)
96 real(r8), intent(in) :: s2_vbar(LBi:,LBj:,:)
97# endif
98# else
99 real(r8), intent(in) :: s2_ubar(LBi:,LBj:,:)
100 real(r8), intent(in) :: s2_vbar(LBi:,LBj:,:)
101# endif
102 real(r8), intent(in) :: s2_zeta(LBi:,LBj:,:)
103
104# ifdef ADJUST_BOUNDARY
105# ifdef SOLVE3D
106 real(r8), intent(inout) :: s1_t_obc(LBij:,:,:,:,:,:)
107 real(r8), intent(inout) :: s1_u_obc(LBij:,:,:,:,:)
108 real(r8), intent(inout) :: s1_v_obc(LBij:,:,:,:,:)
109# endif
110 real(r8), intent(inout) :: s1_ubar_obc(LBij:,:,:,:)
111 real(r8), intent(inout) :: s1_vbar_obc(LBij:,:,:,:)
112 real(r8), intent(inout) :: s1_zeta_obc(LBij:,:,:,:)
113# endif
114# ifdef ADJUST_WSTRESS
115 real(r8), intent(inout) :: s1_sustr(LBi:,LBj:,:,:)
116 real(r8), intent(inout) :: s1_svstr(LBi:,LBj:,:,:)
117# endif
118# ifdef SOLVE3D
119# ifdef ADJUST_STFLUX
120 real(r8), intent(inout) :: s1_tflux(LBi:,LBj:,:,:,:)
121# endif
122 real(r8), intent(inout) :: s1_t(LBi:,LBj:,:,:,:)
123 real(r8), intent(inout) :: s1_u(LBi:,LBj:,:,:)
124 real(r8), intent(inout) :: s1_v(LBi:,LBj:,:,:)
125# if defined WEAK_CONSTRAINT && defined TIME_CONV
126 real(r8), intent(inout) :: s1_ubar(LBi:,LBj:,:)
127 real(r8), intent(inout) :: s1_vbar(LBi:,LBj:,:)
128# endif
129# else
130 real(r8), intent(inout) :: s1_ubar(LBi:,LBj:,:)
131 real(r8), intent(inout) :: s1_vbar(LBi:,LBj:,:)
132# endif
133 real(r8), intent(inout) :: s1_zeta(LBi:,LBj:,:)
134
135#else
136
137# ifdef ADJUST_BOUNDARY
138# ifdef SOLVE3D
139 real(r8), intent(in) :: s2_t_obc(LBij:UBij,N(ng),4, &
140 & Nbrec(ng),2,NT(ng))
141 real(r8), intent(in) :: s2_u_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
142 real(r8), intent(in) :: s2_v_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
143# endif
144 real(r8), intent(in) :: s2_ubar_obc(LBij:UBij,4,Nbrec(ng),2)
145 real(r8), intent(in) :: s2_vbar_obc(LBij:UBij,4,Nbrec(ng),2)
146 real(r8), intent(in) :: s2_zeta_obc(LBij:UBij,4,Nbrec(ng),2)
147# endif
148# ifdef ADJUST_WSTRESS
149 real(r8), intent(in) :: s2_sustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
150 real(r8), intent(in) :: s2_svstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
151# endif
152# ifdef SOLVE3D
153# ifdef ADJUST_STFLUX
154 real(r8), intent(in) :: s2_tflux(LBi:UBi,LBj:UBj, &
155 & Nfrec(ng),2,NT(ng))
156# endif
157 real(r8), intent(in) :: s2_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
158 real(r8), intent(in) :: s2_u(LBi:UBi,LBj:UBj,N(ng),2)
159 real(r8), intent(in) :: s2_v(LBi:UBi,LBj:UBj,N(ng),2)
160# if defined WEAK_CONSTRAINT && defined TIME_CONV
161 real(r8), intent(in) :: s2_ubar(LBi:UBi,LBj:UBj,:)
162 real(r8), intent(in) :: s2_vbar(LBi:UBi,LBj:UBj,:)
163# endif
164# else
165 real(r8), intent(in) :: s2_ubar(LBi:UBi,LBj:UBj,:)
166 real(r8), intent(in) :: s2_vbar(LBi:UBi,LBj:UBj,:)
167# endif
168 real(r8), intent(in) :: s2_zeta(LBi:UBi,LBj:UBj,:)
169
170# ifdef ADJUST_BOUNDARY
171# ifdef SOLVE3D
172 real(r8), intent(inout) :: s1_t_obc(LBij:UBij,N(ng),4, &
173 & Nbrec(ng),2,NT(ng))
174 real(r8), intent(inout) :: s1_u_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
175 real(r8), intent(inout) :: s1_v_obc(LBij:UBij,N(ng),4,Nbrec(ng),2)
176# endif
177 real(r8), intent(inout) :: s1_ubar_obc(LBij:UBij,4,Nbrec(ng),2)
178 real(r8), intent(inout) :: s1_vbar_obc(LBij:UBij,4,Nbrec(ng),2)
179 real(r8), intent(inout) :: s1_zeta_obc(LBij:UBij,4,Nbrec(ng),2)
180# endif
181# ifdef ADJUST_WSTRESS
182 real(r8), intent(inout) :: s1_sustr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
183 real(r8), intent(inout) :: s1_svstr(LBi:UBi,LBj:UBj,Nfrec(ng),2)
184# endif
185# ifdef SOLVE3D
186# ifdef ADJUST_STFLUX
187 real(r8), intent(inout) :: s1_tflux(LBi:UBi,LBj:UBj, &
188 & Nfrec(ng),2,NT(ng))
189# endif
190 real(r8), intent(inout) :: s1_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
191 real(r8), intent(inout) :: s1_u(LBi:UBi,LBj:UBj,N(ng),2)
192 real(r8), intent(inout) :: s1_v(LBi:UBi,LBj:UBj,N(ng),2)
193# if defined WEAK_CONSTRAINT && defined TIME_CONV
194 real(r8), intent(inout) :: s1_ubar(LBi:UBi,LBj:UBj,:)
195 real(r8), intent(inout) :: s1_vbar(LBi:UBi,LBj:UBj,:)
196# endif
197# else
198 real(r8), intent(inout) :: s1_ubar(LBi:UBi,LBj:UBj,:)
199 real(r8), intent(inout) :: s1_vbar(LBi:UBi,LBj:UBj,:)
200# endif
201 real(r8), intent(inout) :: s1_zeta(LBi:UBi,LBj:UBj,:)
202#endif
203!
204! Local variable declarations.
205!
206 integer :: i, j, k
207 integer :: ib, ir, it
208
209#include "set_bounds.h"
210!
211!-----------------------------------------------------------------------
212! Compute the following operation between S1 and S2 model state
213! trajectories:
214! S1(Lout) = fac1 * S1(Linp1) + fac2 * S2(Linp2)
215!-----------------------------------------------------------------------
216!
217! Free-surface.
218!
219 DO j=jstrt,jendt
220 DO i=istrt,iendt
221 s1_zeta(i,j,lout)=s2_zeta(i,j,linp)
222 END DO
223 END DO
224
225#ifdef ADJUST_BOUNDARY
226!
227! Free-surface open boundaries.
228!
229 IF (any(lobc(:,isfsur,ng))) THEN
230 DO ir=1,nbrec(ng)
231 IF ((lobc(iwest,isfsur,ng)).and. &
232 & domain(ng)%Western_Edge(tile)) THEN
233 ib=iwest
234 DO j=jstr,jend
235 s1_zeta_obc(j,ib,ir,lout)=s2_zeta_obc(j,ib,ir,linp)
236 END DO
237 END IF
238 IF ((lobc(ieast,isfsur,ng)).and. &
239 & domain(ng)%Eastern_Edge(tile)) THEN
240 ib=ieast
241 DO j=jstr,jend
242 s1_zeta_obc(j,ib,ir,lout)=s2_zeta_obc(j,ib,ir,linp)
243 END DO
244 END IF
245 IF ((lobc(isouth,isfsur,ng)).and. &
246 & domain(ng)%Southern_Edge(tile)) THEN
247 ib=isouth
248 DO i=istr,iend
249 s1_zeta_obc(i,ib,ir,lout)=s2_zeta_obc(i,ib,ir,linp)
250 END DO
251 END IF
252 IF ((lobc(inorth,isfsur,ng)).and. &
253 & domain(ng)%Northern_Edge(tile)) THEN
254 ib=inorth
255 DO i=istr,iend
256 s1_zeta_obc(i,ib,ir,lout)=s2_zeta_obc(i,ib,ir,linp)
257 END DO
258 END IF
259 END DO
260 END IF
261#endif
262
263#if !defined SOLVE3D || (defined WEAK_CONSTRAINT && defined TIME_CONV)
264!
265! 2D U-momentum component.
266!
267 DO j=jstrt,jendt
268 DO i=istrp,iendt
269 s1_ubar(i,j,lout)=s2_ubar(i,j,linp)
270 END DO
271 END DO
272#endif
273
274#ifdef ADJUST_BOUNDARY
275!
276! 2D U-momentum open boundaries.
277!
278 IF (any(lobc(:,isubar,ng))) THEN
279 DO ir=1,nbrec(ng)
280 IF ((lobc(iwest,isubar,ng)).and. &
281 & domain(ng)%Western_Edge(tile)) THEN
282 ib=iwest
283 DO j=jstr,jend
284 s1_ubar_obc(j,ib,ir,lout)=s2_ubar_obc(j,ib,ir,linp)
285 END DO
286 END IF
287 IF ((lobc(ieast,isubar,ng)).and. &
288 & domain(ng)%Eastern_Edge(tile)) THEN
289 ib=ieast
290 DO j=jstr,jend
291 s1_ubar_obc(j,ib,ir,lout)=s2_ubar_obc(j,ib,ir,linp)
292 END DO
293 END IF
294 IF ((lobc(isouth,isubar,ng)).and. &
295 & domain(ng)%Southern_Edge(tile)) THEN
296 ib=isouth
297 DO i=istru,iend
298 s1_ubar_obc(i,ib,ir,lout)=s2_ubar_obc(i,ib,ir,linp)
299 END DO
300 END IF
301 IF ((lobc(inorth,isubar,ng)).and. &
302 & domain(ng)%Northern_Edge(tile)) THEN
303 ib=inorth
304 DO i=istru,iend
305 s1_ubar_obc(i,ib,ir,lout)=s2_ubar_obc(i,ib,ir,linp)
306 END DO
307 END IF
308 END DO
309 END IF
310#endif
311
312#if !defined SOLVE3D || (defined WEAK_CONSTRAINT && defined TIME_CONV)
313!
314! 2D V-momentum component.
315!
316 DO j=jstrp,jendt
317 DO i=istrt,iendt
318 s1_vbar(i,j,lout)=s2_vbar(i,j,linp)
319 END DO
320 END DO
321#endif
322
323#ifdef ADJUST_BOUNDARY
324!
325! 2D V-momentum open boundaries.
326!
327 IF (any(lobc(:,isvbar,ng))) THEN
328 DO ir=1,nbrec(ng)
329 IF ((lobc(iwest,isvbar,ng)).and. &
330 & domain(ng)%Western_Edge(tile)) THEN
331 ib=iwest
332 DO j=jstrv,jend
333 s1_vbar_obc(j,ib,ir,lout)=s2_vbar_obc(j,ib,ir,linp)
334 END DO
335 END IF
336 IF ((lobc(ieast,isvbar,ng)).and. &
337 & domain(ng)%Eastern_Edge(tile)) THEN
338 ib=ieast
339 DO j=jstrv,jend
340 s1_vbar_obc(j,ib,ir,lout)=s2_vbar_obc(j,ib,ir,linp)
341 END DO
342 END IF
343 IF ((lobc(isouth,isvbar,ng)).and. &
344 & domain(ng)%Southern_Edge(tile)) THEN
345 ib=isouth
346 DO i=istr,iend
347 s1_vbar_obc(i,ib,ir,lout)=s2_vbar_obc(i,ib,ir,linp)
348 END DO
349 END IF
350 IF ((lobc(inorth,isvbar,ng)).and. &
351 & domain(ng)%Northern_Edge(tile)) THEN
352 ib=inorth
353 DO i=istr,iend
354 s1_vbar_obc(i,ib,ir,lout)=s2_vbar_obc(i,ib,ir,linp)
355 END DO
356 END IF
357 END DO
358 END IF
359#endif
360
361#ifdef ADJUST_WSTRESS
362!
363! Surface momentum stress.
364!
365 DO ir=1,nfrec(ng)
366 DO j=jstrt,jendt
367 DO i=istrp,iendt
368 s1_sustr(i,j,ir,lout)=s2_sustr(i,j,ir,linp)
369 END DO
370 END DO
371 DO j=jstrp,jendt
372 DO i=istrt,iendt
373 s1_svstr(i,j,ir,lout)=s2_svstr(i,j,ir,linp)
374 END DO
375 END DO
376 END DO
377#endif
378
379#ifdef SOLVE3D
380!
381! 3D U-momentum component.
382!
383 DO k=1,n(ng)
384 DO j=jstrt,jendt
385 DO i=istrp,iendt
386 s1_u(i,j,k,lout)=s2_u(i,j,k,linp)
387 END DO
388 END DO
389 END DO
390
391# ifdef ADJUST_BOUNDARY
392!
393! 3D U-momentum open boundaries.
394!
395 IF (any(lobc(:,isuvel,ng))) THEN
396 DO ir=1,nbrec(ng)
397 IF ((lobc(iwest,isuvel,ng)).and. &
398 & domain(ng)%Western_Edge(tile)) THEN
399 ib=iwest
400 DO k=1,n(ng)
401 DO j=jstr,jend
402 s1_u_obc(j,k,ib,ir,lout)=s2_u_obc(j,k,ib,ir,linp)
403 END DO
404 END DO
405 END IF
406 IF ((lobc(ieast,isuvel,ng)).and. &
407 & domain(ng)%Eastern_Edge(tile)) THEN
408 ib=ieast
409 DO k=1,n(ng)
410 DO j=jstr,jend
411 s1_u_obc(j,k,ib,ir,lout)=s2_u_obc(j,k,ib,ir,linp)
412 END DO
413 END DO
414 END IF
415 IF ((lobc(isouth,isuvel,ng)).and. &
416 & domain(ng)%Southern_Edge(tile)) THEN
417 ib=isouth
418 DO k=1,n(ng)
419 DO i=istru,iend
420 s1_u_obc(i,k,ib,ir,lout)=s2_u_obc(i,k,ib,ir,linp)
421 END DO
422 END DO
423 END IF
424 IF ((lobc(inorth,isuvel,ng)).and. &
425 & domain(ng)%Northern_Edge(tile)) THEN
426 ib=inorth
427 DO k=1,n(ng)
428 DO i=istru,iend
429 s1_u_obc(i,k,ib,ir,lout)=s2_u_obc(i,k,ib,ir,linp)
430 END DO
431 END DO
432 END IF
433 END DO
434 END IF
435# endif
436!
437! 3D V-momentum component.
438!
439 DO k=1,n(ng)
440 DO j=jstrp,jendt
441 DO i=istrt,iendt
442 s1_v(i,j,k,lout)=s2_v(i,j,k,linp)
443 END DO
444 END DO
445 END DO
446
447# ifdef ADJUST_BOUNDARY
448!
449! 3D V-momentum open boundaries.
450!
451 IF (any(lobc(:,isvvel,ng))) THEN
452 DO ir=1,nbrec(ng)
453 IF ((lobc(iwest,isvvel,ng)).and. &
454 & domain(ng)%Western_Edge(tile)) THEN
455 ib=iwest
456 DO k=1,n(ng)
457 DO j=jstrv,jend
458 s1_v_obc(j,k,ib,ir,lout)=s2_v_obc(j,k,ib,ir,linp)
459 END DO
460 END DO
461 END IF
462 IF ((lobc(ieast,isvvel,ng)).and. &
463 & domain(ng)%Eastern_Edge(tile)) THEN
464 ib=ieast
465 DO k=1,n(ng)
466 DO j=jstrv,jend
467 s1_v_obc(j,k,ib,ir,lout)=s2_v_obc(j,k,ib,ir,linp)
468 END DO
469 END DO
470 END IF
471 IF ((lobc(isouth,isvvel,ng)).and. &
472 & domain(ng)%Southern_Edge(tile)) THEN
473 ib=isouth
474 DO k=1,n(ng)
475 DO i=istr,iend
476 s1_v_obc(i,k,ib,ir,lout)=s2_v_obc(i,k,ib,ir,linp)
477 END DO
478 END DO
479 END IF
480 IF ((lobc(inorth,isvvel,ng)).and. &
481 & domain(ng)%Northern_Edge(tile)) THEN
482 ib=inorth
483 DO k=1,n(ng)
484 DO i=istr,iend
485 s1_v_obc(i,k,ib,ir,lout)=s2_v_obc(i,k,ib,ir,linp)
486 END DO
487 END DO
488 END IF
489 END DO
490 END IF
491# endif
492!
493! Tracers.
494!
495 DO it=1,nt(ng)
496 DO k=1,n(ng)
497 DO j=jstrt,jendt
498 DO i=istrt,iendt
499 s1_t(i,j,k,lout,it)=s2_t(i,j,k,linp,it)
500 END DO
501 END DO
502 END DO
503 END DO
504
505# ifdef ADJUST_BOUNDARY
506!
507! Tracers open boundaries.
508!
509 DO it=1,nt(ng)
510 IF (any(lobc(:,istvar(it),ng))) THEN
511 DO ir=1,nbrec(ng)
512 IF ((lobc(iwest,istvar(it),ng)).and. &
513 & domain(ng)%Western_Edge(tile)) THEN
514 ib=iwest
515 DO k=1,n(ng)
516 DO j=jstr,jend
517 s1_t_obc(j,k,ib,ir,lout,it)= &
518 & s2_t_obc(j,k,ib,ir,linp,it)
519 END DO
520 END DO
521 END IF
522 IF ((lobc(ieast,istvar(it),ng)).and. &
523 & domain(ng)%Eastern_Edge(tile)) THEN
524 ib=ieast
525 DO k=1,n(ng)
526 DO j=jstr,jend
527 s1_t_obc(j,k,ib,ir,lout,it)= &
528 & s2_t_obc(j,k,ib,ir,linp,it)
529 END DO
530 END DO
531 END IF
532 IF ((lobc(isouth,istvar(it),ng)).and. &
533 & domain(ng)%Southern_Edge(tile)) THEN
534 ib=isouth
535 DO k=1,n(ng)
536 DO i=istr,iend
537 s1_t_obc(i,k,ib,ir,lout,it)= &
538 & s2_t_obc(i,k,ib,ir,linp,it)
539 END DO
540 END DO
541 END IF
542 IF ((lobc(inorth,istvar(it),ng)).and. &
543 & domain(ng)%Northern_Edge(tile)) THEN
544 ib=inorth
545 DO k=1,n(ng)
546 DO i=istr,iend
547 s1_t_obc(i,k,ib,ir,lout,it)= &
548 & s2_t_obc(i,k,ib,ir,linp,it)
549 END DO
550 END DO
551 END IF
552 END DO
553 END IF
554 END DO
555# endif
556
557# ifdef ADJUST_STFLUX
558!
559! Surface tracers flux.
560!
561 DO it=1,nt(ng)
562 IF (lstflux(it,ng)) THEN
563 DO ir=1,nfrec(ng)
564 DO j=jstrt,jendt
565 DO i=istrt,iendt
566 s1_tflux(i,j,ir,lout,it)=s2_tflux(i,j,ir,linp,it)
567 END DO
568 END DO
569 END DO
570 END IF
571 END DO
572# endif
573
574#endif
575!
576 RETURN
integer isvvel
integer isvbar
integer, dimension(:), allocatable istvar
integer isuvel
integer isfsur
integer isubar
integer, dimension(:), allocatable n
Definition mod_param.F:479
type(t_domain), dimension(:), allocatable domain
Definition mod_param.F:329
integer, dimension(:), allocatable nt
Definition mod_param.F:489
logical, dimension(:,:,:), allocatable lobc
integer, parameter iwest
logical, dimension(:,:), allocatable lstflux
integer, dimension(:), allocatable nfrec
integer, parameter isouth
integer, parameter ieast
integer, parameter inorth
integer, dimension(:), allocatable nbrec

References mod_param::domain, mod_scalars::ieast, mod_scalars::inorth, mod_ncparam::isfsur, mod_scalars::isouth, mod_ncparam::istvar, mod_ncparam::isubar, mod_ncparam::isuvel, mod_ncparam::isvbar, mod_ncparam::isvvel, mod_scalars::iwest, mod_scalars::lobc, mod_scalars::lstflux, mod_param::n, mod_scalars::nbrec, mod_scalars::nfrec, and mod_param::nt.

Referenced by posterior_mod::analysis_error(), cgradient_mod::cgradient_tile(), cgradient_mod::hessian_evecs(), ini_adjust_mod::load_adtotl_tile(), ini_adjust_mod::load_tltoad_tile(), posterior_mod::posterior_eofs(), posterior_mod::posterior_tile(), inner2state_mod::tl_inner2state_tile(), and cgradient_mod::tl_new_state().

Here is the caller graph for this function: