New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
agrif_top_update.F90 in branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC – NEMO

source: branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90 @ 4793

Last change on this file since 4793 was 4793, checked in by rblod, 10 years ago

dev_r4765_CNRS_agrif: changes for compatibily with TOP

  • Property svn:keywords set to Id
File size: 3.8 KB
Line 
1#define TWO_WAY
2
3MODULE agrif_top_update
4
5#if defined key_agrif && defined key_top
6   USE par_oce
7   USE oce
8   USE dom_oce
9   USE agrif_oce
10   USE par_trc
11   USE trc
12   USE wrk_nemo 
13
14   IMPLICIT NONE
15   PRIVATE
16
17   PUBLIC Agrif_Update_Trc
18
19   INTEGER, PUBLIC :: nbcline_trc = 0
20
21   !!----------------------------------------------------------------------
22   !! NEMO/NST 3.3 , NEMO Consortium (2010)
23   !! $Id$
24   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
25   !!----------------------------------------------------------------------
26
27CONTAINS
28
29   SUBROUTINE Agrif_Update_Trc( kt )
30      !!---------------------------------------------
31      !!   *** ROUTINE Agrif_Update_Trc ***
32      !!---------------------------------------------
33      INTEGER, INTENT(in) :: kt
34      !!---------------------------------------------
35      !
36      IF((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) RETURN
37#if defined TWO_WAY   
38      Agrif_UseSpecialValueInUpdate = .TRUE.
39      Agrif_SpecialValueFineGrid = 0.
40      !
41      IF (MOD(nbcline_trc,nbclineupdate) == 0) THEN
42# if ! defined DECAL_FEEDBACK
43         CALL Agrif_Update_Variable(trn_id, procname=updateTRC)
44# else
45         CALL Agrif_Update_Variable(trn_id, locupdate=(/1,0/),procname=updateTRC)
46# endif
47      ELSE
48# if ! defined DECAL_FEEDBACK
49         CALL Agrif_Update_Variable(trn_id,locupdate=(/0,2/), procname=updateTRC)
50# else
51         CALL Agrif_Update_Variable(trn_id,locupdate=(/1,2/), procname=updateTRC)
52# endif
53      ENDIF
54      !
55      Agrif_UseSpecialValueInUpdate = .FALSE.
56      nbcline_trc = nbcline_trc + 1
57#endif
58      !
59   END SUBROUTINE Agrif_Update_Trc
60
61   SUBROUTINE updateTRC( ptab, i1, i2, j1, j2, k1, k2, n1, n2, before )
62      !!---------------------------------------------
63      !!           *** ROUTINE updateT ***
64      !!---------------------------------------------
65#  include "domzgr_substitute.h90"
66      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2
67      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: ptab
68      LOGICAL, INTENT(in) :: before
69      !!
70      INTEGER :: ji,jj,jk,jn
71      !!---------------------------------------------
72      !
73      IF (before) THEN
74         DO jn = n1,n2
75            DO jk=k1,k2
76               DO jj=j1,j2
77                  DO ji=i1,i2
78                     ptab(ji,jj,jk,jn) = trn(ji,jj,jk,jn)
79                  END DO
80               END DO
81            END DO
82         END DO
83      ELSE
84         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN
85            ! Add asselin part
86            DO jn = n1,n2
87               DO jk=k1,k2
88                  DO jj=j1,j2
89                     DO ji=i1,i2
90                        IF( ptab(ji,jj,jk,jn) .NE. 0. ) THEN
91                           trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) & 
92                                 & + atfp * ( ptab(ji,jj,jk,jn) &
93                                 &             - trn(ji,jj,jk,jn) ) * tmask(ji,jj,jk)
94                        ENDIF
95                     ENDDO
96                  ENDDO
97               ENDDO
98            ENDDO
99         ENDIF
100         DO jn = n1,n2
101            DO jk=k1,k2
102               DO jj=j1,j2
103                  DO ji=i1,i2
104                     IF( ptab(ji,jj,jk,jn) .NE. 0. ) THEN
105                        trn(ji,jj,jk,jn) = ptab(ji,jj,jk,jn) * tmask(ji,jj,jk)
106                     END IF
107                  END DO
108               END DO
109            END DO
110         END DO
111      ENDIF
112      !
113   END SUBROUTINE updateTRC
114
115#else
116CONTAINS
117   SUBROUTINE agrif_top_update_empty
118      !!---------------------------------------------
119      !!   *** ROUTINE agrif_Top_update_empty ***
120      !!---------------------------------------------
121      WRITE(*,*)  'agrif_top_update : You should not have seen this print! error?'
122   END SUBROUTINE agrif_top_update_empty
123#endif
124END MODULE agrif_top_update
Note: See TracBrowser for help on using the repository browser.