Changeset 6140 for trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90
- Timestamp:
- 2015-12-21T12:35:23+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90
r5656 r6140 3 3 4 4 MODULE agrif_top_update 5 !!====================================================================== 6 !! *** MODULE agrif_top_update *** 7 !! AGRIF : 8 !!---------------------------------------------------------------------- 9 !! History : 10 !!---------------------------------------------------------------------- 5 11 6 12 #if defined key_agrif && defined key_top 7 13 USE par_oce 8 14 USE oce 15 USE par_trc 16 USE trc 9 17 USE dom_oce 10 18 USE agrif_oce 11 USE par_trc12 USE trc13 19 USE wrk_nemo 14 20 … … 18 24 PUBLIC Agrif_Update_Trc 19 25 20 INTEGER, PUBLIC :: nbcline_trc = 026 INTEGER, PUBLIC :: nbcline_trc = 0 !: ??? 21 27 22 28 !!---------------------------------------------------------------------- 23 !! NEMO/NST 3. 3 , NEMO Consortium (2010)29 !! NEMO/NST 3.7 , NEMO Consortium (2015) 24 30 !! $Id$ 25 31 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 26 32 !!---------------------------------------------------------------------- 27 28 33 CONTAINS 29 34 30 35 SUBROUTINE Agrif_Update_Trc( kt ) 31 !!--------------------------------------------- 32 !! *** ROUTINE Agrif_Update_Trc ***33 !!--------------------------------------------- 34 INTEGER, INTENT(in) :: kt35 !!--------------------------------------------- 36 !!---------------------------------------------------------------------- 37 !! *** ROUTINE Agrif_Update_Trc *** 38 !!---------------------------------------------------------------------- 39 INTEGER, INTENT(in) :: kt 40 !!---------------------------------------------------------------------- 36 41 ! 37 42 IF((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) RETURN 38 43 #if defined TWO_WAY 39 44 Agrif_UseSpecialValueInUpdate = .TRUE. 40 Agrif_SpecialValueFineGrid = 0.45 Agrif_SpecialValueFineGrid = 0._wp 41 46 ! 42 IF (MOD(nbcline_trc,nbclineupdate) == 0) THEN47 IF( MOD(nbcline_trc,nbclineupdate) == 0 ) THEN 43 48 # if ! defined DECAL_FEEDBACK 44 CALL Agrif_Update_Variable(trn_id, procname=updateTRC )49 CALL Agrif_Update_Variable(trn_id, procname=updateTRC ) 45 50 # else 46 CALL Agrif_Update_Variable(trn_id, locupdate=(/1,0/),procname=updateTRC )51 CALL Agrif_Update_Variable(trn_id, locupdate=(/1,0/),procname=updateTRC ) 47 52 # endif 48 53 ELSE 49 54 # if ! defined DECAL_FEEDBACK 50 CALL Agrif_Update_Variable( trn_id,locupdate=(/0,2/), procname=updateTRC)55 CALL Agrif_Update_Variable( trn_id, locupdate=(/0,2/), procname=updateTRC ) 51 56 # else 52 CALL Agrif_Update_Variable( trn_id,locupdate=(/1,2/), procname=updateTRC)57 CALL Agrif_Update_Variable( trn_id, locupdate=(/1,2/), procname=updateTRC ) 53 58 # endif 54 59 ENDIF … … 60 65 END SUBROUTINE Agrif_Update_Trc 61 66 67 62 68 SUBROUTINE updateTRC( ptab, i1, i2, j1, j2, k1, k2, n1, n2, before ) 63 !!--------------------------------------------- 64 !! *** ROUTINE updateT *** 65 !!--------------------------------------------- 66 # include "domzgr_substitute.h90" 67 INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2 68 REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: ptab 69 LOGICAL, INTENT(in) :: before 69 !!---------------------------------------------------------------------- 70 !! *** ROUTINE updateT *** 71 !!---------------------------------------------------------------------- 72 INTEGER , INTENT(in ) :: i1, i2, j1, j2, k1, k2, n1, n2 73 REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: ptab 74 LOGICAL , INTENT(in ) :: before 70 75 !! 71 INTEGER :: ji,jj,jk,jn72 !!--------------------------------------------- 76 INTEGER :: ji, jj, jk, jn 77 !!---------------------------------------------------------------------- 73 78 ! 74 IF (before) THEN 75 DO jn = n1,n2 76 DO jk=k1,k2 77 DO jj=j1,j2 78 DO ji=i1,i2 79 ptab(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 79 IF( before ) THEN 80 ptab(i1:i2,j1:j2,k1:k2,n1:n2) = trn(i1:i2,j1:j2,k1:k2,n1:n2) 81 ELSE 82 IF( .NOT.(lk_agrif_fstep.AND.(neuler==0)) ) THEN 83 ! Add asselin part 84 DO jn = n1,n2 85 DO jk = k1, k2 86 DO jj = j1, j2 87 DO ji = i1, i2 88 IF( ptab(ji,jj,jk,jn) /= 0._wp ) THEN 89 trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) & 90 & + atfp * ( ptab(ji,jj,jk,jn) & 91 & - trn(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 92 ENDIF 93 END DO 80 94 END DO 81 95 END DO 82 96 END DO 83 END DO84 ELSE85 IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN86 ! Add asselin part87 DO jn = n1,n288 DO jk=k1,k289 DO jj=j1,j290 DO ji=i1,i291 IF( ptab(ji,jj,jk,jn) .NE. 0. ) THEN92 trb(ji,jj,jk,jn) = trb(ji,jj,jk,jn) &93 & + atfp * ( ptab(ji,jj,jk,jn) &94 & - trn(ji,jj,jk,jn) ) * tmask(ji,jj,jk)95 ENDIF96 ENDDO97 ENDDO98 ENDDO99 ENDDO100 97 ENDIF 101 DO jn = n1, n2102 DO jk =k1,k2103 DO jj =j1,j2104 DO ji =i1,i2105 IF( ptab(ji,jj,jk,jn) .NE. 0.) THEN98 DO jn = n1, n2 99 DO jk = k1, k2 100 DO jj = j1, j2 101 DO ji = i1, i2 102 IF( ptab(ji,jj,jk,jn) /= 0._wp ) THEN 106 103 trn(ji,jj,jk,jn) = ptab(ji,jj,jk,jn) * tmask(ji,jj,jk) 107 104 END IF … … 123 120 END SUBROUTINE agrif_top_update_empty 124 121 #endif 122 123 !!====================================================================== 125 124 END MODULE agrif_top_update
Note: See TracChangeset
for help on using the changeset viewer.