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

Changeset 10179


Ignore:
Timestamp:
2018-10-08T14:47:55+02:00 (6 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: action 4a: add si3 in BENCH, see #2133

Location:
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_lnk_generic.h90

    r10172 r10179  
    155155         IF ( ncom_stp == nit000 ) THEN 
    156156            IF( .NOT. ALLOCATED( ncomm_sequence) ) THEN 
    157                ALLOCATE( ncomm_sequence(1000,2), STAT=ierr ) 
     157               ALLOCATE( ncomm_sequence(2000,2), STAT=ierr ) 
    158158               IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'lnk_generic, cannot allocate ncomm_sequence' ) 
    159                ALLOCATE( crname(1000), STAT=ierr ) 
     159               ALLOCATE( crname(2000), STAT=ierr ) 
    160160               IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'lnk_generic, cannot allocate crname' ) 
    161161            ENDIF 
    162162            n_sequence = n_sequence + 1 
    163             IF( n_sequence > 1000 ) CALL ctl_stop( 'STOP', 'lnk_generic, increase ncomm_sequence first dimension' ) 
     163            IF( n_sequence > 2000 ) CALL ctl_stop( 'STOP', 'lnk_generic, increase ncomm_sequence first dimension' ) 
    164164            ncomm_sequence(n_sequence,1) = ipk*ipl   ! size of 3rd and 4th dimensions 
    165165            ncomm_sequence(n_sequence,2) = ipf       ! number of arrays to be treated (multi) 
     
    172172               WRITE(numout,*) ' -----------------------------------------------' 
    173173               WRITE(numout,*) ' ' 
    174                WRITE(numout,'(A,I3)') ' Exchanged halos : ', n_sequence 
     174               WRITE(numout,'(A,I4)') ' Exchanged halos : ', n_sequence 
    175175               jj = 0; jk = 0; jf = 0; jh = 0 
    176176               DO ji = 1, n_sequence 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/SBC/sbcssm.F90

    r10068 r10179  
    1818   USE sbcapr         ! surface boundary condition: atmospheric pressure 
    1919   USE eosbn2         ! equation of state and related derivatives 
     20   USE traqsr, ONLY: ln_traqsr 
    2021   ! 
    2122   USE in_out_manager ! I/O manager 
     
    253254      ENDIF 
    254255      ! 
     256      IF( .NOT. ln_traqsr )   fraqsr_1lev(:,:) = 1._wp   ! default definition: qsr 100% in the fisrt level  
     257      ! 
    255258      IF( lwxios.AND.nn_fsbc > 1 ) THEN 
    256259         CALL iom_set_rstw_var_active('nn_fsbc') 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/EXPREF/namelist_cfg_orca025_like

    r9846 r10179  
    5353!----------------------------------------------------------------------- 
    5454  ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     55  ln_traqsr   = .true.    !  Light penetration in the ocean            (T => fill namtra_qsr) 
    5556/ 
    5657 
     
    8384!!====================================================================== 
    8485! 
     86!----------------------------------------------------------------------- 
     87&namtra_qsr    !   penetrative solar radiation                          (ln_traqsr =T) 
     88!----------------------------------------------------------------------- 
     89   !                       !  type of penetration                        (default: NO selection) 
     90   ln_qsr_rgb  = .true.      !  RGB light penetration (Red-Green-Blue) 
     91   nn_chldta   =      0      !  RGB : Chl data (=1) or cst value (=0) 
     92/ 
    8593!----------------------------------------------------------------------- 
    8694&namdrg        !   top/bottom drag coefficient                          (default: NO selection) 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/EXPREF/namelist_cfg_orca12_like

    r9848 r10179  
    5353!----------------------------------------------------------------------- 
    5454  ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     55  ln_traqsr   = .true.    !  Light penetration in the ocean            (T => fill namtra_qsr) 
    5556/ 
    5657 
     
    8384!!====================================================================== 
    8485! 
     86!----------------------------------------------------------------------- 
     87&namtra_qsr    !   penetrative solar radiation                          (ln_traqsr =T) 
     88!----------------------------------------------------------------------- 
     89   !                       !  type of penetration                        (default: NO selection) 
     90   ln_qsr_rgb  = .true.      !  RGB light penetration (Red-Green-Blue) 
     91   nn_chldta   =      0      !  RGB : Chl data (=1) or cst value (=0) 
     92/ 
    8593!----------------------------------------------------------------------- 
    8694&namdrg        !   top/bottom drag coefficient                          (default: NO selection) 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/EXPREF/namelist_cfg_orca1_like

    r9846 r10179  
    5353!----------------------------------------------------------------------- 
    5454  ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     55  ln_traqsr   = .true.    !  Light penetration in the ocean            (T => fill namtra_qsr) 
    5556/ 
    5657 
     
    8384!!====================================================================== 
    8485! 
     86!----------------------------------------------------------------------- 
     87&namtra_qsr    !   penetrative solar radiation                          (ln_traqsr =T) 
     88!----------------------------------------------------------------------- 
     89   !                       !  type of penetration                        (default: NO selection) 
     90   ln_qsr_rgb  = .true.      !  RGB light penetration (Red-Green-Blue) 
     91   nn_chldta   =      0      !  RGB : Chl data (=1) or cst value (=0) 
     92/ 
    8593!----------------------------------------------------------------------- 
    8694&namdrg        !   top/bottom drag coefficient                          (default: NO selection) 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/MY_SRC/diawri.F90

    r10170 r10179  
    408408   SUBROUTINE dia_wri( kt ) 
    409409      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
     410 
     411      IF( ninist == 1 ) THEN     !==  Output the initial state and forcings  ==! 
     412         CALL dia_wri_state( 'output.init', kt ) 
     413         ninist = 0 
     414      ENDIF 
     415 
    410416   END SUBROUTINE dia_wri 
    411417 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/MY_SRC/usrdef_istate.F90

    r10170 r10179  
    5353      ! 
    5454      REAL(wp), DIMENSION(jpi,jpj) ::   z2d   ! 2D workspace 
    55       INTEGER :: ji, jj, jk 
     55      REAL(wp) ::   zfact 
     56      INTEGER  ::   ji, jj, jk 
    5657      !!---------------------------------------------------------------------- 
    5758      ! 
     
    6061      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~   ' 
    6162      ! 
    62       ! define unique value on each point 
     63      ! define unique value on each point. z2d ranging from 0.05 to -0.05 
    6364      DO jj = 1, jpj 
    6465         DO ji = 1, jpi 
    65             z2d(ji,jj) = ( 0.5_wp - REAL( nimpp + ji - 1 + ( njmpp + jj - 2 ) * jpiglo) / REAL ( jpiglo * jpjglo ) ) * 0.1_wp 
     66            z2d(ji,jj) = 0.1 * ( 0.5 - REAL( nimpp + ji - 1 + ( njmpp + jj - 2 ) * jpiglo, wp ) / REAL( jpiglo * jpjglo, wp ) ) 
    6667         ENDDO 
    6768      ENDDO 
    6869      ! 
    6970      ! sea level: 
    70       pssh(:,:) = z2d(:,:) 
     71      pssh(:,:) = z2d(:,:)                                                ! +/- 0.05 m 
    7172      ! 
    7273      DO jk = 1, jpk 
    73          ! temperature: 
    74          pts(:,:,jk,jp_tem) = 10._wp + z2d(:,:) * 2._wp 
     74         zfact = REAL(jk-1,wp) / REAL(jpk-1,wp)   ! 0 to 1 to add a basic stratification 
     75         ! temperature choosen to lead to 20% ice 
     76         pts(:,:,jk,jp_tem) = 2._wp - 0.1_wp * zfact + z2d(:,:) * 100._wp ! 2 to 1.9 +/- 5 degG 
     77         WHERE ( pts(:,:,jk,jp_tem) < -1.5_wp ) pts(:,:,jk,jp_tem) = -1.5_wp + z2d(:,:) * 0.2_wp   
    7578         ! salinity:   
    76          pts(:,:,jk,jp_sal) = 35._wp + z2d(:,:) 
     79         pts(:,:,jk,jp_sal) = 30._wp + 1._wp * zfact + z2d(:,:)           ! 30 to 31 +/- 0.05 psu 
    7780         ! velocities: 
    78          pu(:,:,jk) = z2d(:,:) * 0.1_wp 
    79          pv(:,:,jk) = z2d(:,:) * 0.01_wp 
     81         pu(:,:,jk) = z2d(:,:) * 0.1_wp                                   ! +/- 0.005  m/s 
     82         pv(:,:,jk) = z2d(:,:) * 0.01_wp                                  ! +/- 0.0005 m/s 
    8083      ENDDO 
    8184      ! 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/MY_SRC/usrdef_sbc.F90

    r9762 r10179  
    1313   !!   usr_def_sbc    : user defined surface bounday conditions in BENCH case 
    1414   !!---------------------------------------------------------------------- 
     15   USE par_oce        ! ocean space and time domain 
     16   USE dom_oce         
     17   USE oce             ! ocean dynamics and tracers 
    1518   USE sbc_oce         ! Surface boundary condition: ocean fields 
     19   USE sbc_ice         ! Surface boundary condition: ocean fields 
    1620   USE in_out_manager  ! I/O manager 
     21   USE phycst          ! physical constants 
     22   USE lib_mpp         ! MPP library 
     23   USE lbclnk          ! lateral boundary conditions - mpp exchanges 
     24 
     25#if defined key_si3 
     26   USE ice, ONLY       : at_i_b, a_i_b 
     27#endif 
    1728 
    1829   IMPLICIT NONE 
     
    6172         qns (:,:) = 0._wp 
    6273         qsr (:,:) = 0._wp 
    63          !          
     74         ! 
     75         utau_b(:,:) = 0._wp  
     76         vtau_b(:,:) = 0._wp 
     77         emp_b (:,:) = 0._wp 
     78         sfx_b (:,:) = 0._wp 
     79         qns_b (:,:) = 0._wp 
     80         ! 
    6481      ENDIF 
    6582       
     
    6784   END SUBROUTINE usrdef_sbc_oce 
    6885 
     86    
    6987   SUBROUTINE usrdef_sbc_ice_tau( kt ) 
     88      !!--------------------------------------------------------------------- 
     89      !!                     ***  ROUTINE usrdef_sbc_ice_tau  *** 
     90      !! 
     91      !! ** Purpose :   provide the surface boundary (momentum) condition over 
     92      !sea-ice 
     93      !!--------------------------------------------------------------------- 
    7094      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     95      ! 
     96      REAL(wp), DIMENSION(jpi,jpj) ::   z2d   ! 2D workspace 
     97      INTEGER  ::   ji, jj 
     98      !!--------------------------------------------------------------------- 
     99#if defined key_si3 
     100      IF( kt==nit000 .AND. lwp)   WRITE(numout,*)' usrdef_sbc_ice : BENCH case: constant stress forcing' 
     101      ! 
     102      ! define unique value on each point. z2d ranging from 0.05 to -0.05 
     103      DO jj = 1, jpj 
     104         DO ji = 1, jpi 
     105            z2d(ji,jj) = 0.1 * ( 0.5 - REAL( nimpp + ji - 1 + ( njmpp + jj - 2 ) * jpiglo, wp ) / REAL( jpiglo * jpjglo, wp ) ) 
     106         ENDDO 
     107      ENDDO 
     108      utau_ice(:,:) = 0.1_wp +  z2d(:,:) 
     109      vtau_ice(:,:) = 0.1_wp +  z2d(:,:) 
     110 
     111      CALL lbc_lnk_multi( 'usrdef_sbc', utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 
     112#endif 
     113      ! 
    71114   END SUBROUTINE usrdef_sbc_ice_tau 
    72115 
    73    SUBROUTINE usrdef_sbc_ice_flx( kt ) 
     116    
     117   SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 
     118      !!--------------------------------------------------------------------- 
     119      !!                     ***  ROUTINE usrdef_sbc_ice_flx  *** 
     120      !! 
     121      !! ** Purpose :   provide the surface boundary (flux) condition over 
     122      !sea-ice 
     123      !!--------------------------------------------------------------------- 
    74124      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     125      REAL(wp), DIMENSION(:,:,:), INTENT(in)  ::   phs    ! snow thickness 
     126      REAL(wp), DIMENSION(:,:,:), INTENT(in)  ::   phi    ! ice thickness 
     127      !! 
     128      REAL(wp) ::   zfr1, zfr2                 ! local variables 
     129      REAL(wp), DIMENSION(jpi,jpj) ::   zsnw   ! snw distribution after wind blowing 
     130      !!--------------------------------------------------------------------- 
     131      ! 
     132#if defined key_si3 
     133      IF( kt==nit000 .AND. lwp)   WRITE(numout,*)' usrdef_sbc_ice : BENCH case: NO flux forcing' 
     134      ! 
     135      ! ocean variables (renaming) 
     136      emp_oce (:,:)   = 0._wp   ! uniform value for freshwater budget (E-P) 
     137      qsr_oce (:,:)   = 0._wp   ! uniform value for     solar radiation 
     138      qns_oce (:,:)   = 0._wp   ! uniform value for non-solar radiation 
     139 
     140      ! ice variables 
     141      alb_ice (:,:,:) = 0.7_wp  ! useless 
     142      qsr_ice (:,:,:) = 0._wp   ! uniform value for     solar radiation 
     143      qns_ice (:,:,:) = 0._wp   ! uniform value for non-solar radiation 
     144      sprecip (:,:)   = 0._wp   ! uniform value for snow precip 
     145      evap_ice(:,:,:) = 0._wp   ! uniform value for sublimation 
     146 
     147      ! ice fields deduced from above 
     148      zsnw(:,:) = 1._wp 
     149      !!CALL lim_thd_snwblow( at_i_b, zsnw )  ! snow distribution over ice after 
     150      !wind blowing  
     151      emp_ice  (:,:)   = SUM( a_i_b(:,:,:) * evap_ice(:,:,:), dim=3 ) - sprecip(:,:) * zsnw(:,:) 
     152      emp_oce  (:,:)   = emp_oce(:,:) - sprecip(:,:) * (1._wp - zsnw(:,:) ) 
     153      qevap_ice(:,:,:) =   0._wp 
     154      qprec_ice(:,:)   =   rhos * ( sst_m(:,:) * rcpi - rLfus ) * tmask(:,:,1) !  in J/m3 
     155      qemp_oce (:,:)   = - emp_oce(:,:) * sst_m(:,:) * rcp 
     156      qemp_ice (:,:)   =   sprecip(:,:) * zsnw * ( sst_m(:,:) * rcpi - rLfus ) * tmask(:,:,1) ! solid precip (only) 
     157 
     158      ! total fluxes 
     159      emp_tot (:,:) = emp_ice  + emp_oce 
     160      qns_tot (:,:) = at_i_b(:,:) * qns_oce(:,:) + SUM( a_i_b(:,:,:) * qns_ice(:,:,:), dim=3 ) + qemp_ice(:,:) + qemp_oce(:,:) 
     161      qsr_tot (:,:) = at_i_b(:,:) * qsr_oce(:,:) + SUM( a_i_b(:,:,:) * qsr_ice(:,:,:), dim=3 ) 
     162 
     163      ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 
     164      zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice )            ! transmission when hi>10cm 
     165      zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice )            ! zfr2 such that zfr1 + zfr2 to equal 1 
     166      ! 
     167      WHERE    ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) <  0.1_wp )       ! linear decrease from hi=0 to 10cm   
     168         qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 
     169      ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp )       ! constant (zfr1) when hi>10cm 
     170         qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 
     171      ELSEWHERE                                                         ! zero when hs>0 
     172         qtr_ice_top(:,:,:) = 0._wp  
     173      END WHERE 
     174#endif 
     175 
    75176   END SUBROUTINE usrdef_sbc_ice_flx 
    76177 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/BENCH/cpp_BENCH.fcm

    r9762 r10179  
    1  bld::tool::fppkeys  key_mpp_mpi   
     1 bld::tool::fppkeys  key_mpp_mpi  key_si3 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/tests/demo_cfgs.txt

    r10166 r10179  
    66VORTEX OCE NST 
    77WAD OCE 
    8 BENCH OCE 
     8BENCH OCE ICE 
Note: See TracChangeset for help on using the changeset viewer.