[8586] | 1 | MODULE icewri |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE icewri *** |
---|
| 4 | !! sea-ice : output ice variables |
---|
| 5 | !!====================================================================== |
---|
[9604] | 6 | !! History : 4.0 ! 2018 (many people) SI3 [aka Sea Ice cube] |
---|
| 7 | !!---------------------------------------------------------------------- |
---|
[9570] | 8 | #if defined key_si3 |
---|
[8586] | 9 | !!---------------------------------------------------------------------- |
---|
[9570] | 10 | !! 'key_si3' SI3 sea-ice model |
---|
[8586] | 11 | !!---------------------------------------------------------------------- |
---|
| 12 | !! ice_wri : write of the diagnostics variables in ouput file |
---|
| 13 | !! ice_wri_state : write for initial state or/and abandon |
---|
| 14 | !!---------------------------------------------------------------------- |
---|
| 15 | USE dianam ! build name of file (routine) |
---|
| 16 | USE phycst ! physical constant |
---|
| 17 | USE dom_oce ! domain: ocean |
---|
| 18 | USE sbc_oce ! surf. boundary cond.: ocean |
---|
| 19 | USE sbc_ice ! Surface boundary condition: ice fields |
---|
| 20 | USE ice ! sea-ice: variables |
---|
| 21 | USE icevar ! sea-ice: operations |
---|
| 22 | ! |
---|
| 23 | USE ioipsl ! |
---|
| 24 | USE in_out_manager ! I/O manager |
---|
| 25 | USE iom ! I/O manager library |
---|
| 26 | USE lib_mpp ! MPP library |
---|
| 27 | USE lib_fortran ! fortran utilities (glob_sum + no signed zero) |
---|
| 28 | USE lbclnk ! lateral boundary conditions (or mpp links) |
---|
| 29 | USE timing ! Timing |
---|
| 30 | |
---|
| 31 | IMPLICIT NONE |
---|
| 32 | PRIVATE |
---|
| 33 | |
---|
| 34 | PUBLIC ice_wri ! called by ice_stp |
---|
| 35 | PUBLIC ice_wri_state ! called by dia_wri_state |
---|
| 36 | |
---|
| 37 | !!---------------------------------------------------------------------- |
---|
[9598] | 38 | !! NEMO/ICE 4.0 , NEMO Consortium (2018) |
---|
[10069] | 39 | !! $Id$ |
---|
[10413] | 40 | !! Software governed by the CeCILL licence (./LICENSE) |
---|
[8586] | 41 | !!---------------------------------------------------------------------- |
---|
| 42 | CONTAINS |
---|
| 43 | |
---|
| 44 | SUBROUTINE ice_wri( kt ) |
---|
| 45 | !!------------------------------------------------------------------- |
---|
[9604] | 46 | !! This routine ouputs some (most?) of the sea ice fields |
---|
[8586] | 47 | !!------------------------------------------------------------------- |
---|
| 48 | INTEGER, INTENT(in) :: kt ! time-step |
---|
| 49 | ! |
---|
[8884] | 50 | INTEGER :: ji, jj, jk, jl ! dummy loop indices |
---|
| 51 | REAL(wp) :: z2da, z2db, zrho1, zrho2 |
---|
[11692] | 52 | REAL(wp) :: zmiss_val ! missing value retrieved from xios |
---|
| 53 | REAL(wp), DIMENSION(jpi,jpj) :: z2d, zfast ! 2D workspace |
---|
[9433] | 54 | REAL(wp), DIMENSION(jpi,jpj) :: zmsk00, zmsk05, zmsk15, zmsksn ! O%, 5% and 15% concentration mask and snow mask |
---|
| 55 | REAL(wp), DIMENSION(jpi,jpj,jpl) :: zmsk00l, zmsksnl ! cat masks |
---|
[8586] | 56 | ! |
---|
| 57 | ! Global ice diagnostics (SIMIP) |
---|
[8884] | 58 | REAL(wp) :: zdiag_area_nh, zdiag_extt_nh, zdiag_volu_nh ! area, extent, volume |
---|
| 59 | REAL(wp) :: zdiag_area_sh, zdiag_extt_sh, zdiag_volu_sh |
---|
[8586] | 60 | !!------------------------------------------------------------------- |
---|
[11692] | 61 | ! |
---|
[9124] | 62 | IF( ln_timing ) CALL timing_start('icewri') |
---|
[8586] | 63 | |
---|
[11692] | 64 | ! get missing value from xml |
---|
| 65 | CALL iom_miss_val( 'icetemp', zmiss_val ) |
---|
| 66 | |
---|
[9604] | 67 | ! brine volume |
---|
| 68 | CALL ice_var_bv |
---|
[8586] | 69 | |
---|
| 70 | ! tresholds for outputs |
---|
| 71 | DO jj = 1, jpj |
---|
| 72 | DO ji = 1, jpi |
---|
[8884] | 73 | zmsk00(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice , 0 if no ice |
---|
| 74 | zmsk05(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.05_wp ) ) ! 1 if 5% ice , 0 if less |
---|
| 75 | zmsk15(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.15_wp ) ) ! 1 if 15% ice, 0 if less |
---|
[9433] | 76 | zmsksn(ji,jj) = MAX( 0._wp , SIGN( 1._wp , vt_s(ji,jj) - epsi06 ) ) ! 1 if snow , 0 if no snow |
---|
[8586] | 77 | END DO |
---|
| 78 | END DO |
---|
| 79 | DO jl = 1, jpl |
---|
| 80 | DO jj = 1, jpj |
---|
| 81 | DO ji = 1, jpi |
---|
[8884] | 82 | zmsk00l(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) |
---|
[9433] | 83 | zmsksnl(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , v_s(ji,jj,jl) - epsi06 ) ) |
---|
[8586] | 84 | END DO |
---|
| 85 | END DO |
---|
| 86 | END DO |
---|
| 87 | |
---|
[8884] | 88 | !----------------- |
---|
[8586] | 89 | ! Standard outputs |
---|
[8884] | 90 | !----------------- |
---|
[11692] | 91 | zrho1 = ( rau0 - rhoi ) * r1_rau0 ; zrho2 = rhos * r1_rau0 |
---|
[8884] | 92 | ! masks |
---|
[11692] | 93 | CALL iom_put( 'icemask' , zmsk00 ) ! ice mask 0% |
---|
| 94 | CALL iom_put( 'icemask05', zmsk05 ) ! ice mask 5% |
---|
| 95 | CALL iom_put( 'icemask15', zmsk15 ) ! ice mask 15% |
---|
| 96 | CALL iom_put( 'icepres' , zmsk00 ) ! Ice presence (1 or 0) |
---|
[8884] | 97 | ! |
---|
| 98 | ! general fields |
---|
[11692] | 99 | IF( iom_use('icemass' ) ) CALL iom_put( 'icemass', vt_i * rhoi * zmsk00 ) ! Ice mass per cell area |
---|
| 100 | IF( iom_use('snwmass' ) ) CALL iom_put( 'snwmass', vt_s * rhos * zmsksn ) ! Snow mass per cell area |
---|
| 101 | IF( iom_use('iceconc' ) ) CALL iom_put( 'iceconc', at_i * zmsk00 ) ! ice concentration |
---|
| 102 | IF( iom_use('icevolu' ) ) CALL iom_put( 'icevolu', vt_i * zmsk00 ) ! ice volume = mean ice thickness over the cell |
---|
| 103 | IF( iom_use('icethic' ) ) CALL iom_put( 'icethic', hm_i * zmsk00 ) ! ice thickness |
---|
| 104 | IF( iom_use('snwthic' ) ) CALL iom_put( 'snwthic', hm_s * zmsk00 ) ! snw thickness |
---|
| 105 | IF( iom_use('icebrv' ) ) CALL iom_put( 'icebrv' , bvm_i* 100. * zmsk00 ) ! brine volume |
---|
| 106 | IF( iom_use('iceage' ) ) CALL iom_put( 'iceage' , om_i / rday * zmsk15 + zmiss_val * ( 1._wp - zmsk15 ) ) ! ice age |
---|
| 107 | IF( iom_use('icehnew' ) ) CALL iom_put( 'icehnew', ht_i_new ) ! new ice thickness formed in the leads |
---|
| 108 | IF( iom_use('snwvolu' ) ) CALL iom_put( 'snwvolu', vt_s * zmsksn ) ! snow volume |
---|
| 109 | IF( iom_use('icefrb' ) ) THEN ! Ice freeboard |
---|
[8884] | 110 | z2d(:,:) = ( zrho1 * hm_i(:,:) - zrho2 * hm_s(:,:) ) |
---|
| 111 | WHERE( z2d < 0._wp ) z2d = 0._wp |
---|
[11692] | 112 | CALL iom_put( 'icefrb' , z2d * zmsk00 ) |
---|
[8884] | 113 | ENDIF |
---|
| 114 | ! melt ponds |
---|
[11692] | 115 | IF( iom_use('iceapnd' ) ) CALL iom_put( 'iceapnd', at_ip * zmsk00 ) ! melt pond total fraction |
---|
| 116 | IF( iom_use('icehpnd' ) ) CALL iom_put( 'icehpnd', hm_ip * zmsk00 ) ! melt pond depth |
---|
| 117 | IF( iom_use('icevpnd' ) ) CALL iom_put( 'icevpnd', vt_ip * zmsk00 ) ! melt pond total volume per unit area |
---|
[8884] | 118 | ! salt |
---|
[11692] | 119 | IF( iom_use('icesalt' ) ) CALL iom_put( 'icesalt', sm_i * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) ! mean ice salinity |
---|
| 120 | IF( iom_use('icesalm' ) ) CALL iom_put( 'icesalm', st_i * rhoi * 1.0e-3 * zmsk00 ) ! Mass of salt in sea ice per cell area |
---|
[8884] | 121 | ! heat |
---|
[11692] | 122 | IF( iom_use('icetemp' ) ) CALL iom_put( 'icetemp', ( tm_i - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) ! ice mean temperature |
---|
| 123 | IF( iom_use('snwtemp' ) ) CALL iom_put( 'snwtemp', ( tm_s - rt0 ) * zmsksn + zmiss_val * ( 1._wp - zmsksn ) ) ! snw mean temperature |
---|
| 124 | IF( iom_use('icettop' ) ) CALL iom_put( 'icettop', ( tm_su - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) ! temperature at the ice surface |
---|
| 125 | IF( iom_use('icetbot' ) ) CALL iom_put( 'icetbot', ( t_bo - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) ! temperature at the ice bottom |
---|
| 126 | IF( iom_use('icetsni' ) ) CALL iom_put( 'icetsni', ( tm_si - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) ! temperature at the snow-ice interface |
---|
| 127 | IF( iom_use('icehc' ) ) CALL iom_put( 'icehc' , -et_i * zmsk00 ) ! ice heat content |
---|
| 128 | IF( iom_use('snwhc' ) ) CALL iom_put( 'snwhc' , -et_s * zmsksn ) ! snow heat content |
---|
[8884] | 129 | ! momentum |
---|
[11692] | 130 | IF( iom_use('uice' ) ) CALL iom_put( 'uice' , u_ice ) ! ice velocity u |
---|
| 131 | IF( iom_use('vice' ) ) CALL iom_put( 'vice' , v_ice ) ! ice velocity v |
---|
| 132 | ! |
---|
| 133 | IF( iom_use('icevel') .OR. iom_use('fasticepres') ) THEN ! module of ice velocity |
---|
[8586] | 134 | DO jj = 2 , jpjm1 |
---|
| 135 | DO ji = 2 , jpim1 |
---|
[11692] | 136 | z2da = u_ice(ji,jj) + u_ice(ji-1,jj) |
---|
| 137 | z2db = v_ice(ji,jj) + v_ice(ji,jj-1) |
---|
[8586] | 138 | z2d(ji,jj) = 0.5_wp * SQRT( z2da * z2da + z2db * z2db ) |
---|
| 139 | END DO |
---|
| 140 | END DO |
---|
[10425] | 141 | CALL lbc_lnk( 'icewri', z2d, 'T', 1. ) |
---|
[11692] | 142 | CALL iom_put( 'icevel', z2d ) |
---|
[10413] | 143 | |
---|
[11692] | 144 | WHERE( z2d(:,:) < 5.e-04_wp .AND. zmsk15(:,:) == 1._wp ) ; zfast(:,:) = 1._wp ! record presence of fast ice |
---|
[10413] | 145 | ELSEWHERE ; zfast(:,:) = 0._wp |
---|
| 146 | END WHERE |
---|
[11692] | 147 | CALL iom_put( 'fasticepres', zfast ) |
---|
[8586] | 148 | ENDIF |
---|
| 149 | |
---|
[8884] | 150 | ! --- category-dependent fields --- ! |
---|
[11692] | 151 | IF( iom_use('icemask_cat' ) ) CALL iom_put( 'icemask_cat' , zmsk00l ) ! ice mask 0% |
---|
| 152 | IF( iom_use('iceconc_cat' ) ) CALL iom_put( 'iceconc_cat' , a_i * zmsk00l ) ! area for categories |
---|
| 153 | IF( iom_use('icethic_cat' ) ) CALL iom_put( 'icethic_cat' , h_i * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! thickness for categories |
---|
| 154 | IF( iom_use('snwthic_cat' ) ) CALL iom_put( 'snwthic_cat' , h_s * zmsksnl + zmiss_val * ( 1._wp - zmsksnl ) ) ! snow depth for categories |
---|
| 155 | IF( iom_use('icesalt_cat' ) ) CALL iom_put( 'icesalt_cat' , s_i * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! salinity for categories |
---|
| 156 | IF( iom_use('iceage_cat' ) ) CALL iom_put( 'iceage_cat' , o_i / rday * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice age |
---|
| 157 | IF( iom_use('icetemp_cat' ) ) CALL iom_put( 'icetemp_cat' , ( SUM( t_i, dim=3 ) * r1_nlay_i - rt0 ) & |
---|
| 158 | & * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice temperature |
---|
| 159 | IF( iom_use('snwtemp_cat' ) ) CALL iom_put( 'snwtemp_cat' , ( SUM( t_s, dim=3 ) * r1_nlay_s - rt0 ) & |
---|
| 160 | & * zmsksnl + zmiss_val * ( 1._wp - zmsksnl ) ) ! snow temperature |
---|
| 161 | IF( iom_use('icettop_cat' ) ) CALL iom_put( 'icettop_cat' , ( t_su - rt0 ) * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! surface temperature |
---|
| 162 | IF( iom_use('icebrv_cat' ) ) CALL iom_put( 'icebrv_cat' , bv_i * 100. * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! brine volume |
---|
| 163 | IF( iom_use('iceapnd_cat' ) ) CALL iom_put( 'iceapnd_cat' , a_ip * zmsk00l ) ! melt pond frac for categories |
---|
| 164 | IF( iom_use('icehpnd_cat' ) ) CALL iom_put( 'icehpnd_cat' , h_ip * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! melt pond frac for categories |
---|
| 165 | IF( iom_use('iceafpnd_cat') ) CALL iom_put( 'iceafpnd_cat', a_ip_frac * zmsk00l ) ! melt pond frac for categories |
---|
| 166 | IF( iom_use('icealb_cat' ) ) CALL iom_put( 'icealb_cat' , alb_ice * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice albedo for categories |
---|
[8586] | 167 | |
---|
[8884] | 168 | !------------------ |
---|
[8586] | 169 | ! Add-ons for SIMIP |
---|
[8884] | 170 | !------------------ |
---|
| 171 | ! trends |
---|
[11692] | 172 | IF( iom_use('dmithd') ) CALL iom_put( 'dmithd', - wfx_bog - wfx_bom - wfx_sum - wfx_sni - wfx_opw - wfx_lam - wfx_res ) ! Sea-ice mass change from thermodynamics |
---|
| 173 | IF( iom_use('dmidyn') ) CALL iom_put( 'dmidyn', - wfx_dyn + rhoi * diag_trp_vi ) ! Sea-ice mass change from dynamics(kg/m2/s) |
---|
| 174 | IF( iom_use('dmiopw') ) CALL iom_put( 'dmiopw', - wfx_opw ) ! Sea-ice mass change through growth in open water |
---|
| 175 | IF( iom_use('dmibog') ) CALL iom_put( 'dmibog', - wfx_bog ) ! Sea-ice mass change through basal growth |
---|
| 176 | IF( iom_use('dmisni') ) CALL iom_put( 'dmisni', - wfx_sni ) ! Sea-ice mass change through snow-to-ice conversion |
---|
| 177 | IF( iom_use('dmisum') ) CALL iom_put( 'dmisum', - wfx_sum ) ! Sea-ice mass change through surface melting |
---|
| 178 | IF( iom_use('dmibom') ) CALL iom_put( 'dmibom', - wfx_bom ) ! Sea-ice mass change through bottom melting |
---|
| 179 | IF( iom_use('dmtsub') ) CALL iom_put( 'dmtsub', - wfx_sub ) ! Sea-ice mass change through evaporation and sublimation |
---|
| 180 | IF( iom_use('dmssub') ) CALL iom_put( 'dmssub', - wfx_snw_sub ) ! Snow mass change through sublimation |
---|
| 181 | IF( iom_use('dmisub') ) CALL iom_put( 'dmisub', - wfx_ice_sub ) ! Sea-ice mass change through sublimation |
---|
| 182 | IF( iom_use('dmsspr') ) CALL iom_put( 'dmsspr', - wfx_spr ) ! Snow mass change through snow fall |
---|
| 183 | IF( iom_use('dmsssi') ) CALL iom_put( 'dmsssi', wfx_sni*rhos*r1_rhoi ) ! Snow mass change through snow-to-ice conversion |
---|
| 184 | IF( iom_use('dmsmel') ) CALL iom_put( 'dmsmel', - wfx_snw_sum ) ! Snow mass change through melt |
---|
| 185 | IF( iom_use('dmsdyn') ) CALL iom_put( 'dmsdyn', - wfx_snw_dyn + rhos * diag_trp_vs ) ! Snow mass change through dynamics(kg/m2/s) |
---|
| 186 | |
---|
[8884] | 187 | ! Global ice diagnostics |
---|
[11692] | 188 | IF( iom_use('NH_icearea') .OR. iom_use('NH_icevolu') .OR. iom_use('NH_iceextt') .OR. & |
---|
| 189 | & iom_use('SH_icearea') .OR. iom_use('SH_icevolu') .OR. iom_use('SH_iceextt') ) THEN |
---|
[8586] | 190 | ! |
---|
[11692] | 191 | WHERE( ff_t(:,:) > 0._wp ) ; z2d(:,:) = 1._wp |
---|
| 192 | ELSEWHERE ; z2d(:,:) = 0. |
---|
| 193 | END WHERE |
---|
[8586] | 194 | ! |
---|
[11692] | 195 | IF( iom_use('NH_icearea') ) zdiag_area_nh = glob_sum( 'icewri', at_i * z2d * e1e2t * 1.e-12 ) |
---|
| 196 | IF( iom_use('NH_icevolu') ) zdiag_volu_nh = glob_sum( 'icewri', vt_i * z2d * e1e2t * 1.e-12 ) |
---|
| 197 | IF( iom_use('NH_iceextt') ) zdiag_extt_nh = glob_sum( 'icewri', z2d * e1e2t * 1.e-12 * zmsk15 ) |
---|
[8586] | 198 | ! |
---|
[11692] | 199 | IF( iom_use('SH_icearea') ) zdiag_area_sh = glob_sum( 'icewri', at_i * ( 1._wp - z2d ) * e1e2t * 1.e-12 ) |
---|
| 200 | IF( iom_use('SH_icevolu') ) zdiag_volu_sh = glob_sum( 'icewri', vt_i * ( 1._wp - z2d ) * e1e2t * 1.e-12 ) |
---|
| 201 | IF( iom_use('SH_iceextt') ) zdiag_extt_sh = glob_sum( 'icewri', ( 1._wp - z2d ) * e1e2t * 1.e-12 * zmsk15 ) |
---|
[8586] | 202 | ! |
---|
[11692] | 203 | CALL iom_put( 'NH_icearea' , zdiag_area_nh ) |
---|
| 204 | CALL iom_put( 'NH_icevolu' , zdiag_volu_nh ) |
---|
| 205 | CALL iom_put( 'NH_iceextt' , zdiag_extt_nh ) |
---|
| 206 | CALL iom_put( 'SH_icearea' , zdiag_area_sh ) |
---|
| 207 | CALL iom_put( 'SH_icevolu' , zdiag_volu_sh ) |
---|
| 208 | CALL iom_put( 'SH_iceextt' , zdiag_extt_sh ) |
---|
| 209 | ! |
---|
[8586] | 210 | ENDIF |
---|
| 211 | ! |
---|
| 212 | !!CR ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s |
---|
| 213 | !!CR ! IF( kindic < 0 ) CALL ice_wri_state( 'output.abort' ) |
---|
| 214 | !!CR ! not yet implemented |
---|
[11692] | 215 | !!gm idem for the ocean... Ask Seb how to get rid of ioipsl.... |
---|
[8586] | 216 | ! |
---|
[9124] | 217 | IF( ln_timing ) CALL timing_stop('icewri') |
---|
[8586] | 218 | ! |
---|
| 219 | END SUBROUTINE ice_wri |
---|
| 220 | |
---|
| 221 | |
---|
[10425] | 222 | SUBROUTINE ice_wri_state( kid ) |
---|
[8586] | 223 | !!--------------------------------------------------------------------- |
---|
| 224 | !! *** ROUTINE ice_wri_state *** |
---|
| 225 | !! |
---|
| 226 | !! ** Purpose : create a NetCDF file named cdfile_name which contains |
---|
| 227 | !! the instantaneous ice state and forcing fields for ice model |
---|
| 228 | !! Used to find errors in the initial state or save the last |
---|
| 229 | !! ocean state in case of abnormal end of a simulation |
---|
| 230 | !! |
---|
| 231 | !! History : 4.0 ! 2013-06 (C. Rousset) |
---|
| 232 | !!---------------------------------------------------------------------- |
---|
[10425] | 233 | INTEGER, INTENT( in ) :: kid |
---|
[8586] | 234 | !!---------------------------------------------------------------------- |
---|
| 235 | ! |
---|
[10425] | 236 | !! The file is open in dia_wri_state (ocean routine) |
---|
[8586] | 237 | |
---|
[10425] | 238 | CALL iom_rstput( 0, 0, kid, 'sithic', hm_i ) ! Ice thickness |
---|
| 239 | CALL iom_rstput( 0, 0, kid, 'siconc', at_i ) ! Ice concentration |
---|
| 240 | CALL iom_rstput( 0, 0, kid, 'sitemp', tm_i - rt0 ) ! Ice temperature |
---|
| 241 | CALL iom_rstput( 0, 0, kid, 'sivelu', u_ice ) ! i-Ice speed |
---|
| 242 | CALL iom_rstput( 0, 0, kid, 'sivelv', v_ice ) ! j-Ice speed |
---|
| 243 | CALL iom_rstput( 0, 0, kid, 'sistru', utau_ice ) ! i-Wind stress over ice |
---|
| 244 | CALL iom_rstput( 0, 0, kid, 'sistrv', vtau_ice ) ! i-Wind stress over ice |
---|
| 245 | CALL iom_rstput( 0, 0, kid, 'sisflx', qsr ) ! Solar flx over ocean |
---|
| 246 | CALL iom_rstput( 0, 0, kid, 'sinflx', qns ) ! NonSolar flx over ocean |
---|
| 247 | CALL iom_rstput( 0, 0, kid, 'snwpre', sprecip ) ! Snow precipitation |
---|
| 248 | CALL iom_rstput( 0, 0, kid, 'sisali', sm_i ) ! Ice salinity |
---|
| 249 | CALL iom_rstput( 0, 0, kid, 'sivolu', vt_i ) ! Ice volume |
---|
| 250 | CALL iom_rstput( 0, 0, kid, 'sidive', divu_i*1.0e8 ) ! Ice divergence |
---|
| 251 | CALL iom_rstput( 0, 0, kid, 'si_amp', at_ip ) ! Melt pond fraction |
---|
| 252 | CALL iom_rstput( 0, 0, kid, 'si_vmp', vt_ip ) ! Melt pond volume |
---|
| 253 | CALL iom_rstput( 0, 0, kid, 'sithicat', h_i ) ! Ice thickness |
---|
| 254 | CALL iom_rstput( 0, 0, kid, 'siconcat', a_i ) ! Ice concentration |
---|
| 255 | CALL iom_rstput( 0, 0, kid, 'sisalcat', s_i ) ! Ice salinity |
---|
| 256 | CALL iom_rstput( 0, 0, kid, 'snthicat', h_s ) ! Snw thickness |
---|
[8586] | 257 | |
---|
| 258 | END SUBROUTINE ice_wri_state |
---|
| 259 | |
---|
| 260 | #else |
---|
| 261 | !!---------------------------------------------------------------------- |
---|
[9570] | 262 | !! Default option : Empty module NO SI3 sea-ice model |
---|
[8586] | 263 | !!---------------------------------------------------------------------- |
---|
| 264 | #endif |
---|
| 265 | |
---|
| 266 | !!====================================================================== |
---|
| 267 | END MODULE icewri |
---|