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 6746 for branches/2016/dev_v3_6_STABLE_r6506_AGRIF_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90 – NEMO

Ignore:
Timestamp:
2016-06-27T19:20:57+02:00 (8 years ago)
Author:
clem
Message:

landfast ice parameterization + update from trunk + removing useless dom_ice.F90 and limmsh.F90 and limwri_dimg.h90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_v3_6_STABLE_r6506_AGRIF_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r6515 r6746  
    1717   USE sbc_oce         ! Surface boundary condition: ocean fields 
    1818   USE sbc_ice         ! Surface boundary condition: ice fields 
    19    USE dom_ice 
    2019   USE ice 
    2120   USE limvar 
     
    4039   !!---------------------------------------------------------------------- 
    4140CONTAINS 
    42  
    43 #if defined key_dimgout 
    44 # include "limwri_dimg.h90" 
    45 #else 
    4641 
    4742   SUBROUTINE lim_wri( kindic ) 
     
    5954      INTEGER  ::  ji, jj, jk, jl  ! dummy loop indices 
    6055      REAL(wp) ::  z1_365 
    61       REAL(wp) ::  ztmp 
     56      REAL(wp) ::  z2da, z2db, ztmp 
    6257      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zswi2 
    63       REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, z2da, z2db, zswi    ! 2D workspace 
     58      REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, zswi    ! 2D workspace 
    6459      !!------------------------------------------------------------------- 
    6560 
     
    6762 
    6863      CALL wrk_alloc( jpi, jpj, jpl, zswi2 ) 
    69       CALL wrk_alloc( jpi, jpj     , z2d, z2da, z2db, zswi ) 
     64      CALL wrk_alloc( jpi, jpj     , z2d, zswi ) 
    7065 
    7166      !----------------------------- 
     
    9590         DO jj = 2 , jpjm1 
    9691            DO ji = 2 , jpim1 
    97                z2da(ji,jj)  = (  u_ice(ji,jj) * umask(ji,jj,1) + u_ice(ji-1,jj) * umask(ji-1,jj,1) ) * 0.5_wp 
    98                z2db(ji,jj)  = (  v_ice(ji,jj) * vmask(ji,jj,1) + v_ice(ji,jj-1) * vmask(ji,jj-1,1) ) * 0.5_wp 
     92               z2da  = ( u_ice(ji,jj) * umask(ji,jj,1) + u_ice(ji-1,jj) * umask(ji-1,jj,1) ) * 0.5_wp 
     93               z2db  = ( v_ice(ji,jj) * vmask(ji,jj,1) + v_ice(ji,jj-1) * vmask(ji,jj-1,1) ) * 0.5_wp 
     94               z2d(ji,jj) = SQRT( z2da * z2da + z2db * z2db ) 
    9995           END DO 
    10096         END DO 
    101          CALL lbc_lnk( z2da, 'T', -1. ) 
    102          CALL lbc_lnk( z2db, 'T', -1. ) 
    103          CALL iom_put( "uice_ipa"     , z2da             )       ! ice velocity u component 
    104          CALL iom_put( "vice_ipa"     , z2db             )       ! ice velocity v component 
    105          DO jj = 1, jpj                                  
    106             DO ji = 1, jpi 
    107                z2d(ji,jj)  = SQRT( z2da(ji,jj) * z2da(ji,jj) + z2db(ji,jj) * z2db(ji,jj) )  
    108             END DO 
    109          END DO 
    110          CALL iom_put( "icevel"       , z2d * zswi       )       ! ice velocity module 
     97         CALL lbc_lnk( z2d, 'T', 1. ) 
     98         CALL iom_put( "uice_ipa"     , u_ice * zswi     )       ! ice velocity u component 
     99         CALL iom_put( "vice_ipa"     , v_ice * zswi     )       ! ice velocity v component 
     100         CALL iom_put( "icevel"       , z2d   * zswi     )       ! ice velocity module 
    111101      ENDIF 
    112102      ! 
     
    130120      CALL iom_put( "micesalt"    , smt_i   * zswi      )        ! mean ice salinity 
    131121 
    132       CALL iom_put( "icestr"      , strength * 0.001 * zswi )    ! ice strength 
     122      CALL iom_put( "icestr"      , strength * zswi )    ! ice strength 
    133123      CALL iom_put( "idive"       , divu_i * 1.0e8   * zswi )    ! divergence 
    134124      CALL iom_put( "ishear"      , shear_i * 1.0e8  * zswi )    ! shear 
     
    163153      CALL iom_put( "vfxlam"     , wfx_lam * ztmp       )        ! lateral melt  
    164154      CALL iom_put( "vfxice"     , wfx_ice * ztmp       )        ! total ice growth/melt  
     155 
     156      IF ( iom_use( "vfxthin" ) ) THEN   ! ice production for open water + thin ice (<20cm) => comparable to observations   
     157         WHERE( htm_i(:,:) < 0.2 .AND. htm_i(:,:) > 0. ) ; z2d = wfx_bog 
     158         ELSEWHERE                                       ; z2d = 0._wp 
     159         END WHERE 
     160         CALL iom_put( "vfxthin", ( wfx_opw + z2d ) * ztmp ) 
     161      ENDIF 
     162 
     163      ztmp = rday / rhosn 
     164      CALL iom_put( "vfxspr"     , wfx_spr * ztmp       )        ! precip (snow) 
    165165      CALL iom_put( "vfxsnw"     , wfx_snw * ztmp       )        ! total snw growth/melt  
    166       CALL iom_put( "vfxsub"     , wfx_sub * ztmp       )        ! sublimation (snow)  
    167       CALL iom_put( "vfxspr"     , wfx_spr * ztmp       )        ! precip (snow) 
     166      CALL iom_put( "vfxsub"     , wfx_sub * ztmp       )        ! sublimation (snow/ice)  
    168167       
    169168      CALL iom_put( "afxtot"     , afx_tot * rday       )        ! concentration tendency (total) 
     
    190189      CALL iom_put ('hfxspr'     , hfx_spr(:,:)         )   ! Heat content of snow precip  
    191190 
    192  
    193       IF ( iom_use( "vfxthin" ) ) THEN   ! ice production for open water + thin ice (<20cm) => comparable to observations   
    194          WHERE( htm_i(:,:) < 0.2 .AND. htm_i(:,:) > 0. ) ; z2d = wfx_bog 
    195          ELSEWHERE                                       ; z2d = 0._wp 
    196          END WHERE 
    197          CALL iom_put( "vfxthin", ( wfx_opw + z2d ) * ztmp ) 
    198       ENDIF 
    199191       
    200192      !-------------------------------- 
     
    223215       
    224216      CALL wrk_dealloc( jpi, jpj, jpl, zswi2 ) 
    225       CALL wrk_dealloc( jpi, jpj     , z2d, zswi, z2da, z2db ) 
     217      CALL wrk_dealloc( jpi, jpj     , z2d, zswi ) 
    226218 
    227219      IF( nn_timing == 1 )  CALL timing_stop('limwri') 
    228220       
    229221   END SUBROUTINE lim_wri 
    230 #endif 
    231222 
    232223  
Note: See TracChangeset for help on using the changeset viewer.