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.
Changeset 2789 for branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90 – NEMO

Ignore:
Timestamp:
2011-06-27T13:18:25+02:00 (13 years ago)
Author:
cetlod
Message:

Implementation of the merge of TRA/TRP : first guess, see ticket #842

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r2715 r2789  
    3030      !!--------------------------------------------- 
    3131      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    32       USE wrk_nemo, ONLY: wrk_3d_1 
     32      USE wrk_nemo, ONLY: wrk_4d_1 
    3333      !! 
    3434      INTEGER, INTENT(in) :: kt 
    35       REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab 
     35      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztab 
    3636 
    3737        
    3838      IF((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) RETURN 
    3939#if defined TWO_WAY 
    40       ztab => wrk_3d_1 
    41       IF( wrk_in_use(3, 1) ) THEN 
     40      IF( wrk_in_use(4, 1) ) THEN 
    4241         CALL ctl_stop('agrif_update_tra: ERROR: requested workspace arrays unavailable') 
    4342         RETURN 
    4443      END IF 
     44      ztab => wrk_4d_1 
    4545 
    4646      Agrif_UseSpecialValueInUpdate = .TRUE. 
     
    4848 
    4949      IF (MOD(nbcline,nbclineupdate) == 0) THEN 
    50          CALL Agrif_Update_Variable(ztab,tn_id, procname=updateT) 
    51          CALL Agrif_Update_Variable(ztab,sn_id, procname=updateS) 
    52       ELSE 
    53          CALL Agrif_Update_Variable(ztab,tn_id,locupdate=(/0,2/), procname=updateT) 
    54          CALL Agrif_Update_Variable(ztab,sn_id,locupdate=(/0,2/), procname=updateS) 
     50         CALL Agrif_Update_Variable(ztab,tsn_id, procname=updateTS) 
     51      ELSE 
     52         CALL Agrif_Update_Variable(ztab,tsn_id,locupdate=(/0,2/), procname=updateTS) 
    5553      ENDIF 
    5654 
    5755      Agrif_UseSpecialValueInUpdate = .FALSE. 
    5856 
    59       IF( wrk_not_released(3, 1) ) THEN 
     57      IF( wrk_not_released(4, 1) ) THEN 
    6058         CALL ctl_stop('Agrif_Update_Tra: ERROR: failed to release workspace arrays') 
    6159      END IF 
     
    124122   END SUBROUTINE recompute_diags 
    125123 
    126    SUBROUTINE updateT( tabres, i1, i2, j1, j2, k1, k2, before ) 
     124   SUBROUTINE updateTS( tabres, i1, i2, j1, j2, k1, k2, n1, n2, before ) 
    127125      !!--------------------------------------------- 
    128126      !!           *** ROUTINE updateT *** 
     
    130128#  include "domzgr_substitute.h90" 
    131129 
    132       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    133       REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
     130      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2 
     131      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres 
    134132      LOGICAL, iNTENT(in) :: before 
    135133 
    136       INTEGER :: ji,jj,jk 
    137  
    138       IF (before) THEN 
    139          DO jk=k1,k2 
    140             DO jj=j1,j2 
    141                DO ji=i1,i2 
    142                   tabres(ji,jj,jk) = tn(ji,jj,jk) 
    143                END DO 
    144             END DO 
    145          END DO 
    146       ELSE 
    147          DO jk=k1,k2 
    148             DO jj=j1,j2 
    149                DO ji=i1,i2 
    150                   IF( tabres(ji,jj,jk) .NE. 0. ) THEN 
    151                      tn(ji,jj,jk) = tabres(ji,jj,jk) * tmask(ji,jj,jk) 
    152                   ENDIF 
    153                END DO 
    154             END DO 
    155          END DO 
    156       ENDIF 
    157  
    158    END SUBROUTINE updateT 
    159  
    160    SUBROUTINE updateS( tabres, i1, i2, j1, j2, k1, k2, before ) 
    161       !!--------------------------------------------- 
    162       !!           *** ROUTINE updateS *** 
    163       !!--------------------------------------------- 
    164 #  include "domzgr_substitute.h90" 
    165  
    166       INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2 
    167       REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
    168       LOGICAL, iNTENT(in) :: before 
    169  
    170       INTEGER :: ji,jj,jk 
    171  
    172       IF (before) THEN 
    173          DO jk=k1,k2 
    174             DO jj=j1,j2 
    175                DO ji=i1,i2 
    176                   tabres(ji,jj,jk) = sn(ji,jj,jk) 
    177                END DO 
    178             END DO 
    179          END DO 
    180       ELSE 
    181          DO jk=k1,k2 
    182             DO jj=j1,j2 
    183                DO ji=i1,i2 
    184                   IF (tabres(ji,jj,jk).NE.0.) THEN 
    185                      sn(ji,jj,jk) = tabres(ji,jj,jk) * tmask(ji,jj,jk) 
    186                   ENDIF 
    187                END DO 
    188             END DO 
    189          END DO 
    190       ENDIF 
    191  
    192    END SUBROUTINE updateS 
     134      INTEGER :: ji,jj,jk,jn 
     135 
     136      IF (before) THEN 
     137         DO jn = n1,n2 
     138            DO jk=k1,k2 
     139               DO jj=j1,j2 
     140                  DO ji=i1,i2 
     141                     tabres(ji,jj,jk,jn) = tsn(ji,jj,jk,jn) 
     142                  END DO 
     143               END DO 
     144            END DO 
     145         END DO 
     146      ELSE 
     147         DO jn = n1,n2 
     148            DO jk=k1,k2 
     149               DO jj=j1,j2 
     150                  DO ji=i1,i2 
     151                     IF( tabres(ji,jj,jk,jn) .NE. 0. ) THEN  
     152                         tsn(ji,jj,jk,jn) = tabres(ji,jj,jk,jn) * tmask(ji,jj,jk) 
     153                     END IF 
     154                  END DO 
     155               END DO 
     156            END DO 
     157         END DO 
     158      ENDIF 
     159 
     160   END SUBROUTINE updateTS 
    193161 
    194162   SUBROUTINE updateu( tabres, i1, i2, j1, j2, k1, k2, before ) 
Note: See TracChangeset for help on using the changeset viewer.