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 10411 for NEMO/branches/2018/dev_r9947_SI3_advection/src – NEMO

Ignore:
Timestamp:
2018-12-18T16:57:34+01:00 (5 years ago)
Author:
clem
Message:

make all the sette tests successful

Location:
NEMO/branches/2018/dev_r9947_SI3_advection/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9947_SI3_advection/src/ICE/icedyn.F90

    r10399 r10411  
    218218                  !                               ! -- check h_i -- ! 
    219219                  ! if h_i is larger than the surrounding 9 pts => reduce h_i and increase a_i 
    220                   zhi = v_i (ji,jj,jl) / a_i(ji,jj,jl) 
     220                  zhi = v_i(ji,jj,jl) / a_i(ji,jj,jl) 
    221221!!clem                  zdv = v_i(ji,jj,jl) - v_i_b(ji,jj,jl)   
    222222!!clem                  IF ( ( zdv >  0.0 .AND. zh > phmax(ji,jj,jl) .AND. at_i_b(ji,jj) < 0.80 ) .OR. & 
     
    228228                  !                               ! -- check h_s -- ! 
    229229                  ! if h_s is larger than the surrounding 9 pts => put the snow excess in the ocean 
    230                   zhs = v_s (ji,jj,jl) / a_i(ji,jj,jl) 
     230                  zhs = v_s(ji,jj,jl) / a_i(ji,jj,jl) 
    231231                  IF( v_s(ji,jj,jl) > 0._wp .AND. zhs > phs_max(ji,jj,jl) .AND. a_i(ji,jj,jl) < 0.15 ) THEN 
    232232                     zfra = a_i(ji,jj,jl) * phs_max(ji,jj,jl) / MAX( v_s(ji,jj,jl), epsi20 ) 
  • NEMO/branches/2018/dev_r9947_SI3_advection/src/ICE/icedyn_adv_umx.F90

    r10399 r10411  
    138138      ELSE                    ;   icycle = 1  
    139139      ENDIF 
    140  
     140       
    141141      zdt = rdt_ice / REAL(icycle) 
    142142 
     
    161161 
    162162      IF(.NOT. ALLOCATED(z1_ai))       ALLOCATE(z1_ai(jpi,jpj)) 
    163       IF(.NOT. ALLOCATED(amaxu))       ALLOCATE(amaxu (jpi,jpj)) 
    164       IF(.NOT. ALLOCATED(amaxv))       ALLOCATE(amaxv (jpi,jpj)) 
    165  
     163      IF( ll_zeroup2 ) THEN 
     164         IF(.NOT. ALLOCATED(amaxu))       ALLOCATE(amaxu (jpi,jpj)) 
     165         IF(.NOT. ALLOCATED(amaxv))       ALLOCATE(amaxv (jpi,jpj)) 
     166      ENDIF 
    166167      !---------------! 
    167168      !== advection ==! 
     
    365366                        &         * tmask(ji,jj,1) 
    366367                  ENDIF 
    367                   IF( ji==26 .AND. jj==86) THEN 
    368                      WRITE(numout,*) '************************' 
    369                      WRITE(numout,*) 'zpt upstream',zpt(ji,jj) 
    370                   ENDIF 
     368!!                  IF( ji==26 .AND. jj==86) THEN 
     369!!                     WRITE(numout,*) '************************' 
     370!!                     WRITE(numout,*) 'zpt upstream',zpt(ji,jj) 
     371!!                  ENDIF 
    371372               END DO 
    372373            END DO 
     
    412413                        &         * tmask(ji,jj,1) 
    413414                  ENDIF 
    414                   IF( ji==26 .AND. jj==86) THEN 
    415                      WRITE(numout,*) '************************' 
    416                      WRITE(numout,*) 'zpt upstream',zpt(ji,jj) 
    417                   ENDIF 
     415!!                  IF( ji==26 .AND. jj==86) THEN 
     416!!                     WRITE(numout,*) '************************' 
     417!!                     WRITE(numout,*) 'zpt upstream',zpt(ji,jj) 
     418!!                  ENDIF 
    418419                END DO 
    419420            END DO 
     
    462463               zt_ups(ji,jj) = ( ptc(ji,jj) + pdt * ztra ) * tmask(ji,jj,1) 
    463464            ENDIF 
    464             IF( ji==26 .AND. jj==86) THEN 
    465                WRITE(numout,*) '**************************' 
    466                WRITE(numout,*) 'zt upstream',zt_ups(ji,jj) 
    467             ENDIF 
     465!!            IF( ji==26 .AND. jj==86) THEN 
     466!!               WRITE(numout,*) '**************************' 
     467!!               WRITE(numout,*) 'zt upstream',zt_ups(ji,jj) 
     468!!            ENDIF 
    468469         END DO 
    469470      END DO 
     
    506507               IF( pt(ji,jj) < 0._wp .AND. pt(ji,jj) >= -epsi20 )   pt(ji,jj) = 0._wp 
    507508                
    508                IF( ji==26 .AND. jj==86) THEN 
    509                   WRITE(numout,*) 'zt high order',pt(ji,jj) 
    510                ENDIF 
     509!!               IF( ji==26 .AND. jj==86) THEN 
     510!!                  WRITE(numout,*) 'zt high order',pt(ji,jj) 
     511!!               ENDIF 
    511512            END DO 
    512513         END DO 
     
    590591               ptc(ji,jj) = ( ptc(ji,jj) + ztra ) * tmask(ji,jj,1) 
    591592                              
    592                IF( ji==26 .AND. jj==86) THEN 
    593                   WRITE(numout,*) 'ztc high order',ptc(ji,jj) 
    594                ENDIF 
     593!!               IF( ji==26 .AND. jj==86) THEN 
     594!!                  WRITE(numout,*) 'ztc high order',ptc(ji,jj) 
     595!!               ENDIF 
    595596                
    596597            END DO 
     
    12651266                  WRITE(numout,*) '*** 1 negative high order zzt ***',ji,jj,zzt(ji,jj) 
    12661267               ENDIF 
    1267                IF( ji==26 .AND. jj==86) THEN 
    1268                   WRITE(numout,*) 'zzt high order',zzt(ji,jj) 
    1269                   WRITE(numout,*) 'pfu_ho',(pfu_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
    1270                   WRITE(numout,*) 'pfv_ho',(pfv_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
    1271                   WRITE(numout,*) 'pfu_hom1',(pfu_ho(ji-1,jj)) * r1_e1e2t(ji,jj) * pdt 
    1272                   WRITE(numout,*) 'pfv_hom1',(pfv_ho(ji,jj-1)) * r1_e1e2t(ji,jj) * pdt 
    1273                ENDIF 
     1268!!               IF( ji==26 .AND. jj==86) THEN 
     1269!!                  WRITE(numout,*) 'zzt high order',zzt(ji,jj) 
     1270!!                  WRITE(numout,*) 'pfu_ho',(pfu_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
     1271!!                  WRITE(numout,*) 'pfv_ho',(pfv_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
     1272!!                  WRITE(numout,*) 'pfu_hom1',(pfu_ho(ji-1,jj)) * r1_e1e2t(ji,jj) * pdt 
     1273!!                  WRITE(numout,*) 'pfv_hom1',(pfv_ho(ji,jj-1)) * r1_e1e2t(ji,jj) * pdt 
     1274!!               ENDIF 
    12741275               IF( ll_gurvan ) THEN 
    12751276                  zzt(ji,jj) = ( pt(ji,jj) - ( pfu_ho(ji,jj) - pfu_ho(ji-1,jj) ) * pdt * r1_e1e2t(ji,jj)  & 
     
    14621463            ! 
    14631464 
    1464             IF( ji==26 .AND. jj==86) THEN 
    1465                WRITE(numout,*) '-----------------' 
    1466                WRITE(numout,*) 'zpos',zpos,zpos2 
    1467                WRITE(numout,*) 'zneg',zneg,zneg2 
    1468                WRITE(numout,*) 'puc/pu',ABS(puc(ji,jj))/MAX(epsi20, ABS(pu(ji,jj))) 
    1469                WRITE(numout,*) 'pvc/pv',ABS(pvc(ji,jj))/MAX(epsi20, ABS(pv(ji,jj))) 
    1470                WRITE(numout,*) 'pucm1/pu',ABS(puc(ji-1,jj))/MAX(epsi20, ABS(pu(ji-1,jj))) 
    1471                WRITE(numout,*) 'pvcm1/pv',ABS(pvc(ji,jj-1))/MAX(epsi20, ABS(pv(ji,jj-1))) 
    1472                WRITE(numout,*) 'pfu_ho',(pfu_ho(ji,jj)+pfu_low(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
    1473                WRITE(numout,*) 'pfv_ho',(pfv_ho(ji,jj)+pfv_low(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
    1474                WRITE(numout,*) 'pfu_hom1',(pfu_ho(ji-1,jj)+pfu_low(ji-1,jj)) * r1_e1e2t(ji,jj) * pdt 
    1475                WRITE(numout,*) 'pfv_hom1',(pfv_ho(ji,jj-1)+pfv_low(ji,jj-1)) * r1_e1e2t(ji,jj) * pdt 
    1476                WRITE(numout,*) 'pfu_low',pfu_low(ji,jj) * r1_e1e2t(ji,jj) * pdt 
    1477                WRITE(numout,*) 'pfv_low',pfv_low(ji,jj) * r1_e1e2t(ji,jj) * pdt 
    1478                WRITE(numout,*) 'pfu_lowm1',pfu_low(ji-1,jj) * r1_e1e2t(ji,jj) * pdt 
    1479                WRITE(numout,*) 'pfv_lowm1',pfv_low(ji,jj-1) * r1_e1e2t(ji,jj) * pdt 
    1480                 
    1481                WRITE(numout,*) 'pt',pt(ji,jj) 
    1482                WRITE(numout,*) 'ptim1',pt(ji-1,jj) 
    1483                WRITE(numout,*) 'ptjm1',pt(ji,jj-1) 
    1484                WRITE(numout,*) 'pt_low',pt_low(ji,jj) 
    1485                WRITE(numout,*) 'zbetup',zbetup(ji,jj) 
    1486                WRITE(numout,*) 'zbetdo',zbetdo(ji,jj) 
    1487                WRITE(numout,*) 'zup',zup 
    1488                WRITE(numout,*) 'zdo',zdo 
    1489             ENDIF 
     1465!!            IF( ji==26 .AND. jj==86) THEN 
     1466!               WRITE(numout,*) '-----------------' 
     1467!               WRITE(numout,*) 'zpos',zpos,zpos2 
     1468!               WRITE(numout,*) 'zneg',zneg,zneg2 
     1469!               WRITE(numout,*) 'puc/pu',ABS(puc(ji,jj))/MAX(epsi20, ABS(pu(ji,jj))) 
     1470!               WRITE(numout,*) 'pvc/pv',ABS(pvc(ji,jj))/MAX(epsi20, ABS(pv(ji,jj))) 
     1471!               WRITE(numout,*) 'pucm1/pu',ABS(puc(ji-1,jj))/MAX(epsi20, ABS(pu(ji-1,jj))) 
     1472!               WRITE(numout,*) 'pvcm1/pv',ABS(pvc(ji,jj-1))/MAX(epsi20, ABS(pv(ji,jj-1))) 
     1473!               WRITE(numout,*) 'pfu_ho',(pfu_ho(ji,jj)+pfu_low(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
     1474!               WRITE(numout,*) 'pfv_ho',(pfv_ho(ji,jj)+pfv_low(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
     1475!               WRITE(numout,*) 'pfu_hom1',(pfu_ho(ji-1,jj)+pfu_low(ji-1,jj)) * r1_e1e2t(ji,jj) * pdt 
     1476!               WRITE(numout,*) 'pfv_hom1',(pfv_ho(ji,jj-1)+pfv_low(ji,jj-1)) * r1_e1e2t(ji,jj) * pdt 
     1477!               WRITE(numout,*) 'pfu_low',pfu_low(ji,jj) * r1_e1e2t(ji,jj) * pdt 
     1478!               WRITE(numout,*) 'pfv_low',pfv_low(ji,jj) * r1_e1e2t(ji,jj) * pdt 
     1479!               WRITE(numout,*) 'pfu_lowm1',pfu_low(ji-1,jj) * r1_e1e2t(ji,jj) * pdt 
     1480!               WRITE(numout,*) 'pfv_lowm1',pfv_low(ji,jj-1) * r1_e1e2t(ji,jj) * pdt 
     1481!                
     1482!               WRITE(numout,*) 'pt',pt(ji,jj) 
     1483!               WRITE(numout,*) 'ptim1',pt(ji-1,jj) 
     1484!               WRITE(numout,*) 'ptjm1',pt(ji,jj-1) 
     1485!               WRITE(numout,*) 'pt_low',pt_low(ji,jj) 
     1486!               WRITE(numout,*) 'zbetup',zbetup(ji,jj) 
     1487!               WRITE(numout,*) 'zbetdo',zbetdo(ji,jj) 
     1488!               WRITE(numout,*) 'zup',zup 
     1489!               WRITE(numout,*) 'zdo',zdo 
     1490!            ENDIF 
    14901491            ! 
    14911492         END DO 
     
    15061507            pfu_ho(ji,jj) = pfu_ho(ji,jj) * zcoef + pfu_low(ji,jj) 
    15071508 
    1508             IF( ji==26 .AND. jj==86) THEN 
    1509                WRITE(numout,*) 'coefU',zcoef 
    1510                WRITE(numout,*) 'pfu_ho',(pfu_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
    1511                WRITE(numout,*) 'pfu_hom1',(pfu_ho(ji-1,jj)) * r1_e1e2t(ji,jj) * pdt 
    1512             ENDIF 
     1509!!            IF( ji==26 .AND. jj==86) THEN 
     1510!!               WRITE(numout,*) 'coefU',zcoef 
     1511!!               WRITE(numout,*) 'pfu_ho',(pfu_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
     1512!!               WRITE(numout,*) 'pfu_hom1',(pfu_ho(ji-1,jj)) * r1_e1e2t(ji,jj) * pdt 
     1513!!            ENDIF 
    15131514 
    15141515         END DO 
     
    15251526            pfv_ho(ji,jj) = pfv_ho(ji,jj) * zcoef + pfv_low(ji,jj) 
    15261527 
    1527             IF( ji==26 .AND. jj==86) THEN 
    1528                WRITE(numout,*) 'coefV',zcoef 
    1529                WRITE(numout,*) 'pfv_ho',(pfv_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
    1530                WRITE(numout,*) 'pfv_hom1',(pfv_ho(ji,jj-1)) * r1_e1e2t(ji,jj) * pdt 
    1531             ENDIF 
     1528!!            IF( ji==26 .AND. jj==86) THEN 
     1529!!               WRITE(numout,*) 'coefV',zcoef 
     1530!!               WRITE(numout,*) 'pfv_ho',(pfv_ho(ji,jj)) * r1_e1e2t(ji,jj) * pdt 
     1531!!               WRITE(numout,*) 'pfv_hom1',(pfv_ho(ji,jj-1)) * r1_e1e2t(ji,jj) * pdt 
     1532!!            ENDIF 
    15321533         END DO 
    15331534      END DO 
  • NEMO/branches/2018/dev_r9947_SI3_advection/src/ICE/icedyn_rdgrft.F90

    r10399 r10411  
    192192            ! divergence given by the advection scheme 
    193193            !   (which may not be equal to divu as computed from the velocity field) 
    194             IF( ln_adv_Pra ) THEN 
     194            IF    ( ln_adv_Pra ) THEN 
    195195               zdivu_adv(ji) = ( 1._wp - ato_i_1d(ji) - SUM( a_i_2d(ji,:) ) ) * r1_rdtice 
    196196            ELSEIF( ln_adv_UMx ) THEN 
  • NEMO/branches/2018/dev_r9947_SI3_advection/src/ICE/icevar.F90

    r9943 r10411  
    555555      !!------------------------------------------------------------------- 
    556556      ! 
     557      ! 
     558      DO jl = 1, jpl       !==  loop over the categories  ==! 
     559         ! 
     560         !---------------------------------------- 
     561         ! zap ice energy and send it to the ocean 
     562         !---------------------------------------- 
     563         DO jk = 1, nlay_i 
     564            DO jj = 1 , jpj 
     565               DO ji = 1 , jpi 
     566                  IF( pe_i(ji,jj,jk,jl) < 0._wp .OR. pa_i(ji,jj,jl) < 0._wp ) THEN 
     567                     hfx_res(ji,jj)   = hfx_res(ji,jj) - pe_i(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 
     568                     pe_i(ji,jj,jk,jl) = 0._wp 
     569                  ENDIF 
     570               END DO 
     571            END DO 
     572         END DO 
     573         ! 
     574         DO jk = 1, nlay_s 
     575            DO jj = 1 , jpj 
     576               DO ji = 1 , jpi 
     577                  IF( pe_s(ji,jj,jk,jl) < 0._wp .OR. pa_i(ji,jj,jl) < 0._wp ) THEN 
     578                     hfx_res(ji,jj)   = hfx_res(ji,jj) - pe_s(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 
     579                     pe_s(ji,jj,jk,jl) = 0._wp 
     580                  ENDIF 
     581               END DO 
     582            END DO 
     583         END DO 
     584         ! 
     585         !----------------------------------------------------- 
     586         ! zap ice and snow volume, add water and salt to ocean 
     587         !----------------------------------------------------- 
     588         DO jj = 1 , jpj 
     589            DO ji = 1 , jpi 
     590               IF( pv_i(ji,jj,jl) < 0._wp .OR. pa_i(ji,jj,jl) < 0._wp ) THEN 
     591                  wfx_res(ji,jj)    = wfx_res(ji,jj) + pv_i (ji,jj,jl) * rhoi * r1_rdtice 
     592                  pv_i   (ji,jj,jl) = 0._wp 
     593               ENDIF 
     594               IF( pv_s(ji,jj,jl) < 0._wp .OR. pa_i(ji,jj,jl) < 0._wp ) THEN 
     595                  wfx_res(ji,jj)    = wfx_res(ji,jj) + pv_s (ji,jj,jl) * rhos * r1_rdtice 
     596                  pv_s   (ji,jj,jl) = 0._wp 
     597               ENDIF 
     598               IF( psv_i(ji,jj,jl) < 0._wp .OR. pa_i(ji,jj,jl) < 0._wp ) THEN 
     599                  sfx_res(ji,jj)    = sfx_res(ji,jj) + psv_i(ji,jj,jl) * rhoi * r1_rdtice 
     600                  psv_i  (ji,jj,jl) = 0._wp 
     601               ENDIF 
     602            END DO 
     603         END DO 
     604         ! 
     605      END DO  
     606      ! 
    557607      WHERE( pato_i(:,:)   < 0._wp )   pato_i(:,:)   = 0._wp 
    558608      WHERE( poa_i (:,:,:) < 0._wp )   poa_i (:,:,:) = 0._wp 
     
    561611      WHERE( pv_ip (:,:,:) < 0._wp )   pv_ip (:,:,:) = 0._wp ! in theory one should change wfx_pnd(-) and wfx_sum(+) 
    562612      !                                                        but it does not change conservation, so keep it this way is ok 
    563       ! 
    564       DO jl = 1, jpl       !==  loop over the categories  ==! 
    565          ! 
    566          !---------------------------------------- 
    567          ! zap ice energy and send it to the ocean 
    568          !---------------------------------------- 
    569          DO jk = 1, nlay_i 
    570             DO jj = 1 , jpj 
    571                DO ji = 1 , jpi 
    572                   IF( pe_i(ji,jj,jk,jl) < 0._wp ) THEN 
    573                      hfx_res(ji,jj)   = hfx_res(ji,jj) - pe_i(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 
    574                      pe_i(ji,jj,jk,jl) = 0._wp 
    575                   ENDIF 
    576                END DO 
    577             END DO 
    578          END DO 
    579          ! 
    580          DO jk = 1, nlay_s 
    581             DO jj = 1 , jpj 
    582                DO ji = 1 , jpi 
    583                   IF( pe_s(ji,jj,jk,jl) < 0._wp ) THEN 
    584                      hfx_res(ji,jj)   = hfx_res(ji,jj) - pe_s(ji,jj,jk,jl) * r1_rdtice ! W.m-2 <0 
    585                      pe_s(ji,jj,jk,jl) = 0._wp 
    586                   ENDIF 
    587                END DO 
    588             END DO 
    589          END DO 
    590          ! 
    591          !----------------------------------------------------- 
    592          ! zap ice and snow volume, add water and salt to ocean 
    593          !----------------------------------------------------- 
    594          DO jj = 1 , jpj 
    595             DO ji = 1 , jpi 
    596               IF( pv_i(ji,jj,jl) < 0._wp ) THEN 
    597                   wfx_res(ji,jj)    = wfx_res(ji,jj) + pv_i (ji,jj,jl) * rhoi * r1_rdtice 
    598                   pv_i   (ji,jj,jl) = 0._wp 
    599                ENDIF 
    600                IF( pv_s(ji,jj,jl) < 0._wp ) THEN 
    601                   wfx_res(ji,jj)    = wfx_res(ji,jj) + pv_s (ji,jj,jl) * rhos * r1_rdtice 
    602                   pv_s   (ji,jj,jl) = 0._wp 
    603                ENDIF 
    604                IF( psv_i(ji,jj,jl) < 0._wp ) THEN 
    605                   sfx_res(ji,jj)    = sfx_res(ji,jj) + psv_i(ji,jj,jl) * rhoi * r1_rdtice 
    606                   psv_i  (ji,jj,jl) = 0._wp 
    607                ENDIF 
    608             END DO 
    609          END DO 
    610          ! 
    611       END DO  
    612613      ! 
    613614   END SUBROUTINE ice_var_zapneg 
  • NEMO/branches/2018/dev_r9947_SI3_advection/src/NST/agrif_oce.F90

    r9598 r10411  
    2222   !                                              !!* Namelist namagrif: AGRIF parameters 
    2323   LOGICAL , PUBLIC ::   ln_spc_dyn    = .FALSE.   !: 
    24    INTEGER , PUBLIC, PARAMETER ::   nn_sponge_len = 2  !: Sponge width (in number of parent grid points) 
     24   INTEGER , PUBLIC, PARAMETER ::   nn_sponge_len = 1  !: Sponge width (in number of parent grid points) 
    2525   REAL(wp), PUBLIC ::   rn_sponge_tra = 2800.     !: sponge coeff. for tracers 
    2626   REAL(wp), PUBLIC ::   rn_sponge_dyn = 2800.     !: sponge coeff. for dynamics 
Note: See TracChangeset for help on using the changeset viewer.