Changeset 8266
- Timestamp:
- 2017-07-03T12:17:53+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/field_def_nemo-lim.xml
r8239 r8266 27 27 28 28 <!-- SIMIP LIM fields --> 29 <field id="icethic" long_name="Sea-ice thickness" standard_name="sea_ice_thickness" unit="m" /> 30 <field id="icevel" long_name="Sea-ice speed" standard_name="sea_ice_speed" unit="m/s" /> 31 29 <field id="icethic" long_name="Sea-ice thickness" standard_name="sea_ice_thickness" unit="m" /> 30 <field id="uice_mv" long_name="X-component of sea ice velocity" standard_name="sea_ice_x_velocity" unit="m/s" /> 31 <field id="vice_mv" long_name="Y-component of sea ice velocity" standard_name="sea_ice_y_velocity" unit="m/s" /> 32 <field id="icevel_mv" long_name="Sea-ice speed" standard_name="sea_ice_speed" unit="m/s" /> 32 33 <field id="icepres" long_name="Fraction of time steps with sea ice" standard_name="sea_ice_time_fraction" unit="" /> 33 34 <field id="iceconc" long_name="Sea-ice area fraction" standard_name="sea_ice_area_fraction" unit="" /> 34 35 <field id="iceconc_pct" long_name="Sea-ice area fraction in percent" standard_name="sea_ice_area_fraction_in_percent" unit="%" > iceconc * 100. </field > 35 36 <field id="icemass" long_name="Sea-ice mass per area" standard_name="sea_ice_amount" unit="kg/m2" /> 36 <field id="icevolu" long_name="Sea-ice volume per area" standard_name="sea_ice_ volume"unit="m" />37 <field id="icevolu" long_name="Sea-ice volume per area" standard_name="sea_ice_thickness" unit="m" /> 37 38 <field id="snomass" long_name="Snow mass per area" standard_name="liquid_water_content_of_surface_snow" unit="kg/m2" /> 38 <field id="sno wthic"long_name="Snow thickness" standard_name="surface_snow_thickness" unit="m" />39 40 <field id="iceconc_cat " long_name="Sea-ice area fractions in thickness categories"standard_name="sea_ice_area_fraction_over_categories" unit="" grid_ref="grid_T_3D_ncatice" />41 <field id="ice thic_cat" long_name="Sea-ice thickness in thickness categories" standard_name="sea_ice_thickness_over_categories" unit="m" grid_ref="grid_T_3D_ncatice" />42 <field id=" snowthic_cat" long_name="Snow thickness in thickness categories" standard_name="snow_thickness_over_categories"unit="m" grid_ref="grid_T_3D_ncatice" />43 44 <field id="icestK" long_name="ice surface temperature" standard_name="sea_ice_surface_temperature " unit="C" > icest + 273.15 </field > 45 <field id="ices ntK" long_name="Temperature at snow-ice interface" standard_name="sea_ice_snow_interface_temperature" unit="degC" > icesnt + 273.15 </field >46 <field id="ice botK" long_name="Temperature at ice-ocean interface" standard_name="sea_ice_bottom_temperature" unit="degC" > icebot + 273.15 </field>47 <field id="icebotK" long_name="Temperature at ice-ocean interface" standard_name="sea_ice_bottom_temperature" unit=" degC" > icebot + 273.15 </field>48 49 <field id=" miceage"long_name="Age of sea ice" standard_name="age_of_sea_ice" unit="s" />50 <field id=" alb_ice"long_name="Sea-ice or snow albedo" standard_name="sea_ice_albedo" unit="" />39 <field id="snothic" long_name="Snow thickness" standard_name="surface_snow_thickness" unit="m" /> 40 41 <field id="iceconc_cat_mv" long_name="Sea-ice area fractions in thickness categories" standard_name="sea_ice_area_fraction_over_categories" unit="" grid_ref="grid_T_3D_ncatice" /> 42 <field id="iceconc_cat_pct_mv" long_name="Sea-ice area fractions in thickness categories" standard_name="sea_ice_area_fraction_over_categories" unit="%" grid_ref="grid_T_3D_ncatice" > iceconc_cat_mv * 100. </field > 43 <field id="icethic_cat_mv" long_name="Sea-ice thickness in thickness categories" standard_name="sea_ice_thickness_over_categories" unit="m" grid_ref="grid_T_3D_ncatice" /> 44 <field id="snowthic_cat_mv" long_name="Snow thickness in thickness categories" standard_name="snow_thickness_over_categories" unit="m" grid_ref="grid_T_3D_ncatice" /> 45 46 <field id="icestK" long_name="Surface temperature of sea ice" standard_name="sea_ice_surface_temperature" unit="K" /> 47 <field id="icesntK" long_name="Temperature at snow-ice interface" standard_name="sea_ice_snow_interface_temperature" unit="K" /> 48 <field id="icebotK" long_name="Temperature at ice-ocean interface" standard_name="sea_ice_bottom_temperature" unit="K" /> 49 50 <field id="iceage" long_name="Age of sea ice" standard_name="age_of_sea_ice" unit="s" /> 51 <field id="icealb" long_name="Sea-ice or snow albedo" standard_name="sea_ice_albedo" unit="" /> 51 52 <field id="icesmass" long_name="Mass of salt in sea ice per area" standard_name="sea_ice_salt_mass" unit="kg/m2" /> 52 53 <field id="micesalt" long_name="Sea ice salinity" standard_name="sea_ice_salinity" unit="g/kg" /> 53 <field id="icesal" long_name="Sea ice salinity" standard_name="sea_ice_salinity" unit="g/kg" /> 54 54 <field id="icefb" long_name="Sea-ice freeboard" standard_name="sea_ice_freeboard" unit="m" /> 55 55 56 56 <field id="icehcneg" long_name="Sea-ice heat content per unit area" standard_name="integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content" unit="J/m2" > (-1.0)*icehc </field> 57 <field id="isnhcneg" long_name="Snow-heat content per unit area" standard_name="thermal_energy_content_of_surface_snow" unit="J/m2" > (-1.0)*isnowhc</field>57 <field id="isnhcneg" long_name="Snow-heat content per unit area" standard_name="thermal_energy_content_of_surface_snow" unit="J/m2" > </field> 58 58 59 59 <field id="wfxsum" long_name="Freshwater flux from sea-ice surface" standard_name="freshwater_flux_from_ice_surface" unit="kg/m2/s" /> … … 78 78 <field id="dmsssi" long_name="snow mass change through snow-to-ice conversion" standard_name="tendency_of_snow_mass_due_to_snow_to_ice_conversion" unit="kg/m2/s" /> 79 79 80 <field id="hfx turneg" long_name="Net sensible heat flux under sea ice" standard_name="ice_ocean_heat_flux" unit="W/m2" > (-1.0)*hfxtur </field>80 <field id="hfxsenso" long_name="Net sensible heat flux under sea ice" standard_name="ice_ocean_heat_flux" unit="W/m2" /> 81 81 <field id="hfxconsu" long_name="Net conductive heat flux in ice at the surface" standard_name="conductive_heat_flux_at_sea_ice_surface" unit="W/m2" /> 82 82 <field id="hfxconbo" long_name="Net conductive heat fluxes in ice at the bottom" standard_name="conductive_heat_flux_at_sea_ice_bottom" unit="W/m2" /> 83 83 84 <field id=" msfx" long_name="Salt flux from sea ice" standard_name="salt_flux_from_ice" unit="kg/m2/s" > sfx/86400000. </field>84 <field id="sfx_mv" long_name="Salt flux from sea ice" standard_name="salt_flux_from_ice" unit="kg/m2/s" /> 85 85 <field id="wfxtot" long_name="Freshwater flux from sea ice" standard_name="freshwater_flux_from_ice" unit="kg/m2/s" /> 86 86 … … 129 129 <field id="uice_ipa" long_name="X-component of sea ice velocity" standard_name="sea_ice_x_velocity" unit="m/s" /> 130 130 <field id="vice_ipa" long_name="Y-component of sea ice velocity" standard_name="sea_ice_y_velocity" unit="m/s" /> 131 <field id="icevel" long_name="Sea-ice speed" standard_name="sea_ice_speed" unit="m/s" /> 131 132 <field id="isst" long_name="sea surface temperature" standard_name="sea_surface_temperature" unit="degC" /> 132 133 <field id="isss" long_name="sea surface salinity" standard_name="sea_surface_salinity" unit="1e-3" /> … … 144 145 <field id="icevmp" long_name="melt pond volume" standard_name="sea_ice_meltpond_volume" unit="m" /> 145 146 147 <field id="iceconc_cat" long_name="Sea-ice area fractions in thickness categories" unit="" grid_ref="grid_T_3D_ncatice" /> 148 <field id="icethic_cat" long_name="Sea-ice thickness in thickness categories" unit="m" grid_ref="grid_T_3D_ncatice" /> 149 <field id="snowthic_cat" long_name="Snow thickness in thickness categories" unit="m" grid_ref="grid_T_3D_ncatice" /> 146 150 <field id="iceage_cat" long_name="Ice age for categories" unit="days" grid_ref="grid_T_3D_ncatice" /> 147 151 <field id="salinity_cat" long_name="Sea-Ice Bulk salinity for categories" unit="g/kg" grid_ref="grid_T_3D_ncatice" /> … … 153 157 154 158 <field id="micet" long_name="Mean ice temperature" unit="degC" /> 159 <field id="miceage" long_name="Age of sea ice" unit="s" /> 160 <field id="micesalt" long_name="Sea ice salinity" unit="g/kg" /> 155 161 <field id="icehc" long_name="ice total heat content" unit="J/m2" /> 156 162 <field id="isnowhc" long_name="snow total heat content" unit="J/m2" /> 157 163 <field id="icest" long_name="ice surface temperature" unit="degC" /> 158 <field id="icesnt" long_name="Temperature at snow-ice interface" unit="degC" />159 <field id="icebot" long_name="Temperature at ice-ocean interface" unit="degC" />160 164 <field id="ibrinv" long_name="brine volume" unit="%" /> 161 165 <field id="icecolf" long_name="frazil ice collection thickness" unit="m" /> … … 319 323 </field_group> 320 324 321 <!-- SIMIP daily fields --> 322 <field_group id="SIday_fields"> 323 <field field_ref="iceconc_pct" name="siconc" /> 324 <field field_ref="snowthic" name="sisnthick" /> 325 <field field_ref="icevel" name="sispeed" /> 326 <field field_ref="icestK" name="sitemptop" /> 327 <field field_ref="icethic" name="sithick" /> 328 <field field_ref="icepres" name="sitimefrac" /> 329 <field field_ref="uice_ipa" name="siu" /> 330 <field field_ref="vice_ipa" name="siv" /> 325 <!-- SIMIP daily fields --> <field_group id="SIday_fields"> 326 <field field_ref="icepres" name="sitimefrac" /> 327 <field field_ref="iceconc_pct" name="siconc" /> 328 <field field_ref="icethic" name="sithick" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 329 <field field_ref="snothic" name="sisnthick" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 330 <field field_ref="icestK" name="sitemptop" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 331 <field field_ref="uice_mv" name="siu" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 332 <field field_ref="vice_mv" name="siv" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 333 <field field_ref="icevel_mv" name="sispeed" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 331 334 </field_group> 332 335 … … 337 340 <field field_ref="iceconc_pct" name="siconc" /> 338 341 <field field_ref="icemass" name="simass" /> 342 <field field_ref="icethic" name="sithick" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 339 343 <field field_ref="icevolu" name="sivol" /> 340 <field field_ref="snomass" name="sisnmass" /> 341 <field field_ref="snowthic" name="sisnthick" /> 342 <field field_ref="icethic" name="sithick" /> 343 <field field_ref="icevel" name="sispeed" /> 344 344 <field field_ref="snomass" name="sisnmass" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 345 <field field_ref="snothic" name="sisnthick" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 346 345 347 <!-- category-dependent fields --> 346 <field field_ref="iceconc_cat " name="siitdconc"/>347 <field field_ref="icethic_cat " name="siitdthick"/>348 <field field_ref="snowthic_cat " name="siitdsnthick"/>348 <field field_ref="iceconc_cat_pct_mv" name="siitdconc" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 349 <field field_ref="icethic_cat_mv" name="siitdthick" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 350 <field field_ref="snowthic_cat_mv" name="siitdsnthick" default_value="-1.0e20" detect_missing_value="true" operation="average"/> 349 351 350 352 <!-- additional state variables--> 351 <field field_ref="icestK" name="sitemptop" /> 352 <field field_ref="icesntK" name="sitempsnic" /> 353 <field field_ref="icebotK" name="sitempbot" /> 354 <field field_ref="miceage" name="siage" /> 355 <field field_ref="alb_ice" name="sialb" /> 353 <field field_ref="icestK" name="sitemptop" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 354 <field field_ref="icesntK" name="sitempsnic" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 355 <field field_ref="icebotK" name="sitempbot" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 356 <field field_ref="iceage" name="siage" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 356 357 <field field_ref="icesmass" name="sisaltmass" /> 357 <field field_ref=" micesalt" name="sisali"/>358 <field field_ref="icefb" name="sifb" />358 <field field_ref="icesal" name="sisali" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 359 <field field_ref="icefb" name="sifb" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 359 360 <field field_ref="icehcneg" name="sihc" /> 360 <field field_ref="isnhcneg" name="sisnhc" />361 <field field_ref="isnhcneg" name="sisnhc" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 361 362 362 363 <!-- freshwater fluxes --> 363 364 <field field_ref="wfxtot" name="siflfwbot" /> 364 <field field_ref="wfxsum" name="siflfwdrain" />365 <field field_ref="wfxsum" name="siflfwdrain" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 365 366 366 367 <!-- area balance --> … … 384 385 385 386 <!-- heat balance --> 386 <field field_ref="hfx turneg" name="siflsensupbot"/>387 <field field_ref="hfxconsu" name="siflcondtop" />388 <field field_ref="hfxconbo" name="siflcondbot" />387 <field field_ref="hfxsenso" name="siflsensupbot" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 388 <field field_ref="hfxconsu" name="siflcondtop" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 389 <field field_ref="hfxconbo" name="siflcondbot" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 389 390 390 391 <!-- salt balance --> 391 <field field_ref=" msfx" name="siflsaltbot"/>392 <field field_ref="sfx_mv" name="siflsaltbot" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 392 393 393 394 <!-- sea-ice dynamics --> 394 <field field_ref="uice_ipa" name="siu" /> 395 <field field_ref="vice_ipa" name="siv" /> 396 397 <field field_ref="utau_ice" name="sistrxdtop" /> 398 <field field_ref="vtau_ice" name="sistrydtop" /> 399 400 <field field_ref="utau_oi" name="sistrxubot" /> 401 <field field_ref="vtau_oi" name="sistryubot" /> 402 403 <field field_ref="icestr" name="sicompstren" /> 404 405 <field field_ref="dssh_dx" name="siforcetiltx" /> 406 <field field_ref="dssh_dy" name="siforcetilty" /> 407 408 <field field_ref="corstrx" name="siforcecoriolx" /> 409 <field field_ref="corstry" name="siforcecorioly" /> 410 411 <field field_ref="intstrx" name="siforceintstrx" /> 412 <field field_ref="intstry" name="siforceintstry" /> 395 <field field_ref="uice_mv" name="siu" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 396 <field field_ref="vice_mv" name="siv" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 397 <field field_ref="icevel_mv" name="sispeed" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 398 399 <field field_ref="utau_ice" name="sistrxdtop" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 400 <field field_ref="vtau_ice" name="sistrydtop" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 401 402 <field field_ref="utau_oi" name="sistrxubot" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 403 <field field_ref="vtau_oi" name="sistryubot" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 404 405 <field field_ref="icestr" name="sicompstren" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 406 407 <field field_ref="dssh_dx" name="siforcetiltx" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 408 <field field_ref="dssh_dy" name="siforcetilty" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 409 410 <field field_ref="corstrx" name="siforcecoriolx" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 411 <field field_ref="corstry" name="siforcecorioly" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 412 413 <field field_ref="intstrx" name="siforceintstrx" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 414 <field field_ref="intstry" name="siforceintstry" default_value="-1.0e20" detect_missing_value="true" operation="average" /> 413 415 414 416 <field field_ref="xmtrptot" name="sidmasstranx" /> … … 431 433 </field_group> 432 434 433 434 435 </field_definition> -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r8233 r8266 127 127 ELSEWHERE ; zalb(:,:) = SUM( alb_ice * a_i_b, dim=3 ) / at_i_b 128 128 END WHERE 129 IF( iom_use(' alb_ice' ) ) CALL iom_put( "alb_ice" , zalb(:,:) )! ice albedo output129 IF( iom_use('icealb' ) ) CALL iom_put( "icealb" , zalb(:,:) ) ! ice albedo output 130 130 131 131 zalb(:,:) = SUM( alb_ice * a_i_b, dim=3 ) + 0.066_wp * ( 1._wp - at_i_b ) … … 181 181 182 182 ! add the snow melt water to snow mass flux to the ocean 183 wfx_snw( :,:) = wfx_snw(:,:) + wfx_snw_sum(:,:)183 wfx_snw(ji,jj) = wfx_snw(ji,jj) + wfx_snw_sum(ji,jj) 184 184 185 185 ! mass flux at the ocean/ice interface -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r8240 r8266 54 54 ! 55 55 INTEGER :: ji, jj, jk, jl ! dummy loop indices 56 REAL(wp) :: z2da, z2db, ztmp, zrho1, zrho2 57 REAL(wp), POINTER, DIMENSION(:,:,:) :: zswi2 58 REAL(wp), POINTER, DIMENSION(:,:) :: z2d, zswi !2D workspace59 REAL(wp), POINTER, DIMENSION(:,:) :: zfb ! ice freeboard56 REAL(wp) :: z2da, z2db, ztmp, zrho1, zrho2, zmiss_val 57 REAL(wp), POINTER, DIMENSION(:,:,:) :: zswi2, zmiss2 58 REAL(wp), POINTER, DIMENSION(:,:) :: z2d, zswi, zmiss ! 2D workspace 59 REAL(wp), POINTER, DIMENSION(:,:) :: zfb ! ice freeboard 60 60 REAL(wp), POINTER, DIMENSION(:,:) :: zamask, zamask15 ! 15% concentration mask 61 61 … … 72 72 IF( nn_timing == 1 ) CALL timing_start('limwri') 73 73 74 CALL wrk_alloc( jpi,jpj,jpl, zswi2 ) 75 CALL wrk_alloc( jpi,jpj , z2d, zswi ) 76 CALL wrk_alloc( jpi,jpj , zfb, zamask, zamask15 ) 77 !----------------------------- 78 ! Mean category values 79 !----------------------------- 74 CALL wrk_alloc( jpi, jpj, jpl, zswi2, zmiss2 ) 75 CALL wrk_alloc( jpi, jpj , z2d, zswi, zmiss ) 76 CALL wrk_alloc( jpi, jpj , zfb, zamask, zamask15 ) 77 78 !---------------------------------------- 79 ! Brine volume, switches, missing values 80 !---------------------------------------- 80 81 81 82 ! brine volume … … 97 98 END DO 98 99 END DO 99 ! 100 ! fluxes 100 101 zmiss_val = -1.0e20 102 zmiss(:,:) = zmiss_val * ( 1. - zswi(:,:) ) 103 zmiss2(:,:,:) = zmiss_val * ( 1. - zswi2(:,:,:) ) 104 105 !---------------------------------------- 106 ! Standard outputs 107 !---------------------------------------- 108 ! fluxes 101 109 ! pfrld is the lead fraction at the previous time step (actually between TRP and THD) 102 110 IF( iom_use('qsr_oce') ) CALL iom_put( "qsr_oce" , qsr_oce(:,:) * pfrld(:,:) ) ! solar flux at ocean surface … … 114 122 115 123 ! velocity 116 IF ( iom_use( "uice_ipa" ) .OR. iom_use( "vice_ipa" ) .OR. iom_use( "icevel" ) ) THEN 124 IF ( iom_use('uice_ipa') ) CALL iom_put( "uice_ipa" , u_ice ) ! ice velocity u component 125 IF ( iom_use('vice_ipa') ) CALL iom_put( "vice_ipa" , v_ice ) ! ice velocity v component 126 127 IF ( ( iom_use( "icevel" ) ) .OR. ( iom_use( "icevel_mv" ) ) ) THEN 117 128 DO jj = 2 , jpjm1 118 129 DO ji = 2 , jpim1 … … 123 134 END DO 124 135 CALL lbc_lnk( z2d, 'T', 1. ) 125 CALL iom_put( "uice_ipa" , u_ice ) ! ice velocity u component 126 CALL iom_put( "vice_ipa" , v_ice ) ! ice velocity v component 127 CALL iom_put( "icevel" , z2d ) ! ice velocity module 136 IF ( iom_use( "icevel" ) ) CALL iom_put( "icevel" , z2d ) ! ice velocity module 137 IF ( iom_use( "icevel_mv" ) ) CALL iom_put( "icevel_mv" , z2d(:,:) * zswi(:,:) + zmiss(:,:) ) ! ice velocity module (missing value) 128 138 ENDIF 129 139 … … 142 152 CALL iom_put( "isnowhc" , et_s * zswi ) ! snow total heat content 143 153 CALL iom_put( "ibrinv" , bvm_i * zswi * 100. ) ! brine volume 144 CALL iom_put( "utau_ice" , utau_ice*zswi ) ! wind stress over ice along i-axis at I-point145 CALL iom_put( "vtau_ice" , vtau_ice*zswi ) ! wind stress over ice along j-axis at I-point146 154 CALL iom_put( "snowpre" , sprecip * 86400. ) ! snow precipitation 147 155 CALL iom_put( "micesalt" , smt_i * zswi ) ! mean ice salinity 148 156 149 CALL iom_put( "icestr" , strength * zswi ) ! ice strength150 157 CALL iom_put( "idive" , divu_i ) ! divergence 151 158 CALL iom_put( "ishear" , shear_i ) ! shear … … 257 264 zrho1 = ( rau0 - rhoic ) / rau0; zrho2 = rhosn / rau0 258 265 259 IF ( iom_use( "icethic" ) ) CALL iom_put( "icethic" , htm_i * zamask ) ! Ice thickness 260 IF ( iom_use( "icepres" ) ) CALL iom_put( "icepres" , zswi ) ! Ice presence (1 or 0) 261 IF ( iom_use( "snowthic" ) ) CALL iom_put( "snowthic" , htm_s * zamask ) ! Snow thickness 262 IF ( iom_use( "icemass" ) ) CALL iom_put( "icemass" , rhoic * vt_i(:,:) * zswi ) ! Ice mass per cell area 263 IF ( iom_use( "snomass" ) ) CALL iom_put( "snomass" , rhosn * vt_s(:,:) * zswi ) ! Snow mass per cell area 264 IF ( iom_use( "icesnt" ) ) CALL iom_put( "icesnt" , ( tm_si - rt0 ) * zswi ) ! Snow-ice interface temperature 265 IF ( iom_use( "icebot" ) ) CALL iom_put( "icebot" , ( t_bo - rt0 ) * zswi ) ! Ice bottom temperature 266 IF ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass" , SUM( smv_i, DIM = 3 ) * rhoic * 1.0e-3 * zswi ) ! Mass of salt in sea ice per cell area 266 IF ( iom_use( "icepres" ) ) CALL iom_put( "icepres" , zswi(:,:) ) ! Ice presence (1 or 0) 267 IF ( iom_use( "icemass" ) ) CALL iom_put( "icemass" , rhoic * vt_i(:,:) * zswi(:,:) ) ! Ice mass per cell area 268 IF ( iom_use( "icethic" ) ) CALL iom_put( "icethic" , htm_i(:,:) * zamask(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice thickness 269 IF ( iom_use( "snomass" ) ) CALL iom_put( "snomass" , rhosn * vt_s(:,:) * zswi(:,:) + zmiss(:,:) ) ! Snow mass per cell area 270 IF ( iom_use( "snothic" ) ) CALL iom_put( "snothic" , htm_s(:,:) * zamask(:,:) * zswi(:,:) + zmiss(:,:) ) ! Snow thickness 271 272 IF ( iom_use( "iceconc_cat_mv" ) ) CALL iom_put( "iceconc_cat_mv" , a_i(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) ) ! Area for categories 273 IF ( iom_use( "icethic_cat_mv" ) ) CALL iom_put( "icethic_cat_mv" , ht_i(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) ) ! Thickness for categories 274 IF ( iom_use( "snowthic_cat_mv" ) ) CALL iom_put( "snowthic_cat_mv", ht_s(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) ) ! Snow depth for categories 275 276 IF ( iom_use( "icestK" ) ) CALL iom_put( "icestK" , tm_su(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice surface temperature 277 IF ( iom_use( "icesntK" ) ) CALL iom_put( "icesntK" , tm_si(:,:) * zswi(:,:) + zmiss(:,:) ) ! Snow-ice interface temperature 278 IF ( iom_use( "icebotK" ) ) CALL iom_put( "icebotK" , t_bo(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice bottom temperature 279 IF ( iom_use( "iceage" ) ) CALL iom_put( "iceage" , om_i(:,:) * zamask15(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice age 280 IF ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass" , SUM( smv_i, dim=3 ) * rhoic * 1.0e-3 * zswi(:,:) ) ! Mass of salt in sea ice per cell area 281 IF ( iom_use( "icesal" ) ) CALL iom_put( "icesal" , smt_i(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice salinity 282 267 283 IF ( iom_use( "icefb" ) ) THEN 268 zfb(:,:) = ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi(:,:)284 zfb(:,:) = ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) 269 285 WHERE( zfb < 0._wp ) ; zfb = 0._wp ; END WHERE 270 CALL iom_put( "icefb" , zfb ) ! Ice freeboard 271 ENDIF 272 IF ( iom_use( "dmithd" ) ) CALL iom_put( "dmithd" , - wfx_bog - wfx_bom - wfx_sum & ! Sea-ice mass change from thermodynamics 286 CALL iom_put( "icefb" , zfb(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice freeboard 287 ENDIF 288 289 IF ( iom_use( "isnhcneg" ) ) CALL iom_put( "isnhcneg" , - et_s(:,:) * zswi(:,:) + zmiss(:,:) ) ! Snow total heat content 290 291 IF ( iom_use( "dmithd" ) ) CALL iom_put( "dmithd" , - wfx_bog - wfx_bom - wfx_sum & ! Sea-ice mass change from thermodynamics 273 292 & - wfx_sni - wfx_opw - wfx_res ) 274 IF ( iom_use( "dmidyn" ) ) CALL iom_put( "dmidyn" , diag_dmi_dyn ) ! Sea-ice mass change from dynamics 275 IF ( iom_use( "dmiopw" ) ) CALL iom_put( "dmiopw" , - wfx_opw ) ! Sea-ice mass change through growth in open water 276 IF ( iom_use( "dmibog" ) ) CALL iom_put( "dmibog" , - wfx_bog ) ! Sea-ice mass change through basal growth 277 IF ( iom_use( "dmisni" ) ) CALL iom_put( "dmisni" , - wfx_sni ) ! Sea-ice mass change through snow-to-ice conversion 278 IF ( iom_use( "dmisum" ) ) CALL iom_put( "dmisum" , - wfx_sum ) ! Sea-ice mass change through surface melting 279 IF ( iom_use( "dmibom" ) ) CALL iom_put( "dmibom" , - wfx_bom ) ! Sea-ice mass change through bottom melting 280 281 IF ( iom_use( "dmtsub" ) ) CALL iom_put( "dmtsub" , - wfx_sub ) ! Sea-ice mass change through evaporation and sublimation 282 IF ( iom_use( "dmssub" ) ) CALL iom_put( "dmssub" , - wfx_snw_sub ) ! Snow mass change through sublimation 283 IF ( iom_use( "dmisub" ) ) CALL iom_put( "dmisub" , - wfx_ice_sub ) ! Sea-ice mass change through sublimation 284 285 IF ( iom_use( "dmsspr" ) ) CALL iom_put( "dmsspr" , - wfx_spr ) ! Snow mass change through snow fall 286 IF ( iom_use( "dmsssi" ) ) CALL iom_put( "dmsssi" , wfx_sni*rhosn/rhoic ) ! Snow mass change through snow-to-ice conversion 287 288 IF ( iom_use( "dmsmel" ) ) CALL iom_put( "dmsmel" , - wfx_snw_sum ) ! Snow mass change through melt 289 IF ( iom_use( "dmsdyn" ) ) CALL iom_put( "dmsdyn" , diag_dms_dyn ) ! Snow mass change through dynamics 290 291 IF ( iom_use( "hfxconbo" ) ) CALL iom_put( "hfxconbo" , diag_fc_bo ) ! Bottom conduction flux 292 IF ( iom_use( "hfxconsu" ) ) CALL iom_put( "hfxconsu" , diag_fc_su ) ! Surface conduction flux 293 294 IF ( iom_use( "wfxtot" ) ) CALL iom_put( "wfxtot" , wfx_ice ) ! Total freshwater flux from sea ice 295 IF ( iom_use( "wfxsum" ) ) CALL iom_put( "wfxsum" , wfx_sum ) ! Freshwater flux from sea-ice surface 296 297 IF ( iom_use( "utau_oi" ) ) CALL iom_put( "utau_oi" , diag_utau_oi*zswi ) ! X-component of ocean stress on sea ice 298 IF ( iom_use( "vtau_oi" ) ) CALL iom_put( "vtau_oi" , diag_vtau_oi*zswi ) ! Y-component of ocean stress on sea ice 299 300 IF ( iom_use( "dssh_dx" ) ) CALL iom_put( "dssh_dx" , diag_dssh_dx*zswi ) ! Sea-surface tilt term in force balance (x-component) 301 IF ( iom_use( "dssh_dy" ) ) CALL iom_put( "dssh_dy" , diag_dssh_dy*zswi ) ! Sea-surface tilt term in force balance (y-component) 302 303 IF ( iom_use( "corstrx" ) ) CALL iom_put( "corstrx" , diag_corstrx*zswi ) ! Coriolis force term in force balance (x-component) 304 IF ( iom_use( "corstry" ) ) CALL iom_put( "corstry" , diag_corstry*zswi ) ! Coriolis force term in force balance (y-component) 305 306 IF ( iom_use( "intstrx" ) ) CALL iom_put( "intstrx" , diag_intstrx*zswi ) ! Internal force term in force balance (x-component) 307 IF ( iom_use( "intstry" ) ) CALL iom_put( "intstry" , diag_intstry*zswi ) ! Internal force term in force balance (y-component) 308 309 IF ( iom_use( "normstr" ) ) CALL iom_put( "normstr" , diag_sig1 *zswi ) ! Normal stress 310 IF ( iom_use( "sheastr" ) ) CALL iom_put( "sheastr" , diag_sig2 *zswi ) ! Shear stress 311 312 IF ( iom_use( "xmtrpice" ) ) CALL iom_put( "xmtrpice" , diag_xmtrp_ice ) ! X-component of sea-ice mass transport 313 IF ( iom_use( "ymtrpice" ) ) CALL iom_put( "ymtrpice" , diag_ymtrp_ice ) ! Y-component of sea-ice mass transport 314 315 IF ( iom_use( "xmtrpsnw" ) ) CALL iom_put( "xmtrpsnw" , diag_xmtrp_snw ) ! X-component of snow mass transport 316 IF ( iom_use( "ymtrpsnw" ) ) CALL iom_put( "ymtrpsnw" , diag_ymtrp_snw ) ! Y-component of snow mass transport 317 318 IF ( iom_use( "xatrp" ) ) CALL iom_put( "xatrp" , diag_xatrp ) ! X-component of ice area transport 319 IF ( iom_use( "yatrp" ) ) CALL iom_put( "yatrp" , diag_yatrp ) ! Y-component of ice area transport 293 IF ( iom_use( "dmidyn" ) ) CALL iom_put( "dmidyn" , diag_dmi_dyn ) ! Sea-ice mass change from dynamics 294 IF ( iom_use( "dmiopw" ) ) CALL iom_put( "dmiopw" , - wfx_opw ) ! Sea-ice mass change through growth in open water 295 IF ( iom_use( "dmibog" ) ) CALL iom_put( "dmibog" , - wfx_bog ) ! Sea-ice mass change through basal growth 296 IF ( iom_use( "dmisni" ) ) CALL iom_put( "dmisni" , - wfx_sni ) ! Sea-ice mass change through snow-to-ice conversion 297 IF ( iom_use( "dmisum" ) ) CALL iom_put( "dmisum" , - wfx_sum ) ! Sea-ice mass change through surface melting 298 IF ( iom_use( "dmibom" ) ) CALL iom_put( "dmibom" , - wfx_bom ) ! Sea-ice mass change through bottom melting 299 300 IF ( iom_use( "dmtsub" ) ) CALL iom_put( "dmtsub" , - wfx_sub ) ! Sea-ice mass change through evaporation and sublimation 301 IF ( iom_use( "dmssub" ) ) CALL iom_put( "dmssub" , - wfx_snw_sub ) ! Snow mass change through sublimation 302 IF ( iom_use( "dmisub" ) ) CALL iom_put( "dmisub" , - wfx_ice_sub ) ! Sea-ice mass change through sublimation 303 304 IF ( iom_use( "dmsspr" ) ) CALL iom_put( "dmsspr" , - wfx_spr ) ! Snow mass change through snow fall 305 IF ( iom_use( "dmsssi" ) ) CALL iom_put( "dmsssi" , wfx_sni*rhosn/rhoic ) ! Snow mass change through snow-to-ice conversion 306 307 IF ( iom_use( "dmsmel" ) ) CALL iom_put( "dmsmel" , - wfx_snw_sum ) ! Snow mass change through melt 308 IF ( iom_use( "dmsdyn" ) ) CALL iom_put( "dmsdyn" , diag_dms_dyn ) ! Snow mass change through dynamics 309 310 IF ( iom_use( "hfxsenso" ) ) CALL iom_put( "hfxsenso" , -fhtur(:,:) * zswi(:,:) + zmiss(:,:) ) ! Sensible oceanic heat flux 311 IF ( iom_use( "hfxconbo" ) ) CALL iom_put( "hfxconbo" , diag_fc_bo * zswi(:,:) + zmiss(:,:) ) ! Bottom conduction flux 312 IF ( iom_use( "hfxconsu" ) ) CALL iom_put( "hfxconsu" , diag_fc_su * zswi(:,:) + zmiss(:,:) ) ! Surface conduction flux 313 314 IF ( iom_use( "wfxtot" ) ) CALL iom_put( "wfxtot" , wfx_ice(:,:) * zswi(:,:) + zmiss(:,:) ) ! Total freshwater flux from sea ice 315 IF ( iom_use( "wfxsum" ) ) CALL iom_put( "wfxsum" , wfx_sum(:,:) * zswi(:,:) + zmiss(:,:) ) ! Freshwater flux from sea-ice surface 316 IF ( iom_use( "sfx_mv" ) ) CALL iom_put( "sfx_mv" , sfx(:,:) * 0.001 * zswi(:,:) + zmiss(:,:) ) ! Total salt flux 317 318 IF ( iom_use( "uice_mv" ) ) CALL iom_put( "uice_mv" , u_ice(:,:) * zswi(:,:) + zmiss(:,:) ) ! ice velocity u component 319 IF ( iom_use( "vice_mv" ) ) CALL iom_put( "vice_mv" , v_ice(:,:) * zswi(:,:) + zmiss(:,:) ) ! ice velocity v component 320 321 IF ( iom_use( "xmtrpice" ) ) CALL iom_put( "xmtrpice" , diag_xmtrp_ice(:,:) ) ! X-component of sea-ice mass transport (kg/s) 322 IF ( iom_use( "ymtrpice" ) ) CALL iom_put( "ymtrpice" , diag_ymtrp_ice(:,:) ) ! Y-component of sea-ice mass transport 323 324 IF ( iom_use( "xmtrpsnw" ) ) CALL iom_put( "xmtrpsnw" , diag_xmtrp_snw(:,:) ) ! X-component of snow mass transport (kg/s) 325 IF ( iom_use( "ymtrpsnw" ) ) CALL iom_put( "ymtrpsnw" , diag_ymtrp_snw(:,:) ) ! Y-component of snow mass transport 326 327 IF ( iom_use( "xatrp" ) ) CALL iom_put( "xatrp" , diag_xatrp(:,:) ) ! X-component of ice area transport 328 IF ( iom_use( "yatrp" ) ) CALL iom_put( "yatrp" , diag_yatrp(:,:) ) ! Y-component of ice area transport 329 330 IF ( iom_use( "utau_ice" ) ) CALL iom_put( "utau_ice" , utau_ice(:,:) * zswi(:,:) + zmiss(:,:) ) ! Wind stress term in force balance (x) 331 IF ( iom_use( "vtau_ice" ) ) CALL iom_put( "vtau_ice" , vtau_ice(:,:) * zswi(:,:) + zmiss(:,:) ) ! Wind stress term in force balance (y) 332 333 IF ( iom_use( "utau_oi" ) ) CALL iom_put( "utau_oi" , diag_utau_oi(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ocean stress term in force balance (x) 334 IF ( iom_use( "vtau_oi" ) ) CALL iom_put( "vtau_oi" , diag_vtau_oi(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ocean stress term in force balance (y) 335 336 IF ( iom_use( "icestr" ) ) CALL iom_put( "icestr" , strength(:,:) * zswi(:,:) + zmiss(:,:) ) ! Ice strength 337 338 IF ( iom_use( "dssh_dx" ) ) CALL iom_put( "dssh_dx" , diag_dssh_dx(:,:) * zswi(:,:) + zmiss(:,:) ) ! Sea-surface tilt term in force balance (x) 339 IF ( iom_use( "dssh_dy" ) ) CALL iom_put( "dssh_dy" , diag_dssh_dy(:,:) * zswi(:,:) + zmiss(:,:) ) ! Sea-surface tilt term in force balance (y) 340 341 IF ( iom_use( "corstrx" ) ) CALL iom_put( "corstrx" , diag_corstrx(:,:) * zswi(:,:) + zmiss(:,:) ) ! Coriolis force term in force balance (x) 342 IF ( iom_use( "corstry" ) ) CALL iom_put( "corstry" , diag_corstry(:,:) * zswi(:,:) + zmiss(:,:) ) ! Coriolis force term in force balance (y) 343 344 IF ( iom_use( "intstrx" ) ) CALL iom_put( "intstrx" , diag_intstrx(:,:) * zswi(:,:) + zmiss(:,:) ) ! Internal force term in force balance (x) 345 IF ( iom_use( "intstry" ) ) CALL iom_put( "intstry" , diag_intstry(:,:) * zswi(:,:) + zmiss(:,:) ) ! Internal force term in force balance (y) 346 347 IF ( iom_use( "normstr" ) ) CALL iom_put( "normstr" , diag_sig1(:,:) * zswi(:,:) ) ! Normal stress 348 IF ( iom_use( "sheastr" ) ) CALL iom_put( "sheastr" , diag_sig2(:,:) * zswi(:,:) ) ! Shear stress 320 349 321 350 !-------------------------------- … … 369 398 ! not yet implemented 370 399 371 CALL wrk_dealloc( jpi, jpj, jpl, zswi2 )372 CALL wrk_dealloc( jpi, jpj , z2d, zswi )400 CALL wrk_dealloc( jpi, jpj, jpl, zswi2, zmiss2 ) 401 CALL wrk_dealloc( jpi, jpj , z2d, zswi, zmiss ) 373 402 CALL wrk_dealloc( jpi, jpj , zfb, zamask, zamask15 ) 374 403
Note: See TracChangeset
for help on using the changeset viewer.