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

Changeset 8962


Ignore:
Timestamp:
2017-12-08T16:15:25+01:00 (6 years ago)
Author:
clem
Message:

changes to improve test case SASBIPER

Location:
branches/2017/dev_CNRS_2017/NEMOGCM
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_CNRS_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/README

    r8900 r8962  
    11------- 
    2 Context 
     2Purpose 
    33------- 
    4 The aim of this demonstration case is to study the advection of a patch of ice in a bi-periodic channel with a slab ocean (i.e. 1 ocean layer which does not interact with sea-ice). 
     4This demonstration case can serve to different purposes: 
    55 
     61) The main one: study of the advection of a patch of ice in a bi-periodic channel with a slab ocean (i.e. 1 ocean layer) 
     7              ==> set ln_icethd=false in namelist_ice_cfg 
     8 
     92) Secondary: study of ice thermodynamics in the same basin 
     10              ==> set ln_icedyn=false in namelist_ice_cfg 
     11              ==> eventually change usrdef_sbc.F90 in MY_SRC to fit your needs 
     12 
     13----------- 
     14Experiments 
     15----------- 
    616Two experiments can be configured: 
     17 
    718a) A simple channel at 3km horizontal resolution (slightly variable => +- 10%) 
     19              ==> remove key_agrif in cpp keys 
     20 
    821b) Same as a) but with an Agrif zoom in the center 1:3, and 3 ghost cells (defined in par_oce.F90) 
     22              ==> add key_agrif in cpp keys 
    923 
    1024---------- 
     
    1327Be careful, the model can only run on 1 processor in the N-S dimension 
    1428 
    15 Compile and run the model once to get a mesh_mask.nc file with the following command (note; remove key_agrif in cpp keys for experiment a): 
     29a) Compile and run the model once to get a mesh_mask.nc file with the following command: 
    1630../../../makenemo -a TEST_CASES -n SAS_BIPER -m X64_ADA -j 4 
    1731poe ./opa -procs 1 
    1832 
    19 Create the initial condition file for sea-ice (initice.nc) by running this python script:  
     33b) Create the initial condition file for sea-ice (initice.nc) by running this python script:  
    2034python ./make_INITICE.py 
    2135 
    22 Run the model a second time 
     36c) Run the model a second time 
    2337poe ./opa -procs 1 
    2438 
     
    2640What to look at 
    2741--------------- 
    28 One can test 
    29  
     42In case of purpose 1, One can test 
     43--- 
    3044a) the advection scheme: Ultimate-Macho (ln_adv_UMx=T) versus Prather (ln_adv_Pra=T) 
    3145   for a square (ice concentration) or a gaussian (ice volume) 
     
    3650b) the advection through an agrif zoom 1:3 
    3751 
     52In case of purpose 2, one can test conservation of properties: 
     53--- 
     54c) ice should not change at all if surface fluxes = 0 and SST = freezing temperature 
     55 
    3856-------------------------------------- 
    3957Interpretation of the results (remarks) 
  • branches/2017/dev_CNRS_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/file_def_nemo-lim.xml

    r8884 r8962  
    3030        <field field_ref="iceshe"           name="sishea" /> 
    3131        <field field_ref="icestr"           name="sistre" /> 
     32        <field field_ref="sst_m"            name="sst_m" /> 
    3233        <!-- categories --> 
    3334        <field field_ref="snwthic_cat"      name="snthicat"/> 
  • branches/2017/dev_CNRS_2017/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/MY_SRC/usrdef_sbc.F90

    r8882 r8962  
    2525   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2626   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)  
    27    USE wrk_nemo 
    2827 
    2928   IMPLICIT NONE 
     
    9392   END SUBROUTINE usrdef_sbc_ice_tau 
    9493 
    95    SUBROUTINE usrdef_sbc_ice_flx( kt ) 
     94   SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 
    9695      !!--------------------------------------------------------------------- 
    9796      !!                     ***  ROUTINE usrdef_sbc_ice_flx  *** 
     
    9998      !! ** Purpose :   provide the surface boundary (flux) condition over sea-ice 
    10099      !!--------------------------------------------------------------------- 
    101       REAL(wp), DIMENSION(:,:), POINTER ::   zsnw       ! snw distribution after wind blowing 
    102100      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     101      REAL(wp), DIMENSION(:,:,:), INTENT(in)  ::   phs    ! snow thickness 
     102      REAL(wp), DIMENSION(:,:,:), INTENT(in)  ::   phi    ! ice thickness 
     103      !! 
     104      REAL(wp) ::   zfr1, zfr2                 ! local variables 
     105      REAL(wp), DIMENSION(jpi,jpj) ::   zsnw   ! snw distribution after wind blowing 
    103106      !!--------------------------------------------------------------------- 
    104       CALL wrk_alloc( jpi,jpj, zsnw ) 
    105107      ! 
    106108      IF( kt==nit000 .AND. lwp)   WRITE(numout,*)' usrdef_sbc_ice : SAS_BIPER case: NO flux forcing' 
     
    133135      qsr_tot (:,:) = at_i_b(:,:) * qsr_oce(:,:) + SUM( a_i_b(:,:,:) * qsr_ice(:,:,:), dim=3 ) 
    134136 
    135       !-------------------------------------------------------------------- 
    136       ! FRACTIONs of net shortwave radiation which is not absorbed in the 
    137       ! thin surface layer and penetrates inside the ice cover 
    138       ! ( Maykut and Untersteiner, 1971 ; Ebert and Curry, 1993 ) 
    139       fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 
    140       fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 
    141  
    142       CALL wrk_dealloc( jpi,jpj, zsnw ) 
    143  
     137      ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 
     138      zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice )            ! transmission when hi>10cm 
     139      zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )            ! zfr2 such that zfr1 + zfr2 to equal 1 
     140      ! 
     141      WHERE    ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) <  0.1_wp )       ! linear decrease from hi=0 to 10cm   
     142         qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 
     143      ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp )       ! constant (zfr1) when hi>10cm 
     144         qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * zfr1 
     145      ELSEWHERE                                                         ! zero when hs>0 
     146         qsr_ice_tr(:,:,:) = 0._wp  
     147      END WHERE 
     148           
    144149   END SUBROUTINE usrdef_sbc_ice_flx 
    145150 
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90

    r8920 r8962  
    139139      ! 
    140140      CASE( jp_usr )              !--- user defined formulation 
    141                                   CALL usrdef_sbc_ice_flx( kt ) 
     141                                  CALL usrdef_sbc_ice_flx( kt, h_s, h_i ) 
    142142      CASE( jp_blk )              !--- bulk formulation 
    143143                                  CALL blk_ice_flx    ( t_su, h_s, h_i, alb_ice )    !  
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90

    r8920 r8962  
    843843      REAL(wp) ::   zcoef_dqlw, zcoef_dqla   !   -      - 
    844844      REAL(wp) ::   zztmp, z1_lsub           !   -      - 
    845       REAL(wp) ::   zfrqsr_tr_i              ! sea ice shortwave fraction transmitted below through the ice 
    846       REAL(wp) ::   zfr1, zfr2, zfac         ! local variables 
     845      REAL(wp) ::   zfr1, zfr2               ! local variables 
    847846      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_qlw         ! long wave heat flux over ice 
    848847      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_qsb         ! sensible  heat flux over ice 
     
    951950      END DO 
    952951 
    953       ! --- absorbed and transmitted shortwave radiation (W/m2) --- ! 
    954       ! 
    955       ! former coding was 
    956       !     fr1_i0(:,:) = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) 
    957       !     fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 
    958  
    959       ! --- surface transmission parameter (i0, Grenfell Maykut 77) --- ! 
    960       zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice )            !   standard value 
    961       zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )            !   zfr2 such that zfr1 + zfr2 to equal 1 
    962  
    963       qsr_ice_tr(:,:,:) = 0._wp 
    964  
    965       DO jl = 1, jpl 
    966          DO jj = 1, jpj 
    967             DO ji = 1, jpi 
    968                ! 
    969                zfac = MAX( 0._wp , 1._wp - phi(ji,jj,jl) * 10._wp )     !   linear weighting factor: =0 for phi=0, =1 for phi = 0.1 
    970                zfrqsr_tr_i = zfr1 + zfac * zfr2                         !   below 10 cm, linearly increase zfrqsr_tr_i until 1 at zero thickness 
    971                ! 
    972                IF ( phs(ji,jj,jl) <= 0._wp ) THEN   ;    zfrqsr_tr_i  = zfr1 + zfac * zfr2 
    973                ELSE                                 ;    zfrqsr_tr_i  = 0._wp                                  !   snow fully opaque 
    974                ENDIF 
    975                ! 
    976                qsr_ice_tr(ji,jj,jl) = zfrqsr_tr_i * qsr_ice(ji,jj,jl)   !   transmitted solar radiation  
    977                ! 
    978             END DO 
    979          END DO 
    980       END DO 
     952      ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 
     953      zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice )            ! transmission when hi>10cm 
     954      zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )            ! zfr2 such that zfr1 + zfr2 to equal 1 
     955      ! 
     956      WHERE    ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) <  0.1_wp )       ! linear decrease from hi=0 to 10cm   
     957         qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 
     958      ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp )       ! constant (zfr1) when hi>10cm 
     959         qsr_ice_tr(:,:,:) = qsr_ice(:,:,:) * zfr1 
     960      ELSEWHERE                                                         ! zero when hs>0 
     961         qsr_ice_tr(:,:,:) = 0._wp  
     962      END WHERE 
    981963      ! 
    982964      IF(ln_ctl) THEN 
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r8948 r8962  
    4747   USE iom            ! NetCDF library 
    4848   USE lib_mpp        ! distribued memory computing library 
    49    USE wrk_nemo       ! work arrays 
    5049   USE timing         ! Timing 
    5150   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     
    244243      INTEGER ::   jn          ! dummy loop index 
    245244      INTEGER ::   ios, inum   ! Local integer 
    246       REAL(wp), POINTER, DIMENSION(:,:) ::   zacs, zaos 
     245      REAL(wp), DIMENSION(jpi,jpj) ::   zacs, zaos 
    247246      !! 
    248247      NAMELIST/namsbc_cpl/  sn_snd_temp  , sn_snd_alb   , sn_snd_thick, sn_snd_crt   , sn_snd_co2  ,   &  
     
    258257      IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_init') 
    259258      ! 
    260       CALL wrk_alloc( jpi,jpj,   zacs, zaos ) 
    261  
    262259      ! ================================ ! 
    263260      !      Namelist informations       ! 
     
    10281025      IF( ln_dm2dc .AND. ln_cpl ) ncpl_qsr_freq = 86400 / ncpl_qsr_freq 
    10291026 
    1030       CALL wrk_dealloc( jpi,jpj,   zacs, zaos ) 
    10311027      ! 
    10321028      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_init') 
  • branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_sbc.F90

    r8882 r8962  
    229229   END SUBROUTINE usrdef_sbc_ice_tau 
    230230 
    231    SUBROUTINE usrdef_sbc_ice_flx( kt ) 
     231   SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 
    232232      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     233      REAL(wp), DIMENSION(:,:,:), INTENT(in)  ::   phs    ! snow thickness 
     234      REAL(wp), DIMENSION(:,:,:), INTENT(in)  ::   phi    ! ice thickness 
    233235   END SUBROUTINE usrdef_sbc_ice_flx 
    234236 
Note: See TracChangeset for help on using the changeset viewer.