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 13981 for NEMO – NEMO

Changeset 13981 for NEMO


Ignore:
Timestamp:
2020-12-02T11:50:03+01:00 (3 years ago)
Author:
laurent
Message:

Canceled changes in dynatf.F90, NEW "iom_put-able" "[uv]tau_oce" and "[uv]tau_ice" at T-points!

Location:
NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/cfgs/SHARED/field_def_nemo-ice.xml

    r13663 r13981  
    7171      <field id="utau_ai"      long_name="X-component of atmospheric stress on sea ice"            standard_name="surface_downward_x_stress"                 unit="N/m2" /> 
    7272      <field id="vtau_ai"      long_name="Y-component of atmospheric stress on sea ice"            standard_name="surface_downward_y_stress"                 unit="N/m2" /> 
    73       <field id="taum_ai"      long_name="Module of atmospheric stress on sea ice (T-points)"      standard_name="mod_surface_downward_stress"               unit="N/m2" /> 
    7473      <field id="utau_oi"      long_name="X-component of ocean stress on sea ice"                  standard_name="sea_ice_base_upward_x_stress"              unit="N/m2" /> 
    7574      <field id="vtau_oi"      long_name="Y-component of ocean stress on sea ice"                  standard_name="sea_ice_base_upward_y_stress"              unit="N/m2" /> 
    7675      <field id="utau_bi"      long_name="X-component of ocean bottom stress on sea ice -landfast" standard_name="ocean_bottom_upward_x_stress"              unit="N/m2" /> 
    7776      <field id="vtau_bi"      long_name="Y-component of ocean bottom stress on sea ice -landfast" standard_name="ocean_bottom_upward_y_stress"              unit="N/m2" /> 
     77      <field id="taum_ice"     long_name="Module of atmospheric stress on sea ice (T-points)"      standard_name="mod_surface_downward_stress"               unit="N/m2" /> 
     78      <field id="utau_ice"     long_name="X-component of ocean stress on sea ice (T-points)"       standard_name="sea_ice_base_upward_x_stress_Tpoints"      unit="N/m2" /> 
     79      <field id="vtau_ice"     long_name="Y-component of ocean stress on sea ice (T-points)"       standard_name="sea_ice_base_upward_y_stress_Tpoints"      unit="N/m2" /> 
    7880      <field id="sig1_pnorm"   long_name="P-normalized 1st principal stress component"                                                                       unit=""     /> 
    7981      <field id="sig2_pnorm"   long_name="P-normalized 2nd principal stress component"                                                                       unit=""     /> 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/cfgs/SHARED/field_def_nemo-oce.xml

    r13663 r13981  
    376376      <field id="qemp_oce"     long_name="Downward Heat Flux from E-P over open ocean"                                                                     unit="W/m2"  /> 
    377377      <field id="taum_oce"     long_name="wind stress module over open ocean"           standard_name="magnitude_of_surface_downward_stress"               unit="N/m2"  /> 
     378      <field id="utau_oce"     long_name="Wind Stress along i-axis over open ocean (T-points)"  standard_name="surf_down_x_stress_open_oce_Tpoints"        unit="N/m2"   /> 
     379      <field id="vtau_oce"     long_name="Wind Stress along j-axis over open ocean (T-points)"  standard_name="surf_down_y_stress_open_oce_Tpoints"        unit="N/m2"    /> 
    378380 
    379381      <!-- variables computed by the bulk parameterization algorithms (ln_blk) --> 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/DYN/dynatf.F90

    r13893 r13981  
    332332            CALL iom_put(  "utau", zutau(:,:) ) 
    333333            DEALLOCATE(zutau) 
    334          !ELSE 
    335          ! #laurent: it is done in blk_oce_1() of sbcblk.F90 ! 
    336          !       CALL iom_put(  "utau", utau(:,:) ) 
     334         ELSE 
     335            CALL iom_put(  "utau", utau(:,:) ) 
    337336         ENDIF 
    338337      ENDIF 
     
    347346            CALL iom_put(  "vtau", zvtau(:,:) ) 
    348347            DEALLOCATE(zvtau) 
    349          !ELSE 
    350          ! #laurent: it is done in blk_oce_1() of sbcblk.F90 ! 
    351          !   CALL iom_put(  "vtau", vtau(:,:) ) 
     348         ELSE 
     349            CALL iom_put(  "vtau", vtau(:,:) ) 
    352350         ENDIF 
    353351      ENDIF 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/src/OCE/SBC/sbcblk.F90

    r13893 r13981  
    6464 
    6565   USE sbc_phy        ! Catalog of functions for physical/meteorological parameters in the marine boundary layer 
    66    USE zdfdrg  , ONLY : ln_drgice_imp  ! to know if we should iom_put wind stress vector (utau,vtau) #laurent 
    6766 
    6867   IMPLICIT NONE 
     
    856855         ENDIF 
    857856 
    858          CALL iom_put( "taum_oce", taum*tmask(:,:,1) )   ! output wind stress module 
    859          IF ( .NOT. (ln_drgice_imp.OR.ln_isfcav) ) THEN 
    860             ! #Laurent: because otherwize utau and vtau are saved into dyn_atf() of dynatf.F90 
    861             CALL iom_put( "utau", utau(:,:) ) 
    862             CALL iom_put( "vtau", vtau(:,:) ) 
    863          END IF 
     857         ! Saving open-ocean wind-stress (module and components) on T-points: 
     858         CALL iom_put( "taum_oce",   taum(:,:)*tmask(:,:,1) )   ! output wind stress module 
     859         !#LB: These 2 lines below mostly here for 'STATION_ASF' test-case, otherwize "utau" (U-grid) and vtau" (V-grid) does the job in: [DYN/dynatf.F90]) 
     860         CALL iom_put( "utau_oce", ztau_i(:,:)*tmask(:,:,1) )  ! utau at T-points! 
     861         CALL iom_put( "vtau_oce", ztau_j(:,:)*tmask(:,:,1) )  ! vtau at T-points! 
    864862          
    865863         IF(sn_cfctl%l_prtctl) THEN 
     
    10531051         !! 
    10541052      END SELECT 
    1055  
    1056       IF( iom_use('Cd_ice').OR.iom_use('Ce_ice').OR.iom_use('Ch_ice').OR.iom_use('taum_ai') ) & 
     1053       
     1054      IF( iom_use('Cd_ice').OR.iom_use('Ce_ice').OR.iom_use('Ch_ice').OR.iom_use('taum_ice').OR.iom_use('utau_ice').OR.iom_use('vtau_ice') ) & 
    10571055         & ztmp(:,:) = ( 1._wp - MAX(0._wp, SIGN( 1._wp, 1.E-6_wp - fr_i )) )*tmask(:,:,1) ! mask for presence of ice ! 
    10581056 
     
    10681066         ! supress moving ice in wind stress computation as we don't know how to do it properly... 
    10691067         DO_2D( 0, 1, 0, 1 )    ! at T point 
    1070          zztmp1        = rhoa(ji,jj) * Cd_ice(ji,jj) * wndm_ice(ji,jj) 
    1071          putaui(ji,jj) =  zztmp1 * pwndi(ji,jj) 
    1072          pvtaui(ji,jj) =  zztmp1 * pwndj(ji,jj) 
     1068            zztmp1        = rhoa(ji,jj) * Cd_ice(ji,jj) * wndm_ice(ji,jj) 
     1069            putaui(ji,jj) =  zztmp1 * pwndi(ji,jj) 
     1070            pvtaui(ji,jj) =  zztmp1 * pwndj(ji,jj) 
    10731071         END_2D 
    1074          !#LB: saving the module of the ai wind-stress: NOT weighted by the ice concentration !!! 
    1075          IF(iom_use('taum_ai')) CALL iom_put( 'taum_ai', SQRT( putaui*putaui + pvtaui*pvtaui )*ztmp ) 
     1072 
     1073         !#LB: saving the module, and x-y components, of the ai wind-stress at T-points: NOT weighted by the ice concentration !!! 
     1074         IF(iom_use('taum_ice')) CALL iom_put('taum_ice', SQRT( putaui*putaui + pvtaui*pvtaui )*ztmp ) 
     1075         !#LB: These 2 lines below mostly here for 'STATION_ASF' test-case, otherwize "utau_oi" (U-grid) and vtau_oi" (V-grid) does the job in: [ICE/icedyn_rhg_evp.F90]) 
     1076         IF(iom_use('utau_ice')) CALL iom_put("utau_ice", putaui*ztmp)  ! utau at T-points! 
     1077         IF(iom_use('vtau_ice')) CALL iom_put("vtau_ice", pvtaui*ztmp)  ! vtau at T-points! 
     1078          
    10761079         ! 
    10771080         DO_2D( 0, 0, 0, 0 )    ! U & V-points (same as ocean). 
    1078          !#LB: QUESTION?? so SI3 expects wind stress vector to be provided at U & V points? Not at T-points ? 
    1079          ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology 
    1080          zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
    1081          zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji  ,jj+1,1) ) 
    1082          putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj  ) ) 
    1083          pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
     1081            !#LB: QUESTION?? so SI3 expects wind stress vector to be provided at U & V points? Not at T-points ? 
     1082            ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology 
     1083            zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
     1084            zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji  ,jj+1,1) ) 
     1085            putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj  ) ) 
     1086            pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
    10841087         END_2D 
    10851088         CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/EXPREF/file_def_nemo-ice.xml

    r13675 r13981  
    2020          <field field_ref="vtau_ai"          name="vtau_ai" /> 
    2121      --> 
    22       <field field_ref="taum_ai"          name="taum_ai" /> 
     22      <field field_ref="taum_ice"          name="taum_ice" /> 
     23      <field field_ref="utau_ice"          name="utau_ice" /> 
     24      <field field_ref="vtau_ice"          name="vtau_ice" /> 
    2325 
    2426      <!-- heat fluxes --> 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/EXPREF/file_def_nemo-oce.xml

    r13676 r13981  
    2828      <!-- <field field_ref="empmr"   name="empmr" /> --> 
    2929      <!-- --> 
    30       <field field_ref="taum"         name="taum"   /> 
     30      <field field_ref="taum_oce"     name="taum"   /> 
     31      <field field_ref="utau_oce"     name="utau"   /> 
     32      <field field_ref="vtau_oce"     name="vtau"   /> 
    3133      <field field_ref="wspd"         name="windsp" /> 
    3234      <!-- --> 
     
    4143      <field field_ref="ssq"          name="ssq" /> 
    4244      <field field_ref="wspd_blk"     name="wspd_blk" />       
    43     </file> 
    44  
    45     <file id="file2" name_suffix="_gridU" description="ocean U grid variables" compression_level="3" > 
    46       <field field_ref="utau"         name="tauuo"    /> 
    47     </file> 
    48  
    49     <file id="file3" name_suffix="_gridV" description="ocean V grid variables" compression_level="3" > 
    50       <field field_ref="vtau"         name="tauvo"    /> 
    5145    </file> 
    5246 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/EXPREF/launch_sasf.sh

    r13893 r13981  
    1818#     => i_sea_ice: whether to compute fluxes over sea-ice as well 
    1919#     => SFORC: string sufficient to copy relevant files as in "*${SFORC}*.nc" 
    20 #FORCING="PAPA"                 ; i_sea_ice=0 ; SFORC="Station_PAPA_50N-145W" 
    21 FORCING="ERA5_NorthGreenland" ; i_sea_ice=1 ; SFORC="ERA5_NorthGreenland_surface_84N_-36E_1h" ; # WITH ice/air flux computation 
     20FORCING="PAPA"                 ; i_sea_ice=0 ; SFORC="Station_PAPA_50N-145W" 
     21#FORCING="ERA5_NorthGreenland" ; i_sea_ice=1 ; SFORC="ERA5_NorthGreenland_surface_84N_-36E_1h" ; # WITH ice/air flux computation 
    2222#FORCING="ERA5_NorthGreenland" ; i_sea_ice=0 ; SFORC="ERA5_NorthGreenland_surface_84N_-36E_1h" ; # "ERA5_arctic" WITHOUT ice/air flux computation 
    2323 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/EXPREF/plot_station_asf_ICE.py

    r13893 r13981  
    3939############################################ 
    4040crealm = 'sea-ice' 
    41 L_VNEM = [   'Cd_ice',   'Ch_ice',   'qla_ice' ,   'qsb_ice'   ,  'qt_ice'    ,  'qlw_ice'  ,  'qsr_ice'  , 'taum_ai'   ] 
     41L_VNEM = [   'Cd_ice',   'Ch_ice',   'qla_ice' ,   'qsb_ice'   ,  'qt_ice'    ,  'qlw_ice'  ,  'qsr_ice'  , 'taum_ice'  ] 
    4242L_VARO = [     'Cd'  ,     'Ch'  ,   'Qlat'    ,    'Qsen'     ,   'Qnet'     ,   'Qlw'     ,    'Qsw'    ,  'Tau'      ] 
    4343L_VARL = [ r'$C_{D}$', r'$C_{H}$', r'$Q_{lat}$', r'$Q_{sens}$' , r'$Q_{net}$' , r'$Q_{lw}$' , r'$Q_{sw}$' , r'$|\tau|$' ] 
     
    144144    sys.exit(0) 
    145145 
    146 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    147 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     146 
     147#----------------------------------------------------------------- 
    148148 
    149149 
     
    201201        id_toolarge, = nmp.where( xF[:,ja] > L_MAXT[jv] ) #  
    202202        xF[id_toolarge,ja] = L_MAXT[jv] 
    203         id_toosmall, = nmp.where( xF[:,ja] < L_MINT[jv] ) ; print("id_toosmall =", id_toosmall) 
     203        id_toosmall, = nmp.where( xF[:,ja] < L_MINT[jv] ) ; #print("id_toosmall =", id_toosmall) 
    204204        xF[id_toosmall,ja] = L_MINT[jv] 
    205205 
     
    264264 
    265265            for ja in range(nb_exp): 
    266                 fplot = nmp.ma.masked_where( xF[:,ja]==0., xF[:,ja] ) 
     266                fplot = nmp.ma.masked_where( xFa[:,ja]==0., xFa[:,ja] ) 
    267267                plt.plot(vtime, fplot, '-', color=l_color[ja], \ 
    268268                         linewidth=l_width[ja], label=list_exp[ja], alpha=0.6) #, zorder=10+ja) 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/EXPREF/plot_station_asf_OCE.py

    r13893 r13981  
    130130 
    131131 
    132  
    133132#----------------------------------------------------------------- 
    134133 
     
    235234        id_toolarge, = nmp.where( xF[:,ja] > L_MAXT[jv] ) #  
    236235        xF[id_toolarge,ja] = L_MAXT[jv] 
    237         id_toosmall, = nmp.where( xF[:,ja] < L_MINT[jv] ) ; print("id_toosmall =", id_toosmall) 
     236        id_toosmall, = nmp.where( xF[:,ja] < L_MINT[jv] ) ; #print("id_toosmall =", id_toosmall) 
    238237        xF[id_toosmall,ja] = L_MINT[jv] 
    239238 
     
    298297 
    299298            for ja in range(nb_exp): 
    300                 fplot = nmp.ma.masked_where( xF[:,ja]==0., xF[:,ja] ) 
     299                fplot = nmp.ma.masked_where( xFa[:,ja]==0., xFa[:,ja] ) 
    301300                plt.plot(vtime, fplot, '-', color=l_color[ja], \ 
    302301                         linewidth=l_width[ja], label=list_exp[ja], alpha=0.6) #, zorder=10+ja) 
  • NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/README.md

    r13893 r13981  
    215215    $ ./launch_sasf.sh 
    216216 
    217 If everything goes according to plan, ``launch_sasf.sh`` should have generated the 4 following sets of output files into `${PROD_DIR}/output` (example for PAPA forcing, 4 algos tested): 
     217If everything goes according to plan, ``launch_sasf.sh`` should have generated the 4 following output files into `${PROD_DIR}/output` (example for PAPA forcing, 4 algos tested): 
    218218 
    219219    STATION_ASF-ANDREAS_PAPA_1h_20180101_20181231_gridT.nc 
    220     STATION_ASF-ANDREAS_PAPA_1h_20180101_20181231_gridU.nc 
    221     STATION_ASF-ANDREAS_PAPA_1h_20180101_20181231_gridV.nc 
    222220    STATION_ASF-COARE3p6_PAPA_1h_20180101_20181231_gridT.nc 
    223     STATION_ASF-COARE3p6_PAPA_1h_20180101_20181231_gridU.nc 
    224     STATION_ASF-COARE3p6_PAPA_1h_20180101_20181231_gridV.nc 
    225221    STATION_ASF-ECMWF_PAPA_1h_20180101_20181231_gridT.nc 
    226     STATION_ASF-ECMWF_PAPA_1h_20180101_20181231_gridU.nc 
    227     STATION_ASF-ECMWF_PAPA_1h_20180101_20181231_gridV.nc 
    228222    STATION_ASF-NCAR_PAPA_1h_20180101_20181231_gridT.nc 
    229     STATION_ASF-NCAR_PAPA_1h_20180101_20181231_gridU.nc 
    230     STATION_ASF-NCAR_PAPA_1h_20180101_20181231_gridV.nc 
    231223 
    232224 
Note: See TracChangeset for help on using the changeset viewer.