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

Changeset 7293


Ignore:
Timestamp:
2016-11-21T16:27:53+01:00 (7 years ago)
Author:
vancop
Message:

Commit infrastructure for melt pond impletation

Location:
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/CONFIG/SHARED/field_def.xml

    r6970 r7293  
    284284         <field id="albedo"       long_name="Mean albedo over sea ice and ocean"                                                                                              unit=""             /> 
    285285 
     286         <field id="iceamp"       long_name="melt pond fraction"                                           standard_name="sea_ice_meltpond_fraction"                          unit="%"            /> 
     287         <field id="icevmp"       long_name="melt pond volume"                                             standard_name="sea_ice_meltpond_volume"                            unit="m"            /> 
     288 
    286289         <field id="iceage_cat"   long_name="Ice age for categories"                                       unit="days"   axis_ref="ncatice" /> 
    287290         <field id="iceconc_cat"  long_name="Ice concentration for categories"                             unit="%"      axis_ref="ncatice" /> 
     
    292295         <field id="icetemp_cat"  long_name="Ice temperature for categories"                               unit="degC"   axis_ref="ncatice" /> 
    293296         <field id="snwtemp_cat"  long_name="Snow temperature for categories"                              unit="degC"   axis_ref="ncatice" /> 
     297 
     298         <field id="iceamp_cat"   long_name="Ice melt pond fraction for categories"                        unit="%"      axis_ref="ncatice" /> 
     299         <field id="icevmp_cat"   long_name="Ice melt pond volume for categories"                          unit="m"      axis_ref="ncatice" /> 
    294300 
    295301         <field id="micet"        long_name="Mean ice temperature"                                         unit="degC"     /> 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref

    r6994 r7293  
    166166/ 
    167167!------------------------------------------------------------------------------ 
     168&namicemp      !   Melt ponds 
     169!------------------------------------------------------------------------------ 
     170                 ! -- limmp      -- ! 
     171   ln_limMP       = .true.          !  activate melt ponds 
     172   nn_limMP       = 4               !  type of melt pond implementation (1=rad+fw,2=rad only, 3=fw only, 4=passive) 
     173/ 
     174!------------------------------------------------------------------------------ 
    168175&namiceitdme   !   Ice mechanical redistribution (ridging and rafting) 
    169176!------------------------------------------------------------------------------ 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r6994 r7293  
    277277   REAL(wp), PUBLIC ::   rn_fsnowrft      !: fractional snow loss to the ocean during ridging 
    278278 
     279   ! MV MP 2016 
     280   !                                     !!** melt pond namelist (namicemp) 
     281   LOGICAL , PUBLIC ::   ln_limMP         !: activate melt ponds or not 
     282   INTEGER , PUBLIC ::   nn_limMP         !: type of melt pond implementation (1=full, 2=radiation only, 3=freshwater only) 
     283 
    279284   !                                     !!** some other parameters  
    280285   INTEGER , PUBLIC ::   nstart           !: iteration number of the begining of the run  
     
    404409   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   s_i      !: ice salinities          [PSU] 
    405410 
     411   ! MV MP 2016 
     412   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   a_ip       !: melt pond fraction per grid cell area 
     413   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   v_ip       !: melt pond volume per grid cell area [m] 
     414   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   a_ip_frac  !: melt pond volume per ice area 
     415   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   h_ip       !: melt pond thickness [m] 
     416 
     417   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   at_ip      !: total melt pond fraction 
     418   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   vt_ip      !: total melt pond volume per unit area [m] 
     419   ! END MV MP 2016 
     420 
    406421   !!-------------------------------------------------------------------------- 
    407422   !! * Moments for advection 
     
    415430   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxage, syage, sxxage, syyage, sxyage   !: ice age 
    416431   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   sxe  , sye  , sxxe  , syye  , sxye     !: ice layers heat content 
     432   ! MV MP 2016 
     433   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxap , syap , sxxap , syyap , sxyap    !:  melt pond fraction 
     434   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   sxvp , syvp , sxxvp , syyvp , sxyvp    !:  melt pond volume 
     435   ! END MV MP 2016 
    417436 
    418437   !!-------------------------------------------------------------------------- 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r7060 r7293  
    407407         at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 
    408408      END DO 
     409 
     410      ! MV MP 2016 
     411 
     412      ! For now, we just assume that melt ponds are absent initially 
     413      ! We probably have to revise this and code it as for all other sea ice variables later on 
    409414      ! 
     415      !-------------------------------------------------------------------- 
     416      ! X) Melt pond variables 
     417      !-------------------------------------------------------------------- 
     418      ! 
     419      IF ( ln_limMP ) THEN 
     420         a_ip(:,:,:) = 0._wp 
     421         v_ip(:,:,:) = 0._wp 
     422         h_ip(:,:,:) = 0._wp 
     423         a_ip_frac(:,:,:) = 0._wp 
     424 
     425         at_ip(:,:) = 0._wp 
     426         vt_ip(:,:) = 0._wp 
     427      ENDIF 
     428 
     429      ! END MV MP 2016 
     430 
    410431      !-------------------------------------------------------------------- 
    411432      ! 4) Global ice variables for output diagnostics                    |  
     
    450471      syyage (:,:,:)  = 0._wp 
    451472      sxyage (:,:,:)  = 0._wp 
     473 
     474      ! MV MP 2016 
     475      IF ( ln_limMP ) THEN 
     476         sxap  (:,:) = 0._wp    ; sxvp  (:,:) = 0._wp  
     477         syap  (:,:) = 0._wp    ; syvp  (:,:) = 0._wp  
     478         sxxap (:,:) = 0._wp    ; sxxvp (:,:) = 0._wp  
     479         syyap (:,:) = 0._wp    ; syyvp (:,:) = 0._wp  
     480         sxyap (:,:) = 0._wp    ; sxyvp (:,:) = 0._wp 
     481      ENDIF 
     482      ! END MV MP 2016 
    452483 
    453484!!!clem 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90

    r6994 r7293  
    151151      END DO 
    152152 
     153      ! MV MP 2016 
     154      IF ( ln_limMP ) THEN 
     155         DO jl = 1, jpl  
     156            znam = 'a_ip'//'_htc'//zchar 
     157            z2d(:,:) = a_ip(:,:,jl) 
     158            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     159            znam = 'v_ip'//'_htc'//zchar 
     160            z2d(:,:) = v_ip(:,:,jl) 
     161            CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     162         END DO 
     163      ENDIF 
     164      ! END MV MP 2016 
     165 
    153166      DO jl = 1, jpl  
    154167         WRITE(zchar,'(I2.2)') jl 
     
    301314            END DO 
    302315         END DO 
     316         ! MV MP 2016 
     317         IF ( ln_limMP ) THEN 
     318            DO jl = 1, jpl  
     319               znam = 'sxap'//'_htc'//zchar 
     320               z2d(:,:) = sxap(:,:,jl) 
     321               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     322               znam = 'syap'//'_htc'//zchar 
     323               z2d(:,:) = syap(:,:,jl) 
     324               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     325               znam = 'sxxap'//'_htc'//zchar 
     326               z2d(:,:) = sxxap(:,:,jl) 
     327               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     328               znam = 'syyap'//'_htc'//zchar 
     329               z2d(:,:) = syyap(:,:,jl) 
     330               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     331               znam = 'sxyap'//'_htc'//zchar 
     332               z2d(:,:) = sxyap(:,:,jl) 
     333               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     334    
     335               znam = 'sxvp'//'_htc'//zchar 
     336               z2d(:,:) = sxvp(:,:,jl) 
     337               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     338               znam = 'syvp'//'_htc'//zchar 
     339               z2d(:,:) = syvp(:,:,jl) 
     340               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     341               znam = 'sxxvp'//'_htc'//zchar 
     342               z2d(:,:) = sxxvp(:,:,jl) 
     343               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     344               znam = 'syyvp'//'_htc'//zchar 
     345               z2d(:,:) = syyvp(:,:,jl) 
     346               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     347               znam = 'sxyvp'//'_htc'//zchar 
     348               z2d(:,:) = sxyvp(:,:,jl) 
     349               CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 
     350            END DO 
     351         ENDIF 
    303352 
    304353      ENDIF 
     
    387436      END DO 
    388437 
     438      ! MV MP 2016 
     439      IF ( ln_limMP ) THEN 
     440         DO jl = 1, jpl  
     441            znam = 'a_ip'//'_htc'//zchar 
     442            CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     443            a_ip(:,:,jl) = z2d(:,:) 
     444            znam = 'v_ip'//'_htc'//zchar 
     445            CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     446            v_ip(:,:,jl) = z2d(:,:) 
     447         END DO 
     448      ENDIF 
     449 
    389450      DO jl = 1, jpl  
    390451         WRITE(zchar,'(I2.2)') jl 
     
    509570            sxyage(:,:,jl)= z2d(:,:) 
    510571         END DO 
     572         ! MV MP 2016 
     573         IF ( ln_limMP ) THEN 
     574            DO jl = 1, jpl  
     575               znam = 'sxap'//'_htc'//zchar 
     576               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     577               sxap(:,:,jl) = z2d(:,:) 
     578               znam = 'syap'//'_htc'//zchar 
     579               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     580               syap(:,:,jl) = z2d(:,:) 
     581               znam = 'sxxap'//'_htc'//zchar 
     582               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     583               sxxap(:,:,jl) = z2d(:,:) 
     584               znam = 'syyap'//'_htc'//zchar 
     585               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     586               syyap(:,:,jl) = z2d(:,:) 
     587               znam = 'sxyap'//'_htc'//zchar 
     588               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     589               sxyap(:,:,jl) = z2d(:,:) 
     590    
     591               znam = 'sxvp'//'_htc'//zchar 
     592               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     593               sxvp(:,:,jl) = z2d(:,:) 
     594               znam = 'syvp'//'_htc'//zchar 
     595               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     596               syvp(:,:,jl) = z2d(:,:) 
     597               znam = 'sxxvp'//'_htc'//zchar 
     598               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     599               sxxvp(:,:,jl) = z2d(:,:) 
     600               znam = 'syyvp'//'_htc'//zchar 
     601               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     602               syyvp(:,:,jl) = z2d(:,:) 
     603               znam = 'sxyvp'//'_htc'//zchar 
     604               CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 
     605               sxyvp(:,:,jl) = z2d(:,:) 
     606            END DO 
     607         ENDIF 
     608         ! END MV MP 2016 
    511609 
    512610         CALL iom_get( numrir, jpdom_autoglo, 'sxopw ' ,  sxopw  ) 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r6853 r7293  
    9191      et_i(:,:)  = SUM( SUM( e_i(:,:,:,:), dim=4 ), dim=3 ) 
    9292 
     93      ! MV MP 2016 
     94      IF ( ln_limMP ) 
     95         at_i_p(:,:) = SUM( a_ip, dim=3 ) 
     96         vt_i_p(:,:) = SUM( v_ip, dim=3 ) 
     97      ENDIF 
     98      ! END MP 2016 
     99 
    93100      ! open water fraction 
    94101      DO jj = 1, jpj 
     
    244251      END DO 
    245252 
    246       ! integrated values 
     253      ! integrated values  
    247254      vt_i (:,:) = SUM( v_i, dim=3 ) 
    248255      vt_s (:,:) = SUM( v_s, dim=3 ) 
    249256      at_i (:,:) = SUM( a_i, dim=3 ) 
     257 
     258      ! MV MP 2016 
     259      ! probably should resum for melt ponds ??? 
    250260 
    251261      ! 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r6970 r7293  
    207207      CALL iom_put ('hfxspr'     , hfx_spr(:,:)         )   ! Heat content of snow precip  
    208208 
     209      ! MV MP 2016 
     210      IF ( ln_limMP ) THEN 
     211         CALL iom_put( "iceamp"  , at_ip  * zswi        )   ! melt pond total fraction 
     212         CALL iom_put( "icevmp"  , vt_ip  * zswi        )   ! melt pond total volume per unit area 
     213      ENDIF 
     214      ! END MV MP 2016 
     215 
    209216       
    210217      !-------------------------------- 
     
    223230      ! brine volume 
    224231      IF ( iom_use( "brinevol_cat" ) )  CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 ) 
     232 
     233      ! MV MP 2016 
     234      IF ( ln_limMP ) THEN 
     235         IF ( iom_use( "iceamp_cat"  ) )  CALL iom_put( "iceamp_cat"     , a_ip   * zswi2   )       ! melt pond frac for categories 
     236         IF ( iom_use( "icevmp_cat"  ) )  CALL iom_put( "icevmp_cat"     , v_ip   * zswi2   )       ! melt pond frac for categories 
     237      ENDIF 
     238      ! END MV MP 2016 
    225239 
    226240      !     !  Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s 
     
    286300      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    287301 
     302      ! MV MP 2016 
     303      IF ( ln_limMP ) THEN 
     304         CALL histdef( kid, "si_amp", "Melt pond fraction"      , "%"      ,   & 
     305      &         jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     306         CALL histdef( kid, "si_vmp", "Melt pond volume"        ,  "m"     ,   & 
     307      &         jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     308      ENDIF 
     309      ! END MV MP 2016 
     310 
    288311      CALL histdef( kid, "vfxbog", "Ice bottom production"   , "m/s"    ,   & 
    289312      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     
    330353      CALL histwrite( kid, "sidive", kt, divu_i*1.0e8   , jpi*jpj, (/1/) ) 
    331354 
     355      ! MV MP 2016 
     356      IF ( ln_limMP ) THEN 
     357         CALL histwrite( kid, "si_amp", kt, at_ip         , jpi*jpj, (/1/) ) 
     358         CALL histwrite( kid, "si_vmp", kt, vt_ip         , jpi*jpj, (/1/) ) 
     359      ENDIF 
     360      ! END MV MP 2016 
     361 
    332362      CALL histwrite( kid, "vfxbog", kt, wfx_bog        , jpi*jpj, (/1/) ) 
    333363      CALL histwrite( kid, "vfxdyn", kt, wfx_dyn        , jpi*jpj, (/1/) ) 
  • branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r7158 r7293  
    4848   USE limvar          ! Ice variables switch 
    4949 
     50   ! MV MP 2016 
     51   USE limmp 
     52   ! END MV MP 2016 
     53 
    5054   USE limistate       ! LIM initial state 
    5155   USE limthd_sal      ! LIM ice thermodynamics: salinity 
     
    336340      ! 
    337341      CALL lim_thd_sal_init            ! set ice salinity parameters 
    338       ! 
     342        
     343      ! MV MP 2016 
     344      CALL lim_mp_init                 ! set melt ponds parameters 
     345      ! END MV MP 2016 
     346 
    339347      IF( ln_limdyn )   CALL lim_itd_me_init             ! ice thickness distribution initialization for mecanical deformation 
    340348      !                                ! Initial sea-ice state 
Note: See TracChangeset for help on using the changeset viewer.