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 3916 – NEMO

Changeset 3916


Ignore:
Timestamp:
2013-06-12T23:03:47+02:00 (11 years ago)
Author:
smasson
Message:

trunk: (kind of) bugfix in agrif, see tricket #1111

Location:
trunk/NEMOGCM/NEMO/NST_SRC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/NST_SRC/agrif_lim2_interp.F90

    r3680 r3916  
    334334      !!  we are in inside a new parent ice time step 
    335335     !!----------------------------------------------------------------------- 
    336       REAL(wp), DIMENSION(jpi,jpj,7) :: ztab  
     336      REAL(wp), DIMENSION(jpi,jpj,7) :: ztab3d  
    337337      INTEGER :: ji,jj,jn 
    338338      !!----------------------------------------------------------------------- 
     
    345345         adv_ice_sn(:,:,:,1) =  adv_ice_sn(:,:,:,2) 
    346346         ! interpolation of boundaries 
    347          ztab(:,:,:) = 0. 
     347         ztab3d(:,:,:) = 0. 
    348348         Agrif_SpecialValue=-9999. 
    349349         Agrif_UseSpecialValue = .TRUE. 
    350          CALL Agrif_Bc_variable( ztab, adv_ice_id ,procname=interp_adv_ice,calledweight=1. ) 
     350         CALL Agrif_Bc_variable( ztab3d, adv_ice_id ,procname=interp_adv_ice,calledweight=1. ) 
    351351         Agrif_SpecialValue=0. 
    352352         Agrif_UseSpecialValue = .FALSE. 
     
    356356            DO jj = 1, jpj 
    357357               DO ji=1,2 
    358                   adv_ice_oe(ji  ,jj,jn,2) = ztab(ji       ,jj,jn)  
    359                   adv_ice_oe(ji+2,jj,jn,2) = ztab(nlci-2+ji,jj,jn) 
     358                  adv_ice_oe(ji  ,jj,jn,2) = ztab3d(ji       ,jj,jn)  
     359                  adv_ice_oe(ji+2,jj,jn,2) = ztab3d(nlci-2+ji,jj,jn) 
    360360               END DO 
    361361            END DO 
     
    365365            Do jj =1,2 
    366366               DO ji = 1, jpi 
    367                   adv_ice_sn(ji,jj  ,jn,2) = ztab(ji,jj       ,jn)  
    368                   adv_ice_sn(ji,jj+2,jn,2) = ztab(ji,nlcj-2+jj,jn) 
     367                  adv_ice_sn(ji,jj  ,jn,2) = ztab3d(ji,jj       ,jn)  
     368                  adv_ice_sn(ji,jj+2,jn,2) = ztab3d(ji,nlcj-2+jj,jn) 
    369369               END DO 
    370370            END DO 
     
    384384      INTEGER :: ji,jj,jn 
    385385      REAL(wp) :: zalpha 
    386       REAL(wp), DIMENSION(jpi,jpj,7) :: ztab  
     386      REAL(wp), DIMENSION(jpi,jpj,7) :: ztab3d  
    387387      !!-----------------------------------------------------------------------       
    388388      ! 
     
    391391      zalpha = REAL(lim_nbstep,wp) / (Agrif_Rhot()*Agrif_PArent(nn_fsbc)/REAL(nn_fsbc)) 
    392392      ! 
    393       ztab(:,:,:) = 0.e0 
     393      ztab3d(:,:,:) = 0.e0 
    394394      DO jn =1,7 
    395395         DO jj =1,2 
    396396            DO ji = 1, jpi 
    397                ztab(ji,jj        ,jn) = (1-zalpha)*adv_ice_sn(ji,jj  ,jn,1) + zalpha*adv_ice_sn(ji,jj  ,jn,2)  
    398                ztab(ji,nlcj-2+jj ,jn) = (1-zalpha)*adv_ice_sn(ji,jj+2,jn,1) + zalpha*adv_ice_sn(ji,jj+2,jn,2)  
     397               ztab3d(ji,jj        ,jn) = (1-zalpha)*adv_ice_sn(ji,jj  ,jn,1) + zalpha*adv_ice_sn(ji,jj  ,jn,2)  
     398               ztab3d(ji,nlcj-2+jj ,jn) = (1-zalpha)*adv_ice_sn(ji,jj+2,jn,1) + zalpha*adv_ice_sn(ji,jj+2,jn,2)  
    399399            END DO 
    400400         END DO 
     
    404404         DO jj = 1, jpj 
    405405            DO ji=1,2 
    406                ztab(ji       ,jj,jn) = (1-zalpha)*adv_ice_oe(ji  ,jj,jn,1) + zalpha*adv_ice_oe(ji  ,jj,jn,2)  
    407                ztab(nlci-2+ji,jj,jn) = (1-zalpha)*adv_ice_oe(ji+2,jj,jn,1) + zalpha*adv_ice_oe(ji+2,jj,jn,2)  
    408             END DO 
    409          END DO 
    410       END DO 
    411       ! 
    412       CALL parcoursT( ztab(:,:, 1), frld  ) 
    413       CALL parcoursT( ztab(:,:, 2), hicif ) 
    414       CALL parcoursT( ztab(:,:, 3), hsnif ) 
    415       CALL parcoursT( ztab(:,:, 4), tbif(:,:,1) ) 
    416       CALL parcoursT( ztab(:,:, 5), tbif(:,:,2) ) 
    417       CALL parcoursT( ztab(:,:, 6), tbif(:,:,3) ) 
    418       CALL parcoursT( ztab(:,:, 7), qstoif ) 
     406               ztab3d(ji       ,jj,jn) = (1-zalpha)*adv_ice_oe(ji  ,jj,jn,1) + zalpha*adv_ice_oe(ji  ,jj,jn,2)  
     407               ztab3d(nlci-2+ji,jj,jn) = (1-zalpha)*adv_ice_oe(ji+2,jj,jn,1) + zalpha*adv_ice_oe(ji+2,jj,jn,2)  
     408            END DO 
     409         END DO 
     410      END DO 
     411      ! 
     412      CALL parcoursT( ztab3d(:,:, 1), frld  ) 
     413      CALL parcoursT( ztab3d(:,:, 2), hicif ) 
     414      CALL parcoursT( ztab3d(:,:, 3), hsnif ) 
     415      CALL parcoursT( ztab3d(:,:, 4), tbif(:,:,1) ) 
     416      CALL parcoursT( ztab3d(:,:, 5), tbif(:,:,2) ) 
     417      CALL parcoursT( ztab3d(:,:, 6), tbif(:,:,3) ) 
     418      CALL parcoursT( ztab3d(:,:, 7), qstoif ) 
    419419      ! 
    420420   END SUBROUTINE agrif_trp_lim2 
  • trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90

    r3698 r3916  
    3434      REAL(wp) :: ztsa, zabe1, zabe2, zbtr 
    3535      REAL(wp), POINTER, DIMENSION(:,:    ) :: ztu, ztv 
    36       REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztab 
     36      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztab4d 
    3737      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: tsbdiff 
    3838 
    3939#if defined SPONGE 
    4040      CALL wrk_alloc( jpi, jpj, ztu, ztv ) 
    41       CALL wrk_alloc( jpi, jpj, jpk, jpts, ztab, tsbdiff  ) 
     41      CALL wrk_alloc( jpi, jpj, jpk, jpts, ztab4d, tsbdiff  ) 
    4242 
    4343      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    4545      Agrif_SpecialValue=0. 
    4646      Agrif_UseSpecialValue = .TRUE. 
    47       ztab = 0.e0 
    48       CALL Agrif_Bc_Variable(ztab, tsa_id,calledweight=timecoeff,procname=interptsn) 
     47      ztab4d = 0.e0 
     48      CALL Agrif_Bc_Variable(ztab4d, tsa_id,calledweight=timecoeff,procname=interptsn) 
    4949      Agrif_UseSpecialValue = .FALSE. 
    5050 
    51       tsbdiff(:,:,:,:) = tsb(:,:,:,:) - ztab(:,:,:,:) 
     51      tsbdiff(:,:,:,:) = tsb(:,:,:,:) - ztab4d(:,:,:,:) 
    5252 
    5353      CALL Agrif_Sponge 
     
    8080 
    8181      CALL wrk_dealloc( jpi, jpj, ztu, ztv ) 
    82       CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztab, tsbdiff  ) 
     82      CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztab4d, tsbdiff  ) 
    8383#endif 
    8484 
     
    9595      REAL(wp), POINTER, DIMENSION(:,:,:) :: ubdiff, vbdiff 
    9696      REAL(wp), POINTER, DIMENSION(:,:,:) :: rotdiff, hdivdiff 
    97       REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab 
     97      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab3d 
    9898 
    9999#if defined SPONGE 
    100       CALL wrk_alloc( jpi, jpj, jpk, ztab, ubdiff, vbdiff, rotdiff, hdivdiff ) 
     100      CALL wrk_alloc( jpi, jpj, jpk, ztab3d, ubdiff, vbdiff, rotdiff, hdivdiff ) 
    101101 
    102102      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    104104      Agrif_SpecialValue=0. 
    105105      Agrif_UseSpecialValue = ln_spc_dyn 
    106       ztab = 0.e0 
    107       CALL Agrif_Bc_Variable(ztab, ua_id,calledweight=timecoeff,procname=interpun) 
     106      ztab3d = 0.e0 
     107      CALL Agrif_Bc_Variable(ztab3d, ua_id,calledweight=timecoeff,procname=interpun) 
    108108      Agrif_UseSpecialValue = .FALSE. 
    109109 
    110       ubdiff(:,:,:) = ( ub(:,:,:) - ztab(:,:,:) ) * umask(:,:,:) 
    111  
    112       ztab = 0.e0 
     110      ubdiff(:,:,:) = ( ub(:,:,:) - ztab3d(:,:,:) ) * umask(:,:,:) 
     111 
     112      ztab3d = 0.e0 
    113113      Agrif_SpecialValue=0. 
    114114      Agrif_UseSpecialValue = ln_spc_dyn 
    115       CALL Agrif_Bc_Variable(ztab, va_id,calledweight=timecoeff,procname=interpvn) 
     115      CALL Agrif_Bc_Variable(ztab3d, va_id,calledweight=timecoeff,procname=interpvn) 
    116116      Agrif_UseSpecialValue = .FALSE. 
    117117 
    118       vbdiff(:,:,:) = ( vb(:,:,:) - ztab(:,:,:) ) * vmask(:,:,:) 
     118      vbdiff(:,:,:) = ( vb(:,:,:) - ztab3d(:,:,:) ) * vmask(:,:,:) 
    119119 
    120120      CALL Agrif_Sponge 
     
    174174      END DO                                           !   End of slab 
    175175      !                                                ! =============== 
    176       CALL wrk_dealloc( jpi, jpj, jpk, ztab, ubdiff, vbdiff, rotdiff, hdivdiff ) 
     176      CALL wrk_dealloc( jpi, jpj, jpk, ztab3d, ubdiff, vbdiff, rotdiff, hdivdiff ) 
    177177#endif 
    178178 
  • trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r3294 r3916  
    3232      !! 
    3333      INTEGER, INTENT(in) :: kt 
    34       REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztab 
     34      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztab4d 
    3535 
    3636        
    3737      IF((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) RETURN 
    3838#if defined TWO_WAY 
    39       CALL wrk_alloc( jpi, jpj, jpk, jpts, ztab ) 
     39      CALL wrk_alloc( jpi, jpj, jpk, jpts, ztab4d ) 
    4040 
    4141      Agrif_UseSpecialValueInUpdate = .TRUE. 
     
    4343 
    4444      IF (MOD(nbcline,nbclineupdate) == 0) THEN 
    45          CALL Agrif_Update_Variable(ztab,tsn_id, procname=updateTS) 
    46       ELSE 
    47          CALL Agrif_Update_Variable(ztab,tsn_id,locupdate=(/0,2/), procname=updateTS) 
     45         CALL Agrif_Update_Variable(ztab4d,tsn_id, procname=updateTS) 
     46      ELSE 
     47         CALL Agrif_Update_Variable(ztab4d,tsn_id,locupdate=(/0,2/), procname=updateTS) 
    4848      ENDIF 
    4949 
    5050      Agrif_UseSpecialValueInUpdate = .FALSE. 
    5151 
    52       CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztab ) 
     52      CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztab4d ) 
    5353#endif 
    5454 
     
    6262      INTEGER, INTENT(in) :: kt 
    6363      REAL(wp), POINTER, DIMENSION(:,:) :: ztab2d 
    64       REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab 
     64      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab3d 
    6565 
    6666 
     
    6868#if defined TWO_WAY 
    6969      CALL wrk_alloc( jpi, jpj,      ztab2d ) 
    70       CALL wrk_alloc( jpi, jpj, jpk, ztab  ) 
     70      CALL wrk_alloc( jpi, jpj, jpk, ztab3d ) 
    7171 
    7272      IF (mod(nbcline,nbclineupdate) == 0) THEN 
    73          CALL Agrif_Update_Variable(ztab,un_id,procname = updateU) 
    74          CALL Agrif_Update_Variable(ztab,vn_id,procname = updateV) 
    75       ELSE 
    76          CALL Agrif_Update_Variable(ztab,un_id,locupdate=(/0,1/),procname = updateU) 
    77          CALL Agrif_Update_Variable(ztab,vn_id,locupdate=(/0,1/),procname = updateV)          
     73         CALL Agrif_Update_Variable(ztab3d,un_id,procname = updateU) 
     74         CALL Agrif_Update_Variable(ztab3d,vn_id,procname = updateV) 
     75      ELSE 
     76         CALL Agrif_Update_Variable(ztab3d,un_id,locupdate=(/0,1/),procname = updateU) 
     77         CALL Agrif_Update_Variable(ztab3d,vn_id,locupdate=(/0,1/),procname = updateV)          
    7878      ENDIF 
    7979 
     
    8989 
    9090      CALL wrk_dealloc( jpi, jpj,      ztab2d ) 
    91       CALL wrk_dealloc( jpi, jpj, jpk, ztab  ) 
     91      CALL wrk_dealloc( jpi, jpj, jpk, ztab3d ) 
    9292 
    9393!Done in step 
Note: See TracChangeset for help on using the changeset viewer.