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 8500 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90 – NEMO

Ignore:
Timestamp:
2017-09-06T12:01:34+02:00 (7 years ago)
Author:
clem
Message:

changes in style - part3 - move output into proper files and correct a bug in debug mode

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90

    r8498 r8500  
    422422            ! 
    423423            jl1 = kdonor(ji,jl) 
    424             IF ( jl1 == jl  ) THEN   ;   jl2 = jl1+1 
    425             ELSE                     ;   jl2 = jl  
    426             ENDIF 
    427             ! 
    428             IF( v_i_2d(ji,jl1) >= epsi10 ) THEN   ;   zworkv(ji) = pdvice(ji,jl) / v_i_2d(ji,jl1) 
    429             ELSE                                  ;   zworkv(ji) = 0._wp 
    430             ENDIF 
    431             IF( a_i_2d(ji,jl1) >= epsi10 ) THEN   ;   zworka(ji) = pdaice(ji,jl) / a_i_2d(ji,jl1) 
    432             ELSE                                  ;   zworka(ji) = 0._wp 
    433             ENDIF 
    434             ! 
    435             a_i_2d(ji,jl1) = a_i_2d(ji,jl1) - pdaice(ji,jl)       ! Ice areas 
    436             a_i_2d(ji,jl2) = a_i_2d(ji,jl2) + pdaice(ji,jl) 
    437             ! 
    438             v_i_2d(ji,jl1) = v_i_2d(ji,jl1) - pdvice(ji,jl)       ! Ice volumes 
    439             v_i_2d(ji,jl2) = v_i_2d(ji,jl2) + pdvice(ji,jl) 
    440             ! 
    441             ztrans         = v_s_2d(ji,jl1) * zworkv(ji)          ! Snow volumes 
    442             v_s_2d(ji,jl1) = v_s_2d(ji,jl1) - ztrans 
    443             v_s_2d(ji,jl2) = v_s_2d(ji,jl2) + ztrans  
    444             !           
    445             !                                                     ! Ice age  
    446             ztrans             = oa_i_2d(ji,jl1) * pdaice(ji,jl)  !!clem: should be * zworka(ji) but it does not work ???? 
    447             oa_i_2d(ji,jl1)    = oa_i_2d(ji,jl1) - ztrans 
    448             oa_i_2d(ji,jl2)    = oa_i_2d(ji,jl2) + ztrans 
    449             ! 
    450             ztrans             = smv_i_2d(ji,jl1) * zworkv(ji)    ! Ice salinity 
    451  
    452             smv_i_2d(ji,jl1)   = smv_i_2d(ji,jl1) - ztrans 
    453             smv_i_2d(ji,jl2)   = smv_i_2d(ji,jl2) + ztrans 
    454             ! 
    455             !                                                     ! Surface temperature 
    456             ztrans          = t_su_2d(ji,jl1) * pdaice(ji,jl)     !!clem: should be * zworka(ji) but it does not work ???? 
    457             zaTsfn(ji,jl1)  = zaTsfn(ji,jl1) - ztrans 
    458             zaTsfn(ji,jl2)  = zaTsfn(ji,jl2) + ztrans 
    459             !   
    460             ! MV MP 2016  
    461             IF ( nn_pnd_scheme > 0 ) THEN 
    462                !                                                  ! Pond fraction 
    463                ztrans          = a_ip_2d(ji,jl1) * pdaice(ji,jl) !!clem: should be * zworka(ji) but it does not work 
    464                a_ip_2d(ji,jl1) = a_ip_2d(ji,jl1) - ztrans 
    465                a_ip_2d(ji,jl2) = a_ip_2d(ji,jl2) + ztrans 
    466                !                                                  ! Pond volume (also proportional to da/a) 
    467                ztrans          = v_ip_2d(ji,jl1) * pdaice(ji,jl) !!clem: should be * zworka(ji) but it does not work 
    468                v_ip_2d(ji,jl1) = v_ip_2d(ji,jl1) - ztrans 
    469                v_ip_2d(ji,jl2) = v_ip_2d(ji,jl2) + ztrans 
    470             ENDIF 
    471             ! END MV MP 2016  
     424            ! 
     425            IF( jl1 > 0 ) THEN 
     426               ! 
     427               IF ( jl1 == jl  ) THEN   ;   jl2 = jl1+1 
     428               ELSE                     ;   jl2 = jl  
     429               ENDIF 
     430               ! 
     431               IF( v_i_2d(ji,jl1) >= epsi10 ) THEN   ;   zworkv(ji) = pdvice(ji,jl) / v_i_2d(ji,jl1) 
     432               ELSE                                  ;   zworkv(ji) = 0._wp 
     433               ENDIF 
     434               IF( a_i_2d(ji,jl1) >= epsi10 ) THEN   ;   zworka(ji) = pdaice(ji,jl) / a_i_2d(ji,jl1) 
     435               ELSE                                  ;   zworka(ji) = 0._wp 
     436               ENDIF 
     437               ! 
     438               a_i_2d(ji,jl1) = a_i_2d(ji,jl1) - pdaice(ji,jl)       ! Ice areas 
     439               a_i_2d(ji,jl2) = a_i_2d(ji,jl2) + pdaice(ji,jl) 
     440               ! 
     441               v_i_2d(ji,jl1) = v_i_2d(ji,jl1) - pdvice(ji,jl)       ! Ice volumes 
     442               v_i_2d(ji,jl2) = v_i_2d(ji,jl2) + pdvice(ji,jl) 
     443               ! 
     444               ztrans         = v_s_2d(ji,jl1) * zworkv(ji)          ! Snow volumes 
     445               v_s_2d(ji,jl1) = v_s_2d(ji,jl1) - ztrans 
     446               v_s_2d(ji,jl2) = v_s_2d(ji,jl2) + ztrans  
     447               !           
     448               !                                                     ! Ice age  
     449               ztrans             = oa_i_2d(ji,jl1) * pdaice(ji,jl)  !!clem: should be * zworka(ji) but it does not work ???? 
     450               oa_i_2d(ji,jl1)    = oa_i_2d(ji,jl1) - ztrans 
     451               oa_i_2d(ji,jl2)    = oa_i_2d(ji,jl2) + ztrans 
     452               ! 
     453               ztrans             = smv_i_2d(ji,jl1) * zworkv(ji)    ! Ice salinity 
     454               ! 
     455               smv_i_2d(ji,jl1)   = smv_i_2d(ji,jl1) - ztrans 
     456               smv_i_2d(ji,jl2)   = smv_i_2d(ji,jl2) + ztrans 
     457               ! 
     458               !                                                     ! Surface temperature 
     459               ztrans          = t_su_2d(ji,jl1) * pdaice(ji,jl)     !!clem: should be * zworka(ji) but it does not work ???? 
     460               zaTsfn(ji,jl1)  = zaTsfn(ji,jl1) - ztrans 
     461               zaTsfn(ji,jl2)  = zaTsfn(ji,jl2) + ztrans 
     462               !   
     463               ! MV MP 2016  
     464               IF ( nn_pnd_scheme > 0 ) THEN 
     465                  !                                                  ! Pond fraction 
     466                  ztrans          = a_ip_2d(ji,jl1) * pdaice(ji,jl) !!clem: should be * zworka(ji) but it does not work 
     467                  a_ip_2d(ji,jl1) = a_ip_2d(ji,jl1) - ztrans 
     468                  a_ip_2d(ji,jl2) = a_ip_2d(ji,jl2) + ztrans 
     469                  !                                                  ! Pond volume (also proportional to da/a) 
     470                  ztrans          = v_ip_2d(ji,jl1) * pdaice(ji,jl) !!clem: should be * zworka(ji) but it does not work 
     471                  v_ip_2d(ji,jl1) = v_ip_2d(ji,jl1) - ztrans 
     472                  v_ip_2d(ji,jl2) = v_ip_2d(ji,jl2) + ztrans 
     473               ENDIF 
     474               ! END MV MP 2016 
     475               ! 
     476            ENDIF   ! jl1 >0 
    472477         END DO 
    473478         ! 
     
    479484               ! 
    480485               jl1 = kdonor(ji,jl) 
    481                IF(jl1 == jl) THEN  ;  jl2 = jl+1 
    482                ELSE                ;  jl2 = jl 
    483                ENDIF 
    484                ! 
    485                ztrans            = e_s(ii,ij,jk,jl1) * zworkv(ji) 
    486                e_s(ii,ij,jk,jl1) = e_s(ii,ij,jk,jl1) - ztrans 
    487                e_s(ii,ij,jk,jl2) = e_s(ii,ij,jk,jl2) + ztrans  
     486               ! 
     487               IF( jl1 > 0 ) THEN 
     488                  IF(jl1 == jl) THEN  ;  jl2 = jl+1 
     489                  ELSE                ;  jl2 = jl 
     490                  ENDIF 
     491                  ! 
     492                  ztrans            = e_s(ii,ij,jk,jl1) * zworkv(ji) 
     493                  e_s(ii,ij,jk,jl1) = e_s(ii,ij,jk,jl1) - ztrans 
     494                  e_s(ii,ij,jk,jl2) = e_s(ii,ij,jk,jl2) + ztrans 
     495               ENDIF 
    488496            END DO 
    489497         END DO 
     
    495503               ! 
    496504               jl1 = kdonor(ji,jl) 
    497                IF(jl1 == jl) THEN  ;  jl2 = jl+1 
    498                ELSE                ;  jl2 = jl 
    499                ENDIF 
    500                ! 
    501                ztrans            = e_i(ii,ij,jk,jl1) * zworkv(ji) 
    502                e_i(ii,ij,jk,jl1) = e_i(ii,ij,jk,jl1) - ztrans 
    503                e_i(ii,ij,jk,jl2) = e_i(ii,ij,jk,jl2) + ztrans  
     505               ! 
     506               IF( jl1 > 0 ) THEN 
     507                  IF(jl1 == jl) THEN  ;  jl2 = jl+1 
     508                  ELSE                ;  jl2 = jl 
     509                  ENDIF 
     510                  ! 
     511                  ztrans            = e_i(ii,ij,jk,jl1) * zworkv(ji) 
     512                  e_i(ii,ij,jk,jl1) = e_i(ii,ij,jk,jl1) - ztrans 
     513                  e_i(ii,ij,jk,jl2) = e_i(ii,ij,jk,jl2) + ztrans 
     514               ENDIF 
    504515            END DO 
    505516         END DO 
     
    510521      ! 3) Update ice thickness and temperature 
    511522      !------------------------------------------------------------------------------- 
    512       DO jl = 1, jpl 
    513          DO ji = 1, nidx 
    514             IF ( a_i_2d(ji,jl) > epsi10 ) THEN  
    515                ht_i_2d(ji,jl)  =  v_i_2d(ji,jl) / a_i_2d(ji,jl)  
    516                t_su_2d(ji,jl)  =  zaTsfn(ji,jl) / a_i_2d(ji,jl)  
    517             ELSE 
    518                ht_i_2d(ji,jl)  = 0._wp 
    519                t_su_2d(ji,jl)  = rt0 
    520             ENDIF 
    521          END DO 
    522       END DO 
     523      WHERE( a_i_2d(1:nidx,:) >= epsi20 ) 
     524         ht_i_2d(1:nidx,:)  =  v_i_2d(1:nidx,:) / a_i_2d(1:nidx,:)  
     525         t_su_2d(1:nidx,:)  =  zaTsfn(1:nidx,:) / a_i_2d(1:nidx,:)  
     526      ELSEWHERE 
     527         ht_i_2d(1:nidx,:)  = 0._wp 
     528         t_su_2d(1:nidx,:)  = rt0 
     529      END WHERE 
    523530      ! 
    524531      CALL tab_2d_3d( nidx, idxice(1:nidx), ht_i_2d (1:nidx,1:jpl), ht_i  ) 
Note: See TracChangeset for help on using the changeset viewer.